ROB: V redu. Dobrodošli prvega odseka. Jaz sem Rob. JOSEPH: Jaz sem Joseph. ROB: Torej bomo potopite noter Prva stvar, ki govori o je Appliance. Torej, upajmo, da večina od vas jo prenesli že. Vendar pa si lahko ogledate navodila na cs50.net/appliance. Oh bog, zdaj sem v zadregi. Še vedno slišim. JOSEPH: Vau, to zveni kot je negotova. ROB: Torej, nekateri ljudje so bili ob težave z njim, tako da ne čakati Zadnja minuta problema nastavljena na poskusiti in rešiti aparata in ugotovitev, da to ne deluje. JOSEPH: In če kaj ne deluje in ti potrebujejo pomoč, lahko greš na cs50.net/discussion kje smo imeti forum, kjer si Svoja vprašanja lahko objavite. In bomo prišli do njih sčasoma. ROB: V redu. Torej je to tisto, kar Appliance izgleda. Še enkrat, to je samo popolnoma ločeni operacijski sistem, ki deluje v okviru ne glede na operacijski sistem, ki ga se izvajajo na vaš prenosnik. In glavni stvari, ki jih boste uporabljali so gedit. Torej, upam, da je to že postala znana stran. Terminal. In lahko vodijo tudi Chrome v aparatu. Bilo je nekaj ljudi ki so poročali internet ne deluje v aparatu. In nekateri od njih samo domneva da se tam ne bi smel biti internet v aparatu. Ampak ja, pa naj da je internet. Jaz bom rekel, prav zdaj, vendar pa ne res pomeni ničesar. Če je internet ne deluje, To je tisto, kar ste nagnjeni k potrebovali teči, da to popravimo. Če imate internet vprašanj ne se spomnite, samo post na Razpravljati, in bomo rekli, da je prost. Vendar internet je treba delati. Torej edina druga stvar - ja, nič ostalo je res pomembno. Vendar sem želel poudariti, da - glej v tem spodnjem desnem kotu. Tako da vsak od vaših naprav smeli imeti naslov IP. In kasneje v semestru, ta IP naslov bo postala bolj pomembna, kadar delate na spletni p-set, saj boste mogli dostopati Spletna stran delate iz vašega Lokalne Chrome s tega IP naslova. Toda, kaj mi je všeč, da uporabite IP naslov - in ne boste imeli, da to storite, samo želim, da ga točke - je tu. Torej je to okno terminal na moj Mac, to ni v Aparat sploh. In si lahko pogledate, kaj ta ukaz ne. Ampak bom SSH neposredno na mojo Appliance. Ne vem, kaj je IP. JOSEPH: 168 - 168.224.1.0. ROB: Torej, ko končam s tem, se prijavite Sedaj osnovi je enak terminal okno v moji Appliance. Zato sem precej nikoli nisem delal od znotraj same naprave. Vedno sem se to tekmovanje v teku V ozadju se čimbolj in SSHed vanjo. Vprašanje pri tem se ne boste da lahko uporabila gedit enostavno neposredno iz tega. Ampak, če hočeš biti resnično kul heker, potem morate navaditi linija ukaz urejevalnik besedila anyway. Torej Vim in Emacs in Nano, vsi ti različne alternative. Nano kaže, da je najlažje. In mislim, da nima Označevanje skladnje. Oh, ne, je popolnoma ne. Tako da lahko uporabite Nano, saj da je eden je zelo enostavno. Vidiš vse te ukaze na dnu. Ta mali korenček simbol. Če še niste videli prej, boste verjetno videli veliko zdaj. To običajno pomeni nadzorno korenček, tako kot v spodnjem levem kotu tipkovnice kontrolni znak. Torej, tukaj se mi povedal tukaj - oh, to ni odrezana, če povečam prijavite Torej Control, X je, kako Bom izhod. In pravi, da znam zadeti, Y za Da, za varčevanje, N za No Tako da je Nano. Vim in Emacs se nagibajo k nekoliko bolj zapleteno in prepričljivo. Ampak lahko se navadiš na to, in potem boste všeč. Torej to je to. JOSEPH: Ni potrebe za to. ROB: Ja. Vas prosimo, da uporabite gedit za preostanek semestra. Tako da vsa vprašanja, povezana-aparat? Ali imate kaj misli o tem, kaj drugega Treba je govoril o tem, aparat? Da. SPEAKER 1: Ko SSHed v vašo stvar je bila Crimson geslo? ROB: Ja. Geslo za zal veliko vse v aparatu se dogaja biti Crimson. SPEAKER 2: Namestite kot pravi IDE na napravi, bo to delovalo? ROB: Mislim, Eclipse ima Fedora različica, v tem primeru, ja, lahko to storite. To verjetno ni res vredno. SPEAKER 2: OK. Tako da je verjetno lažje, če sem hotel uporabiti Eclipse, samo uporabljati materni in nato naložite na - ROB: Oh, to je verjetno tudi lažje. Vendar pa lahko dobite to delajo v aparatu. JOSEPH: In za kamero, vprašanje je bilo, lahko namestite drugo IDE notranjosti aparata? ROB: Eclipse pa Primer IDE. Kakršne koli druge Appliance vprašanja? Vse je v redu. Tako da bomo zdaj prešli na ukazni vrstici povezanih vmesnik stvari, tako CLI. In spet, grem na delo v tukaj, ker je to enaka delajo v terminalskem oknu v aparatu. Kako je videti, da je pisava? Je to dovolj velik? Vse je v redu. Torej obstaja veliko ukazov, ki boste morali dobiti precej uporablja za skozi semester. Velik dva za navigacijo so ls, seznam datoteke v tem imeniku, in cd, tako da spremenite imenik. Tako da sem lahko spremenite na namizje in nato Zelo pogost vzorec je cd imenik in takoj ls Kaj je v imeniku. Ljudje včasih ne zavedajo, da dokončanje Tab je stvar. Tako kot cd, VH, in potem sem udaril Tab. Jaz skoraj nikoli tip iz Vsega. In potem, če jaz vztrajati hitting Tab še enkrat, se bo samodejno začnete s seznamom za mene. Tako da sem lahko cd vhosts, lokalnega gostitelja. In to je le, da bo - V primeru, da še niste slišali izraz prej, imenik je samo še ena beseda za mapo. Torej, zdaj, če ste videli - pripeljimo, da do vrha. Torej, zdaj, če vidite v oklepaju, ki jih glej malo tilda, poševnica, vhost, slash, lokalnega gostitelja. Torej, Tilda, ki se nanaša na moji domači imenik. To je imenik si ko ste SSH prijavite To je imenik, da ste v trenutku, ko odpreš terminal. To je, kjer ste začeli. In tako sem znotraj mojega domačega imenika, in sem notranjost vhost Imenik znotraj mojega domačega imenika. In potem sem znotraj lokalnega gostila imenik znotraj tega. Tako nekatere druge uporabne stvari z cd - ali pa na splošno, tako dot vedno se nanaša na trenutni imenik. Cd, pika je precej neuporaben ukaz. Toda to se je spremenilo, da trenutni imenik. Bolj uporaben, v smislu cd je pika, pika, ki je pojdi gor en imenik. In ne pozabite, da je to - Hočem reči, vzdevke, vendar ti simboli, pika, in pika, pika, tistih, ki delo za precej koli ukaz ste bo treba razmišljati teče. Tako kot cd je verjetno, kjer boste uporabljate večino, vendar ti niso Stvari, ki so pravkar cd razume. To je precej nekaj, za kar celoten ukazni vrstici razume. Veliko programov razumeti pika in pika, pika. Torej, druge koristne tisti - cd, pomišljaj. Tako, da se mi bo prinesla zadnja imenik, da sem bil noter Torej, včasih bom naredil nekaj podobnega, oh, jaz delam tukaj. In vidim neke napake z nečim, in Grem preiskati, ki ga bo nekaj naključno imenik nekje. In ne vem, če bom Spusti me noter. Prav tako bo. Torej delam, kar hočem v tem imeniku. Bla, bla, bla, bla, bla. In sem si mislil, v redu, želim iti nazaj, kjer sem bil. cd, dash, in to me pripelje nazaj. Torej bom vrgel veliko od tega na vas danes. Ne pričakujem, da boš zapomniti vsi od njih. To je nekako samo vem da obstajajo. In potem kasneje, ko si kot, hmm, rad bi šel nazaj imenik, da sem bil samo na, oh, počakajte, nekaj takega obstaja. Vam ne bo treba samo tip spet ves imenik. JOSEPH: In na koncu boste le jih znova in znova uporabiti, in da bomo postali spomin mišic. ROB: Ja. Torej, kako sem že prej povedal, da Tilda je vaš domači imenik. Tako da sem lahko cd, tildo. Ampak nimam niti to, da če sem samo - Jaz bom šel nazaj v imenik tako to ni nesmiselno primer. Ampak, če sem naredil cd, ki je prav tako Enako kot, pojdite na moji domači imenik. Jaz Command, K. JOSEPH: lahko vnesete tudi jasno, Beseda, in ga je treba počistiti. ROB: In mislim, da tudi nadzor, L počne prav. Tako veliko različnih načinov. Mislim, da obstajajo nekatere razlike, kjer jasno in nadzor, bom samo Res ga potisnite proti vrhu in Še vedno lahko pomaknete nazaj. Ukaz, K dobesedno uničuje vse, kar je, in ti Ne morem se pomaknete nazaj. Vsaj, da je kako deluje v iTerm2. Ne vem, kako druge stvari - oh. S SSHing, tako da, če ste na Windows, boste morali prenesti PuTTY da SSH, ker Windows ne imajo podobno vgrajenim SSH orodja. Od Mac, lahko samo SSH neposredno vam iz okna terminala. OK. Vprašanja? Ls, tako da nekaj navaditi z večino teh ukazov je - dobro, bom naredil eno. Ls, dash, l. Torej dash, l je tisto, kar bomo poklicati zastavo ls. In veliko teh ukazov ima zastavami da lahko preide na njih. Torej, v tem primeru, dash, l zastava da pove, da mi polni seznam vseh informacij, teh datotek. Tako vidimo, da je bilo tukaj namizje spremenjen 30. julija, ob 00:54. Prenosi bil spremenjen na 6. september. To so sedanja velikost in bajtov teh imenikov. Vam ni treba razumeti vse to. Ta stvar na levi strani, ti drwx je, da bo postala veliko bolj pomembna kasneje, ko boste morali spopasti z - da ima opraviti s tem, kdo ima dovoljenja gledati teh datotek. In tako, če ne bi bil edini uporabnik na ta računalnik, bi morali biti sposobni recimo, OK, jaz bi moral biti samo eden dovoliti, da pogled na to zadevo ali pa bom dogaja, da bi vsi pogled na to zadevo. Torej, nekdo drug na mojem računalniku lahko ogledate na tej datoteki. Sploh ne vem, kaj je to - kaj to storiti? JOSEPH: Nisem čisto prepričan, pravzaprav. ROB: Ne vem. JOSEPH: Ampak, če ne veste, da je koristen ukaz, ki ga lahko uporabite da vam povem, kaj pomeni izhod. In če ste tip v človeku Pred poveljstvom - tako M-N-. ROB: Man. Torej, človek je še ena da je zelo koristen. In človek, ls. Torej man strani, imajo tako ukaze, ki si bo z uporabo v ukazni vrstici, imajo pa tudi Naloge, ki bodo pomembno s C. Tako lahko človek - in sem prezreti 3. Ampak man 3 printf bo prinesla up različico C printf. Ampak, če sem naredil človek printf, to je bo bruhati ukaz printf , ki se zgodi v ukazni vrstici. Torej človek, ls. Man strani lahko precej prepričljivo. Tu, čeprav, boste videli ta vnos vseh teh zastav, ki ls razume. Torej, če gremo v dash, l, in - Jaz bom samo vrgel to pri vas. Ampak za iskanje, ki jih želite prvi udaril vprašanje Oznaka ali gumb slash. Tako drastično. In potem sem lahko poiščete za vse, kar si želim. Torej bom poševnica za pomišljaj, l. In tam je bil. Torej, uporabite dolgo obliko kotacijo. Da ne mi pomaga ugotoviti, kaj da zlasti stolpec mišljeno, ampak jaz Predvidevam, nekje tukaj to bi razložilo, da je. Tako da uporabite man strani za katerikoli ukaz da ne boste takoj razumeli. Sem prepričan, da lahko tudi človek, človek. Vmesnik na spletu referenčni priročniki. Oh, ena zadnja, ki je morda nekoliko Pomembni so ls, dash,. Tako opazili, če sem naredil ls, Dobim te datoteke pet. Če naredim ls, dash, sem dobili veliko več datotek. Torej skupno stvar med vsemi temi Nove datoteke je vnaprej pika. Torej konvencije je, da se datoteka, ki se začne s piko skriti. Torej ne želite videti te datoteke, ki jih Ne želim, da ga imajo igraš z vašega imenika. To je le, če ste eksplicitno vprašati, Vse je v redu, ls, dash,, pokaži mi. Stojala za vse datoteke, vključno s skritimi narave. Tako nekateri drugi ukazi. Oh, vprašanja v tem trenutku? Da. ZVOČNIK 3: Ko boste to storili ls, Kaj je pika, pika? ROB: Oh. Torej, to je tisto, kar sem govoril. To je ista stvar, kjer Lahko mi cd, pika, pika. Tako tehnično, pika in pika, pika, so datoteke, ki obstajajo v vsak imenik, kjer datoteko dot nanaša na trenutni imenik. Torej, če sem cd, pika, grem da ostanejo v imeniku. In pika, pika se vedno nanaša na Predhodna imeniku eno raven navzgor. Torej, če sem šel v dnevnikih in ls, dash, al, Bom videl, pika, pika. cd dot, dot me pripelje na prejšnjo imenik. Ja. OK. Torej še precej pomembna ukaz rm. Tako da je tisto, kar bomo uporabiti za odstranitev. In mi dejansko ne drugo Ukaz prvi. Torej mkdir. Mkdir je, kako si lahko ustvariti imenike. In bom ustvariti začasnega imenika in gredo v tej začasni imenik. In kot je bilo pričakovano, je prazna. Ampak, če ls I, dash, imam še piko in pika, pika, pika, ker se nanaša na trenutni imenik. In pika, pika nanaša Predhodna imenik. In tistih, ki bodo vedno obstajali, ne glede na Imenik ste palcev In to je popolnoma nepotrebno ukaz, vendar na dotik. Jaz sem samo, da jo uporabljajo, ker je enostaven način za ustvarjanje datotek. Torej dotikajte se dotaknite b, c dotikajte je le dogaja, da ustvarijo tri datoteke z imenom, b in c, da so popolnoma prazen. Torej točka zame ustvarjanje tistih Prvo mesto je samo zato, da rm je kako jih lahko odstranite. Torej rm,. To se dogaja, da me prosi, odstranite Redno prazna datoteka? In potem bom rekel Yes. Torej, če sem prepričani, da želim izbrisati to datoteko ne da bi se pozvani, odstranite redno prazno datoteko?, potem rm, dash, f se bo zastave, ki pravi, da na silo odstraniti, ne čeprav me spodbudilo, oh, ste prepričani, da želite izbrisati datoteko? Da, prepričan sem. Torej rm, dash, fb bo samo to storiti, ne da bi vprašal. Torej, kaj je naredil nekaj več imenikov. mkdir, TMP2, cd, TMP2, dotaknite, dotik b. OK. Sedaj želim odstraniti TMP2 kot imenik. Torej rm TMP2. Ne morete odstraniti TMP2, je imenik. Torej, vprašanje tukaj je, da rm ne takoj delati na imenikov. To je pomenilo le za datoteke, kot so non-imeniške datoteke. In kaj lahko storimo Tukaj je rm, dash, r. , Ki stoji za rekurzivno, ki bi lahko nič ne pomeni, da vas še ni. Toda, ko prideš na rekurzija, to bo pomenilo več. Torej rm, dash, r, TMP2 bo rekurzivno šel v ta imenik. Tako se spustite v imeniku TMP2? Ja, gremo v to. Ali želimo odstraniti TMP2 /? Da. Ali želimo odstraniti TMP2 / b? Da. Zdaj želimo odstraniti Imenik TMP2? Da. In tako zdaj imenik in vse, kar je v notranjosti o je bil odstranjen. Tam je tehnično vodenje rmdir , ki jo lahko uporabite za odstranjevanje imeniki, vendar pa deluje le na praznih imenikov anyway. In glej, da naj samo narediti mkdir, TMP2 znova. TMP2, se dotaknite. OK. Torej, če sem poskusil odstraniti dirtmp2, da bomo pravijo, imenik ni prazen. Zato sem precej nikoli ne uporabljajte remove dir ukaz, ker itak rm, dash, r bo delo na prazne imenike in niso prazne imenike. In tudi, če ne želite imeti iti skozi celoten proces spuščati v imeniku in odstranjevanje vsako posamezno datoteko, rm, dash, RF, TMP2. In zdaj ga ni več. Nekaj ​​biti previdni pa je rm, dash, RF. In strah me celo vrsto, ker če sem slučajno pritisnite tipko Enter ali kaj podobnega. Torej rm, dash, RF, Tilda bi brez me je spodbudilo, f ne pozove mi, se bo samodejno odstrani moje celo domači imenik in vse v njem. Torej si lahko mislite, da je neumno stvar. In dobro je. Vendar se lahko zgodi zelo enostavno z nesreča, če, recimo, sem si želel, da se odstranijo moja slash, vhost imenik. In ravno v hitrem tipkanju, Po naključju sem to storiti. Da bo rekurzivno odstraniti oba moja dom in imenik vhost v tem posebnem imeniku, ki so pravkar se zgodi, da ne obstaja prav zdaj. Vendar bi to še vedno odstranite moje celo domači imenik. Najmanj jih nimajo F, da bi me najprej vpraša. In jaz bi bilo všeč, oh, ne, Ne želim, da to storim. Ampak ljudje, poševnica, vključno jaz ponavadi dobijo v navado vedno RF-ing. Tudi redna datoteke, da sem lahko samo RM c, jaz ponavadi samo rm, dash, RF, c. Samo bodi previden, ko ste RF-ing. SPEAKER 4: Kaj storiti, C? ROB: C govorim o tem, da je C datoteko v tem imeniku, ki rm, c. JOSEPH: In še bolj nevarno, če uporabljate zvezda, se nanaša na vse, kar je v imenik. Torej, kaj sem ponavadi nagnjeni k storiti, je, da bom pojdite v imenik in želim, da odstranite vse datoteke tam. Torej rm, dash, RF, zvezda. ROB: Ja. Rm, dash, RF, zvezda. JOSEPH: In če niste previdni kaj ste v imenik - Nisem bil v temp, vendar sem bil po naključju v mojem domačem imeniku, potem bom odstranite vse v mojem domačem imeniku. In sem dejansko naredil, da prej, in Mislim, da ste to storili pred ali Jay je naredil, da prej. ROB: sem pomotoma odstranili - tako prezreti, da je ukaz za bit. JOSEPH: Ni zabavno. ROB: Torej v bin slash je kup binarnih datotek, kjer boste poznati, kot na Jek. No, Jek in v bistvu vsi ti Stvari, da tečem na ukaz linije so v tem slash bin. JOSEPH: Kot ls je tukaj. ROB: Torej pika, poševnica, ls bi Seznam tega imenika. JOSEPH: Rm je tudi v tem imeniku. ROB: sem pomotoma rm, RF-ed bin, ki odstrani ukaza sem lahko morda kdaj želeli. Ki potem sem zopet Nova Appliance na tej točki. JOSEPH: Zato bodite zelo previdni pri uporabite ta ukaz. PUBLIKA: [neslišno]? ROB: Da. To je tudi slabo navado priti v. Če opazite, da sem zdaj - No, ne moreš opazili, vendar moj zoom-in morda lahko. Torej, zdaj sem root @ aparat. Torej jharvard je uporabnik želimo da vedno uporabljate. Root je uporabnik, ki ima dovoljenje absolutno ničesar. Torej opazil, ko sem jharvard, če poskušam cd - kaj je imenik, ki? Oh, koren je dober primer. Torej cd, korenina. Dovoljenje zavrnjeno. Ker če gledamo na tem seznamu - in še enkrat, ti ne bi bilo treba povsem razumem. A ti trije pomišljaji govorijo da ne pustite, da kateri koli drugi Uporabnik v tem imeniku. In imenik zgodi, da v lasti uporabnika root. Torej dejstvo, da sem jharvard in ne Tisti, ki ni koren je dovoljeno v ta imenik, kar pomeni, da sem bo dobil dovoljenje zavrnjeno, ko sem poskusite cd vanjo. Torej, ko sem korenina, imam dovoljenje za naredil absolutno ničesar, vključno brisanje bistvenih datotek do naprave in uniči celotno stvar. Torej, to je slaba navada, da se v Pravkar tava okoli vašega operacijski sistem kot root. Sem ga vseeno. Vprašanja? In bom izhod koren, ostanejo kot jharvard. OK. Bolj ustrezne ukaze. Torej grem nazaj v našo temp, mv ukaz stoji za potezo. Lahko premaknete. Zdaj želimo, da ga pokličete b, tako da zdaj se imenuje b. Ali pa morda želimo, da se premaknete b gor en imenik. Torej, zdaj prazna tem imeniku je. Jaz bom šel nazaj na moj domači imenik, in vidimo, da je b v tukaj, ker domači imenik je bil eden imenik up od imenik, ki je bil b prijavite Tam je tudi cp. Torej, cp je kopirati super odsek, pika, besedilo. Ne morem ga poklicati s, pika, besedilo. Zdaj imamo tako super odsek, pika, besedilo in s, pika, besedilo. To deluje tudi na imenikov. Jaz RF-ED eno datoteko. Torej cp - No, najprej poskusimo CP NTU TMP2. Tako opustitev začasni imenik. Torej podobno rm, privzeto vedenje je, da ne deluje na imenikov. In spet, podobno rm, privzeto vedenje - dobro, da bi jo na delo z imenikov je, dash-r proč. Torej kopiranje rekurzivno temp Imenik v TMP2. In tako zdaj imamo tako tmp in TMP2, in da ni to koristno, saj tmp je prazna na prvem mestu. TMP2. Zdaj pa kopirati tmp v TMP2. In vidimo, da ima TMP2 tudi datoteko , ker imenik in vse, kar je znotraj, da Imenik je kopiral. In da lahko nekoliko koristno če bi rekli, da delate na problem določiti enega - ali dejansko, kasneje problem seta še bolj pomembno, saj bo en kup spisov in stvari. Ampak si želite, za delček drugič, ti si kot, v redu sem bo poskusil nekaj drugega. Naj samo kopirati mojo celotno pset1 Imenik v pset1 backup, tako da, če Sem na koncu vijačenje stvari, sem lahko pojdi nazaj v svoj backup imenika. Obstaja več ustrezni način različic varnostno kopiranje kode, ampak To je vedno hiter način, da samo, da poskrbite, da imate kopijo nečesa da ste o tem, da se spremeni. Torej odmev je tudi ukaz one-off, da vrsta sillily bo samo tiskanje na ukazni vrstici, kaj si želel ponoviti. Torej echo hi. Mi bomo samo tiskanje hi. Echo zdravo svet. Bomo natisnete zdravo svet. To pride v uporabo, ko začnejo združevati ukaze. In spet, ne pričakujem, da boste v celoti še razumem, ampak to je kaj videti. In potem, če ste Googling za primere ali se zavedaš, da želite storiti nekaj, kar je lahko koristno. Torej dajmo, kot na primer, Je tako, dash, l. Tako da tukaj ne vidim izhoda LS, dash, l. In sem rekel, v redu, želim shranite, da v datoteko. Vse te proizvodnje tukaj, želim dati v ločeno datoteko. Torej, to malo večja kot simbol je tisto, kar bomo poklical. Mi smo preusmerjanje izhod v datoteko. Recimo datoteke bla, ker je to kaj sem se nagibajo, da ga vedno pokličem. Sedaj bomo videli smo datoteko bla tukaj. In če sem jo odprla, bom videl, da je ravno izhod iz ukaza da sem tekel. In podobno, lahko - če je bil to izhod v datoteko, to je dobil prispevek iz datoteke. Kaj je ukaz, ki sem - JOSEPH: Mislim, da lahko uporabite bolj ali manj verjetno. ROB: Kaj pa nekaj manj bla? Ne vem. Če ste prišli na ta scenarij, kot je tam je psets, da je to koristno za. JOSEPH: Lahko cev je v odmev. Pipe datoteke v odmev, da ga vidim. ROB: To je cev. JOSEPH: Žal mi je. ROB: V redu. Torej je to izhod v datoteko. To je dobil besedilo iz datoteke in jo izroči programa. In boste videli tudi tega tipa. Torej, to je nekako počne oboje hkrati. In pravzaprav, bom predstavil dva nova ukaze, samo da bi jo uporabljali. Zgodovina je priročen ukaz, ki je le bo izpisal seznam kaj sem jih kdaj teči ukazno vrstico. Tako vidimo tukaj vse, kar imam ki poteka že ves ta čas. Veliko ls-ih. In še koristen ukaz grep da njegov namen pa je treba preiskati besedilo, ki iščejo vzorce, no, išče za karkoli želim, da bi si za. In tako priročna uporaba, tukaj je, recimo želimo, da zgrabite zgodovino. In hočem, da si za ukaze kjer sem - kaj je uporabna ena iskati? JOSEPH: [neslišno]? ROB: Ali pa si samo poglej za vse dotakne, iz kakršnega koli razloga. Torej, to je tisto, kar bo izgledal. In ti ne bi bilo treba v celoti Razumem, da. Ampak ideja je tukaj, zgodovina daje Enako izhod je to storila tu kje je to, tiskanje na celoten Zgodovina vsega, kar sem jih kdaj teči. Mi smo nato mimo, da - Tako namesto da bi jo tiskanje na zaslon, želimo prenesti, da Ukaz grep, ki išče vse primerke besede dotik. In tako z uporabo te kombinacije Orodja za zgodovino in grep, vidim, OK, tukaj je vse ukaze kar sem jih kdaj teči, in tukaj je nekoliko skupno eno. Mi smo na dnu. In to je tudi mi dali ukaz Pravkar sem tekel, da je Beseda dotik v njej. Ampak cev je zelo uporabna stvar za združevanje več programov. In dejansko, to je bližnjica za najete me izhod zgodovina vložiti bla, in Naj grep z datotečnim bla kot tisto, kar sem želel pogledati. Torej cev je samo bližnjica pri teh dveh ukazov. Da. SPEAKER 4: [neslišno]? ROB: Da. Kaj je - Oh. Naj testiranje je. Torej, mačka, pes, ribe. Torej, želim, da grep. Dash, r, ponovno, se bo rekurzivno, zato želim, da se spustimo vse imenike. Želim rekurzivno grep za vse - in naj se začasno To se mi s poti. Ignoriraj me. OK. Torej, želim, da začasno grep za vse primerke besede rib. In tako sem, kaj počnem, je grepping rekurzivno besedo rib. In zvezda pomeni več kot vse te datoteke v tem imeniku. In zato mi je dal dovoljenje zavrnjeno, ker ni dovoljeno, da se glasi, da Zlasti datoteke. Vendar je bilo ugotovljeno, ribe v datoteki, test. Lahko bi tudi rekli, še posebej, samo jaz želeli videti v datotečnem bla, v tem primeru ga ne boste našli ničesar. Želim samo, da si v datoteki, test. To boste našli ribe. To je zelo koristen ukaz vedeti, na splošno. Obstaja nekaj alternativ grep ki naj bi se bolj programer prijazen, vendar sem se nagibajo da še vedno pade nazaj na grep. Vprašanja? OK. Ali obstajajo tudi drugi ukazi? Oh. Just one-off ena, da sem vedno Ugotovijo, da bo zabavno je cal. Torej opazil, ko sem v to ljubko celozaslonski način, nimam takega vrh Orodna vrstica ali kaj podobnega. Torej cal me samo daje lepo koledar, ki je prav zdaj odrezan, predvidevam. Ampak lepo ukaz. JOSEPH: To je [neslišno]. Drugi ukazi, ki jih lahko imajo videl vključujejo Jek in narediti. Mi bomo šli čez njih Več podrobnosti kasneje. Ampak, če si delal na PSET, morate biti seznanjeni s temi. ROB: V redu. Vprašanja o stvareh ukazno vrstico? Vse je v redu. Torej gremo na nekatere Povezanih C stvari. Spremenljivke math. OK. Torej, tako kot smo imeli matematiko v nič, lahko uporabite tudi matematiko v C. Preden smo prišli do, da v celoti, tako spremenljivke. Ne pozabite, da vsakič, ko ugotovi, spremenljivka kot int x ali float y, vas dati ga vnesite, preden Ime spremenljivke. Torej tipi smo videli doslej, so int, float, double, dolgo dolgo, kar sem dejansko ne vem, če smo že razvidno, da doslej. Obstajajo nekatere druge narave. Smo videli char. Tukaj je kratka, kar je, kot da je Nasprotje dolgo dolgo kjer je manjša od celo število. Videli smo tudi niz. Torej, kaj je tako posebnega niza? Zakaj bi jaz rekel, da je ni čisto tako notr? SPEAKER 4: To v resnici ne obstaja. ROB: Ja. Torej, edini razlog, da imamo niz je zato, ker ko boste to storili hash, vključujejo cs50.h. In bomo videli primere kasneje - oh, da ne obravnava, da je dobro - kjer cs50.h počne nekaj po vzoru vrste def, znak zvezda, niz. In tako, da je rekel, da mi sploh ne veš kaj char zvezda je še. A to se pravi, želimo niz. Vsak kraj, ste bili z uporabo niza, si bi bilo mogoče z uporabo char zvezdo, ki dejansko je tip, ki obstaja v jeziku C. Ampak bomo prišli do tega. Oh, in gre nazaj. Gladka. Torej isto stvar z BOOL kjer true in false. To ni res vgrajenega tipa v C. Namesto tega, to je samo, ima to vrednost nič? Potem bomo pa le razmisli , da je lažna. Ali ima to vrednost - dobro, ima to vsaka vrednost, ki ni enaka nič? Potem bomo pa menijo, da bi bilo res. Torej, ena je res, dve je res, kaj različen od nič, je res. Torej to so tiste,. Vprašanja o razglasitvi spremenljivk in spremenljivka vrste in vse to? Ja. SPEAKER 4: Za dolgo dolgo, v knjigi, je dejal, da je bilo treba dolgo dolgo int. Vendar pa bo le dolgo dolgo deluje? ROB: Torej te vrste modifikatorjev. Torej int x. Tako bomo lahko rekli tudi nepodpisani int x. Lahko rečemo, kratka int x. Lahko rečemo, dolgo dolgo int x. Ampak precej koli od teh stvari, ki sem pravkar rekel, nepodpisani int, short int, dolgo dolgo int, lahko znebite int in se bo le domnevati, da si mislil int. Torej nepodpisani x, kar pomeni le - veš, kako običajno pri notr, lahko rečete x je enaka negativne 3? Z nepodpisani int, ne moreš. JOSEPH: In še enkrat, za zaprtimi vrati, Vprašanje je, kaj je razlika med dolgem notr in šele dolgo časa? ROB: Ja. Torej bom skoraj nikoli napisati dolgo dolgo int. Bom napisal dolgo dolgo. JOSEPH: Kakšno vprašanje? ROB: OK. Tako bedni opomin, da je, kako izjavljamo spremenljivko in inicializacijo spremenljiva in razglasi drugo spremenljiva in inicializacijo vse v enem koraku. Torej deklaracija spremenljivke in inicializacijo spremenljivke nimajo do, vendar lahko na isti liniji. Torej imamo standardnih operaterji math da ste navajeni - plus, minus, razkorak, krat. Tam je tudi modulu, kar bomo videli. Ni vsaj C, vgrajen moč Potenciranje operater strešica. No, pa je operater strešica, vendar to ni moč. JOSEPH: Ampak to ni Potenciranje, ja. ROB: Ne uporabljajte Caret domnevati, da to pomeni, kot kvadrat ali karkoli. Torej nekaj stvari, da v misel o delitvi. Jaz bom stal. Tako razglašena začetnih odgovor. Tako smo govoriš float odgovor enak 1 deljeno z 10. Natisni odgovor na dve decimalni mesti. In to je ena od stvari, ki sem bi človek printf da ugotovimo, da Kaj za vraga pa%, pika, 2f pomeni? In to samo pomeni, no, ignoriranje 0.2. In%, f je tisto, kar bomo uporabili natisniti, da plavajo. 0.2 je rekel, da print izplavajo na dve decimalni mesti. Tako da je ta program ima napako, in morda so pred tem videli v nekaterih Pred CS seveda. Ampak kaj je to bug? SPEAKER 5: Zero. ROB: Ja. Torej, ko smo rekli, odgovor je enak 1 deljeno z 10, smo želeli odgovor na 0,1. Toda 1 deljeno z 10, 1 je celo število, 10 je celo število. In tako, ko mi celo, deljen z celo, da bomo dobili nazaj celo število. Torej 1 deljeno z 10 je 0,1. Ker je treba, da nam celo, to je le, da bo vrgel proč, da decimalno mesto, in pravijo, da Odgovor je 0. In tako, ko smo natisniti odgovoriti tukaj, da se bo tiskanje 0,00. JOSEPH: In samo kot opomba, da je dejansko vrže proč, kaj je po decimalno vejico. Torej, če si imel namesto 6 deljeno s 10, si morda mislite, da bi vam 0.6 in potem bi zaokrožiti na 1. Ampak dejansko, kaj se zgodi, ko tip Naloge je, da kapljice, kar je decimalno vejico. Torej 0.6 ne postane 0. ROB: Ja. In bomo rekli skrajšaj za to. Torej, ko odda na int, decimalno je obrezana. Torej fix za to - tam je pravzaprav dva. In jaz bom naredil to drugo, saj ta je veliko lažje pritrditi. Torej en popravek je uporaba boje V diviziji. In res, imate samo bi eden od njih float. Ampak to je nekako jasno, samo da bi oba plava. Torej 1,0 deljeno s 10,0 je deljenjem dva plovci. Tako da bo odgovor na koncu pa float, in tako boste pravilno natisnili 0,10 tukaj. Nekaj, kar ne deluje tako dobro o tem, da je, no, seveda, je bilo enostavno dovolj za pretvorbo 1 do plovec, tako da je 1,0. Ampak kaj če bi namesto smo imeli dve celi števili kot int x enak 1 in int y enak 10, in potem smo želeli da se x deljeno s y? Torej ni preprosto samo narediti X.0 ali kaj podobnega. Tako določi tisti, ki je litje. Torej litja način C za pretvorbo iz ene spremenljivke tipa v drugega. Torej tukaj 1 je celo število. In s tem da ta plovec pred da smo vlivanje 1 do likvidna sredstva. In tako bo to spremeniti 1 do 1,0. In to bo pretvoril 10 do 10,0. In potem se stvari obnašajo podobno Prejšnja različica smo pravkar pokazali, kjer je, kot je bilo pričakovano, smo dobili 0,10 in bo to izpisal. In to lahko storimo z spremenljivke, preveč. Tako lahko rečemo, float x deljeno s float y. JOSEPH: Kakšno vprašanje? ROB: Torej, tako kot v rednem matematiki, imamo operaterja prednost. Torej, v matematiki, ste bolj verjetno, , da ga pokličete red operacij. Tu uradni izraz operater prednost. Vendar operater prednost, ali večina operaterji, je, kot bi pričakovali. Torej, tako kot v matematiki, 2-krat 10 je bodo bolj kot združene Ta 10 deljeno z 2 in nato 2. Vrstni red operacij, bo to storil 2 krat 10, 10, deljeno z 2, in nato to bom naredil 20 plus 5 plus 2. Tako da je, kot je bilo pričakovano, in jih lahko uporabite oklepaju v skupini izrazov. Ne morete uporabljati oglatih oklepajev v skupini izrazov. Ja? SPEAKER 5: Ali bi lahko dejansko pojdite nazaj eno sekundo? Lahko odda int v niz? ROB: Torej v C, lahko odda ničesar hočeš karkoli želite. To ne pomeni, da je dobra stvar. Torej, ko odda int k Niz, ki pomeni - in bomo prišli v to bolj temeljito - JOSEPH: Veliko pozneje. ROB: Nisem hotel reči, veliko kasneje, zato sem se potrudil, da spremenite svojo kazen. Bomo prišli v to veliko bolj temeljito kasneje, če res, če imate Niz spremenljivka - tako niz lahko poljubno dolgo, kajne? In smo že rekel, da je int štiri bajte in dolgo časa je osem bajte in plovec je štiri bajte. Torej niz, tako kot notr, ima samo Določeno število bajtov nanj. In da bodo štiri bajte. Toda niz je lahko precej poljubno dolgo, kajne? Torej, zdravo svet že, če je to 10 znakov ali karkoli, ki je že bo v 4 bajte Jaz mogoče vgraditi v nizu. In tako, kako strune res deluje, je, da so kje v spomin, da niz se hranijo. In tako sem, ko sem rekel niz x enaka Hello World, znotraj x je samo rekel, oh, zdravo je svet shranjeni na tem mestu v spominu. Torej, če se trudimo, da glasuje celo do niz, nato pa sva poskušali razložiti nekaj naključno del spomina kot niz. In to skoraj vedno pokvari stvari. JOSEPH: Ampak če to zamenjavati vi, bomo prikrivali bolj poglobljeno kasneje. ROB: Ja. To je, če greste priti v kazalcev. In da je pomemben kos dveh tednih tega predmeta. SPEAKER 6: Ali to deluje kot predmeti v drugih jezikih, ali ni res? ROB: Torej, v drugih jezikih predmetov bi bili zastopani s pomočjo kazalcev. To ni ista stvar, čeprav. Vsak misli? JOSEPH: Ne Ni misli. ROB: OK. JOSEPH: Next. ROB: Just gredo s tem. Vse je v redu. Torej modulu. Tako kot imamo plus, minus, deliti in množiti. Torej modulu je tista, ki jo lahko ne bi videl. In to samo pove, daje me preostanek. Torej 55% 10. Preostanek dela 55 razdeljeni s 10 bi 5. Torej 55% 10 je 5. In bi 3% 5 znaša 3. 8% 8 bo 0. 16% 15 bo 1. JOSEPH: Ena stvar, upoštevajte, s tem, preveč, je pa morda ne bo deloval kot je bilo pričakovano Če uporabljate negativno število. Tako negativen 5% 4, nekateri ljudje Morda menite, da je - Kaj bi si mislili, negativni 5% 4, ne bi bilo? SPEAKER 5: One. JOSEPH: Torej, nekateri ljudje pravijo eno, nekateri pravijo negativnem. Toda kaj - ROB: Jaz ne bi niti omenjenega enega. JOSEPH: Dva, žal. Nekateri ljudje pravijo - ROB: Tri. JOSEPH: Three? ROB: Negative - kaj je bilo - negativna pet - JOSEPH: Tri, tri, tri. Žal mi je. Ker modulu, na splošno, ko ste videl drugje, to običajno pomeni, vrne pozitivno število, kajne? ROB: Torej, ko smo rekli v matematiki, 10% je, se nagibajo k želeli, da vam - če bomo mod za 10, nato pa pričakujemo, da bomo dobili število med 0 in 9. Sem, da se ne zgodi, da bo dobil negativne številke vrnil. JOSEPH: Torej negativen 5% 4 bi bil negativen 1. ROB: Ampak to je redko, da si mod-ing negativne številke za začetek. Skip to. Joseph: Ja. ROB: Meh. OK. Torej ena zadnja stvar, poudariti pa boje je, da je nevarno vedenje, vendar boje niso točna zastopanje. Torej grem nazaj v bajti še enkrat, ne pozabite da je int vedno štiri bajte in Plovec je vedno štiri bajte. Tako na primer Lucasova je precej dobro. Torej, mislim 1 deljeno z 3. Torej 0,3333333. Če imam le 32 bitov, kako lahko Shranjujem 0,33333 točno? In morda, iz katerega koli razloga, boste rekli, Vse je v redu, no, reciva da je to predvsem 1011001, dajmo samo rekel, da bi morala biti 0,333333. No, imate samo končno število ti delci, zato je nemogoče, da predstavljajo vsak s plavajočo vejico vrednost, saj le 32 bitov. No, to je nemogoče, da predstavlja vsaka plavajočo vejico vrednost glede na neskončno - No, glede na vsako končno število bitov. Torej, vprašanje tu je, no, če smo uporabili natisniti na dve decimalni mesti, nismo pravilno dobili odgovor 0.10. Ampak pod pokrovom motorja, to je res shranjujejo čim bližje k 0,10 kot tistih bitov lahko predstavlja. Je to na naslednji diapozitiv? Ali pa je to, ne? JOSEPH: Ja, to je to. ROB: Blegh, blegh. JOSEPH: Ja, lahko samo potegnite zapiske gor a košček. ROB: grem za povečavo V na zadnji na tem. Oh moj bog, to je [neslišno]. Tako da število. To je tisto, kar se bo natisnjen Če bomo teči ta program. In opazil, da to ni res big deal če smo le skrbeti kot 02:58 decimalna mesta natančno. Kot da smo samo prvotno natisnjena 0,10, in da je, zakaj smo videli nič narobe. Ampak, ko smo začeli že v Točno, točno število, ki je predstavlja, vidimo, da ne more točno predstavlja 0.1. In del problema, tukaj je podobno, Vse je v redu, da je v redu, ampak, dobro, Prvo, kaj pa če smo poskušali narediti, Odgovor je enak enak 0,1? Je, da se bo vrnil drži ali ne? In zato je težko reči. Mislim, da bi lahko dejansko vrne true. Bo prvi - Ne vem. Odgovor je, ko se začneš ukvarjati z vrednostmi v plavajoči vejici, ste zal veliko se ne sme uporabljati enakosti zaradi tega nenatančnosti. In za vse, kar morate vedeti, da je za stotino decimalno mesto, plavajočo vejico ni mogel pravilno ravnati. In tako enakost bo samo ne še čeprav številka - če je bil s pomočjo natančne številke, je treba številke so bili povsem enako. To je v teku, kot 50 Izračuni, ki uporabljajo ti plavajoča Vrednosti točke, lahko napaka zgraditi gor in gor in gor, in Stvari le dobili narobe. JOSEPH: In tam so bili res znani primeri tega dogajanja. Tako kot so NASA inženirji to gotten Narobe, ki povzročajo rakete, da eksplodira v zrak, potem ko so že začeli. In veliko vprašanj, kot to. Torej, ja. 6 zvočnikov: Ko rečeš 0,3 f, Ali skrajšajte počitek? Ali pa se zaokroži navzgor ali navzdol? ROB: Bo printf okoli nje? JOSEPH: Mislim, da printf skrajša. ROB: OK. Tako smo lahko podobno šel v nasprotni Smer tu, v tem primeru, katerem bi lahko predstavljajo 0.1 je s to številko. Katerem je bi mogli predstavljajo 0,2 je v nasprotnem Smer, 0,199999996356 ali kaj podobnega. Torej, če smo šli v tej smeri Stvari, nato printf 0,3 f bi se vrnil 1,99 namesto 2,00. JOSEPH: In nisem povsem prepričan o tem. Morda boste želeli napisati majhen, majhen Program za samo preverite to. ROB: Čeprav, kaj smo prepričani, da če si se potrudil, da glasuje, da int in vlivanje za notr se bo povzroči, da skrajšajte decimalke, če poskusite, da odda 1.9999999 za notr, boste dobili 1. In tako bi morali na splošno uporabo round funkcijo v knjižnici matematike. Vprašanja? OK. JOSEPH: Torej gremo na pogoje in logične izraze. Torej ste videli to prej. In dejansko, dovolite mi, poskrbite, da moj Računalnik je v pravi obliki tukaj. Prostor. Žal mi je, da bomo morali spopasti malo z limitom na robovih. Ampak ja, so videli vi prej v nič. Torej, ta tukaj je izraz ki se uporablja pri pogojni stavek. Torej odgovoriti večja od nič volje vam povem, resnična ali neresnična. In to je zelo pomembno, saj omogočajo nam, da uvede Logika v našo kodo. Tako na primer, to je program napisana v nič, ki zahteva od uporabnika za celo število in jim pove, ali celo, da so vam dali bil pozitivno ali negativno število. In pretvorbo tukaj za prikaz je najprej natisniti izjavo, dajte mi celo število. In potem jih prosi za število. In potem ste uporabili pogojne logike preko tukaj, da preveri, ali ta številka je dejansko večji od nič, ali ne. Torej, tukaj imamo logični izraz Notranjost pogojena Če izjavo. Ali obstaja kakšna vprašanja? Ali obstajajo kakršne koli vprašanja o tem? OK. Tako da je več kot samo večja od seveda. Lahko zgraditi logičnih izrazov uporabljate večino vrst stvari, ki jih bi bilo misliti v matematiki. Torej, višja kot. To bi moralo biti manj kot. Žal mi je. In razmik. ROB: Bog ne daj, da ga zapusti. JOSEPH: V redu. Torej je večja od manj kot, večji kot ali enako, manj kot ali enaka. Mi uporabljamo dvojne enaka za preverjanje enakost, saj single enaka sredstva naloga, kajne? Da. In potem bomo lahko tudi ne enaka ga uporabo klicaj, enaka. In ta simbol klicaj lahko treba razširiti tudi tako, da če hočeš da se obrnemo na kakršno koli logičnim izraz, lahko to storite. Tako da bo ta ocenila, da res le, če je odgovor manj ali enak nič. Kakršna koli vprašanja o tem? OK. Tako da lahko tudi kombinirate ti Izrazi, ki uporabljajo logično in in logično Or. Torej je to samo simbol In ki mora biti Shift, 7. In to je simbol cev, ki je ne male črke L. To je ena to je pravica nad vašo tipko Enter. Torej boste uporabili dve te simbolizirajo logično in logično Or. Torej bo to vrne true le, če odgovor je ena, dva, tri, ali štiri. In to se bo vrnil res le, če odgovor je onstran, da je na obeh straneh. Torej, to ni ena, dva, tri ali štiri. In način, kako bi uporabili da v izrazu - ROB: Ali nič ali pet. JOSEPH: Nič ali pet. Žal mi je. Ja, ja, ja. OK. In več kot tukaj, enako vam pot bi uporabil ta izraz, manjša Izraz strani Če pogojena Izjava, bi si ga tudi uporabo enak način, ki ga samo ga je dala v notranjosti oklepaje izjavi If. Torej bo to printf le ogenj, če odgovor je ena, dva, tri, ali štiri. Vsa vprašanja o združevanju izrazi? Torej obstaja še en pogojni konstrukt pravimo Če / Else. Torej v bistvu, to sedaj pomeni, OK, če nekaj, kar sem želela preveriti, ni bilo res, potem pojdite na drug in opravljanje te druge ukrepe. Torej, v tem primeru, sem vprašal Uporabnik za celo število. Je celo število, večje od nič? Ja? No, potem pa so izbrali pozitivno število. Če ne, potem mora imeti negativna ali enaka nič. Torej si izbral negativno število ali v tem primeru nič. Da. Ali nič. In potem imamo tudi če / Else, Če in Else. Torej, to nam omogoča izvedbo zaporedje Samo stvari, če je prvi, ki so propadla. Torej, v tem primeru, zdaj pa delamo zadnja izberete nič. Torej, če ni izbral pozitivno niti negativno število, potem morajo so se spet nič. Tako da gre samo navzdol verige, kot je ta. Torej primer, kako Če je drugačen od - Če / Else je drugačen od samo zaporedje investicijskih skladov. In to je skupno vprašanje, ki ljudje vprašajo, je dobro, če dobiš kot 95 v CS50, kaj bo to Program vam povem? SPEAKER 5: Imaš A. JOSEPH: Da. Imaš vsak eden od tistih, ki prav. Imaš A, imaš B, si Dobil C in D, kajne? Tako bi ocenili vse te v vrstnem redu. Torej, medtem ko 95 je večji od 90, je prav tako je večja od 80, je tudi večji od 70 let, in to je prav tako je večja od 60 let. Torej imaš vse tiste razrede. In Predvidevam, da bi Samo želim A. Način, da se določi, da je za zamenjavo tiste z Else / Če je. Torej, v tem primeru, se ji zdi, da je 95 večji od 90, potem pa ne ne ovrednoti ostalo izjav. Vsa vprašanja o tem? Torej obstaja še en pogojno nekako strukture, ki smo tukaj, ki smo pokličite izjavo stikalo. Torej, to vam omogoča, da v bistvu preveriti kakšna vrednost števila si dal v izkazu stikalo je. Torej, v tem scenariju, smo preklapljanje od n, in mi rekel, oh, če je n ena, nato natisnete to izjavo. In potem prekinil, kar pomeni izhod iz switch stavku. Če ne bi bil eden, potem, no, samo sčasoma preveriti vseh teh zadevah. In tako preverja, če je ena, dve ali tri, in to ustrezno natisne. In kaj je to privzeta ključna beseda tukaj sredstvo je, če ne vnesete katerokoli tistih, nato pa reči Invalid. Torej, recimo, sem prosil za n in Uporabnik mi daje štiri. No, to se ujema Noben od teh primerov, Tako se bo izpisal, kar je v privzeto oddelek. Ja, vprašanje? SPEAKER 5: Lahko uporabite logični izraze namesto en, dva ali tri? JOSEPH: Torej, vprašanje je, ali lahko uporabljate Boolove izraze namesto ene, dve, tri? In C, verjamem, da si ne morem storiti. Ampak tudi v drugih jezikih, ki jih morda naletijo na koncu semester kot JavaScript lahko. No, bi si morali najprej izračunati ta vrednost in jo nato uporabite v stikalo izjavo. Ja? ROB: Torej del v korist stikala Stavki se zamislite, če je to storila kot Če / Else, tako kot, če je n enak enaka ena ali karkoli. Else / Če je n enako enako dva, karkoli. Else / Če je n enako enako tri. Torej način Program bi potekal je zaporedno bi šel dol navedenega seznama in preverjanje, je n ena? Nope. Je n dva? Nope. Je n tri? Ja. Ali to. Ker je z izjavami stikala, to je dejansko sposobni zbrati, da bi bilo zelo hitro. In takoj, ko pravi, stikalo, da pravi, vse v redu, je n dva, sem Takoj bom skočil, kjer Jaz sem moral začeti izvršitve. Ne bom najprej preveriti, je n ena, je n dva? To je mogoče takoj začeti početje to, kar je moral storiti. In zaradi tega, da ne more sprejmejo logičnih pogojev. Ali pa bi to morali storiti zaporedno, tako kot vse v redu, je n večja od nič? Ostalo je n večji od 10 ali karkoli. JOSEPH: V tem primeru, če ste uporabili Če / Else,, nato pa bi se, če je stikalo potekajo približno trikrat hitreje, kot če / drugega, If. Mi lahko organiziramo stikalo na primer Tako, da ne zlomi Po vsakem od primerov. Torej, v tem primeru bom delitev Številke, ki jih izberejo v eno in dva pa niso visoke številke in tri čemer je veliko število. Torej v tem primeru, če je n ena ali dva, pa bo hit zadevo in potem bo padejo skozi, ker ni prelom. In se bo končala tukaj. Torej, če smo izbrali eno, bo to printf in tako prekinil, da nobena To se izvaja. In seveda, če pridejo v treh ali kaj drugega, potem bo to preskočite tisti, in ne tja, in to bo namesto izvršiti ustreza linijo. Ali obstajajo kakršne koli vprašanja o tem? Ja? SPEAKER 4: Bi si dobil napako, če ti imeli odmor po enem primeru pa je niso imeli kaj za to, da naredim? JOSEPH: Torej, vprašanje je, ki bi jih dobili napaka, če imate odmor po Če ena, vendar ni nič narediti? In odgovor je ne. Ne boste dejansko dobili napako. Ja, mm hmm. Tako nekako malo sprememb tukaj, Bom dal printf tukaj. Ops. Torej, kaj bi to tiskati, če Sem dal eno v kot vhod? Ja. To bi vam povedal, da ni sprejela Visoko število dvakrat, kajne? Ker bi se udaril, da je prvi primer, da ne bi prekinil, in da bi padla preko na drugem primeru. Vsa vprašanja o tem? ROB: Ali imate kakšno vprašanje? JOSEPH: OK, se ohladi. Vse je v redu. Tako da je še nekaj drugega, kar imenujemo trikomponentnih operaterja, ki je v bistvu nadomestno skladnjo, da delaš Če nato Else. In to vam omogoča, da to storite vse v eni vrstici. Torej, v tem posebnem programu, Sprašujem uporabnika za n. In, če je n večji kot 100, pravim jim bodo pobrali veliko število. Sicer sem jim povedal, da izbrala majhno število. Tako da bomo lahko uporabite to res dolgo sintakso, niz, S, in nato preveri če je n večja od 100 in dodelite v skladu s tem. Vendar pa lahko to veliko bolj jedrnato z uporabo te trikomponentne operaterja sintakso ki vključuje vprašanje znamko in debelega črevesa. Torej vprašanje znamka je v bistvu sprašujem, ali ne? ROB: Mogoče približate tamle. JOSEPH: Da. Dobro vprašanje. Torej, to je ternarnim operater. Sem najprej vprašati, je n večji kot 100? Če je tako, potem se izvrši prva igra pred debelega črevesa. Če ni, potem sem izvršiti Drugi del po debelem črevesu. Torej, če je n večji kot 100, potem pobere visoke in postavlja da v niz s. Če je n manj kot 100 zagrabi nizka in potem postavlja, da v niz s. Tako da bodo strnili to velik kos dol v samo tej eni vrstici. SPEAKER 5: Ali je to priljubljen? JOSEPH: Ja, to je zelo priljubljena za stvari, kjer v bistvu želite Ne naloga, ki temelji na neke vrste stanju. In v tem primeru smo se poskuša dodeliti vrednost niza s. To ni tako - Mislim, da res ne raje je v drugih primerih. Ampak to je še posebej uporabno za to nalogo. ROB: To je precej pogost vzorec kjer imate kakšne spremenljivke, ki boš rekel, če kaj, nastavite ta spremenljivka z eno vrednostjo, sicer pa nastavite ta spremenljivka na drugo vrednost. In da je scenarij kjer uporaba tememem. JOSEPH: In ste za varčevanje veliko prog, kajne? In to samo naredi kodo nedvomno malo bolj berljiva. Ja, vprašanje? 6 zvočnikov: Za tememem, lahko greš, String s Enako besede, vprašaj? In potem bi lahko, recimo, pet različnih možnosti. In glede na tisto število n je bil, bi izbrali eno od teh? JOSEPH: Torej, vprašanje je, ali obstaja nekako sintakse, kjer lahko naredite niz je enaka n, potem pa imajo več kot dve Možnosti po tem vprašajem? In preprost odgovor je ne, tam ni Res dober način za to, da če želite gnezdo multiple ternarnih subjektov v drugega. Lahko bi naredil tako kot n večji od 100, question mark, nato pa še trikomponentnih operaterja, n večji od 50, vprašaj, in nest ga na ta način. Toda v tem scenariju, vaša koda je pridobivanje vrste neberljiv in grdo, in bi bilo morda bolje, da greš na Če / Else izjava na tej točki. ROB: In prav tako, kot stranski note, PHP nepravilno izvaja ternarnim subjekt, ki ugnezdene ternaries sploh ne delujejo kot bi morale. Joseph: Ja. Tako da dobi malo zmedeno, še posebej, če greš na različnih jezikih. ROB: To je zmedeno dovolj, da jeziki so narobe o tem. JOSEPH: Torej, pravzaprav, samo da bi razjasnili, to vsi vedo, kaj je to % S počne tukaj? Vsa vprašanja o tem? Mislim, da samo za kamero,% s v bistvu nam omogoča postaviti ogrado za niz. In potem na koncu smo določajo, da spremenljivka želimo postaviti v to Imetnik mesto je s. Tako da v bistvu traja ov in ga postavi tukaj. In potem se bo izpisal, si izbral visoka ali si izbral majhno število. OK. Torej zanke omogočajo, da opravlja stvari s krožnimi gibi, kajne? Morda ste to naleteli na Scratch v obliki Forever zank ali ponavljajte, dokler ali Ponovi zlasti število prenosov. Torej, zakaj je to dobro za nas? No, v C, recimo, da imamo to Pesem izvaja v nič, da poje, to je pesem , ki se nikoli ne konča. To šele goes naprej in naprej in na veke vekomaj. No, vam ne morem narediti program da ima neskončno število printf Izjave v tem, kajne? Torej v tem scenariju, eno smer da pa bi lahko to delo in da bi bilo tiskanje vedno je namesto tega uporabite while zanko. Tako bo sicer zanka izvesti, kaj je v telesu dveh naramnic, ki pripada temelji na tisto stanje. Torej v tem konkretnem primeru prej, če želimo natisniti to večno, kaj lahko storimo? No, seveda, kajne? Torej je to nekako združuje idejo nekaterih Boolean izražanja skupaj z zanko. In smo se naučili o logičnim izrazi prej. Torej, ko stanje znotraj da medtem ko je še vedno velja, to zanko bo izvajal naprej in naprej in naprej. In v tem primeru, če bomo samo ponudbo s res, to povzroči neskončno zanke, ki natisne pesem naprej in naprej in kot smo želeli, ne da bi prej ki ima program, ki je neskončno število printf izjav, ki je ni mogoče. Torej bolj prepričljivo, čeprav to lahko uporabite z spremenljiva in stanje. Torej, recimo, želimo ponoviti Stavek, popolnoma Poln zavoj, 10-krat. Torej, kaj lahko storite z zanko, medtem ko je lahko najprej inicializacijo števec spremenljivka izven Zanko, medtem ko bi 10. In potem v bistvu, vsakič, ko greste skozi zanko, medtem ko si natisnete izjavo in potem zmanjša Števec spremenljivka dokler na koncu na neki točki, ko odštejemo I dovolj krat, 1 od Dovolj sem časov - in samo za pojasnitev, sem minus minus pomeni, da je enak I minus 1. To bo v bistvu bi jaz navzdol točka, kjer je nekoč sem zadel nič, to pogoj ni več res in tako da izstopi iz zanke. Torej povsem Poln zavoj natisne le 10-krat. Kakršnakoli vprašanja o while zanko? OK. Torej obstaja način, da lahko to, kar smo pravkar naredil bolj jedrnato z pravimo Za zanke. Torej Za zanka je sestavljena iz inicializacijo, stanje, in posodobitev, tako kot smo imeli prej V tem while zanko. Torej, kaj si poglejmo. V tem zanko, medtem ko smo imeli inicializacija, nato pa smo imeli pogojem, da smo preverili. In potem smo imeli posodobitev korak na vrhu. Z zanko, to v bistvu traja Te tri stvari, in ga kondenzira dol v eni vrstici. Torej prva stvar, ki jo počne Za zanke je inicializacija. In potem ti podpičjem, nato pa vam stanje, ki je I večja od nič gre tja, in potem update korak. Tako postane ta opravi na Zelo konec zanke telesa. Torej ti dve programi v bistvu enakovredni. Vsa vprašanja? Torej, kaj je ena razlika med tema dvema? Lahko vsakdo poudariti? Morda bi bilo nekoliko subtilen. To je samo zelo majhna razlika. Ja? SPEAKER 5: Si ne bi mogli uporabiti spremenljivka I izven zanko [Neslišno]? JOSEPH: Točno tako. Torej je to nekaj, kar bomo prišli do kasneje se imenuje spremenljivka področje. Ampak v bistvu je to int življenje I zunaj tega while zanko. Torej, ko je ta Medtem zanka storiti izvršitve, bom lahko uporabila sem kasneje na v programu. Ker se s tem Za zanko, to int I je zajeta v notranjosti ta zanka. In zato, ker je v notranjosti tega odseka v zanko, ki se začne v oklepajih in se konča z curly brace tam. Karkoli, da je razglašena za notranjost Tukaj se ne sme uporabljati zunaj. Torej, če sem poskusil, da ga uporabljam zunaj, ga bom povej mi, črno simbol. In v bistvu, jaz ne bi mogli uporabljati. ROB: In tudi, pred 10 leti, v dobesedno vsi primeri, zaviti oklepaji so tisto, kar se uporablja za določanje Obseg spremenljivke. Torej tam, int i je enak 10 je izjavila znotraj tega komplet zavite oklepaje. In tako se potem tako dolgo, kot ste poskušali uporabiti I Pred tem kodrastimi oklepaja, je že v redu. Morda boste opazili, ko napišete make, vas glej, pomišljaj pomišljaj, STD, enaka, C99. Tako da je kasneje različica C, GCC je uvedlo to daje tudi Ta bližnjica. Torej ta uporablja, da se ne dovoli v C. In lahko vidite, zakaj, ker je to int I je zunaj tega kodraste opornico, vendar je še vedno velja, da je v Obseg teh zavitih oklepajih. Ampak to je zelo priročno stvar, in zato je dobro podaljšek. JOSEPH: Kakšno vprašanje? OK. Torej, kaj je bolj koristno je, da včasih hočeš neke dinamike v tvoja zanka, kajne? Vi ne želite, da samo nujno tiskanje popolnoma Poln zavoj ves čas, si želite odštevati od 10 ali nekaj takega. In tako lahko uporabite spremenljivko števec znotraj te zanke kot tudi. In v tem primeru je ta program samo odšteva od 10. pa vse navzdol. In kaj ne natisne? To ne natisne nič, V redu, ker ko - Ja, to tudi ne natisne 11. Torej se ne natisne nič, ker ko Jaz nič, ne pozabite, da ovrednoti pogoj, preden gre v za izvedbo zanke telo. In ko je nič, to je neresnično, tako ne natisnejo odšteva nič, samo natisne štetja dol 10 vse tja do 1. Če bi dejansko želel, da natisnete nič, potem bi dal enačaj Po daljši od znaka. OK. Torej en način, da to potrditev vnosa, ki je, ko se od uporabnika zahteva, naj storijo nekaj, kar si želite, da bi bili prepričani, da po vaših navodilih, je, da uporabite Medtem ko je zanka, kajne? Torej, v tem primeru, sem prosim za s pozitivnim predznakom, potem pa sem čakanja na vhodu. In potem sem preveril Čeprav je vhod manj kot nič, da jih vprašam. Torej, dokler mi dajo številne ki ni pozitivno, da sprašuje, da prosi, da vprašam. Toda kaj je nekako čudno glede tega? Ali pa tisto, kar se ne zdi optimalna o ta struktura tukaj? Kdorkoli? Ja? 6 zvočnikov: Ste ponavljanje Navodila za dvakrat. JOSEPH: Right. Torej imamo dva printf stavke tukaj, kajne? Torej obstaja način, kako bi lahko to dobil samo na eno, ki bi omogočil naše kodo lažje branje in malo bolj čist. In potem mi ne bi bilo treba so Spravi se dvakrat dobro. In eden od načinov, kako lahko to storite, je z uporabo do-while zanko. In Do-while zanko je v bistvu drugačna oblika while zanko, kjer vse, kar je v zavitih oklepajih dobi zažene vsaj enkrat. Torej tukaj, izjavljam, int vhod, zunaj prvič. In potem sem samo rekel, to storite pouk, ko je vhodni je manjša od nič. Tako se dotakne najprej storiti. To bo vedno izvršiti ta vsaj enkrat, tako da bo vedno vprašal uporabnika za vnos vsaj enkrat. In potem se ocenjuje, da je prispevek, in gre naprej v krogu. Ja, vprašanje? SPEAKER 6: Ali obstaja način, da to storite [Neslišno] vrste, kot če rečeš, GetString, in nekdo [neslišno] obstaja način, da se [neslišno] JOSEPH: Torej, vprašanje je, ali obstaja način za potrditev vnos, če uporabnik ne postavlja v desno tip spremenljivke? Torej, če bomo prosili za notr in so nam niz namesto tega. In v funkcijah, ki jih izvajajo za vas, GetInt, GetString v vseh tiste funkcije, ki jih dejansko že narediti, da se takšne osnovne vhodom Validacija pod pokrovom. Torej, če ste z uporabo funkcije, ki jih vam dal, da vam ni treba, da res. Toda, če želite videti bolj v tem, kako lahko dejansko narediti, si lahko ogledate pod pokrovom na datoteko I/O-- ni vložilo, standardne I / O funkcije kot so branje iz standardnega vhoda in standardni izhod. In lahko dobite boljši občutek o tem, kako bi lahko to naredil. ROB: Eno vprašanje, čeprav je izrecno Na primeru si je dejal, lahko pričakujete vrvico in vnesem int. Kako bi ti povedati razlike med namerno želijo Niz 123 v primerjavi želijo int 123? Torej niz, to je precej ni validacija, to je samo, kar se jim začel boste razlagajo kot niz. Int je lažje, saj ni važno, input vzameš od uporabnika, da ste Vedno ob niz. In tako, da niz lahko potem preverjanje, so vse te dejansko številčne številke? JOSEPH: OK. Vsa vprašanja o do-while zanko? ROB: Oh, in to je prav - grem nazaj na področje, nekoliko pogosti napaka poskuša uporabiti nekatere lokalne spremenljivka v okviru te Do-Medtem, ko je zanka znotraj tega stanja. In dejansko, če bomo znebili to in dejal, vhod int enaka GetInt, potem bo prevajalnik nadrl us, ker vhod ne obstaja zunaj področja ti zaviti oklepaji. JOSEPH: In to je, zakaj smo Potrebujem to zasedbo tukaj. OK. Torej si lahko prekinil tudi iz Zanka zgodaj, če želite. Torej je to drugačen način izvajanjem, kar smo pravkar izvaja. In namesto uporabe pogoj v oklepaju, smo s pomočjo Če izjava v notranjosti telesa o Do-while zanko. In v bistvu, ko je vhodna končno večja od nič, bomo premakniti iz zanke. In tako bomo šli vsi Tako sem dol. In lahko vidite, da bi to Verjetno je prednost v tem scenarij, ker je malo nekoliko čistejši in malo nekoliko lažje brati. Ker to si nekako imajo dodatne linije v njem. To je samo malo grši, Mislim, na nek način. Ja, vprašanje? SPEAKER 4: Bo prekinil le dobil ste iz enega niza naramnic? JOSEPH: Right. Torej je vprašanje bo prekinil le prideš iz ene zanke? In odgovor je pritrdilen. Torej, če ste ugnezdena Za zank, za Na primer, če imam za notr mi je enaka 0. do 10 in nato za notr J enaka 0. do 10, če bom prekinil iz notranje zanka, bom še šel z zunanjo zanko. Zato bomo še naprej opravlja operacije na zunanji strani. Vsa vprašanja o tem? Ja? SPEAKER 5: Ampak prekinil samo funkcije za zavite oklepaje, ne pa tudi za druge izjave? [Neslišno] JOSEPH: Torej je vprašanje bo prekinil Funkcija samo za zanke, v nasprotju z druge izjave všeč, če bi? In ja, da je tako, saj boš rešil iz zanke, desno, v nekem smislu. ROB: V večini primerov, to je to je nekako, če kaj, nato prekinil. Torej vam ni treba, da bi prekinil uporablja za Če da se ovije okoli njega. In tudi to ni veliko zanki vendar ne pozabite, da so tudi stikala pobegnil iz odmori. Videla sva se uporablja počitnice s stikali prej. JOSEPH: In lahko se jih uporabi tudi Medtem ko se v zankah in for zanke. Vsa vprašanja? OK. Torej, naslednjič se je funkcij. Torej, morda ste uporabili eno od teh BYOB bloki v vašem Scratch projektu. In to v bistvu omogoča da se opredeli niz navodila je treba upoštevati. In kaj mislim s tem je, kaj je razmišljati nazaj na matematiki, desno, algebra. Imate tisto, čemur pravimo funkcija x, nekateri spremenljivka, in recimo, da je to Funkcija f od x enako x plus 5. Torej si lahko zamislite f x saj to black polje, ki traja 15 in pozneje proizvaja 20. Tako na splošno, funkcija nekaj, kar traja nekaj vhodov in nato pa proizvaja nekaj izhodov. In zakaj so funkcije, dobro? Oni so dobri za več razlogov. Torej nekdo rad, da bi zabodel kaj organizacija pomeni? V smislu, zakaj funkcij, so v pomoč? Ja? SPEAKER 4: To je vaše koda bolj berljiva. JOSEPH: Right. Torej ena od stvari, ki se jih naredi kodo bolj berljivo, kajne? Namesto da bi kot int x je enako x krat x krat x, lahko imam kocko x, ki je bolj berljiva in bolj razumljivo, da bralca. Organizacija je tudi v smislu razšla kodo v obvladljive dele, tako da namesto da izvajati vse to v enem dolgem odseku V glavnem, lahko nekako razdelili v kot, OK, dajmo napisati funkcijo na kocko nekaj, dajmo napisati delujejo na kvadratni nekaj. Na ta način ga lahko razdeli na drobne, majhne dele, ki jih lahko reševanje v nasprotju s poskuša rešiti Velik problem naenkrat. ROB: Ali celo drobne, majhne dele, ki ti in partner ne more spopasti. Joseph: Ja. ROB: Torej, namesto da bi oba skušaš vsadil enega delovati hkrati. JOSEPH: Poenostavitev. Kdo želel ugibati? Ja? SPEAKER 5: več ponovitev. JOSEPH: Right. Torej, ena stvar, ki jo lahko naredite z Poenostavitev je, da je nekako na podobno kot ponovne uporabnosti je, da Nekoč sem napisal funkcijo kocke, sem lahko samo uporabo, ki znova in znova in znova spet v mojem programu namesto tipkanja x-krat x krat x več in znova in znova. In poenostavitev tudi tukaj samo pomeni, da naredi svojo kodo vrste lažje debug, ko ste po delih Ta se v funkcij. Ker potem lahko locirajo kam vaše težave nekako so. Vsa vprašanja? Torej, še ena ideja je abstrakcija, kajne? Ta black box. Tako kot veš, kaj počne GetInt da sprejme vnos uporabnika? Smo vam res ni povedal, kajne? Vse, kar sem vam povedal, je GetInt ne točno to, kar pravi, da ne. Torej, tudi če vam ne povem, kako deluje, veste. Torej v tem primeru je to quadruple funkcijo, ki ne različnih stvari, da vložek da se stvori izhod. In lahko štirikrat več tako, da jo pomnožimo s štiri. Ali si lahko to, kar imenujemo bit se premika z dva. In bomo to kritje malo kasneje. In ni potrebe, da veš, kako to funkcija dejansko deluje tako dolgo, kot to Deluje kot je navedeno. Torej, pod pokrovom, bi moral biti podobno, vrnejo vhodni krat osem deljeno z dva. In ti ne bi vedel, kajne? Vse, kar morate vedeti je to ne, kaj piše. Tako, da je uporabna stvar O abstrakcije. In še ena stvar je nekako ta ideja o lokalizaciji kodo na eno Določen odsek. Torej, če imate težave, vam ne iti po vsem kodo poskuša da se določi, kje je problem. Torej, v tem primeru, sem izvajala kocko narobe. Mislil sem, kocka je množenjem s tri. Torej, v tem primeru pa je to en program da samo se pomnoži s tri povsod. In tu je še en program, ki ima Odkupi kocka ven v funkciji. In tako zdaj, če želim popraviti svoj napako Tu moram popraviti vsak linijo kode v tem programu. Medtem ko na drugi strani, če bi uporabili Funkcija, rabim samo spremeniti kaj je bilo narobe na enem mestu. Torej, v računalništvu, smo pokličite vhode in izhode. Vhodi se imenujejo parametri ali argumenti in izhodi se imenujejo vrne vrednosti. In bomo videli, kako nam to pomaga sort od definiramo funkcijo v sekundi. Torej je ta opredelitev funkcija za cubing. Torej je potrebno vhod, nato pa se vrne, da število krat samo trikrat. Torej, kaj je razdeliti. Tako da imamo glavo funkcijo, ki v bistvu sestavljen iz treh stvari. Torej imamo parametre, ki so, kot sem že dejal, vhodi v tej funkciji. In potem smo dali funkcijo ime. V tem primeru, je pozval kocka. In potem smo opredeliti, kaj na vrsto o je vrednost donos. Torej, v tem primeru moja kocka funkcija bo v celo število in je tudi vrne celo število. Torej, če sem mimo v dveh, dva je celo, vrne osem do mene, ki je celo število. Torej vrnitev tipa parametre imena. Vprašanja o tem? In nato vrne vrednost dejansko navedena na koncu z besedami vrnitev in potem vračanje karkoli vsebuje vrednost donosa. Torej, v tem primeru, če bi dal vse skupaj, funkcija bo v parametri, ki se imenuje nekaj, in da vrne nekaj, kar je tip da smo rekli, da je, da bo. Vsa vprašanja? Torej, kako bomo uporabili funkcijo? No, smo napisali funkcijo in nato jih uporabljamo v našem programu, kajne? Poklical sem ga kocka, in potem sem lahko uporabite kocko. Toda, kaj je pomembno omeniti je, da se zadeve reda. Če imam kocko pod glavno, da je dogaja, da naletite na kocke. In na tej točki, ni nič imenovana kocka v programu, in to je le, da bo všeč, imam Ne vem, kaj kocka. Tako, da bo povedal, implicitno Izjava funkcije. To je napaka, ki se pojavi. In tako v tem primeru, kocka je spodaj Glavno, da je ne bo vedeti o tem. SPEAKER 5: Torej glavna je običajno zadnja funkcija definirana? JOSEPH: Torej, vprašanje je, je glavni običajno zadnji stvar, ki bi jo opredeliti? In ne. To je zato, ker smo ponavadi radi glavni biti na vrhu, kajne? Ker je to prva stvar, ki jo želijo odprtju programer Program za videti. In tako, kako bomo rešili to vprašanje smo radi glavni biti na vrhu, vendar Funkcije, ki jih želimo, smo jim želeli da je pod glavnim še lahko uporabila jim znotraj main? No, bomo uporabili kar imenujemo Funkcija prototip. Torej, kaj je funkcija prototip bistvu se je najprej potrebno kaj podpis ali glava funkcije kaj želimo izvajati navzdol tukaj, in mi ga dal na Vrh programa. Torej, v tem primeru rečemo, da je dobro, kasneje v našem programu, greva da bi obljubo, da bo izvajanje tega Funkcija se imenuje int kocka, ki traja vhod število. Torej sedaj, saj je nad glavnim, Glavno, da se dogaja, da se reči, oh, dobro, kasneje v programu, ki se bo tam, tako da sem se lahko sklicuje na to, da bom samo pustite, da gredo skozi, za zdaj. In nato na dnu, izvajamo kocko. In potem glavna bo samo rekel, dobro, bo to neke vrste povezavo Ta dva simbola skupaj. In bomo kritje, kaj to pomeni kasneje. In tako bomo vedeli, da je to kocka funkcijo, ki naj bi ga uporabili. ROB: [neslišno] o želijo Glavni na dnu ali top, sem videl oba. Obstajajo stvari, ki tako kot postaviti glavni na dnu. Toda, ko postane projekt posebej velika, običajno glavna je v vložiti vse svoje. In na tej točki, kot je int kocka linija bi - Notranjost stdio.h kup vrstic, tako kot to notr Kocka int vnosna vrstica. In tako ti prototipi so stvari, ki jih ponavadi dajo v header datoteke, na , ki kažejo, da ni pomembno. No, saj ni važno. Tisti, ki gredo vedno na vrhu. In če je glavni ni datoteka vse sama, vam ni treba skrbeti za dajanje posameznih funkcij prototipi v datoteki. JOSEPH: In bomo prišli do, da je malo malce kasneje, ko Rob začne govoriti o izdelavi. In tako se je tudi razlika med parametrom in argumentom. In parameter je samo tisto, pravimo teh vložkov, ko definiramo funkcijo. In ga imenujemo argument, ko smo dejansko prehajajo v funkciji. Torej v tem primeru, to je parameter, kot smo rekli prej. In ko smo dejansko uporabljajo tam, kocka X, X sama kar imenujemo argument do funkcije kocke. ROB: Torej argumenti parameter so - da je to razlikovanje, zelo zmeden izmenično. Na tej točki se mi, to je kot eno od tiste besede, ko sem jo videl v divji, ne morem pomagati, ampak takoj Vprašanje, ali se ga uporablja v Pravilna ozadje, ker Razlika je dovolj subtilen, da samo vsi nagiba - Skoraj vedno rečem argument ne glede na to, kaj mislim. JOSEPH: in funkcije so tudi koristne za tisto, čemur pravimo stranske učinke. Tako lahko funkcija sprejme nobenih vložkov, in lahko proizvajajo tudi brez izhoda. Torej, v tem primeru, sem definira podprogram, ki nima vrne vrednost. In da bi se določilo, da smo uporabili pravimo praznino tukaj. Tako je stranski učinek te funkcije je, da je to samo natisne stvari ven na strani. To dejansko ne bo vsaka vložki, in to ne dejansko prinesel nobenih rezultatov. Toda to je lahko koristno v smislu če želite, na primer, razhroščevanje nekaj v vašem programu, če hočeš napisati malo podprogram, ki natisne, recimo, vsebina spomina ali kaj podobnega. In tako se ti neželeni učinki so včasih koristne izven okvira of rad vhode in izhode. Vsa vprašanja? In na koncu ta segment, kaj ta program naredil? Dam ti fantje nekaj sekund, da se glasi skozi njo. Na zelo osnovni ravni, kar smo želeli reči, da zamenjave X in Y, ne? Torej, koliko vas dejansko misli To bo zamenjali X in Y? Naj dvigne roko. Nihče. OK. Ki misli, da bo ne zamenjajo X in Y? In vsota, ki je bila ne celotnega prostora. Tako da nekateri ljudje niso prepričani. OK. To je smiselno. Torej, gremo skozi to, kar se zgodi, ko ste dejansko prvi klic funkcije Da bi odgovorili na to vprašanje. Torej je to tisto, spomin nekako izgleda. To je nekako kot poenostavljenega modela kaj spomin zgleda, ko zaženete program. Torej, nekaj je pozval kup tukaj in nekaj, kar ti kup. In ti rastejo proti Sredi spomina. Torej v tem primeru, ko pokličete funkcijo, je dobi dal na kupu. In potem, kar je vsebovano, da funkcija ostane v tisto, čemur pravimo, da Funkcija je kup okvir. In tako bi dobili lepo vizualizacijo to Pojdimo - na primer, smo imeli Program Glavni prej. In znotraj glavno, smo poklicali kocko. Torej glavna bi najprej šel na kupu okvir, saj je prva naloga da se reče. In potem ko je kocka imenuje znotraj Glavno, dobi dal na vrhu glavnega notranjosti spomina. Torej, kaj boste opazili, tukaj je, da je kocka ima svoje parametrov in njenem Lastna domačini. Torej, ko ste dejansko opraviti nekaj funkcija, parametri, ki jih dobi so kopije, kar je bilo sprejet od glavnih. In nekako to pojasnite, kaj je sprehod skozi program. Torej imamo kup, to je samo kup del. In kaj moramo storiti, je najprej inicializacijo X in Y, da ena in dve. Torej imamo te male škatle. Sedijo na kupu glavnih je uokviriti na kupu. Vsebujejo ena in dve. Zdaj pravimo swap. Kaj se zgodi, je, da smo mimo X in Y v swap in swap ustvarja lastne kopije za tiste spremenljivke, za uporabo v notranjosti njenega dimnika okvirja. Torej, zdaj tam, imamo, kar vsebuje vrednost, ki x pridobili; in B ki vsebuje vrednosti, ki y imel. Torej, ena, dva. In boste opazili, da je to samostojen od x in y znotraj žarometov. Tako smo sedaj ustvarili začasno spremenljivka vsebuje. Postavili smo enako B, tako da Spremembe od enega do dveh. In potem smo postavili b enaki na temperaturi, ki je ena. In potem zdaj smo izhod iz te funkcije. Ko zapustite iz funkcije, Sveženj okvir dobi izstrelil off stack. Kličemo ga potisnite. Pritisneš Stack okvir na kupu in ti pop če off dimnika. In kaj se zgodi, je vse, kar je je bilo v dimnik okvirja vrste tik gre v plamenih. In tako, da ne obstaja več. Toda kaj smo opazili? Mi dejansko nikoli spremenila vrednosti x in y, desna? Torej tisti, ostal lokalen glavni. In s posredovanjem stvari v zamenjavo smo pravzaprav nikoli spremenila te vrednote. In kaj pravijo temu? Temu pravimo po vrednosti. Torej v C, ko se boste peljali stvari v funkcije, da jih posreduje po vrednosti in naredi kopijo njih za funkcija za uporabo. In bomo spoznali nekaj, kar ti po referenci kasneje, a to Tako boste lahko rešili ta problem. Vendar mi ne bo treba skrbeti da šele kasneje. ROB: In pravzaprav, da je izraz, ki prehaja z referenco, tako C nima niti mimo primerjanje. C je izključno posredovanje z vrednostjo. Ne glede na to, kaj počnete, vedno ste poteka kopijo nečesa. To je ravno tako, kot sem nekako omenil da prej s kazalci in da je niz res samo štiri bajti kaže nekam v spomin. No, če imam ta niz, in to je mi je povedal, da je, če niz - No, če imam to kazalec, da je to mesto v pomnilniku, potem sem lahko prenese Izvod tega kazalca na funkcijo, in to funkcijo še vedno ne ve, kje v pomnilnik je. Torej oba kazalci so kazali na istem mestu v pomnilniku, in to je, kako bomo mogli spremeniti stvari, ki presegajo Sedanji kup okvir. JOSEPH: Ali želite storiti pripravo? ROB: Ne, to je 05:30. JOSEPH: OK. To je 5:30. OK. Tako bomo zajeli pripravo Mislim, v Naslednji razdelek, ali vaš oddelek Vodja bo na tej točki. In - ROB: Kakšno vprašanje? JOSEPH: Kakšno vprašanje? Ja? SPEAKER 5: Uporaba strune iz CS50, vsaka Funkcije, ki jih želimo uporabiti za tiste, to bo, kot funkcije C. CS50 ni šla v in je vsaka dodatna. ROB: Pravilno. Koli od C kot [neslišno], si bi uporabil tiste na naših strune. JOSEPH: In še zadnja stvar, želim omeniti, je, da imamo slogovni priročnik za ta razred. ROB: Oh, ja. JOSEPH: Torej, če ste prišli iz programiranje ozadje, preden boste Morda imajo nekatera pravila, če pišete kodo kot polaganje oporniki na isti liniji ali zlasti načini Feed ali poimenovanju spremenljivk. V tem razredu, želimo slediti Poseben priročnik stil samo zato, No, če greš ven in delati v industrija, boš mogoče pričakovati slediti navodila slog družba, pri kateri greš. Kot je na primer Facebook Mislim ima posebno vrsto poimenovanje konvencije. In tu je razlika med kamelo Ohišje spremenljivke in tako kot jih ločite s podčrtaji. In tudi mislim, da je najpomembneje, kot so na primer, zamik, kajne? Mi zaviti oklepaji začnete, kjer stanje, in jih so v naslednji vrstici. In smo tudi postaviti zavite oklepaje v tudi če je samo ena vrstica. In veliko krat, obstajajo načini, kako početi je, kjer lahko pustite teh naramnic off, če je to le ena vrstica v skladu z izjavo If. Toda v tem razredu, želimo slediti Poseben priročnik stil samo zato, da bi dobili uporablja za take stvari. ROB: Ja, in Style 50 se bo uveljavitev te slog vodnik, in mi smo boste uporabljali Style 50 v razred kodo. Tako da naredi stvari lažje za nas in upajmo, da ne bi smeli reči, da veliko slabše za vas, saj standardizirane slog ne sme biti, da nerealno. JOSEPH: In končno, da bi našli stil informacijami, obiščite manual.cs50.net/style. In ja. SPEAKER 4: Ali boste za uveljavljanje koli znakov na vrstico? ROB: Da. JOSEPH: Žal mi je, fantje. ROB: To je kot enega od edine. Na tej točki, sem v redu s 120. Jaz sem v redu s pravim 120 znakov v vrstici. Razumem, da bi bilo nekaj omejitev. Mislim, da 80 je tako majhen, vendar bomo njene izvršitve. JOSEPH: Osebno mislim, da s C, 80 znakov je bolj OK. Ko začnete pridobivanje drugih jezike, kot so JavaScript in PHP, ne zato smiselno, da se le omeji je na 80 znakov. OK. No, to je bilo super odsek. Ali kdo rad sladkarije? SPEAKER 4: Da.