[Predvaja glasba] JASON Hirschhorna: OK, vsi. Dobrodošli na oddelku. To je CS50, naša zelo Prvi super oddelek. Kot vsi veste, naslednji teden Redni oddelki bodo začeli, ampak ta teden smo vsi skupaj. Tam je sam. Moje ime je Jason. Sem predavatelj računalništva. Imamo Andi, kdo je vodja TA od CS50. In Scaz, profesor Brian Scassellati, on je profesor računalništva. Smo CS50 glave na univerzi Yale. Vedno lahko po e-pošti nam heads@cs50.yale.edu. Mi bo na predavanjih. Bomo ob uradnih urah. Če je kdaj kaj moremo stori za vas, vse, kar potrebujete, vas prosimo, da stik z nami. Torej, kaj bomo naredili danes? Ali pred tem, kaj je prihaja ta teden? Torej Uradne ure so ponedeljek, torek, Sreda in četrtek 8:00 do 11:00. Tam je urnik na spletni strani. Oddelki, kot sem že omenil, se začenja naslednji teden. In boste izvedeli ta teden kaj Čas je tvoj del je, kateri dan je danes, in kdo je tvoj TA je. Problem Set 1 zapade v četrtek ob opoldne, v petek opoldne z pozni dan. Ja, imaš devet poznih dni. In tam so devet problem sklopov. In lahko uporabite samo eno pozno dan na problem nizu. Ja, v bistvu vse težave kompleti so posledica petek opoldne. To je vse. Vse to so podatki o predmetniku. Vsak petek imamo kosila. Radi bi, da je to velika Seveda malce manjši. Torej, ste dobrodošli, da RSVP. Brezplačno kosilo s kolegi sošolci in osebje. cs50.yale.edu/rsvp. Vse te stvari, ki jih Imam na zaslonu, in še več, jo lahko najdete cs50.yale.edu ali cs50.harvard.edu, če greš na Harvard in so gledal ta spletu. Tudi na teh spletnih straneh, tam tono virov za vas. Vsako predavanje ni samo video predavanja, temveč tudi ugotavlja. Nekdo bo gledal predavanje in zapiske za vas. Torej lahko samo plačati pozornost pri predavanjih, ali lahko uporabite svoje zapiske / Naše ugotavlja, da dopolni svoje opombe. Obstaja diapozitivi na spletu. Vir code-- vse David gre več v predavanju, ali Scaz gre čez predavanju, ki Izvorna koda je na voljo na spletu pa tudi, saj kot sem omenil videoposnetkov. Oddelki, prav tako bo vse posnel. Vsi ti diapozitive bo na voljo. Vse te kode bo biti na voljo za vas. Obstajajo hlače na spletni strani, kjer je Uslužbenci CS50 porabili pet do 10 minut gredo skozi teme za vas. Nekateri od tistih, ki ste jih že naletela na problematičnih sklopov. Uradne ure, kot sem omenil, ob ponedeljkih skozi četrtkih, 8:00 do 11:00. CS50 Študija je fantastičen vir. Obstajajo problemi prakse, Vzorčna stekelca, znani hrošči da učenci radi vodijo v, za praktično vsako temo mi bo zajemal v tem tečaju. In končno, na ta diapozitiv vsaj Reference50 ki vam daje informacije na vse funkcije C da bi lahko kdaj morda upamo, za uporabo in še veliko, veliko več. Again, da dot dot piko na spodnji del zaslona je razvidno, da obstaja celo več sredstev na teh dveh spletnih straneh: cs50.yale.edu, cs50.harvard.edu. Torej, kaj počnemo danes? No, najprej bom dal pogledaš na vire. Že storil, da je eden. Poglej nas. Zdaj smo šli čez podatkovni tipi in operaterji v C. Potem bo Andi prišli sem gor in iti čez knjižnice v C, printf (), funkcija, s katero ste že znano, ali bo hitro postala zelo seznanjeni. In boste tudi iti čez Pogojniki in zanke. In potem končno, Scaz bo šel čez CS50 ID. Če še niste potopil v že Problem Set 1, kot tudi, kako uporabiti Ukazi terminalov in uporabne in potem vam nekaj demo posnetkov in praksa kodiranje v CS50 ID. Preden sem skočil v to je vsebina na tej strani, Ima kdo kakšna vprašanja doslej? Great. V REDU. Prestavljanja. [Prestavljanjem] To sem bil jaz premikajo orodja v ročnem avtomobilu. Torej, podatkovni tipi v C, ne morete imeti samo spremenljivka x in imajo biti na liniji 10, celo, morda številka 1, na liniji 20, decimalno število 10,5, in potem par vrstic kasneje niz, ljubim CS50. V C, lahko spremenljivke le ena stvar, in samo ena stvar. In tako da boste morali, da se jim vrst. In na tej plošči smo imajo seznam vrst. Obstajajo znakov, ki stati znakov. Tako da je eno črko A, B, C, D. To je lahko tudi prostor, ali ki je lahko tudi nova linija znak. Obstaja cela števila, ki so pravkar številke, cele numbers-- ali cela rather-- vendar brez decimalk. Za decimalke, imamo plavajočo vejico. Plavajočo vejico so številke, s decimalk. Potem so podolgovati, ki so bistveno daljše cela števila. Opazili boste, da že dolgo 8 ker je int 4. Jaz bom tisti, ki v sekundi. To je zato, ker lahko hrepeni shranite tudi več celih števil kot notr lahko shranite. Dvakrat je dolgo float. In končno, imamo niz, ki je vrsta da ste verjetno uporabili prej. Če vključite hashtag # includeCS50.h v izvorni datoteki, potem lahko uporabite vrsto niza. Ni je dejansko vgrajen v C. Obstaja nekaj drugih vrst, kot dobro. Toda to so glavni tisti z ki ga boste uporabili in se srečujejo. C kot, enkrat sem omenil, vsak jo variable-- je lahko samo eno vrsto in samo eno vrsto. To je zato, ker C je statično natipkan jezik, v nasprotju dinamično vnesli jezikov kje če ustvarite spremenljivko lahko spremenite kaj je shranjeno v je kot greš v vašem programu. Tukaj na desni strani Lepo, imam različne velikosti teh vrst podatkov v bajtih. Torej znak je 1 bajt. To je 8 bitov. In to pomeni, da zaradi 8 bitov tam je osem 0s in 1s. Videli smo te demos v prvi teden s tem, da binarnih žarnice. Z 8 bitov ali 1 bajt, smo lahko predstavljajo številke od 0 do 255. Prav. Če so vsi 8 bitov 0, ki pa je 0. Če je prvi bit je 1, da je število on, in tako naprej, vse tja do 255. In zato pri znakih, ki jih lahko imajo v bistvu do 255 od njih, ampak to je dovolj za kritje vseh znake, moramo uporabiti. Za celih števil, lahko imate 0 in potem imate 2 do 32 minus 1. Tisti, ki so, koliko možnosti imate za cela števila. Za dolgo, imate 0 za 2 do 64 minus 1. Torej imate veliko, veliko, več možnosti za hrepeni. Strings, da je vprašanje znamka ker je to Cliffhanger za kasneje. Ja. Jaz lahko povem, vsakdo je na robu sedeža, všeč, kaj pa je to vprašanje znamka? To je Cliffhanger. Bomo v prihodnosti zajemati velikost godala in govori več o strune. Ker niz je dejansko enega kolesa usposabljanja smo se na tem Seveda na začetku in nato vzlet kasneje no, saj nizov v C so dejansko kazalci do nizi znakov. Ampak še enkrat, da je Cliffhanger za kasneje. Preden sem se premaknete na vsa vprašanja, komentarji, skrbi glede tega diapozitiva? V REDU. Moram biti fantastično razlagalca. Tudi takrat, ko ste programiranjem boste za uporabo teh operaterjev. Res preprosti znaki, da lahko narediš preprost operacije, s katero ste verjetno že zelo pozna. Na primer, na desni hand side, vidimo dodati. Če želite dodati, si naredil pozitivni predznak. In zato boste morda morali dve spremenljivki x in y. To lahko storite x + y v kodi. Morda želite to-- vam reči ima številko 7 in 3, želite shraniti da spremenljivo imenovano vsoto. To lahko storite int za tipa, prostora Vsota, ime spremenljivke, = 7 + 3; Kaj bi, da je trgovina v znesku? Kdorkoli? Če sem imel v znesku = 7 + 3. Kaj bi bili shranjeni v znesku? Lahko samo zakričal. OBČINSTVO: 10. JASON Hirschhorna: 10! To je ravno prav. Kaj pa v znesku = 7 - 3. Pravkar sem uporabil ta dash znak. Kaj se dogaja, da se hranijo? OBČINSTVO: 4. JASON Hirschhorna: 4. Sum je verjetno napačno ime da je spremenljivka, ampak 4 bodo shranjeni. Množiti v C, uporabite malo Star znakov, ki jih ne uporabljate x. Razdeliti, uporabite Forward Slash ne simbol delitve. In modulo, uporabite simbol odstotkov. Torej, recimo, da bi rad videl int z = 7% 3, kaj bi se shranijo v zv? Torej, to je v bistvu sprašuje, kaj modulo storiti? Ali kdo ve, kaj modulo počne? Ja. y 4. SPEAKER 1: To je ostanek. JASON Hirschhorna: To je Preostanek, ko razdeliti. Torej 7 deljeno s 3 je 2 preostanek 1. Torej bi bila 1 shranijo. Naredila odštevanje, ampak to je, kako to deluje. To je tisto, kar operater modulo počne. To traja nekaj jo deli z drugo številko in se vrne na vas preostanek. Torej še enkrat, 7% 3 vam daje 1, saj 7 deljeno s 3 je 2 preostanek 1, in vrne preostanek. Kaj pa pojdimo nazaj gor en korak k navedeni znak za deljenje. Če sem 7 / deljeno s 3 počne kdo ve, kaj bi bilo, da se vrnete? SPEAKER 2: 2. JASON Hirschhorna: Zakaj 2 in ne 2,333? SPEAKER 2: Mislim, da kosi off po celo število. JASON Hirschhorna: Torej da je ravno prav. V C, če vam delitev dve celi števili 7 deljeno s 3, je dobil odgovor, ki v tem primeru 2.3333 večno in ugotovi, da decimalno vejico in seka vse off po decimalne in to samo ti vrne 2. Torej, če sem storil 8, deljeno s 3. Ki dejansko vemo, da se vrnete 2.666, vendar seka vse off na decimalna, vse skrajša, in vrne ravno za vas 2. Torej 6 deljeno s 3, 7 razdeljen za 3, 8, deljeno s 3, se vse dogaja, da se vrnete na vas 2. Ali kdo ve, ali imajo ugibati, o tem, kako sem lahko dejansko dobili celoten odgovor, če želim, da decimalko? Ja. Kar daj. SPEAKER 3: Uporabite plovec? JASON Hirschhorna: Kaj misliš s tem? SPEAKER 3: Ker ste rekli, Plovec je za številke [neslišno] JASON Hirschhorna: Right. Torej, to je ravno prav. 7 je celo število. Ampak, če sem hotel obrniti, da v število s plavajočo vejico, Jaz bi imel za shranjevanje, ki kot 7,0 ker računalnik je res stupid-- smo videli, da s PB in J example-- da bo to samo točno kaj ti je povedal. Torej, če ste napisali 7, je mislim, da je celo število. Če pišete 7.0, čeprav smo veš, te stvari so enakovredni, ravna da Like plavajočo vejico. Torej, če si 7.0 razdeljen s 3 ali deljeno s 3,0, da bi rekel, OK, zdaj imamo opravka s plovci. Se bom vrnil k tebi 2.333333 večno. Ampak ni res večno, saj kot smo videli tudi v predavanju ti plavajočo vejico niso ravno natančni. Torej, če ne želite, da decimalko, ali del tega decimalko, potem moraš use-- enega od njih mora biti realno število in računalnik mora razumeti da je to plavajočo vejico ste ki se ukvarjajo z, ni celo število. Vsa vprašanja o tej tabeli na desna stran pa, tako daleč? Ali vaš levi strani, kjer si levo, tvoja leva stran. Ja. SPEAKER 4: Right. Za samo kot redni cela števila, bi si write-- bi morali napisati plavajo? JASON Hirschhorna: Ja, tako. No, če želite ustvariti spremenljivka, ki je float, morate povedati plovec z enako nekaj. SPEAKER 4: OK. JASON Hirschhorna: Ampak, če sem hotel storiti 7, deljeno s 3 in dobil to decimalko, Jaz bi naredil float Z = 7,0 / 3,0; in da mi ne bi bilo v plavajoči vejici številka. SPEAKER 4: OK. JASON Hirschhorna: Če sem nekaj podobnega int z = 7 / za 3, da bi mi celo, ker so to vsi cela števila. Ali to smiselno? SPEAKER 4: Da. JASON Hirschhorna: OK. Great. Vsa druga vprašanja o tej tabeli? Res? Tako sem vznemirjen. V REDU. Torej, nekaj drugih stvari, ki jih boste uporabljali, velikokrat v pogojih ali zank, so te vrste operators-- te vrste logičnih izrazov. In kot smo izvedeli, == je tisto, kar uporabiti, da preverite, če sta dve stvari enaki. Torej, tukaj sem preveri, če je x == y, dajmo Ponovno predpostavimo, da je x 7 in je y 3. Torej, če sem napisal 7 == 3, kar bi, da se vrnete v meni? Je to res ali ne? OBČINSTVO: False. JASON Hirschhorna: OK. Počutim se, kot vsakdo tole. Torej vsi, kaj bi to vrnil? OBČINSTVO: False. JASON Hirschhorna: False. Great. 7 ni enak 3. Torej bi 7 == 3 vrne false. Saj imajo ne enačaj, tako da, če sem checked 7! = 3, kaj bi to vrnil? OBČINSTVO: True. JASON Hirschhorna: True. Odlično. Nekdo je bil zelo odločen v nazaj in cenim. Potem imate manj kot operater, manjša ali enaka operaterja večja od subjekta, večja ali enako operaterja. Torej še en pregled sanity. Če sem imel 7 je večja ali enak 3. Kaj bi bilo, da se vrnete? OBČINSTVO: True. JASON Hirschhorna: True. Da. Da zadnji sobi, hrbtna stran sobe, fantastično. Lahko združite teh izraza, če vam je všeč, kot tudi, z logično IN, ki je && Ali logični ALI ki je || ||. In tako zdaj lahko preizkusite dva Stvari together-- Je to smešno? Zakaj je to smešno? Torej, če hočem, lahko rečem, je 7 večje od 3 in 2 je manj kot 4? No, če je 7 več od 3, to je res. 2 je manj kot 4, to je res. Tako da bi ta stvar vrne true. Če sem testiral 7 je več kot 3 in-- Jaz sem samo nabiranje naključnih številk here-- 4 je manj kot 2, dobro, da je lažna. Torej true in false make false. In lahko greš naprej in združite kot veliko pogojev skupaj, kot želite. Ima kdo kakšno vprašanje, Komentarji, pomisleki tako daleč? In vidim, ste nekateri fotografiranje mene na zaslonu, kar cenim. Upajmo, da to ni Snapchat. Upajmo, da je za svoje zapiske. Ampak vse to se dogaja morajo biti na voljo na spletu. Tako da vam ne bi bilo treba slikajo to. Kot sem že omenil, vse bo na voljo na spletu za vas. V REDU. Jaz sem na tem, da bi dobili Zakulisno, tako da ne nikogar želim reči ničesar preden se to zgodi? Vprašanja? [Interposing GLAS] JASON Hirschhorna: Oh, nehaj. Vi ste preveč prijazni. V REDU. Grem, da označite ven. Pojdimo. ANDI PENG: Mi bomo storili nerodna mic sprememba zdaj. JASON Hirschhorna: Sem dogaja, da se to izklopi. ANDI PENG: Cenim podporo, fantje. Me lahko slišiš? Je to dobro? Popolna. Lepa. Naj samo malenkost, da je v. V REDU. Torej, jaz sem na tem, da kot velikan Podatki smetišče o vama zdaj. In brez skrbi sploh, če ste ne po vsako malo linijo, kar Jaz sem na tem, da ti pokažem. Kot je dejal Jason, vse je popolnoma na spletu. Samo bomo poskušali uvesti vsi koncepti pokriti V nekaterih od teh stekelc. Tako da samo sledite skupaj. Brez skrbi, če ne razumete vse; Vendar, če na kateri koli točki počutite izgubljeni, dvignite roko, ga ne bomo, brez skrbi. Cool. Zato mislim, da nekaj, kar je David že nekako omenjeno v predavanju in Jason se je nekako namiguje do danes je, kaj je knjižnica. Torej, v programiranju, imamo te stvari se imenuje knjižnice. Kadar je v bistvu vse jih je le niz funkcij, ki je v bistvu le kodo, ki je že napisala nekdo drug, da smo lahko vsi uporabite v naših programih. Torej, kako normalno Knjižnica delo, kajne? Vnesete vrata knjižnice. Imate vse te knjige lahko izvlečete in lahko dostopate do informacij v teh knjigah. Ista stvar pri programiranju. Imate knjižnico, ki ima že so jih napisali drugi ljudje. In način, da si lahko, kot programer ali študenta, lahko pridobijo dostop do te knjižnice je skozi hashtag #include. Na primer, v smo c imajo tri C- najbolj običajno uporabljajo treh standardnih C libraries-- vhodno / izhodno knjižnico, knjižnica niz, in knjižnica math. Torej v vaš prvi Par problem določa, tiste bo tri da ste v prvi vrsti uporabo. Torej, ko je David že razloženo v predavanju, standard / I knjižnica, ali standardni vhod / izhod knjižnica počne točno to. To vam omogoča, v svojo kodo, za vnos karkoli od uporabnika in izhod, ki na zaslon, v bistvu tiskanjem na zaslon. In tako vsakič, ko uporabljate nobene funkcije, na primer funkcija printf (), ki bomo šli v naslednji diapozitiv, poskrbite, da se vključi standard I / O knjižnico ali pa vam ne bo lahko uporabite funkcijo printf (). Zato, ker si, kot programer nikoli dejansko napisal to funkcijo, ste samo z uporabo nekoga Koda drug v vaši kodi. Ali to smisel vsi? Cool. In potem smo v bistvu dobili na knjižnica string.h in math.h knjižnica, .h samo pomeni knjižnico, druge knjižnice, da boste na koncu uporabljali v svojo kodo. Vendar pa se za namene te knjižnice, smo tudi have-- tega class-- imamo tudi kar se imenuje knjižnico CS50, cs50.h, kjer smo za vaše podatke so ustvarili veliko pomembnih in uporabnih funkcij. Tako, da si kot programer lahko oprtni off kar smo že pisali, da Ta funkcija je na voljo za vas za vašo uporabo. Bom zajema nekaj funkcije pogosto uporablja, vendar vem, da so to Vse googleable spletu. Feel free, dvigni knjižnico CS50 in potem imate vse funkcije tam. Ja. SPEAKER 5: Torej, če ne bi bilo z uporabo programske opreme, ki je, ki nam jih razred, ne da pomeni, da bi morali prenesti in najti ta header datoteko sebe in povej računalnik, kje je? ANDI PENG: Velika vprašanje. Točno tako. Torej, to je kot, če niste fizično prisoten v knjižnici, ni način za vas, da dejansko šel in dostop do njega. Torej isto stvar z programiranje v C, vas se prepričajte, da ste z uporabo naše aparata, saj je knjižnica je že bili vključeni vanj. In potem, ko si hashtag #include, knjižnica je tam. Ja. Dobro vprašanje. Vsakdo dobro? Cool. V redu. Torej bomo zadeli, v bistvu, kaj je prva funkcija Mi kot programerji so bomo uporabili v naši kodo. To se imenuje (funkcija printf). Torej, printf (funkcija), kot sem že že povedal v zadnjem slide, je vključen v standardno / I, standardni vhod / izhod, knjižnica. Zato poskrbite, da vse, kar ste using-- oh, me zgrabi laser pointer-- vsakič, ko ga uporabljate The (funkcija printf) morate vključiti standard I / O knjižnico ali pa, ko se zbere, boste dobili napako ker računalnik ne bo všeč, oh ne vem, kje je printf (), nisi mi pove, kje printf () je. No printf () je vključen v Standard I / O, tako da, ko boste uporabili printf (), se prepričajte, da ima to vrstica nad svojo kodo. Tako na primer, printf () Tu je funkcija. Vse kar naredi je, print ven nekaj notranjosti oklepajih za uporabnika. Bi kdo rad izkoristil stab na kateri tej vrstici kode pravice tukaj se bo izpisal? Zato je odgovor je na zaslonu. Kdorkoli? VERDI: Dno. ANDI PENG: Verdi, zakaj ne greš naprej in rekli celotno izjavo? VERDI: Pozdravljeni, moje ime je Andi, in sem stara 20 let. ANDI PENG: Ah, lepo. Torej, v tej vrstici bomo natisniti, Pozdravljeni, moje ime je Andi, in sem star 20 let, ki je v bistvu pravi izjava. Skladnja. Torej nekaj skladenjskih vprašanj, ki vi želite, da boste vedeli. Citati. Dvojni narekovaji povej računalnik, da je vse v notranjosti se bo natisnjena. Vse znotraj pločevinko samo se točno, kako jo tipkate, razen za običajno na koncu, bomo želeli vključiti hash-- oh sorry-- pomišljaj n. Torej pomišljaj n. Ali kdo želel vzeti ugibati kaj, da ne bi našo kodo? Ja. SPEAKER 6: ga postavi v novo vrstico. ANDI PENG: Točno tako. Torej, vse to pa je omogoči naj se zgodi karkoli po tem, ko te izjave, je treba natisniti v novo vrstico. Tako da, ko pišete koda nimate naključno stvari reševati na koncu da si ne želite. To je vse, kar dobi lepo natisnjena eno vrstico in potem bomo začeli na naslednji vrstici. Ali kdo se spomnite, kaj da podpičje počne, ko smo kodiranje? Ja. SPEAKER 7: Izkaz. ANDI PENG: Oprostite? SPEAKER 7: Ali je na koncu izjavo? ANDI PENG: Ja. Torej, v C ali programiranja jezik, podpičje označuje konec programskega linije. Tako na primer v angleškem uporabljamo obdobje reči, oh to je konec stavek. Pri načrtovanju, isto stvar, imamo podpičje, ki označuje konec vrstice. Pogosto, ko ste začenši programirati, vi boste spoznali pozabite dodati podpičje in nato poskusite zagnati vaš koda in to ne deluje. In ti si všeč, Ah, jaz ne vem zakaj, je treba delati. Verjetno ste verjetno pozabil podpičjem ali nosilec ali kaj podobnega nekje. Torej, da je pomembno, da se spomnite. Cool. V redu, pokaži roke, kako mnogi ljudje tukaj imeli kdaj sprejeti AP Computer Science ali programirana v Java prej, kdaj? V REDU. Lovely. Da ne bo uporabljala takrat, ampak v Java, ki jih imajo nekaj, kar ti System.out.println ki ne obstaja v C. Torej, v C, kadarkoli vas želite dodati v spremenljivkah v karkoli hočeš natisniti, tam je posebno sintakso bomo uporabili. To se imenuje placeholding-- bistvu dodamo ograde v mestu z celo število ali spremenljivke ki jih želimo natisniti. Tako da lahko vi videli smo vključeni nov header knjižnica datoteko tukaj. Knjižnica CS50. In je vsebovan v tem CS50 knjižnici je skupna naloga, da bomo lahko z uporabo V našem teku imenuje GetInt (). Ali kdo želi vzeti zabodel Kaj GetInt (), morda se delaš. OBČINSTVO: [neslišno] ANDI PENG: Žal mi je. Vas ne more slišati. Maddie, kdorkoli. Maddie: Oh, da pozove ste za celo število. ANDI PENG: Točno tako. Torej ta funkcija, drugo funkcija, ki je že že napisal nekdo drug da bomo lahko pozivamo zdaj. Vse, kar je, je uren vi, uporabnik, za vnos karkoli hočeš kot koda teče in ga shrani whatever-- V tem primeru smo GetInt () - ING, tako to pomeni, da smo pridobitev celo število. In bomo za shranjevanje da v drugi celo da smo pravkar imenovan starosti. Da je smiselno, da se vse? Cool. Torej sedaj, da smo shranjeni to celo, da smo pozvani od uporabnika, V tej spremenljivki, ki smo jih ustvaril tipa int imenovano starost, lahko gremo naprej in kraj da je funkcija v našem printf (). Torej sintaksa običajno printf (), je da kjerkoli v vašem dejansko fizično linijo želite vključiti to celo, vam ta simbol prav tam, odstotek simbol, pri čemer je tip spremenljivke, ki jo želite. Torej v tem primeru starosti je celo število. Torej boš vključujejo % i, ker je celo število. In potem, ko si Izjava, da boš storiti vejica in ime spremenljivke. Torej, tukaj, bomo za tiskanje ven, Pozdravljeni, moje ime je Andi, in sem star prazne let. Hashta-- ali sorry--, starost s Karkoli vhod. Torej, če bi bil jaz vhod 20 za mojo GetInt () tu, da bi izpisal točno isto stvar. Ampak, če sem hotel vhodni nečim drugje, kot je morda 40 ali 45 let, potem bi videli, da odraža ustrezno kodo. Torej je to primer nečesa, v kateri natisne, in izgleda, da ste, kot da je to ista stvar, vendar pod kapuco računalnik, tam je pravzaprav zelo različni stvari dogaja. Cool. V redu. Pa kaj, če hočemo več spremenljivk? Precej enostavno. Ista stvar. Imamo tudi novo funkcijo tukaj se imenuje GetString () tudi v knjižnici CS50, da je vse, kar počne poziv uporabniku za vrvico, ki je Samo niz znakov, tako kot kazen ali kot ime. Torej, v tem primeru bi imeli dva ograde% s za godalni in% i za celo število. In bomo sledili da z dvema spremenljivkama Želimo, vključenih v vrstnem redu ki se pojavljajo v stavku. Tako, na primer, moje ime je prazno, hočem ime tam, tako da bom, da imajo ime prvi. In potem kasneje, hočem starost, želijo imeti starostno sekundo. In zato, če sem hotel vhod, Hello, moje ime je Andi, in sem stara 20 let. Če sem inputted Andi in 20, Točno isto stvar bi natisniti; Vendar, zdaj imamo dve skladišči spremenljivke imenom kot tudi int. Ja. SPEAKER 8: Ali bi bilo sposoben teči, če ste preklopili ime in starost na koncu to? ANDI PENG: Ja. To je res dobro vprašanje. Tako dolgo zgodbo, št. Ker ime in age-- kaj tip spremenljivke je ime? SPEAKER 8: String. ANDI PENG: In kaj tip spremenljivke je starost? SPEAKER 8: Integer. ANDI PENG: Torej, tukaj imamo ogrado za niz in celo, kajne? Torej, če ste bili, da preklopite teh, računalnik ne bo vedel. To se dogaja, da preverite, ali je niz, in če poskusite, da ga int, to se dogaja, da je kot počakati sem zmeden, ti mi je rekel, da bi morala biti dodeljevanja pomnilnika za notr. In prav tu, ko pričakuje, da bo celo in si mu dal ime in niz namesto tega to je tudi dogaja, da je zelo zmedeno, ga ne bo deloval natanko tako, kot si jo potrebujete. Torej, tukaj, imenovanjem in sintaksa je Zelo pomembno za vodenje kodo. Vsakdo dobro? Ja. Maddie. Maddie: Tukaj sem vedel, da smo pogledal na primere v razredu, kjer prosijo kakšna je vaša starost, kakšno je vaše ime. Tukaj bi bilo to doesn't-- če smo teči to kodo, ne bi prosil za to? Ampak ti bi samo vhodne dve številki in potem bi bilo teči tako? ANDI PENG: Ja, točno. Torej, če si hotel za to, da zaslon, vnesite vašo starost, lahko samo dodate (funkcija printf) ki pravi, Prosimo, vnesite vašo starost, nad njo. To je dobro vprašanje. Ja. SPEAKER 9: Torej, bi že vključeno v GetInt () [neslišno]. ANDI PENG: Ne, to dejansko ni. Torej, vse to pa je samo pozove prazen zaslon uporabniku na vhodni nekaj. Če hočeš, če želite, da natisnete iz nečesa, kar pove uporabniku, kot so, prosim dajte mi svojo starost, potem vam bi morali printf (), ki zase. Ker vsakdo uporablja to Funkcija za različne stvari, si lahko shranjevanje starost, si lahko shranite naslov, si lahko shranite telefonske številke. In tako je res do Posamezne uporabe vaših fantje " za to, kar hočeš povedati. Ja. SPEAKER 10: Torej, samo zato, da pojasni, kje Vam narediti vhod ime in starost tako, da se pojavi na mestu% s? ANDI PENG: Kot na uporabnika? SPEAKER 10: Da, všeč Kako da it-- kje sem dal Andi, in kje sem dal 20? ANDI PENG: Ja. Torej, če ste bili, da dejansko vodijo to kodo, Ne bom dejansko teče kodo, to je samo tukaj, zdaj. Če bi bil jaz teči kodo, jaz bi prevajanje kode, da datoteke, teči kodo, nato pa bi samo dva prostora za mene do vhoda it. Ja. Vi boste videli, ko boste igrali okrog z oznako sami. Vredu bomo premakniti v naslednjem poglavju o tem, kaj bomo danes pokriva. Bomo šli nad tem, kaj pogojni stavki so. Torej, če vi spomnite in spomnim iz predavanja, pogojni stavki, vsi so so niz navodil na računalniku v ki če določen pogoj izpolnjen, izvedete kodo znotraj tega pogoja. Torej, v bistvu Scratch-- velika tema od danes je, da vidva že vse Videl logiko vsega da smo pokrivajo. In vse, kar počnete, je prevajanje nekaj da je zelo intuitiven v Scratch, in težko je kodiranje v skladnji bomo uporabljali v razredu, ki je C. Torej je logično, je bilo vse to blok je, da je del kode, prav tam. Ja. V REDU. Prav tako smo dobili v if ... else Izjava, ki je le dodatna plast kompleksnosti IF izjavo kjer računalnik ima pogled na to in vidi, če je ta pogoj izpolnjen, storite kar je znotraj teh dveh razredih, else-- tako nekako kot privzeto, če ne izpolnjujejo condition-- to storite. To je kot odcepu. Če dežuje zunaj, sem dal na dež jakno, ostalo nič ostalo mi ne dajo na dež jakno. Ali, da je logika smisla za vsakogar? Cool. V redu. Tako kot na računalniški primer to, da bi videli v C je, če sem hotel ustvariti variabilni imenovane domače ur. In če je domače ur manj od pet, sem rekel, Življenje je lepo. Čudovito je. Vendar pravijo Boj je real-- ki je, kaj smo vse o tem v ponedeljek popoldne do Znanost Hill so Verjetno delaš prav now-- OBČINSTVO: [smeh] ANDI PENG: Prav tako smo bi, hvala za to. Pot bomo hardcode ta v C je if-- predpostavimo že imamo spremenljivko tipa int imenovano domačo nalogo ure tukaj. Če je domače ur manj kot pet printf (), Življenje je lepo. Ne pozabite, da / n, ker želite novo linijo po. Else print, Boj je resnično. Ali vsi razumejo, kako Sem prešli iz tega bloka v tem bloku kode? Cool. V redu. Torej, zdaj bomo si oglejte več izkazih, če celoti. Torej, kaj je prevzame Namen tega programa Mi je bil poziv uporabniku za razred. Mi spodbudilo uporabo GetInt () za razred, in so vhodna vrednost, in želite prikazati kakšen tip razredu so dobili. Torej, če bi bil jaz oblikovati program, sem pomeni običajno v vseh naših očeh, MAXIMUM 90-100 je A, se 80-90 je B, in tako naprej in tako naprej. Kaj je narobe s tem del kode, ki to ni to, kar želim storiti. Ja. SPEAKER 11: Imajo nižje omejitve, vendar nimajo zgornje meje. ANDI PENG: Točno tako. Ali so vsi slišali, kaj je rekla? Tam se dogaja, da se zgornja omejitve, vendar ni nižja meje. Žal mi je, obratno, spodnje meje, ni zgornje meje. Torej bi radi vzeti zabodel rek kaj bi bilo natisnjeno na to zaslon, če bi bil jaz vodim to kodo. SPEAKER 11: napaka? ANDI PENG: napaka? Velika ugibati, ni čisto v redu. Ima kdo drug stab? Ja, Aaron. AARON: Če si dal v nekaj več kot 90, da bi pokazal vse razrede jih imaš. Pokazalo bi, da imaš A, imaš B, imaš C. ANDI PENG: Ja. To je ravno prav. Torej, da bi bilo čudovito. Vendar pa so medsebojno izključna, mislim. Če bi bil jaz teči ta del kode. In potem naj samo povem, sem vnaša v razred 95. Torej je 95 shranjen v INT imenujemo razred. In tako C je jezik ki vodi do vrha do dna, tako se dogaja, da je vedno vodijo do dna. Tako se dogaja, da pridejo sem, prebral če Razred je večja ali enaka 90, printf () imaš A. Great sem imajo 95, ki je večja od 90. To se dogaja, tiskanje, Imam A. To se dogaja da pogled na to, če se dogaja torej tudi 95 je prav tako večji od 80, to se dogaja, da natisnete imaš tudi Got B klicaj, in tako naprej in tako podobnega. Torej, kot smo lahko vsi vidimo, to je pogosta napaka ki se lahko pojavijo, ko smo pisno kodo, da pazi za. Kdorkoli, kakršna koli vprašanja o Zato, da se je dogajalo? Great. V REDU. Torej, kako bomo to popraviti, je očitno logičen naslednji vprašanje. No, imamo ti lepa Stvari imenovane če drugega, če drug če drugje izkazov. Tako da lahko vidite, če boste želeli spremeniti ta problem, si želel, da bi vsak izmed razmere med seboj izključujejo, bi dodaj drug ... če izjavo. In to od course-- misliš o njih, kot je lestve, ali kot klini v zvezi ladder-- lahko dodate kot mnogi od njih, kot ste želijo čim več pogojev, kot želite. Torej, tukaj, če sem inputted stopnjo, da bo 95. Če je razred večji od 95, printf (), sem dobil A. super. To se dogaja, da vidite drugega ... če in to se dogaja, da vedo, Oh ne, Sem že izvršena prva drugje. Jaz know-- ali prvi if-- vem, da Nimam pogled na katerega od teh ker je ena od njih je že res. Tako se dogaja, da teče od vrha navzdol. Takoj, ko je prvi res, potem to se dogaja, da preskočite nad vsem ostalim od drugje ... investicijskih skladov. Ali to smiselno? Torej, na ta način imajo različne stopnje preverjanja in takoj, ko je eden izmed njih je neresnično, ostali so tudi, da ne bo še preveriti. Cool. V redu. Torej je to primer drugačen nekako pogojno izjavo vidimo manj pogosto, vendar jih bomo videli in jih uporabljati. In oni so pogosto bolj učinkovita za nekatere primere. Torej imamo, kar se imenuje izjavo stikalo. Torej, preden smo pokrili Kaj je ostalo Izjava, if ... else izjavo. Tu imamo tisto, kar so imenuje izjave stikalo. Torej, kdaj bomo uporabili stikalo Izjavi je ključ? Torej, v switch stavku, si navadno, običajno, dejansko vam lahko samo vhodni cela števila za vaš spremenljivka, ki ste preverjanje. Torej, če sem hotel, da preverite če neka number-- npr plačilnega razreda, če imam 90. Želim, da vidim, če je to A,, B ali C. jaz bi imel zadevo tukaj. Vendar pa je primer za drugo konstantna. Torej, v tem smislu, Izjava stikalo lahko samo preverjanje enakosti dveh številk. To ne preveri za kaj drugega. Torej, to je nekaj, kar bi bilo zelo previdni, ko uporabljate to. Torej, tukaj, če sem hotel, da preverite če je moj razred 90 enako 90 ali 80 ali 70 ali 60, in nato print ustrezen razred, Jaz bi lahko napisali, da v izjavi stikalo. Tako se dogaja, da pridejo sem, ček to celo število enako tega konstanto? Če ne, to se dogaja, da preskočite. Je enaka konstantna dve, in tako naprej in tako naprej, dokler si udaril privzeto, če sta enaka nobena od njih. Takoj, ko eden od njiju nastavljena enaka, to se dogaja, da to storijo vrstica kode in počitek. Kar pomeni, da bo udaril, da je teči, break, in samo popolnoma preskočite na dno kode. Torej, v tem smislu je vrsta nalog kot if else if else if izjavo. Torej, tukaj je konkreten Primer za vas. Torej, kaj je domnevati, da sem si želel ustvariti spremenljivko z imenom leto ustanovljeno. In želim, da pozove uporabnika na vhodu leto, ki je bilo ustanovljeno njihova šola. Tako sem lahko ustvarite switch stavka tukaj. In kaj je pravkar rekel, jaz vhodni 1636. Ta koda tu videli stikalo Leto ustanovitve, ki je enak 1636. To se dogaja, da vidim zadevo 1636, oh to so enaki, printf () ne bi moral biti v tistem šolskem na severu? Ker predvidevamo, da ne pojdite tukaj, če gredo na Harvard, odmor in preskočite do konca. Če bi bil jaz na vhod 1701, ki Predvidevam, da vse nas bi vhod, bi preskočite ta primer, pridi navzdol na primeru dveh, ki je 1701, in tiskanje Dobrodošli na Yale! Break, preskočite do konca. Ostalo, kar verjetno jemljete ta predmet na spletu, v katerem case-- super dobrodošlico da Yale-- se dogaja, da gredo na privzeto print, Hello Internet! In break. Ja. SPEAKER 12: Lahko uporabite drugega namesto privzete tam? ANDI PENG: Ne, ker je način, da ves ta funkcija Stikalo je vgrajeno, sintakso vam treba uporabiti, je Case privzeto. To je tako kot, če drugega, če je to ena je Case privzeto. Ja. SPEAKER 13: Si morda že to rekel, lahko pa imate več kot dveh primerih? ANDI PENG: Ja, lahko bi imajo toliko primerov, kot si želite. Misli, da je tako kot neskončno dodajanje naprej. SPEAKER 14: Če vas zamenjan 1701 z 1636, v resnici ne bi razlika kajne? To je le, da bo treba preverjanje za njo. ANDI PENG: To je Res dobro vprašanje. In bomo dotaknili kasneje, ampak samo vemo, da je stikalo Izjava je infinitely-- je bolj učinkovit od nje, in če drugje če saj deluje z drugačno vrsto funkcij, ki vam omogoča, da v bistvu, samo skočite na primeru morate biti. Ja. SPEAKER 14: Cool. Hvala. ANDI PENG: Ja SPEAKER 14: In si ne bi mogla storiti primeri kot in višji kot. ANDI PENG: No. Torej, to je tisto, kar omejuje približno Stikalo izjava je, da imate da imajo konstante samo, samo cela števila. Ja. V REDU. Torej je to nekaj, kar vas Fantje bodo imeli manj pogosto, ampak sem samo hotel ga uvedejo v primeru. Imamo tukaj, kaj je imenuje ternarni operator. Kadar je v bistvu, to je tako kot če izjava prevedena v eni vrstici. Tukaj, bom šel na naslednjo vrstico se naslednja stran, ker je lažje videti. Torej smo vsi videli to pravico? To je zelo enostavno slediti. Če bi želel, da bi spremenljivko z imenom niz imenovan y, če je določeno število Dam, da je manj kot 100, I želite dodeliti nizko na vrvico, še želim dodeliti visoka. To tu počne točno isto stvar ti osem vrstic kode počnejo. Torej, tukaj želim ustvariti spremenljivi niz. In to je pogoj, da sem preverjanje, če je manj kot 100, potem ste dodeliti vrednost nizka, drug dodeliti vrednost visoka. Ti diapozitivi bo na spletu, brez skrbi če vi ne boste dobili to dol. To je samo enostavnejši način, bolj učinkovit način za pisanje kode. V REDU. Torej, zdaj bomo vnesti kaj, za večino ljudi so kot zelo, zelo zmedeno stvar, da razmišljajo o tem na prvi. Oddelek zanka. Torej, danes bomo govorili približno tri vrste zank. Bomo začeli z nekaj časa zanka, potem pa govori o opravkov, medtem ko zanke, in potem govorijo o za zank. Torej v bistvu za bolj vizualne učenci tam, imamo v bistvu grafični upodobitev kar nekaj časa zanka počne. Torej v programiranju, bi začnete in vnesite zanke v določenem trenutku. Da preverite stanje. In če je pogoj izpolnjen, izvedete kodo notri. In prideš nazaj okoli in si oglejte. Če je še vedno res, da teče to kodo okoli in okoli v zanko. Vendar pa je druga, da pogoj postane false, boš prekinil in na koncu zanke. In to je v bistvu skladnje boste uporabili. Medtem ko je določen pogoj res to, če to ni res, boš preskočite do konca in napredovati s svojim programom. V REDU. Ali ima kdo primer o tem, kaj lahko potencialno zgodi če sem poskusil zagnati ta del kode? Mimogrede, SAJ-- da je Scaz, Andi, Jason-- bomo podpisali off naše e-pošte, Ljubezen, SAJ. To nas je. V REDU. Vsakdo ima zgled, ali imajo ideja o tem, kaj bi to natisniti? Nekakšen trik vprašanje. Torej, tukaj, ne pozabite stanje smo preverjanje čeprav je res. Torej, medtem ko je to res, je to gre za tiskanje, I love SAJ! Ali obstaja točka, v kateri sva spremeni to kaj drugače? Ne, kajne? Torej, tukaj imamo s katerimi se srečujejo, kar je verjetno dogaja, da se utrujaš veliko vaši programi, neskončno zanko. Boste ugotovili, da, če vas teči ta del kode, to je šele tekoč, da bo tiskanje, I love SAJ! Medtem ko cenimo podporo, nočemo vaših računalnikov crash, ker vas obdržati tiskanje Ljubim SAJ! Torej, prosim, prosim, izognili neskončno zanko saj se ne bo nikoli oceniti na false in si ne bo nikoli zapusti zanko. In ti boš se zanič v večno. Cool. V REDU. Druga vrsta zanke bomo danes govorili je storila, medtem ko zanko, naredite medtem ko zanke. In je to imenuje Do while zanko ker imaš storiti, in kar nekaj časa. Torej to je precej podobna nekaj časa zanka, ampak malo drugačen. Tukaj boste storili kar je znotraj tega medtem ko je določen pogoj true. Torej, če bi bil jaz C in računalnik Jaz sem teče navzdol ta del kode, Vzamem si na vrhu. Grem do C, povem to storil. In potem sem preveriti, medtem ko je ta je res, moram ponoviti. Toda medtem ko je ta napačna, Nato sem se premaknete naprej in nikoli nisem šel nazaj v to zanko znova. Lahko vsakdo vzeti stab v čem je razlika med to zanko in tista, ki smo Samo pogledal je bilo praktično. Ja. SPEAKER 15: Stanje prihaja po tem, ko namesto prej? ANDI PENG: Točno tako. Tako je rekla pogoj prihaja po njem, ne prej. Konec koncev, je razlika med tem in while je, da ste pravkar storili karkoli je notri to ne glede na to ali je vaše stanje ali ne res, in nato preverite stanje. Torej, v tem primeru, da ste always-- na ta način, ste vedno pazite karkoli je notri teče vsaj enkrat pred preverjanjem, če želite, da se znova zagnati. In tukaj je primer kdaj bi ga uporabili. Tako na primer, če sem hotel imeti spremenljivka tipa int imenovan starost, in želim, da pozove uporabnik za svojo starost, Bom naredil printf () Koliko si star? starost = GetInt (), ki je spodbudilo uporabnika. In nekateri ljudje bodo zelo nadležno. In nočete hroščev v vašem Program nekom vnašanja podobno, oh sem negativen star 4 leta ali karkoli. V tem primeru, če so storiti, da se to ovrednoti na true, kar pomeni, da bom morali obdržati vrača in to. Torej, to se dogaja, da ponovno poziva uporabniku da vam je všeč pravi starost številka in to je dogaja, da gredo nazaj in redoing je, dokler se vam resnično starost večje od ena, ali nič. Torej namig, namig. To bo zelo, zelo koristno za enega od vaših težav PSet. Ja. SPEAKER 16: Ups, žal. ANDI PENG: Yep. SPEAKER 16: Ali obstajajo, ne da je kreten, ampak-- ANDI PENG: Brez skrbi. SPEAKER 16: --are tam različna pravila tukaj, ali si samo pozabil dati ponudbo? ANDI PENG: Oh Yeah. Žal mi je, da je popolnoma moja slaba. To je bil zagotovo naj bi bil citat. Dober ulov. To bi ne teče. V REDU. Torej, zadnja vrsta zanke bomo govorili okoli in na koncu nekako najbolj Kompleks je za zanko. Ne skrbite, če ne vem, kaj to pomeni. To je precej zmedeno na prvi. Mi bomo šli čez primer. Vse, kar se dogaja v za zanke je, da imate tri izjave da boš vključiti. Torej za določeno stvar, ste gre za inicializacijo spremenljivke. Boste dodali pogoj, da ki bo ta zanka teče. In nato, na koncu zanka, boš ga dopolni. Lahko posodobite spremenljivko da želite slediti. Tako smo običajno uporabljajo za zank, ko smo želite zagnati zanko za A določena količina roki in smo že vedeli, Oh želim Ta zanka izvršiti kot 10-krat, potem si do-- bom šel čez primer na naslednji strani. Torej, tukaj, na primer, v nič, če vas hotel nekaj ponoviti 10-krat, vse, kar je imel za povedati je, ponovite 10-krat, ljubim SAJ! ki je bolj sprejemljiva oddaja podpore za nas namesto neskončna zanka. Tukaj, kako bi Prehod na C in odpisa da je za int-- bom za ustvarjanje ali razglasi spremenljivko tipa int imenom i. Jaz grem za inicializacijo je na 0, tako da i = 0; in to se bo moje stanje. Torej i je manj kot 10. In nato na end-- zadnja izjava ste dogaja, da imajo, je posodobitev Kaj se zgodi s spremenljivo i konec vaše zanko. Torej, to je nekako zmedeno, ker različni deli te linije se dogaja na drugačen Vrste zanke. Ampak bom šel več kot psevdokoda primer, da in morda to pojasnite samo malo bolje. Torej, tukaj. To je zanka smo pravkar videli. V bistvu psevdokoda, kaj se dogaja v tem programu, najprej sem ustvarjanju i, inicializacijo 0. Jaz sem preverjanje, da vidim, če je manj kot 10, v tem primeru Prvič je ker 0 je manj kot 10. Tako zanka se bo teči. In potem bom natisnete to linijo. In nato na koncu te vrstice, desno tukaj bom naredil prirastek i, i ++, Vse to pomeni, je povečevanje po enega. Torej, jaz je zdaj 1. Ker je bil nekoč 0, če sem prirastek je, to je zdaj 1. In potem bom šel nazaj na začetku zanke in jaz preverite stanje. Je stanje še vedno drži? Da, 1 je vedno manjša od 10. Tako se dogaja, da se to še enkrat natisniti, pojdi in nato prirastek i in preverite pogoj neprekinjeno, neprekinjeno, dokler ne boste na koncu dobili do točke, kjer je i 10. Greš natisnete to 10-krat in potem sem se bo enaka 10. Ti boš, da preveri stanje. Je 10 manj kot 10? Ne, da je lažna. Tako ta zanka ne bo teči, da se bo zlomil, in boš nadaljuje s svojo kodo. Tako da lahko vi vidite, to je res odličen primer zanke lahko programirate, da teče za določeno količino časa. Vsak jasno? Ja. SPEAKER 17: Kaj prirastka eksponentno, je drugačno kodiranje? ANDI PENG: You can-- bova šla zaradi tega v naslednji diapozitiv. Dobro vprašanje. Je anyone-- preden sem premakniti on-- kdo sploh zmedeni, ker je to res težko pojem. Brez skrbi, če you're-- OK. Cool. V redu. Samo splošna tobogan. Ta medtem zanka je početje točno isto stvar, za zanko bilo. To je samo napisano drugače. Vidva se lahko seznanijo z vsebino diapozitivov na vaše udobje kasneje. Ampak samo vem, da je multipla načini pisanja isto stvar zgodilo z različnimi zankami. V REDU. Torej, zdaj smo dobili pri vprašanju, kaj če imamo zanko znotraj zanke. Mi smo dobili v realnem Inception vrsta stvari tukaj. Ko boste želeli narediti stvari mnogokratnik krat znotraj drugih stvari da delati stvari večkrat, vas želim, kaj se ti ugnezdene zanke for. Za tiste, ki ste prvič videli to in dobili zelo zmedeni, vsi delamo tukaj bo imela za zanke, kjer je imamo spremenljivko zapored. Vendar znotraj nje, imamo tudi drugo zanko spremenljive imenovano koloni. In sem zelo predlagam vsem, ki ste ki so zamenjali najprej vodi to track-- potegnili, pripraviti to. Ne poskušajte samo razloga skozi njega, ga potegnili. V tvoji glavi, o tem kos papir, ali karkoli, write vrstica, spremljate, kaj vrstica je enaka. Napišite stolpec, slediti o tem, kaj je v stolpcu enaka. In spremljate, kaj je tiskanje z vsako ponovitev. Vsaka ponovitev te zanke, vsak ponovitev te večje zanke, samo ne po logiki. In zagotavljam vam, boste ljubezen tisto, kar vidiš, ker je prav tako zelo primerno za vaš problem sklopov. Cool. V redu. Torej, najbolj pomembna stvar da sta vidva vse razmišljal prav zdaj, so vaši Problem Nastavite 1s, ki so posledica četrtek / petek. V vašem water.c programa, namigujejo, da boš imel za poziv uporabniku za vhod. V vašem mario.c programa boste imeli da uporabite ugnezdene zanke, ki je za zanke notranjost za zanke, natisniti blok piramide, v bistvu kot tisto, kar je Mario na skozi skok. In potem v vašem greedy-- ali morda Izdelava Change, če kdo od vas fantje ste že kdaj slišali za that-- boste morali biti zelo Pazite prvih vrednot plavajočo vejico. Zapomni plavajoče decimalke in cela niso ista stvar. Spremljajte od katerih je katera. In ti boš za uporabo pogojni stavki, kot tudi. V redu, zadnja stvar. Imam par minut tekme. Style. Torej, to je nekaj, kar ne dejansko vpliva na učinkovitost, ali dejansko vodenje kodo. Vendar pa nas učinke kot Vaši grederji, kot vaše bralce. To učinke sami, če ste poskuša najti težavo. To učinke berljivost kode. Torej slog, kot takrat, ko ste poskušali slog esej za angleščino, če niso imeli odstavke, imate vse prijazno iz premešanih skupaj v eni vrstici, jo zaradi česar je res težko za vsakogar brati svoj esej, četudi tvoje točke so logično zvok. Ista stvar pri programiranju. Lahko imaš strašno nejasna koda, ki bo Scaz kritje, in lahko še vedno teče in funkcijo. Ampak za nas, kot vaše lepe TAS, ki bodo se branju in vrednotenju svoje PSets, to ni zelo lepo. Zato vas prosimo, zavoljo od nas in sebe, ko poskušate popraviti problem v kodi, in skušaš preberi svojo kodo, da prepričani, da sledite nekaj konvencij da smo šli čez. Torej, najprej. Dajte svojim spremenljivk smiselnih imen. Če želite shraniti celo imenovano starost, vas prosimo, da naštejemo starosti. To ne naštejemo višino. Ko skušaš shranite starost v višino, naredi vse, kar je zelo zmedeno za nas. Mi ni všeč, da je treba zamenjati. Vam ni všeč, da je treba zamenjati. Nihče ne mara, da je treba zamenjati. Če ste tekoč ustvariti nekaj, Ime je nekaj pomembnega. Vendar pa v zanko, enojno spremenljivke znakov so ponavadi v redu. In v zanko, če hočeš samo i, in j, k, vas prosimo, da le to. Dosledno inicializacija. Torej, kaj to pomeni? To pomeni, tehnično, teoretično, lahko sproži in ustvarjanje več spremenljivk na isti liniji. Tako, na primer, lahko ustvarite celo imenuje scaz_age, in celo pozval andi_age = 20, in celo imenuje jason_age na isti liniji. In sem lahko tudi dodelite samo eno jim in ne druge do vrednot. Sprašujemo vas prosim, ne delaj tega. Ker sem, da ste v bistvu ustvarili tri spremenljivke, vendar je le ena od njiju dejansko ima vrednost. In potem, ko smo poskuša prebrati kodo, ali če ste poskušali popraviti problem v kodi, je zelo zmedeno, da jim sledijo. Torej samo za berljivost, za naša berljivost, ne delaj tega. Dosledni zaviti oklepaji. Nekateri ljudje radi, da svoje zaviti oklepaji v različnih krajih. To sploh ni pomembno. Samo poskrbite, da ste dosledni pri vašem lastna koda na to, kje vam je všeč, da jih. Dosledno razmik. Če si dal prostor po za zanke, vedno narediti. Ne samo rad nekako to storite na nekaj krajev, ne stori v drugih. Samo bodite dosledni. Drugič, če bi kdo rad se seznanijo z vsebino na CS50 Style Guide smo uradno imajo slogovni priročnik, ki vas vse od teh konvencij pove, plus več. To je na spletu. To je kot cs50.net/style~~pobj ali nekaj takega. Lahko ga google. Usklajenost je ključnega pomena. Torej, ne skrbite, kaj drugi ljudje počnejo, Samo se prepričajte, da ste dosledno v svojo lastno kodo. Kdo kakršna koli vprašanja o tem? Ja. SPEAKER 18: Tako je pravilna stvar storiti z inicializacijo je le Vse jih imajo ločen linija, je, da je kaj praviš? ANDI PENG: Torej, sem redko se to zgodi. Ampak, če boste želeli, če si hotel biti kot prihranek prostora v kodi, ali karkoli, lahko to storite. Prosimo vas, da preprosto ne inicializirati ena stvar, in ne drugi. Torej, če želite narediti int scaz_age, int andi_age, int jason_age, da je v redu. Samo ne inicializirati eno in ne drugi, je vse. Vprašanja? V redu. Grem mimo off mikrofon in laserski kazalec, in baton na Scaz na tej točki. To je neprijetno. Tukaj je. BRIAN SCASSELLATI: Hvala. Kako, da za zvok? Zvok je dober? . Odlično. V REDU. Torej, hi vsi. Bom poskusil, da delo prek praktičen primer z vami. In bomo uporabili CS50 je razvojno okolje, kar se imenuje Integrirani razvojno okolje. In ste videli to dokazali v predavanju. In Problem Set 1, ste dogaja, da imajo priložnost da jo uporabljajo, in igral z je, in se navadili na to, saj bomo, da ga uporabljate skozi preostanek semestra. Torej, v tem IDE, imate kaj videti kot zelo tradicionalni datotečni brskalnik preko na eni strani. Imaš del gor top, kam greste da vidim svojo izvorno kodo, vaš Cfile, koda, ki ste napisali. In dol dnu, boste ima terminalsko okno ki jih boste uporabljali za tako pripravijo svoj program in teči ali izvršiti svoj program. V REDU. Torej, samo, da nam malo ustanova, v tem oknu terminala, si bo z naborom ukazov da so standardni ukazi vsej večina sistemov Unix ali Linux. In tako, če ste kdaj uporabili vsako obliko Unix, Ubuntu, ali katerokoli drugo okusov, se ti dogaja, da izgleda znano. Če še niste, ne skrbite. Nič ni zapleten o njih. Oni samo z drugačno sintaksa, drugačno poimenovanje Konvencija od vas že videl prej. Torej na seznam iz datoteke v določenem imeniku, oni bodo uporabite imenuje ukaz ls ali seznama. Če želite videti vse z vsemi podrobnostmi, boste z ukazom argument linije z ls -l. In to vam bom pokazal vse podrobneje, tudi v dovolilnice za datoteko. Če želite spremeniti mapo, boste z ukazom cd. In boste mogli spremeniti imenik tako, da gredo na vašem domačem imeniku. To je samo cd vse, ki jih sama cd z dvema pike vas bo vrnil do enega Raven vaši prejšnji imenik. In lahko tudi cd k podimeniku z vpisom v cd in ime te podimenik. Ustvarite lahko tudi nove mape. In gremo na sprehod skozi to v samo minuto. Ampak samo, da dajo Vse na zaslonu. Tako da jih lahko vidimo. Prav tako boste imeli možnost, neposredno manipulirati datotek v ukazni vrstici. Boste mogli kopirati, da jih premakniti, ali jih odstraniti, da je, dejansko, da jih izbrišete. CS50 IDE vam daje polno Moč argumentov ukazne vrstice. In to pomeni, da lahko tudi narediti zelo nevarne stvari. V REDU. Na primer, lahko odstraniti, ali da je brisanje, datoteka brez vprašanja za potrditev. In lahko tudi odstranite recursively-- da je pomišljaj r flag-- celoten podimenik in vse njene vsebine. V REDU. Oni so našteti v rdeče, saj vas bi morali razmišljati "nevarnosti" vsakič vidite te stvari. V REDU. V redu. Zdaj končno, stvari, ki so bo res koristno za vas, so obstaja nekaj dobrih trikov vedeti, kot ste navigacijo skozi to okno terminala. Prvič, lahko počistite zaslon na vsak čas, ki ga vtipkate v jasno. In boste videli me to, da pogosto. Lahko pa tudi samo prikaz besedilo datoteke z vnosom več in nato ime datoteke. Nato boste lahko pomikate nazaj in tja s tem samo s preslednico in puščice. Če imate, kot smo to storili danes v predavanju, program, ki se nenehno teče v neskončni zanki, ki jih lahko ustavi ta program od izvršitve z vpisom v nadzor, da se držite CTRL-C. In morda boste morali storiti to večkrat. Računalnik dobi daleč pred tabo. In včasih je potrebno izročiti to nekaj poskusih preden bo dejansko prišel skozi. Prav tako boste lahko nekako skozi ukazov ki ste ga pravkar vnesli uporabo gumbov gor ključ, arrow tipko in nato tipko s puščico navzdol. In kaj je najbolj uporabno je namesto tipkanje ven dolga imena datotek, boste mogli Tab uporabe na samodejno dokončal nekaj navodil. Zdaj bomo dokazati vse tiste, v samo sekundo. Torej, če se ne spomnim jim, ne skrbite. To so stvari, ki jih boste pick up in uporabite kot gremo skupaj. V REDU. Torej, v C- razliko Scratch-- C je zbrati jezik. To pomeni, da bomo vzeli vir file-- da je besedilo, ki ga pišete, ukazi, ki jih pišejo se printf () izjave, zank, Vse else-- in gremo da sprejme to datoteko in jo izroči off na program se imenuje prevajalnik. Prevajalnik bo nato da besedilo, ki ste napisali in ga prevesti v Binarni navodila da je vaš računalnik dejansko dogaja uporabo. To se imenuje objekt ali izvršljiv pila. Če pogledaš na to datoteko, boste da vidim kodo, ki ste napisali. Če pogledaš na to datoteko, boste videti naključno zaporedje znakov da nobenega smisla sploh. To je zato, ker je to binarno. To ni pomenilo za vas, da se bere. Vendar pa kadarkoli želite teči nekaj, kar boste da teče je objekt datoteko. Torej, ko delamo z njimi datoteke, bomo napisali datoteko v C Bomo nato sestaviti, z uporabo Ukaz kot znamka, ki bo uveljavljal prevajalnik Jek za jezik C. In da bo pripravila predmet datoteko, kot navzven, ali v tem primeru, ime, moje datoteke, ki sem jih dal v. V redu. Torej, kaj je dejansko poskusite to. Tako sem prišel s primerom kaj sem želel poskusiti. In ena od stvari, ki me fascinira je animacija. Zato bomo poskušali narediti malo animacijo uporabo le ASCII znakov. Znaki lahko natisnete enostavno zdaj. Torej, tukaj je moj najboljši poskus pri ustvarjanju za vas animacija za zajčka teče skozi visoko travo. Tukaj je. V REDU. Torej on ne teče še ni, ampak je tam stoji v visoki travi. Zdaj, če bi bil jaz animator, v stari šoli verzija animacije, kar sem bi storiti je, jaz bi proizvodnjo slika tega zajčka v travi. In potem bi proizvodnjo drugo picture-- drugo, kar so imenovali cell-- da je zajček le nekoliko premakne. In nato tretji, da je zajček preselila malo dlje. In jaz bi proizvodnjo celotne zaporedje teh celic. Nekateri kjer zajček je končana na levi strani. In potem se premika počasi, ena eden proti sredini. In potem od sredine nad desno. In če sem bila takrat res srečen, da sem lahko dal skupaj in sem jih lahko animirati. In tam je moj zajček teče skozi travo. To je moja velika PowerPoint trik za dan. V REDU. Torej, to je tako dober, kot je dobil. V REDU. Torej, tukaj je še enkrat, Tukaj je naša zajček teče skozi travo. SPEAKER 19: Spet. BRIAN SCASSELLATI: One več časa, vse v redu. Tam je tvoj zajček. V REDU. Torej, danes, kaj bomo storiti, je, da bomo poskusiti, da avtomatizirati postopek proizvajanja te celice. Ne bomo povsem priti do točke da bi jih lahko vse skupaj. Ampak, bomo poskušali avtomatizirati Postopek generiranja tega zaporedja. In to je veliko tega, kar animacija je danes podobno. To pomeni, da ne počnejo stvari nujno s pripravo vse z roko. Mi uporabljamo računalnik za avtomatizacijo deli tega procesa. V REDU. Zato mi dovolite, preklopite zdaj naši CS50 IDE. In sem ustvaril za us-- in pustite, me povečate tukaj malo bit-- sem ustvarjen za nas izhodišče. Vsakič, vas prosimo, da bi sedel dol in napisati del kode, kaj smo res vas prosim, da naredite se bomo prosi rešiti problem. In način, da bi smeli razmišljati o tem, da je je začnemo z nekaterimi preprosto del te raztopine. In potem graditi ven iz tega dela. In to je tisto, kar bomo storili danes. Torej, namesto da poskuša vse naenkrat, da napišite celotno kup kode, ki je bo za izdelavo tistih, 10 animacije celice, bomo namesto tega začeti z enega kosa, ki deluje. In potem bomo zgradili malo okrog, da in malo bolj in malo več. Zdaj je dobra stvar reševanje problemov na ta način je, da bo vam omogočajo, da začnete vedno z nečim, da veste, dela in uvesti en postopno spremembo. In to je odličen način da se naučijo, kako kodo, ker vsakič naredite sprememba, vidiš, kakšen vpliv ima. V REDU. Torej, tukaj je naše izhodišče. V REDU. Torej na začetku moje datoteke, Sem hash #included stdio.h. To je tako, da sem lahko dobil printf () funkcijo za delo. Potem sem jaz imam svojo glavno funkcijo. In to še vedno izgleda malo Skrivnosten ali nejasna, da nekateri od vas. To je ok. Vse to govori, da Glavna funkcija je no arguments-- nična sredstva nič v C in ga vrne po dogovoru celo število. Glavna vedno vrne celo število, običajno koda rekel stvari je šlo dobro, ali ni šlo dobro. V REDU. Toda glavno je, da ima to tvori za nas prav zdaj. Sem pa dal v treh vrstic kode. In skupaj z vsako vrstico kodo, sem dal komentar. Zdaj pa ena od stvari, ki jih Vztrajali bomo, da boste to storili, in je tako pomemben programerska praksa, je vedno komentirati svojo kodo. Vedno si zapišite v Angleščina comment nekaj da misliš, da je koda je moral storiti. Na ta način, kasneje, ko prideš nazaj to, si lahko ogledate na njej in lahko rečem, oh, se spomnim, kaj sem bil poskušamo storiti s tem. Ali kadar TA sedi z vami poskusite, da vam pomaga pri uradnih ur, jih lahko ogledate na tem in šel sem videli, kaj ste skušali narediti, ampak to je kaj se v resnici dogaja. V REDU. Torej imam tri dele za mojo kodo, Bom najprej tiska iz nekaterih pikah na začetku. Bom potem izpisal my zelo fancy zajček. In potem nekateri malo pik na koncu. In ti trije stavki tisk naj poglej seznanjeni, da vas na tej točki. Vse, kar delam v vsak od njih je, da sem tiskanje zaporedje znakov. Tukaj ni vpletene spremenljivke. Vse je samo ravno. V REDU. Torej, če grem sedaj na moj terminal-- Pa poglejmo, če lahko dobim to nazaj out-- in bom spet tip jasno. SPEAKER 20: Ali bomo uporabili dvojna poševnica komentar? BRIAN SCASSELLATI: Can uporabite double-- Da. Obstaja več načinov za pustite komentar v C. One način je, da uporabite dvojne poševnice. Druga je, da uporabite poševnica in zvezdo in nato zaprite z zvezdo in poševnico. V redu. Najprej bom Navigacijo začnete tukaj. Torej, če grem na moj domači imenik, Sem spremenil imenikov tam, Grem pogledati in videti, kaj je v tem imeniku, ls, seznam ven. Grem, da vidim, da sem dobil dva podmape. Naj bo to malo večji tukaj, tako da bomo lahko vsi videli. Vidim, da sem dobil dva podmape. Bom spremenite imenik da gredo v delovni prostor. In jaz bom samo tip ven del njega, in potem samo pritisnemo Tab. In bo to dokončati ostalo za mano. Fancy. Bom pogledati in videti v delovnem prostoru. In zdaj, sem delati na SuperSection da smo poučevanje prav zdaj. Tako da bom šel v ta imenik. In končno, poglej in videli. In imam te datoteke bunny.c. Vse je v redu, tako da mi jasno, še enkrat. In bom spet sem now-- še vedno prebivajo v tem imeniku in to mi je povedal, da sem v da SuperSection imenik. Grem, da gredo naprej in narediti svoj programski zajčka. In ta ukaz, da zajček, medtem ko zveni malo čudno, Prav tako se sklicuje na Jek prevajalnik. In to je proizvedena me izhod, ki je izvršljiv funny-- izvedljiva datoteka imenuje zajčka. V REDU. Ne morem pa, in to zveni še huje, izvršiti zajčka. V REDU. In poglejmo, kaj počne. V REDU. To je malo tisto, kar sem pričakoval. Imam svoj zajček sliko tam, vendar sem nekako vse to želel sam. Kaj sem zamudil? SPEAKER 21: Slash l ali poševnica n. BRIAN SCASSELLATI: Slash n. V REDU. Torej vrnimo tukaj. In bom ven iz tega. In jaz bom šel nazaj v to. In kaj si zdaj zdaj iz moje glavno funkcijo tukaj. Torej, kaj naj storim? Hočem končati linijo. Tako da bom dal v komentarju. Bom dal v printf (). In kaj moram dati noter? / n. V REDU. Kaj moram storiti, da se konča z? Podpičje. V redu. Vendar naj bi res pomembne stvari je prepričati vsakič, ko naredite spremembe v kodi, ki jo shranite. Če niste shranili kodo, ste bomo opazili malo zvezda tam. In da je zvezda vam pravi niso shranili to kodo. Če sem ga zberejo prav zdaj, to ni bo odražala koli od teh sprememb, ker prevajalnik gleda datoteko da je na disku, ne datoteke, ki je odpreti v urejevalniku. V redu. Torej, dajmo jo shranite in potem bova šla prav tukaj dol, pridejo nazaj ven. Pridi na moj terminal. In kaj je počistiti prostor znova. In lahko gremo naprej in še en Čas bo naš zajček program. In izvajajo zajčka. To ni delo niti. Napačna poševnica. Torej, če pogledamo, kaj imam, sem dal / n tja, vendar sem imel napačno poševnice. Vse, kar vaš računalnik Ali je zelo jasna. V REDU? Ena malo napako ločil, in nenadoma ne boste dobili tisto, kar želite. V redu. Torej, kaj je pomanjšanje nazaj spet ven. Šli bomo nazaj. No, da to zelo hitro popravilo. Bomo dal pravo poševnica v. Bomo ga shranite. Bomo povečavo nazaj. Zaradi neznanega razloga, da je ne biti srečen, toda pojdimo naprej in bomo šli nazaj na terminal tukaj. Ga pospraviti. Bomo povečavo. In še enkrat, bomo zajčka. In zdaj dovolj prepričani, da deluje. Hura. V REDU. Torej, kaj je poskusiti, da bi to malo bolj splošno. Poglejmo, če namesto samo tiskanje na poseben okvir, Pa poglejmo, če lahko naredimo to tako da bomo lahko dobili vse 10 od teh animiranih sličic da smo želeli imeti. Torej še enkrat, vzemimo Ta korak naenkrat. Poglejmo najprej posploševati, ne tako da sem naredil vse okvire, ampak tako delam na enega okvir, ki bi lahko, kar hočem. Torej, kaj je razlika med okvirje? Je zajček enaka? OBČINSTVO: Ja. BRIAN SCASSELLATI: Ja. V čem je razlika? OBČINSTVO: Položaj. BRIAN SCASSELLATI: Njegova lega, kajne? In kako naj nadzorujejo svoje stališče? Koliko pik sem dajanje na začetku in koliko pik sem dajanje konec. Torej sem imel pet Na se začne in pet konec. Oglejmo nadomestiti pet z zanko. V REDU. In bom ustvarili za zanka zdaj, da se dogaja, da pravijo, Grem, da natisnete nekaj več pik na začetku. Bom uporabiti spremenljivko. Recimo, kaj pa i kot števec v moji zanki. In bom, da ga razglasi do vrha. In potem v zanko Moram narediti tri stvari. Prva stvar, moram storiti se moram inicializirati i. Kaj naj jaz inicializirati je, da začnete biti? 0. V REDU. Potem moram reči, kaj je pogoj odpoved? Kdaj naj neham? No, koliko pik kajne želite natisniti na tem? OBČINSTVO: Five. BRIAN SCASSELLATI: Pet spet? Kaj pa naredimo nekaj drugačna, smo naredili pet. Pokažimo, da je drugačen. SPEAKER 22: Two. BRIAN SCASSELLATI: Two. V REDU. Torej, če želim dve piki, kaj bi jaz dal tukaj? OBČINSTVO: Tri. BRIAN SCASSELLATI: Tri. V REDU. Kolikokrat je, da bo šel skozi? To se dogaja, da gredo skozi trikrat, 0, 1 in 2, kajne? V redu, pojdimo nazaj na dvoje. Zdaj bomo dobili dve piki. In kaj hočem narediti vsak ko sem šel skozi zanko? Kaj se mora spremeniti vsakič, ko sem šel skozi? SPEAKER 23: Dodajte piko. BRIAN SCASSELLATI: Imam nadaljuj. Bom dodati piko. Jaz grem za tiskanje piko, vsakokrat skozi zanko. Ampak kako sem sledenja kako veliko krat sem bil skozi zanko? Jaz sem z uporabo i, da spremenljivka, da števec. Torej, vsakič, ko skozi, bom za prirastek števec po enega. No, to je enako za me kot pravim, i = i + 1. To je ok. Jaz bi to naredil that-- mi je všeč okrajšava, tako bom rekel, da sem ++. V REDU. Naredimo isto stvar dol na dnu. Samo jaz nekako naredil, da je eden. Bom vama pustil naredite tole popolnoma. V redu. Torej, kaj naj napišem tukaj? Tukaj je moj zanko. Bom naredil printf () in grem da bi bilo tako, da sem samo natisnete eno piko na ta dnu. Kaj naj napišem znotraj tega za zanke zdaj? No, najprej, kaj spremenljivke naj uporabim? SPEAKER 24: j. BRIAN SCASSELLATI: sem lahko uporabite j. Lahko uporabim isto eno? Lahko uporabim i spet? Ja. To je v redu, ker je Is da sem z tu gor, Jaz jih ne, ko spet potrebujejo Pridem do te točke. Torej, kaj naj inicializirati i do? SPEAKER 25: 10. BRIAN SCASSELLATI: 0. Kaj naj preverim? Koliko pik moram sedaj konec če imam dve piki na začetku? Rabim osem na koncu, kaj naj preveri, i manj than-- OBČINSTVO: Sedem, osem, devet. BRIAN SCASSELLATI: Slišal sem sedem. Slišal sem osem. In slišal sem devet. V REDU. Torej smo vsi v desno ball-- Jason pravi 10. V REDU. Če sem potreboval dve piki za prvi, koliko naredite I-- in rabim osem pik za zadnji one-- sem dal dva tam zgoraj, kaj naj dam spodaj dol? OBČINSTVO: Eight. BRIAN SCASSELLATI: Eight. Ker to se dogaja, da računam nič skozi sedem. In to je osemkrat skozi zanko. V REDU. In kaj moram narediti konec? OBČINSTVO: i ++. BRIAN SCASSELLATI: i ++. V redu. Tako, da je videti precej dobro tam. Poskusimo in poglejmo, kaj počne. V REDU. Torej bomo, da ga shranite. Lepo in shranili. Bomo povečavo nazaj ven. Bomo poskušali tukaj v terminalu. Bomo povečavo. Ups. Bomo, še enkrat, da naš zajček program. In gredo naprej in izvršitev zajčka. In to je to. Torej je naš zajček. Če ima dve piki na začetku in osem pike na koncu. Vsi še vedno z mano? V REDU. Tako smo jo zgradili. Zgradili smo eno zajčka, en poseben okvir. Zdaj smo bili sposobni posploševati, da je za izgradnjo več, različne vrste okvirjev. Zdaj pa pojdimo naprej, in imajo ustvarila ne le en okvir, ampak kaj je ustvarila 10 okvirji, kjer smo se počasi da zajček premakniti vse pot čez polje. V redu. Pojdimo nazaj. In bomo poskušali zdaj. Torej, kaj sem res potrebujejo, da tu spremeniti? Kaj moram spremeniti? SPEAKER 26: Morate najprej spremeniti število največ pikami na začetku. Ker če delamo 10 pik, to se dogaja, da se morajo do merilu. BRIAN SCASSELLATI: Ja. Torej, zdaj imam pa nekako Hardwired da vedno narediti dve piki na začetku in vedno delati osem pike na koncu. Želim zgraditi še eno zanko, kajne? Ker ne želim, da graditi le en zajček sliko, Želim zgraditi 10 zajček slike. Zato moram zgraditi še eno zanko, in kot sem že šel skozi to zanko, Želim spremeniti koliko pike sem natisniti na začetku in koliko pik sem natisniti na koncu, na podlagi katerih cikel skozi zanko Jaz sem. V redu. Torej, kaj je dobil še en števec. Nekdo je prej dejal, j, zato bomo narediti še j. In zdaj, gremo na graditi drugo za zanko. Kaj se dogaja znotraj te zanke? Ta stvar mora iti znotraj zanke, kajne? Ali zajček imajo iti v notranjosti zanke? Ali moram zajček v vsak od teh 10 sličic? OBČINSTVO: Uh-huh. BRIAN SCASSELLATI: Ja. Hočem zajček v vsaki od 10 sličic, kajne? Kaj pa pike na konec, moram to? V REDU. Torej bom zamakniti vse od njih. Grem, da označite vse to, in bom udaril Tab. In to se dogaja, da jih potisnite vsem malo, tako da je enostavno za mene da vidim, kaj je v zanko. In potem ga bom končala. Recimo. V REDU? Zdaj, v to zanko, da Sem building-- Ops, da to, da boste lahko see-- Imam svoj števec j. Bom začel pri 0. Kolikokrat ti želim iti skozi to zanko? OBČINSTVO: 10-krat. BRIAN SCASSELLATI: 10-krat. Torej, kaj več bi bilo sem dal tu? OBČINSTVO: 9, 10. BRIAN SCASSELLATI: 9, 10, nekdo je dobil reči 11, kajne? Želela sem dve piki pred in dal sem manj kot 2. Želel sem osem pik, Sem dal jaz manj kot 8. Sedaj želim iti skozi 10 krat, zato sem dal j manj than-- OBČINSTVO: 10. BRIAN SCASSELLATI: 10. Tam gremo. In kaj naj naredim, na koncu, da j? ++, Je prirastek. V REDU. Zdaj, tukaj je rafiniran del, kar je bo to zgodilo prav zdaj, če bom to naredil? Bom natisniti 10 posnetkov? SPEAKER 27: Mislim, da jih bomo vsi enaki. BRIAN SCASSELLATI: Oni vsi enaki, kajne? Ker je vse od njih še vedno potekajo postaviti dve piki na začetku. Ampak jih ne bom vse želijo imajo dve piki na začetku. Koliko pik storiti I radi na začetku? OBČINSTVO: Spreminjanje. BRIAN SCASSELLATI: I želim, da bi spremenili, kajne? Torej, kaj imam tu, ki se spreminja vsakič zanka gre skozi? OBČINSTVO: Število pik, j. BRIAN SCASSELLATI: j, število pik. Tako sem se lahko spremeni, da je to j. Prvič prek zanka, kaj da bo? Kaj moram nastaviti j bi na prvi? OBČINSTVO: 0. BRIAN SCASSELLATI: Torej, koliko krat bom to storiti? 0. Drugič skozi zanko, J bo 1, ker sem ga prirastek. Koliko pik bom natisniti? 1. Tretji čas skozi zanko, koliko pik bom natisniti? OBČINSTVO: Tri. BRIAN SCASSELLATI: j se bo 3. Koliko pik bom natisniti? Oh, oprostite, j se dogaja, da je 2. Koliko pik bom natisniti? OBČINSTVO: 2. BRIAN SCASSELLATI: 2. OK, tako da bom obdržati povečevanje da ko gremo skupaj. Kako pa doli? Kaj se dogaja tukaj? Nočem 8 vedno na koncu več? SPEAKER 28: 10. BRIAN SCASSELLATI: Hočem 10 pik? Želim, da spremenijo, preveč. Torej, kako si želim, da bi spremenili? OBČINSTVO: [neslišno]. BRIAN SCASSELLATI: No, če sem pet pik na začetku, koliko dot je ne dobim na koncu? OBČINSTVO: Five. BRIAN SCASSELLATI: Če imam šest pike na začetku, koliko dobim na koncu? OBČINSTVO: Four. BRIAN SCASSELLATI: Če imam sedem pik na začetku, koliko dobim na koncu? OBČINSTVO: Tri. BRIAN SCASSELLATI: če sem dobil j pike na začetku, koliko dobim na koncu? 10-j. V REDU. Torej, poskusimo to. Torej bom rešiti naš zajček program. Še enkrat bomo pomanjšati. Bova šla dol na naš terminal. Mi bomo to jasno. In povečavo. Naredili bomo naš zajček program znova. In bomo to izvesti. Uh-oh. Čakaj, kaj je pomanjšanje. Sem dobil 10 posnetkov? No, koliko zajčke storiti vidim tam gor? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Imam 10 posnetkov. Ali so vsi isti? OBČINSTVO: Ja. No. BRIAN SCASSELLATI: No. Da prva je zajček je daleč na levi strani. In tukaj je zajček je daleč na SPEAKER 29: Right. BRIAN SCASSELLATI: Torej, kaj sem pozabil, da naredim? SPEAKER 30: Začni novo linijo. BRIAN SCASSELLATI: Pozabil sem začeti novo vrstico, enkrat. Enako napako sem naredil prej. V redu, pojdimo popraviti. Zdaj pa sem še vedno dobil kodo tam, da bi novo linijo. Zakaj ni to delo? SPEAKER 31: To ni znotraj zanke. BRIAN SCASSELLATI: Oh, to ni v notranjosti zanke. Tako je. To je sedel zunaj tukaj. In za zanke je vse da je znotraj tega besedila. Tako da bom, da se premaknete to znotraj zanke for. In bom Tab pred njim na kažejo, da je na pravem mestu. In zdaj, bomo ponovno shraniti. Bomo pomanjšati. Bomo preklop na naš terminal. Povečaj. Bomo remake naš zajček program. In zdaj, zdaj imamo naše 10 posnetkov. [Ploskati] BRIAN SCASSELLATI: OK. So. Tukaj je naša ugnezdeni za zank. Bili smo sposobni ustvariti v Notranja zanka koliko pik sem si želel natisniti na začetku, na koncu. In zunanjo zanko nadzorovano koliko slik sem bila stavba. Začeli smo z eno majhno jedro problema, in smo zgradili ven iz te točke. V redu. Naredimo še en korak. Ste pripravljeni? Obstaja ena stvar tukaj, kjer smo pravzaprav nekako dobil več kompleksnosti, kot moramo. Oglejmo pogled. Torej v našem zajček programu, če sem pomanjšati tukaj Pravzaprav sem naredil nekaj enako stvar znova in znova. Kaj naj storim, da je to neke vrste ista stvar dvakrat ponovi? SPEAKER 32: Natisni pike. BRIAN SCASSELLATI: Ja Tiskam tiste pike dvakrat. Res, bi moral imeti ta komentar tu spodaj. Tiskam nekaj Pike na začenja, prav tu. In potem sem natisniti nekaj pik na koncu. In jaz nekako natanko isto stvar. Kaj bomo za začetek delajo na v naslednjih nekaj tednih je, da lahko sprejme teh blokov Koda, ki jo uporabljamo znova in znova, in skozi proces imenovana abstrakcija, bomo jih izvlecite in jih napisati nekoč, tako da bomo lahko potem jih ponovno znova in znova. Torej, poskusimo to. Pripravljen? Bomo to blok kode. In jaz grem, da ga vzamete ven. In bom define-- navzdol na dnu, Bom napisati novo funkcijo. To se ne bo vrnil ničesar. In bom, da ga pokličete printDots. To se dogaja, da imajo eno argument, celo število, ki pravi howManyDots moram natisniti. In zdaj namesto tiskanje j pik, bom Natisni Povej howManyDots moram natisniti. In tam je en majhen problem tukaj. Ali kdo ve, kaj je to? Kaj moram, da je na seznamu tu, ki ni opredeljen? OBČINSTVO: [neslišno] BRIAN SCASSELLATI: No, kako mnogi pike je opredeljena pravica do tukaj, ampak sem s pomočjo te spremenljivke i. Torej bom sprejeti to spremenljivko i in grem, da ga opredeli dol tukaj namesto tega. Torej, zdaj pa se dogaja, da stay-- oops, Dobil caps lock na somehow-- sem dogaja, da sem ga tukaj. Torej, tukaj je moj mali funkcija ali sub-rutinsko, in pravi, koliko pik bom natisniti? In bomo šli skozi to zanko in jih natisnete znova in znova. Lahko pa spremenite svoj program tukaj. In kaj sem poklical, da je funkcija? printDots. Torej bom poklical printDots. Koliko pik ne želim natisniti prvič pred zajček? OBČINSTVO: j. BRIAN SCASSELLATI: j. Koliko pik ne želim natisniti Na koncu, po zajček? 10-j. In tam je ena stvar, ki mi manjka. Kot ste danes videli v predavanju, bomo razglasi printDots do zgoraj, da dobimo prototip. V REDU. Torej, kaj sem naredil, je sem skušal izolirati, da se ponovno uporabi del kode da sem naredil znova in znova. In sem poskušal izvleči tako, da vse to je vsebovana v enem mestu. Na ta način, če imam kakšno napako nekje, Imam samo to popraviti na enem mestu. V redu. Torej, dajmo ga shranite. In dajmo se prepričajte, da deluje. Torej, pojdimo ven. Šla bova spet na naš terminal. Bomo povečavo. Naredili bomo ta proces zajček. Oh. In to mi je dal opozorilo. Kaj se mi je povedal? Tudi v katerem koli od teh krat, si vedno želeli da se pomaknete do zelo prvi error-- Zdaj, glede tega, imam samo enega. To mi pove v bunny.c, on-line 8, stolpec 9, tam je problem. Piše, da ste to izjavil spremenljivka i in ga niste uporabili. Zdaj pa normalno, da je ni najhujše napake. To je lahka popraviti. In v resnici, lahko gremo nazaj. Lahko gremo nazaj v bunny. In v tem primeru je vse, kar smo moraš storiti je znebiti i, ker smo ne uporabljate i v glavni anymore. Mi samo uporabo v naši sub-rutinsko. Torej, kaj je rešiti da. Šli bomo nazaj. In povečavo. Bomo še enkrat, da zajčka. In spet tam so naši 10 posnetkov. V REDU. Vsak čas si dal procedure-- Ja. SPEAKER 33: Imam a-- sem zmeden. Lahko greš nazaj na kodo? BRIAN SCASSELLATI: Yep. SPEAKER 33: Torej, ko si napisal tvoj prototip se vam argument je imenovan je bil imenovan howMany? Ampak, below-- BRIAN SCASSELLATI: Oh ja. SPEAKER 33: jim --called nekaj drugačen, ne razumem. BRIAN SCASSELLATI: Zakaj so različni. Torej, to je super vprašanje. Torej, vprašanje je, do Tukaj sem napisal howMany, in spodaj dol, sem napisal howManyDots. Razlog za to je, da je v vašem prototip, To je pravzaprav ne posveča pozornosti na imena, ki ste dajanje v. Vse je res briga je, da je celo število. Želi vedeti obliko kaj ste dajanje v. Zdaj stylistically-- oops-- kar sem morala ne, je rad te tekmo. V REDU. Ker da bom obdržati lažje mi je, da se spomnimo. Ampak to je bila moja napaka Ja. SPEAKER 34: In tako za prototip za delo, samo pisanje to vrstico, pisanje prototip, omogoča to funkcijo, ki prihaja tik pod njo, da gredo do konca in pridobivanje kaj to pomeni? BRIAN SCASSELLATI: Kaj to pomeni je, ko prevajalnik gre skozi, gre od vrha kodo na dnu. In kaj je to prototip, je, da je v bistvu obljuba. Pravi, da se dogaja, da se funkcija definirana nekje. To se dogaja, da se imenuje printDots. In to bo trajalo en argument da se dogaja, da celo in to se dogaja, da se vrnete nič, praznina tipa. V REDU. Obljubim vam, da se dogaja, da se opredeljena nekje po cesti. Ampak kadarkoli boste videli da, kot si šel dol skozi preostanek mojega Glavna funkcija, želim si za zdravljenje, da v odvisnosti ki traja en vhod celo število. In tako, ko prevajalnik gre dol skozi to, da vidi te obljube. In ko pride dol, ohranja dogaja, ohranja dogaja, ugotovi, prvič printDots se omenja. In pravi, Oh, ti daje me to j. j je celo število. No, mi je obljubil, da bo biti celo število, in tako je prav. To je ok. In potem končno, navzdol na dnu, preden pridem do konca mojega Datoteka, naredim dobro na mojo obljubo in sem ga določite. V REDU? SPEAKER 35: Torej, saves-- Program bo prihranilo presledkov da gre nazaj in zapolnjuje na koncu? BRIAN SCASSELLATI: To ni o dodelitvi pomnilnika. To je pravzaprav samo o tem, kaj tip ste pričakovali, da vidite. Naj bi ta stvar ima eno argument, ali pet argumentov? Bi moral imeti, da celi števili biti glede na to, ali strune? To je vse, kar je iskal storiti, je, da preverite, ste mi daje Pravica vrsta argumenta. V REDU? V redu. Dovolite mi, da vas zapusti z ena malo pogledati. ASCII umetnost ni velika modela animacije, kot je danes. Toda nekateri ljudje seveda vzeli stvari in so ga potisnite na svoje skrajnosti. To je, kot je razvidno David V predavanju, del kode da bi smeli v nobenem primeru ne poskušajte sami dvojnik. Ker je grozno slogovno. V resnici je bilo zasnovane tako, da težko, kot je mogoče prebrati. V REDU. Torej, še enkrat, kaj je povečate tukaj. Jaz bom šel zdaj, sprememba imenika. Bom šel eno raven, nazaj na moj delovni prostor. Jaz bom potem spremenite imenik v to drug imenik, ki sem jih ustvaril. In to je International Obfuscated C Programming Contest. Obfuscated sredstva kot težko kot je mogoče razumeti. Zato prosim, ne boj se, če pogledaš na to in iti, ne morem prebrati to. To je poanta tega. V REDU? Ampak, imamo to čudovit program, ki sem dogaja, da poglej ga vtipkate več. In poglejmo, če lahko jaz pomanjšati samo malo, tako da lahko vidite In to je program. To je imenovan endo.c. In izgleda, da to vedro z vrsta črk F-L-U-I-D v njem. To je dejansko program. To je zapisano v najbolj nejasna tako, da so avtorji lahko morebiti napisati. Ampak to je čudovit košček, ki generira model dinamike tekočin. In tako bomo dati ta model vhod, ki Izgleda to odsvojila staired nastavite zabojnikov z nekaj tekočine, nekateri tekočina, na vrhu. In bomo imeli simulirati kaj se dogaja z njim. Torej bom poklical te funkcije, endo. In ga bom dal, da vhodna datoteka, ki sem jih imel. In tam je naš sinonim ASCII umetnosti. Poln tekočine dinamični simulator teče v le nekaj vrstic kode. Zdaj, kaj je dejansko res neverjetno, o tem malo programu je, da želim, da nehaj zdaj, tako da bom uporabiti kakšen ukaz? OBČINSTVO: Control-C. BRIAN SCASSELLATI: Control-C. V REDU. Torej bom uporabil Control-C. C To bo ustaviti. Bom še enkrat jasno. In zdaj bom sklicevati na Program, izvedbo programa, se uporabi kot vhod. In bomo videli dinamiko tekočine simulacija njej topi. V REDU. Prosim, ne dovolite, da program biti stvar, ki vas zmede. To je samo zato, da bomo lahko konča nekaj, kar kul in zanimivo. V REDU. Veliko sreče z vašo težavo nizov. Z veseljem vam bomo odgovorili Vprašanja po razredu. Hvala veliko, fantje.