ROB: U redu. Dobrodošli u prvom dijelu. Ja sam Rob. JOSEPH: Ja sam Joseph. ROB: Tako ćemo roniti pravo u. Prva stvar koju treba govoriti o je Appliance. Dakle, nadamo se većina vas ima skinuti ga već. No, možete vidjeti upute na cs50.net/appliance. O Bože, sad sam samosvjesna. Još uvijek sam ga čuti. JOSEPH: Wow, to zvuči kao to je dezorijentiran. ROB: Dakle, neki ljudi su vlasništvo problemi s njom, pa ne čekajte last minute problema postavljena na pokušati riješiti aparat i saznate da to ne radi. JOSEPH: A ako se nešto ne radi a vi trebate pomoć, možete ići na cs50.net/discussion gdje smo imaju forum gdje ste mogu postavljati pitanja. I mi ćemo doći do njih s vremenom. ROB: U redu. Dakle, to je ono što Appliance izgleda. Opet, to je samo potpuno odvojene operativni sustav izvodi u roku bez obzira na sustav operativnog ste radite na prijenosnom računalu. A glavni je ono što vam se koriste su gedit. Dakle, nadamo se da je već postalo poznato mjesto. Terminal. A također možete izvoditi Chrome u Appliance. Bilo je par ljudi koji su izvijestili internet ne rade u Appliance. A neki od njih tek su preuzeli da ne bi trebalo biti Internet u Appliance. Ali da, tu je trebalo da se internet. Ja ću to reći odmah, ali to ipak ne zapravo znači ništa. Ako internet ne radi, to je ono što imaju tendenciju da je potrebno pokrenuti to popraviti. Ako imate internet probleme, zar ne zapamtite ga, samo ga objaviti na Razgovarati, a mi ćemo reći da su pokrenuti. No, internet bi trebao raditi. Dakle, jedina druga stvar - da, ništa ostalo je stvarno relevantno. No, samo sam htio ukazati na to da - pogledajte u ovom donjem desnom kutu. Dakle, svaki od svojih aparata treba imati IP adresu. I kasnije u semestru, to IP adresa će postati važnije kada radite na web p-set, jer ćete biti u mogućnosti pristupiti Web radite od svoje lokalna Chrome pomoću ovu IP adresu. Ali ono što mi se sviđa koristiti IP adresu - i ne morate to učiniti, ja Samo želim da se to ukazati - je ovdje. Dakle, ovo je terminal prozor moj Mac, to nije u Aparati na sve. A možete pogledati što ova naredba radi. Ali ću SSH izravno mom Appliance. Ja ne znam što je IP. JOSEPH: 168 - 168.224.1.0. ROB: Dakle, jednom kad sam gotov s tim, prijavite u. Sada, u osnovi, to je identičan Terminal prozor u mojoj Appliance. Tako sam prilično nikad zapravo radila iz same Appliance. Upravo sam oduvijek to radi u pozadini minimiziran i SSHed u nju. Problem s ovim je da se ne ide da bi mogli koristiti gedit lako izravno iz toga. No, ako želite biti pravi cool Haker, onda treba naviknuti na naredbenog retka tekst editor svejedno. Dakle Vim i Emacs i Nano, svi ovi su različite alternative. Nano ima tendenciju da se najlakše. I mislim da nema sintakse isticanje. Oh, ne, to je potpuno ne. Na taj način možete koristiti Nano, jer da je jedan je prilično jednostavan. Vidite sve ove naredbe na dnu. Ova mala mrkva simbol. Ako niste vidjeli prije, vi ćete Vjerojatno ga vidjeti puno sada. To obično znači kontrolni mrkvu, kao što je u donjem lijevom kutu tipkovnice upravljački znak. Dakle, ovdje mi govori ovdje - oh, to nije odsječen, ako sam povećavanje u. Dakle Kontrola, X je kako Idem za izlaz. I to govori da mogu pogoditi Y za Da, zbog štednje, N za broj Dakle, to je Nano. Vim i Emacs imaju tendenciju da se malo više komplicirana i neodoljiv. No, možete se naviknuti na njega, i onda ćete ga voljeti. Dakle, to je to. JOSEPH: Nema potrebe za to. ROB: Da. Vi ste slobodni koristiti gedit za Ostatak semestra. Dakle, bilo aparata povezanih pitanja? Ili imate bilo kakvih misli o tome što drugi treba se govori o oko aparata? Da. ZVUČNIK 1: Kada SSHed u svoju stvar, bio lozinkom Crimson? ROB: Da. Lozinka za prilično mnogo sve u Appliance ide biti Crimson. ZVUČNIK 2: Uvesti kao pravi IDE aparat, hoće li to raditi? ROB: Zamišljam Eclipse ima Fedora verziju, u tom slučaju, da, možete to učiniti. To je vjerojatno nije stvarno isplati. Zvučnika 2: OK. Tako da je vjerojatno lakše ako sam htjela koristiti Eclipse, samo koristiti materinji i onda upload na - ROB: Oh, kako je i vjerojatno lakše. No, možete dobiti Internet rad u Appliance. JOSEPH: I za kameru, pitanje je, može li instalirati još jedan IDE unutrašnjost aparata? ROB: Pomrčina se Primjer IDE. Bilo koja druga pitanja Appliance? U redu. Dakle, sada ćemo prijeći na naredbenog retka sučelje vezane stvari, pa CLI. I opet, ja sam samo ide na posao u Ovdje, jer je identičan radeći unutar prozora terminala u Appliance. Kako je taj font izgleda? Je li to dovoljno velika? U redu. Dakle, postoji mnogo naredbi koje trebali dobiti prilično koristi za tijekom semestra. Velika dva za navigacije su ls, popis datoteke u ovaj direktorij, te cd, tako promijeniti mape. Dakle, ja mogu promijeniti radnu površinu, a zatim vrlo čest uzorak je cd da imenik i odmah ls ono što je u telefonskom imeniku. Ljudi ponekad ne shvaćaju da je završetak Tab je stvar. Dakle, kao što su cd, VH, a onda sam udario Tab. Ja gotovo nikad ne tip iz Cijela stvar. A onda, ako sam držati udarajući Tab opet, to će automatski početi popis za mene. Dakle, ja mogu cd vhosts, lokalni domaćin. I to samo ide na - u slučaju da niste čuli za pojam prije, katalog je samo druga riječ za mape. Pa sad, ako ste vidjeli - vratit ćemo da je na vrhu. Pa sad, ako vidite u zagradama, što vidi malo tilda, Slash, vhost, Slash, lokalni domaćin. Dakle tilde, koji se odnosi za polazni direktorij. To je katalog ste kad ste SSH u. To je katalog ste u kada li otvoriti terminal. To je mjesto gdje možete početi. I tako sam unutar moje kuće imenik, i ja sam unutar vhost katalog unutar moje kuće imenik. I onda sam unutar lokalne Imenik domaćina unutar toga. Dakle, neke druge korisne stvari s CD-om - ili dobro, općenito, tako dot uvijek odnosi se na trenutni direktorij. Cd, točka je prilično bezvrijedno naredbe. No, to se mijenja na tekući popis. Korisniji jedan u smislu cd je točka, točkica, što je samo ići gore jedan katalog. I imajte na umu da je to - Želim reći pseudonime, ali ovi Simboli, dot, i točka, točka, oni rade za prilično mnogo bilo zapovjedništvo si ti će biti razmišljanje trčanje. Dakle, kao što su cd je vjerojatno na mjestu gdje ćete biti korištenjem većina, ali to nisu stvari koje samo cd razumije. To je prilično puno nešto cijeli naredbenog retka razumije. Puno programa razumiju dot i dot, dot. Tako su one druge korisne - cd, crtica. Tako da će me dovesti do Posljednja uputa da sam bio u. Dakle, ponekad ću napraviti nešto slično, oh, ja radim ovdje. I ne vidim neku pogrešku s nečim, a Ići ću to istražiti tako da odete na neki slučajni imenik negdje. I ne znam je li to ću pusti me unutra. To će. Pa onda sam učiniti sve što želim u ovom imeniku. Bla, bla, bla, bla, bla. I ja sam bio kao, u redu, želim da se vrati tamo gdje sam bio. cd, crtica, i to me dovodi vraćam. Tako da ću se baciti puno od ovih na vama danas. Ja ne očekujem da se pamtiti sve od njih. To je vrsta samo znam da oni postoje. A onda kasnije kad ste poput, hmm, želim se vratiti u imenik koji sam bio samo na, oh, čekaj, tako nešto postoji. Vi ne morate samo upisati Cijeli ponovno imenik. JOSEPH: I na kraju ćete samo koristiti ih iznova i iznova, i to će postati mišića memorije. ROB: Da. Pa kako sam već rekao, da je tilda je vaš dom imenik. Dakle, ja mogu CD, tilda. Ali ja ni ne moraju to učiniti, ako sam samo - Vratit ću se u telefonski imenik, tako to nije besmisleno primjer. Ali ako sam samo napraviti cd, to je također Isto kao što je, ide na moj home direktorij. Ja zapovjedništvo, K. JOSEPH: Također možete upisati jasno, Riječ, i to bi trebalo razbistriti. ROB: A mislim i kontrole, L i to radi. Dakle, puno različitih načina. Mislim da postoje neke razlike, gdje jasno i kontrola, L će samo Stvarno ga gurnuti na vrh i Ja još uvijek mogu pomicati natrag. Command, K doslovno uništava sve, a vi ne mogu pomicati back up. U najmanju ruku, to je kako se to radi u iTerm2. Ja ne znam kako druge stvari - oh. S SSHing, pa ako ste na Windows, ti ćeš morati preuzeti kitom kako bi se ssh jer Windows ne imati kao izgrađen-in SSH alata. Od Macove, možete samo SSH izravno iz prozora terminala. OK. Pitanja? S ls, tako nešto bi se naviknuti na s većinom tih naredbi je - dobro, ja ću učiniti samo jedno. Ls, crtica, l. Dakle crtica, l je ono što ćemo pozvati zastavu za ls. I mnoge od tih naredbi su zastave da možete prijeći na njih. Dakle, u ovom slučaju, crtica, ja je zastava da to govori da će mi dati punu popis svih informacija ovih datoteka. Tako ovdje vidimo da je desktop izmijenjena je 30. srpnja u 00:54. Preuzimanja preinačen je 6. rujna. To su sadašnji broj i bajtova tih imenike. Vi ne morate razumjeti sve to. Ova stvar s lijeve strane, ove drwx-a, koja će postati mnogo važnija Kasnije, kada se morati baviti - što ima veze s tko ima dozvole pogledati ovih datoteka. I tako, ako niste bili jedini korisnik na ovo računalo, te će biti u mogućnosti recimo, u redu, ja bi trebao biti samo jedan dopustio da pogledate ovu datoteku ili sam će omogućiti svima da pogledate ovu sliku. Dakle, netko drugi na mom računalu možete pogledati na ovu sliku. Ja ni ne znam što je to - što to učiniti? JOSEPH: Nisam sasvim siguran, zapravo. ROB: Nemam pojma. JOSEPH: Ali, ako ne znate, ne postoji korisne naredbe koje možete koristiti vam reći što znači izlaz. I ako upišete u čovjeku prije naredbe - tako M-A-N. ROB: Man. Dakle, čovjek je još jedan to je vrlo korisno. A čovjek, ls. Tako su man stranice, oni su oboje zapovijeda da idete da se pomoću na zapovjednoj liniji, i oni također imaju Funkcije koje će biti relevantne s C. Tako da čovjek može - i ja ignorirala 3. No, čovjek 3 printf će donijeti do C verziji printf. Ali ako sam samo učiniti čovjek printf, ovo je će dovesti do naredbu printf koja se događa na naredbenog retka. Tako je čovjek, ls. Man stranice može biti prilično neodoljiv. Ovdje, međutim, vidjet ćete ovu ponudu svih ovih zastavica koja li razumije. Dakle, ako ćemo ići na crtica, L, i - Samo ću baciti ovo na vas. No, kako bi pretraživanje, želite na prvi hit na pitanje Oznaka ili gumb udarac. Dakle srezati. I onda mogu pretraživati za sve što želim. Tako ću srezati za crtica, l. A tu je. Dakle, koristite dugo unos format. To ne pomaže mi shvatiti što da određeni stupac znači, ali ja Pretpostavljam negdje ovdje to bi objasnilo da. Dakle, koristite man stranice za bilo koje naredbe da ne se odmah razumijemo. Prilično sam siguran da može čak i čovjek, čovjek. Sučelje za on-line referentni priručnici. Oh, jedan je posljednja koja je možda malo Relevantna je li, crtica,. Dakle, primijetite li sam samo učiniti LS, Ja se ovih pet datoteke. Ako mi je činiti LS, crtica, ja dobiti puno više datoteka. Dakle, stvar je zajedničko između svih tih nova slika je dot unaprijed. Tako je konvencija koja datoteka koja počinje dot skriven. Tako da ne žele vidjeti tu datoteku, što Ne želim ga imati nered s Vaš imeniku. To je samo kada se izričito pitati, sve u redu, ls, crtica,, pokaži mi. Stoji za sve datoteke, uključujući i one skrivene. Dakle, neke druge naredbe. Oh, pitanja u tom trenutku? Da. Zvučnik 3: Kada to učinite ls, , što je točka, točkica? ROB: Oh. Dakle, to je ono što sam govorio. To je ista stvar, gdje Ja se kao CD, točka, točkica. Dakle, tehnički, točka i točka, točkica su datoteka koje postoje u svakom pojedinom imenik gdje dot datoteka odnosi do trenutnog imenika. Dakle, ako sam cd, dot, ja samo idem ostati u telefonskom imeniku. I točka, točkica uvijek odnosi na natrag katalog za jednu razinu prema gore. Dakle, ako sam ići u dnevnicima i LS, crtica, al, Vidjet ću točka, točkica. cd staviti točku, točka me dovodi na prethodnu imenik. Da. OK. Tako je još jedan prilično važno naredba rm. Dakle, to je ono što ćemo koristiti za uklanjanje. I neka mi zapravo raditi drugo Naredba prvi. Dakle mkdir. Mkdir je kako možete izraditi imenike. I ja ću stvoriti privremeni direktorij i otići u taj privremeni katalog. I kao što se očekuje, to je prazna. Ali ako sam ls, crtica,, ja još uvijek imam točkicu i točka, točka, jer se odnosi na točku tekući popis. I točka, točka označava natrag imenik. A oni će uvijek postojati bez obzira katalog u kojem se nalazite A to je potpuno nepotrebno naredbe, ali na dodir. Samo sam ga koriste, jer je jednostavan način za stvaranje datoteke. Dakle dirati, dirati b, c je samo dotaknuti će stvoriti tri datoteke nazvane, b, c i da su potpuno prazni. Dakle točka mi stvara onih u Prvo mjesto je samo tako da je RM kako ih ukloniti. Dakle rm,. To će me pitati, izvadite redovito prazni file? I onda ću reći DA. Dakle, ako ja znam sigurno da želim izbriše tu datoteku, bez potrebe da se to zatraži, uklonite redovito praznu datoteku?, onda rm, crtica, f će biti zastavu na kojoj piše, prisiliti ukloniti bez čak me je navelo, oh, jeste li sigurni da želite obrisati datoteku? Da, siguran sam. Dakle rm, crtica, fb će samo to učiniti bez pitanja. Tako ćemo napraviti još neke imenike. mkdir, tmp2, cd, tmp2, dodir, dodir b.. OK. Dakle, sada želim ukloniti tmp2 kao katalog. Dakle rm tmp2. Ne možete ukloniti tmp2, to je katalog. Dakle, problem je u tome da RM ne odmah raditi na imenike. To je samo značilo za datoteke kao što su ne-katalog slika. I tako ono što možemo učiniti Ovdje je rm, crtica, r. To je kratica za rekurzivno, što bi moglo ne znači ništa za vas još. Ali kad dođeš do rekurzije, to će značiti više. Dakle rm, crtica, r, tmp2 će rekurzivno ići u tom direktoriju. Tako se spustiti u imeniku tmp2? Da, idemo u to. Želimo ukloniti tmp2 /? Da. Želimo ukloniti tmp2 / b? Da. Sada želimo ukloniti katalog tmp2? Da. I tako sada imenik i sve što je unutra o da je uklonjen. Tu je tehnički naredba rmdir koje možete koristiti za uklanjanje imenici, ali to radi samo na praznim imenike svejedno. I da se vidi da, neka je samo učiniti mkdir, tmp2 opet. Tmp2, dodir. OK. Dakle, ako sam pokušati ukloniti dirtmp2, to ću kažu, direktorij nije prazan. Tako sam prilično nikada koristiti izvadite dir naredba svejedno, jer rm, crtica, r će raditi na praznim imenike i ne prazne imenike. A isto tako, ako ne želite imati na proći kroz taj cijeli proces spusta u imeniku i uklanjanjem svaku datoteku, RM, crtica, RF, tmp2. A sada je nestala. Nešto biti oprezni o je rm, crtica, RF. I to plaši me čak ga upisati, jer ako sam slučajno pogodak Ulaziti ili nešto. Dakle rm, crtica, RF, tilda bi, bez me navelo, f ne zatraži ja, on će automatski ukloniti cijeli moj dom imenik i sve u njemu. Dakle, možda ćete misliti da je glupa stvar za napraviti. A dobro, to je. Ali to se može dogoditi vrlo lako Nesreća, ako, recimo, ja sam htjela ukloniti moj udarac, vhost imenik. I samo u brzom tipkanja, Slučajno sam to učiniti. To će ukloniti rekurzivno i moj home direktorij i vhost imenik u ovom konkretnom katalog koji samo dogodi da ne postoji upravo sada. No, to bi još uvijek izvadite cijeli moj dom imenik. Barem tako što ne F, to bi me potaknuti na prvom mjestu. I ja bih se kao, oh, ne, ja Ne želim to učiniti. Ali ljudi, Slash, uključujući mi imaju tendenciju da se u naviku uvijek RF-ing. Čak i redovite datoteke koje ja samo mogu RM, c, ja imaju tendenciju da se samo rm, crtica, RF, c. Samo budite oprezni kada ste RF-ing. Zvučnik 4: Što učiniti C? ROB: C se Govorim o tom C datoteci u ovaj direktorij, koji rm, c. JOSEPH: I više opasno, ako koristite zvijezda, to se odnosi na sve, u katalog. Dakle, ono što sam često skloni učiniti je da hoću ide u imenik i želim uklonite sve datoteke u njemu. Dakle rm, crtica, RF, zvijezda. ROB: Da. Rm, crtica, RF, zvijezda. JOSEPH: A ako niste oprezni ono imenik ste u - Nisam bila u temp, ali bio sam slučajno u mom rodnom imeniku, onda ću ukloniti sve u mom rodnom imenik. I ja sam zapravo učinio da je prije, a Mislim da sam to učinio prije ili Jay je učinio prije. ROB: Ja sam slučajno uklonjen - tako ignorirati tu naredbu za malo. JOSEPH: Nije zabavno. ROB: Pa u slash bin direktorij je Gomila binarne datoteke tamo gdje ćete biti upoznat one poput Dong. Pa, zveket i, zapravo, sve to stvari koje sam trčanje na zapovijed linije su u ovoj slash bin direktorij. JOSEPH: Kao ls je ovdje. ROB: Pa dot, Slash, ls bi popis ovaj katalog. JOSEPH: Rim je također u ovom imeniku. ROB: Slučajno sam rm, RF-ed bin, koja uklanja bilo koju naredbu sam mogao možda ikada željeli. Koji onda sam samo reinstalirati novi aparati u tom trenutku. JOSEPH: Dakle, biti vrlo oprezni kada koristite ovu naredbu. PUBLIKA: [nečujan]? ROB: Da. To je također loša navika da se u. Ako primijetite, ja sam sada - Pa, ne može primijetiti, ali moj zoom-u možda i može. Tako da sam sada root @ aparata. Dakle jharvard je korisnik želimo da se uvijek koristi. Korijen je korisnik koji ima dozvolu učiniti apsolutno ništa. Dakle primijetiti kad sam jharvard, ako sam pokušati cd - ono što je katalog koji? Oh, korijen je dobar primjer. Dakle, cd, korijen. Dopuštenje odbijen. Jer, ako ćemo gledati na ovaj unos - i opet, ne mora u potpunosti razumijem. No, ove tri crtice govore da ne dopusti bilo koji drugi Korisnik u ovaj katalog. I imenik događa s biti u vlasništvu korisnika korijena. Dakle, činjenica da sam jharvard i nema onaj tko nije korijen je dopušteno u tvrtki, to znači da sam će dobiti pristup odbijen kad sam pokušati cd u njega. Dakle, kada sam korijen, imam dozvolu za učiniti apsolutno ništa, uključujući brisanje bitne datoteke na aparatu i uništiti cijelu stvar. Dakle, to je loša navika da se u Samo lutanja oko vašeg operativni sustav kao root. I to svejedno. Pitanja? A ja ću izaći iz korijena, ostati kao jharvard. OK. Više relevantne naredbe. Dakle, ide natrag u našu temp, mv naredba stoji za potez. Možete premjestiti. Sada želimo ga zvati b, pa sad se to zove b. Ili možda želimo premjestiti b do jednog direktorija. Tako sada ovaj direktorij je prazna. Ja ću se vratiti u polazni direktorij, a vidimo da b je ovdje, jer home direktorij bio jedan katalog iz imenik koji b bio u. Tu je također up. Dakle k.č. je kopiranje super dio, dot, tekst. Mogu ga nazvati je, dot, tekst. Sada imamo i super dio, dot, tekst, te je, dot, tekst. To također radi na imenike. Ja RF-ED jednu datoteku. Dakle k.č. - dobro, prvi pokušajmo SP, tmp, tmp2. Dakle izostavljajući imenik tmp. Dakle, slično kao RM, zadano ponašanje je da se ne radi o imenike. I opet, slično kao RM, zadana ponašanje - dobro, sve je to na posao s imenicima, crtica-r daleko. Dakle kopirati rekurzivno temp imenik u tmp2. I tako sada imamo i tmp i tmp2, a to je da nije koristan jer tmp bila prazna na prvom mjestu. Tmp2. Sada ćemo kopirati tmp u tmp2. A vidimo da tmp2 također ima datoteku , jer je imenik i Sve unutar koje imenik je kopiran. I to može biti nešto korisno ako recimo radite Na problema postaviti jednu - ili zapravo, kasnije problema setovi su još važnije, jer postoji će biti cijela hrpa datoteka i stvari. Ali baš želite, za Split Drugo, ti si kao, u redu, ja sam Pokušat ću nešto drugo. Dopustite mi samo kopirati cijelo moje pset1 imenik u pset1 backup, tako da ako I na kraju uništava stvari, ja mogu vratiti u svoj backup imenika. Postoji više prikladni načini verzije backup svoj kod, ali to je uvijek brz način da se samo napraviti Sigurno imate kopiju nečeg da ste o modificirati. Dakle echo je također jedan-off naredba koja vrsta sillily samo ispisati će se naredbenog retka upravo ono što ste htjeli jeka. Dakle jeka hi. Samo ćemo ispisati hi. Echo Pozdrav svijetu. Mi ćemo ispisati Pozdrav svijetu. To dolazi u uporabu kada početi kombinirajući naredbe. I opet, ne očekuju da u potpunosti Razumijem to, no to je što za vidjeti. A onda, ako ste Googling za primjere ili ste shvatili što želite učiniti nešto, što može biti od pomoći. Tako ćemo, kao, primjerice, pa ls, crtica, l. Dakle, ovdje vidim izlaz LS, crtica, l. A ja kažem, u redu, želim spremiti da u datoteku. Sve ove izlaz ovdje, želim staviti u zasebnu datoteku. Dakle, ovo malo veći od simbola je ono što ćemo zvati. Mi preusmjeravanje izlaz u datoteku. Nazovimo datotečni blah, jer to je ono što sam imaju tendenciju da ga uvijek nazvati. Dakle, sada smo vidjeli da imamo podnijeti blah ovdje. I ako sam ga otvoriti, vidjet ću to upravo izlazi iz naredbe da sam samo trčao. A isto tako, možete - ako je to bio izlaz u datoteku, ovaj se dobiti ulaz iz datoteke. Što je naredba da sam - JOSEPH: Mislim da možete koristiti manje ili više, vjerojatno. ROB: Ali o tome samo manje bla? Ne znam. Ako ste došli u ovaj scenarij, kao što je postoji psets misle da je to korisno za. JOSEPH: Možete pipe ga u jeku. Pipe datoteku u jeku da ga vidi. ROB: To je cijev. JOSEPH: Žao mi je. ROB: U redu. Dakle, ovo je izlaz u datoteku. To je dobiti tekst iz spisa i predati ga na to programu. I vidjet ćete i ovaj tip. Dakle, ovo je neka vrsta radi oboje istovremeno. I zapravo, ja ću predstaviti dva nova naredbe samo da se iskoristi za to. Povijest je zgodan naredba koja je samo će se ispisati popis sve što sam ikada pokrenuti naredbenog retka. Dakle, ovdje vidimo sve što imam pokrenut cijelo ovo vrijeme. Puno ls-ih. I još jedna korisna naredba grep da njegova svrha je da se traži više tekst u potrazi za obrascima, dobro, u potrazi za što želim to tražiti. I tako zgodan korištenje evo, recimo želimo da zgrabite povijest. I želim tražiti naredbe gdje sam - što je korisno jednom tražiti? JOSEPH: [nečujan]? ROB: Ili ćemo samo gledati za sve dotakne, iz bilo kojeg razloga. Dakle, to je ono što će izgledati. I ne morate se u potpunosti Razumijem to. No, ideja je ovdje, povijest je davanje Isto izlaz je napravio ovdje gdje je ispis iz cijelog Povijest na sve što sam ikada pokrenuti. Mi smo tada u prolazu da - pa umjesto da se ispisuje na zaslon, želimo da prođe da bi Naredba grep koja je u potrazi za sve instance riječi dodir. I tako koristeći ovu kombinaciju Alati za povijest i grep, ja mogu vidjeti, u redu, ovdje je sve naredbe koje sam ikada trčanje, i ovdje je nešto zajedničko jedno. Mi smo na dnu. I to je također što su mi dali naredbu Upravo sam to imao Riječ dodir u njoj. Ali cijev je prilično korisna stvar za kombiniranje više programa. I doista, to je prečac za LET mi izlaz povijest podnijeti bla, i neka mi Grep pomoću datotečnog blah što je ono što želim gledati preko. Tako cijevi je samo prečac za te dvije naredbe. Da. Zvučnik 4: [nečujno]? ROB: Da. Što je - Oh. Idemo testirati. Dakle, mačka, pas, riba. Dakle, želim Grep. Dash, r, opet, što će biti rekurzivno, tako da želim se spuštati niz sve direktorije. Želim rekurzivno Grep za sve - i neka mi privremeno dobiti to zabit. Ignorirajte me. OK. Dakle, želim privremeno Grep za sve instance riječi ribe. I evo što radim je grepping rekurzivno za riječ ribe. A zvijezda znači više od svih tih Datoteke u ovaj direktorij. I tako mi je pristup odbijen, jer to nije dopušteno čitati da Posebno sliku. Ali to pronašao ribu u datoteci, testa. Također sam mogao reći, posebno, samo sam želite pogledati u datoteci bla, u kojem slučaju neće naći ništa. Ja samo želim gledati u datoteci, testa. Ona će se naći ribu. To je prilično korisna naredba znati u cjelini. Postoje neke alternative Grep koji su trebali biti više programer prijateljski, ali ja imaju tendenciju da još uvijek pada na leđa grep. Pitanja? OK. Postoje li druge naredbe? Oh. Samo jedan-off onaj koji sam uvijek naći biti zabavno se obračunavati. Dakle primijetiti kada sam u ovu lijepu preko cijelog zaslona, ​​nemam poput vrh alatnoj traci ili ništa. Samo tako kal mi daje lijep mali kalendar koji je u pravu Sada odsječen, pretpostavljam. Ali lijepo malo naredba. JOSEPH: To je [nečujan]. Ostale naredbe koje ste mogli imati Vidjeli su Zveket i učiniti. Mi ćemo ići preko njih više detalja kasnije. Ali, ako ste radili na pset, što bi trebao biti upoznat s tim. ROB: U redu. Pitanja o naredbenog retka stvari? U redu. Tako ćemo premjestiti na neki C-povezane stvari. Varijable matematike. OK. Dakle, baš kao što smo imali matematiku u nule, također možete koristiti matematiku u C. Prije nego što se na to u potpunosti, pa varijabli. Ne zaboravite da kad god proglasi promjenjiva poput int x ili float y, vama dati ga upisati prije ime varijable. Tako vrste koje smo vidjeli do sada su int, float, double, dugo dugo, što sam zapravo ne znam da li imamo vidljivo je da do sada. Postoje neke druge one. Mi smo vidjeli char. Tu je kratka, što je kao da je suprotno od dugo dugo, gdje je manji od integer. Također smo vidjeli niz. Dakle, ono što je posebno u nizu? Zašto bih se reći da je Ne sasvim poput int? Zvučnik 4: To zapravo ne postoji. ROB: Da. Dakle, jedini razlog zbog kojeg imamo niz je zato što kada to učinite mljeveno meso, uključuju cs50.h. A vidjet ćemo primjere tome kasnije - Oh, da ne nositi baš dobro - gdje cs50.h radi nešto na tragu tipu def, char zvijezda, niz. I tako to govori da se čak ni Znam što je char zvijezda još. No, to govori želimo niz. Svako mjesto na koje ste koristili niz, vi mogli su pomoću char zvijezdu, koja je zapravo tip koji postoji u C jeziku. No, mi ćemo doći do toga. Oh, i to ide natrag. Uredan. Dakle, ista stvar s bool gdje je istinito i lažno. To zapravo i nije izgrađen-in tipa u C. Umjesto toga, to je samo, to ima vrijednost nula? Onda ćemo samo uzeti u obzir to da su lažne. Da li to ima vrijednost - dobro, to ima bilo vrijednost koja nije nula? Onda ćemo uzeti u obzir da bi bilo istinito. Dakle, jedan je istina, dva je istina, ništa nule je istina. Dakle, to su oni. Pitanja o proglašenju varijabli i varijabilne vrste i sve to? Da. Zvučnik 4: Za dugo dugo, u knjizi, on je rekao da je morao biti dugo dugo int. No, samo će se dugo dugo raditi? ROB: Pa ti tip za modifikaciju. Dakle int x. Dakle, možemo reći nepotpisan int x. Možemo reći short int x. Možemo reći long long int x. No, prilično mnogo bilo koje od tih stvari koje sam Samo je rekao, unsigned int, short int, long long int, možete se riješiti int i to će se samo pretpostavljati da li je značilo int. Dakle nepotpisani x, što samo znači - znate kako je normalno s int, možete reći x jednako negativan 3? Uz unsigned int, ne možete. JOSEPH: I opet, za kameru, Pitanje je, koja je razlika između dugo dugo int i baš dugo dugo? ROB: Da. Dakle, ja ću skoro nikada pisati dugo dugo int. Napisat ću dugo dugo. JOSEPH: Ima li pitanja? ROB: OK. Dakle blesave podsjetnik da je kako izjavljujemo varijablu i započeti promjenjiva i proglasiti drugi promjenjiva i započeti sve to u jednom koraku. Dakle deklaracija varijable i Inicijalizacija varijable nemaju da, ali može biti na istoj liniji. Dakle, imamo standardne matematičke operatore koje ste navikli - plus, minus, dijeljenje, puta. Tu je i po modulu, što ćemo vidjeti. Ne postoji, barem C, izgrađen-in power potenciranje znak za umetanje operatora. Pa, tu je znak za umetanje operator, ali to nije moć. JOSEPH: Ali to nije potenciranje, Da. ROB: Ne koristite znak za umetanje pretpostaviti da to znači kao kvadrat ili bilo što drugo. Dakle, neke stvari koje treba imati na pamet o podjeli. Ja ću stati. Dakle proglasio Initialize odgovor. Dakle, govorimo float odgovor jednak 1 podijeljeno 10. Ispis odgovor na dvije decimale. I ovo je jedna od onih stvari koje sam bi čovjek printf shvatiti da Koji je kurac nema%, dot, 2f znači? A to samo znači da, dobro, ignorirajući 0.2. I%, f je ono što mi koristimo ispisati da plutaju. 0,2 govori, print koji isplivaju na dvije decimale. Dakle, ovaj program ima bug, a možda Vidio to prije u nekim prije CS naravno. No, što je to bug? ZVUČNIK 5: Zero. ROB: Da. Dakle, kad kažemo, odgovor je jednaka 1 podijeljeno 10, želimo odgovor biti 0,1. No 1 podijeljeno 10, 1 je broj 10 je cijeli broj. I tako, kada mi se cijeli broj podijeljen cijeli broj, mi ćemo se vratiti cijeli broj. Dakle 1 podijeljeno 10 je 0,1. Budući da to treba da nam daju cijeli broj, to samo ide baciti da decimala i reći da Odgovor je 0. I tako, kada smo ispisali odgovoriti ovdje, to će ispisati 0.00. JOSEPH: I baš kao napomena, to je zapravo odbaci ono što je nakon decimalne točke. Dakle, ako umjesto toga imali 6 podijeljeno 10, možda mislite da će vam dati 0.6, a onda će zaokružiti na 1. Ali, zapravo, ono što se događa kada je upisati zadataka je da padne, što je nakon decimalne točke. Dakle 0.6 ne postane 0. ROB: Da. I mi ćemo reći tupo za to. Dakle, kad god baci na int, decimalnim je odrezan. Dakle fix za to - nema zapravo dva. A ja ću učiniti da drugi, jer ovo je mnogo lakše popraviti. Dakle, jedan je popravak koristiti pluta u podjeli. I doista, imate samo bi jedan od njih float. No, to je nešto jasnija samo da bi obojica pluta. Dakle 1,0 podijeljena 10,0 je dijeljenjem dva pluta. Dakle, odgovor će završiti kao float, pa ćete pravilno ispisati 0,10 ovdje. Nešto što ne radi tako dobro o tome da je, dobro, sigurno, bilo je lako dovoljno da se pretvoriti 1 do plutaju tako što je 1,0. No, što ako umjesto toga smo imali po dva broja kao int x jednako 1 i int y iznosi 10, a onda smo htjeli da ne x podijeljena y? Dakle, to nije lako samo učiniti X.0 ili nešto. Dakle fix se da je casting. Dakle casting je put u C pretvoriti s jedne varijabilne vrste u drugu. Pa evo, 1 je cijeli broj. I stavljajući ovu plutaju ispred da, mi smo lijevanje jedan na plovak. I tako će to pretvoriti 1 do 1,0. A to će se pretvoriti 10 do 10,0. I tada su se stvari na sličan način ponašaju se Prethodna verzija smo upravo pokazali gdje je, kako se i očekivalo, dobili smo 0,10 i to će ispisati da. A to možemo učiniti s varijable, također. Dakle, možemo reći, float x podijeljena float y. JOSEPH: Ima li pitanja? ROB: Dakle, baš kao u redovnoj matematici, imamo operator prednost. Dakle, na matematiku, ti si vjerojatno nazvati redoslijed operacija. Evo, službeni termin je prednost operatera. No, operator prednost, ili većina operateri, je kao što se i očekuje. Dakle, baš kao u matematici, 2 puta 10 je će se grupirati u većoj mjeri nego ovaj 10 podijeljeno sa 2, a zatim 2. Redoslijed operacija, to će učiniti 2 10 puta, 10 podijeljen 2, a zatim to će obaviti 20 plus pet plus dva. Dakle, to je u skladu s očekivanjima, a možete koristiti zagradi je da se u skupini izraza. Ne možete koristiti uglate zagrade grupnih izraza. Da? ZVUČNIK 5: Možete li zapravo samo vratiti jednu sekundu? Mogu ti cast int u string? ROB: Pa u C, što se baci ništa Želite li sve što želite. To ne znači da je Dobra stvar za napraviti. Pa kad ti cast int se string, to znači - a mi ćemo ući u to puno temeljitije - JOSEPH: Mnogo kasnije. ROB: Nisam htio reći mnogo kasnije, pa sam pokušao promijeniti svoju kaznu. Mi ćemo ući u njega puno temeljitije kasnije gdje stvarno kad imate string varijabla - pa niza može biti arbitrarno dugo, zar ne? I mi smo bili rekavši da je int četiri bajta i dugo dugo je osam bajta i plutaju četiri bajta. Dakle string, baš kao int, samo da ima određeni broj bajtova do njega. I to će biti četiri bajta. No, niz može biti prilično proizvoljno dugo, zar ne? Dakle Pozdrav svijetu već, ako je to 10 znakova ili što god, to je već će biti više od 4 bajta Ja mogu stati u nizu. I tako kako žice stvarno rade je da oni su u kojima je u sjećanju da je niz drži se. I tako je ovdje, kad kažem string x jednako Pozdrav svijetu, unutar x je Samo kažem, oh, hello world je pohranjena upravo na tom mjestu u memoriji. Dakle, ako ćemo pokušati baciti cijeli broj za string, a zatim mi pokušavamo interpretirati neki slučajni dio memorije kao niz. I to je gotovo uvijek razbija stvari. JOSEPH: Ali ako je to zbunjuje što ćemo se pokrivaju više u dubinu kasnije. ROB: Da. Ovo je mjesto gdje idete ući u pokazivače. I to je značajan komad od dva tjedna od ovog tečaja. ZVUČNIK 6: Da li to raditi kao objekata na drugim jezicima nije stvarno ili? ROB: Dakle, drugim jezicima, objekata će biti zastupljena pomoću pointera. To nije ista stvar, ipak. Bilo misli? JOSEPH: Ne. Nema misli. ROB: OK. JOSEPH: Next. ROB: Dovoljno je ići s tim. U redu. Dakle modulu. Baš kao što mi imamo plus, minus, podijele i množite. Dakle, po modulu je ona koju svibanj nisam vidio prije. I to samo kaže, dati mi ostatak. Dakle, 55% 10. Ostatak radi 55 podijeljeno po 10. će biti 5. Dakle, 55% 10 je 5. I 3% 5 će biti 3. 8% 8 će biti 0. 16% 15 će biti 1. JOSEPH: Jedna stvar na umu s tim, također, to ne bi mogli raditi kao što se očekuje ako koristite negativan niz. Dakle, negativni 5% 4, neki ljudi Možda mislite da je - što bi mislite negativna 5% 4 će biti? ZVUČNIK 5: Jedan. JOSEPH: Pa neki ljudi kažu jedno, neki ljudi kažu negativni. No, ono što - ROB: Ja čak ne bi , rekao je jedan od tih. JOSEPH: Dva, ispričavam se. Neki ljudi kažu - ROB: Tri. JOSEPH: Tri? ROB: Negativno - ono što je bio - negativan pet - JOSEPH: Tri, tri, tri. Oprostite. Zbog modulo, općenito, kad ste ga vidjeli negdje drugdje, to obično znači vratiti pozitivan niz, zar ne? ROB: Dakle, kada kažemo u matematici, 10%-a, oni imaju tendenciju da žele dati - ako mi mod za 10, onda očekujemo da dobiti broj između 0 i 9.. U ovdje, to nije slučaj da će se negativni brojevi vratio. JOSEPH: Dakle negativna 5% 4 će biti negativan 1. ROB: Ali to je rijetko da si mod-ing negativni brojevi za početak. Preskoči to. JOSEPH: Da. ROB: Meh. OK. Dakle, jedna stvar je istaknuti o pluta je to opasno ponašanje, ali lebdi nisu točna zastupljenost. Dakle, ide natrag u bajtove opet, ne zaboravite da int uvijek četiri bajta i float je uvijek četiri bajta. Dakle, Lucas je primjer je prilično dobro. Dakle, mislim od 1 podijeljeno s tri. Dakle, 0,3333333. Ako imam samo 32 bita, kako mogu Ja pohraniti 0,33333 točno? A možda, iz bilo kojeg razloga, kažeš, dobro, dobro, neka je samo reći da je ovaj 1011001, neka je Samo kažem da treba biti 0,333333. Pa, imate samo ograničen broj ti bita, tako da je nemoguće predstavljaju svaki s pomičnim zarezom Vrijednost dao samo 32 bita. Pa, to je nemoguće da predstavljaju bilo Krajnja vrijednost daje beskonačan - dobro, s obzirom na bilo koji konačan broj bitova. Dakle, pitanje ovdje je, dobro, kad smo se ispisati na dvije decimale, nismo ispravno dobiti odgovor 0.10. No, ispod haube, to je stvarno pohranjuju kao bliski kao moguće 0.10 kao one bitova može predstavljati. Je li to na sljedeći slajd? Ili zar ne? JOSEPH: Da, to je to. ROB: Blegh, blegh. JOSEPH: Da, možete samo povući bilješke se malo. ROB: ja samo idem za uvećanje u na zadnji na to. O, moj Bože, to je [nečujan]. Dakle, taj broj. To je ono što će se tiskati ako smo pokrenuti taj program. I primjetite da se zapravo nije velika stvar ako smo se samo brine o kao dva i pedeset osam decimalnih mjesta. Kao da smo se samo izvorno tiskana 0,10, i to je razlog zašto smo vidjeli ništa loše. No, nakon što smo počeli uzimajući u točno, točan broj koji je zastupanje, vidimo da to ne može točno predstavljaju 0,1. I dio problema ovdje je kao, U redu je, to je u redu, ali, dobro, Prvo, što ako smo pokušali učiniti, Odgovor jednaka jednaka 0.1? Hoće li to povratak istina ili laž? I tako da je teško reći. Mislim da je to zapravo mogao vratiti istina. Hoće li to prvi put - Ne znam. Odgovor je jednom počnete se bave s vrijednostima s pomičnim zarezom, što prilično više ne bi trebali biti pomoću jednakosti zbog ove nepreciznosti. A za sve što znam, to je stoti decimala da pomičnim zarezom nije bio u mogućnosti pravilno rukovanje. I tako jednakost samo će uspjeti čak iako je broj - ako je bilo pomoću točne brojeve, brojevi trebali su isti. Ona je tijekom 50 godina kao izračuni ove plutajuće točka vrijednosti, pogreška može graditi gore i gore i gore, a stvari samo dobiti krivu. JOSEPH: I bilo je jako poznati primjeri da se to dogodi. Kao i NASA-ini inženjeri su dobivši taj pogrešne, uzrokujući rakete eksplodirati u zrak nakon što ste bili pokrenut. I puno pitanja kao što je to. Pa da. ZVUČNIK 6: Kad kažete 0,3 f, to izrežite ostatak? Ili se to naviše ili naniže? ROB: Hoće printf oko njega? JOSEPH: Mislim printf skraćene. ROB: OK. Tako smo na sličan način mogu ići u suprotnom Smjer ovo gdje, u ovom slučaju, Najbliže što bi moglo predstavljati 0,1 je s ovim brojem. Najbliže što bi moglo biti u mogućnosti predstavljaju 0,2 je u suprotno smjer, 0,199999996356 ili tako nešto. Dakle, ako smo otišli u tom smjeru stvari, onda printf 0,3 f će se vratiti 1,99 umjesto 2,00. JOSEPH: I nisam baš posve sigurni o tome. Možda želite napisati mali, mali Program samo da to provjeri. ROB: Iako, ono što smo sigurni je da Ako ste pokušali da se baci int, i lijevanje na int će uzrokovati da se skratiti decimale, ako pokušate baci 1.9999999 na int, vi ćete dobiti jedan. I tako bi trebali uglavnom koriste okrugli funkcija u matematici knjižnici. Pitanja? OK. JOSEPH: Pa što se kreće na uvjete i Boolean izraza. Pa vidjeli ste to i prije. I zapravo, neka mi to da moja Računalo je u pravom formatu ovdje. Space. Žao nam je, mi ćemo se morati nositi malo s prekidom na rubovima. Ali, da, ti dečki su vidjeli to prije nego što je u nule. Dakle, ovo ovdje je izraz koji se koristi u uvjetna naredba. Dakle, odgovor veći od nule volje reci ti istina ili laž. I to su stvarno važno, jer oni omogućuju nam da se predstavimo Logika u naš kod. Tako na primjer, to je program zapisano u nule koji pita korisnika za cijeli broj i govori im bilo broj koji su vam je dao bilo pozitivni ili negativni broj. A pretvorbe ovamo vidjeti je prvo ispisati izjavu, daj mi cijeli broj. I onda ih pitati za cijeli broj. I onda koristiti uvjetno logike više Ovdje se provjeriti je li taj broj zapravo veći od nule ili ne. Dakle, ovdje imamo Boolean izraz unutar uvjetna Ako priopćenju. Ima li pitanja? Ima li kakvih pitanja u vezi toga? OK. Dakle, tu je više nego samo veći od, naravno. Možete izgraditi Boolean izraza korištenjem većina svašta što će misliti u matematici. Dakle, veći od. To bi trebao biti manji od. Oprostite. I razmak. ROB: Ne daj Bože da ga napuste. JOSEPH: U redu. Tako veći od, manje od, veći od, ili jednak, manje od, ili jednak. Mi koristimo dvostruke iznosi provjerite jednakost, jer jedan jednako sredstva zadatak, zar ne? Da. A onda možemo i ne jednako tako pomoću uskličnik, jednako. I ovaj uskličnik simbol može također biti proširena, tako da ako želite obrnuti bilo kakve Boolean izraz, možete to učiniti. Dakle, to će procijeniti da vrijedi Samo ako je odgovor manje od ili jednak nuli. Sva pitanja o tome? OK. Tako možete iskombiniramo izrazi koji koriste logičke A i Ili logično. Dakle, ovo je samo I simbol, koja bi trebala biti Shift, 7. A to je simbol cijevi, što je Nije mala slova L. To je jedan to je pravo iznad Enter. Dakle, koristite dvije ove simbolizirati Logično I logično Ili. Dakle, to će se samo vratiti true ako je odgovor jedan, dva, tri, ili četiri. I to će se samo vratiti true ako odgovor je iza toga na obje strane. Dakle, to nije jedan, dva, tri, ili četiri. I način na koji će koristiti da je u izrazu - ROB: Ili nula ili pet. JOSEPH: Nula ili pet. Oprostite. Da, da, da. OK. A ovdje sada, isti ti put će koristiti taj izraz, manja Izraz strana Ako uvjetna gubitka, što bi također ga koristiti isti način po samo stavljajući ga unutar zagrade IF izjavu. Dakle, ovo printf će samo dobiti otkaz ako odgovor jedan, dva, tri, ili četiri. Sva pitanja o kombiniranju izrazi? Dakle, postoji još jedna uvjetna Konstmirani zovemo Ako / Else. Tako je u osnovi, to sada znači, u redu, ako nešto htjela sam provjeriti nije bilo istina, onda idite na drugo i obavljati tu drugu radnju. Dakle, u ovom konkretnom slučaju, pitao sam Korisnik za cijeli broj. Je li broj veći od nule? Da? Pa, onda oni pokupili pozitivan broj. Ako ne, onda to mora imati bio negativan ili nula. Tako ste odabrali negativan niz ili nula u ovom slučaju. Da. Ili nula. A onda imamo i ako / Else, Ako i drugi. Dakle, to nam omogućuje izvršiti niz od stvari samo ako prvima uspjeti. Dakle, u ovom slučaju, sada radimo posljednja Vas nulu. Dakle, ako se ni pokupila pozitivne ni negativna, tada oni moraju su pokupili nulu. Tako to ide samo prema dolje lanac ovako. Dakle primjer kako Ako je drugačije od - Ako / Inače se razlikuje od samo slijed IFS. A to je uobičajeno pitanje koje ljudi pitaju se, dobro, ako se kao 95 u CS50, što će to Program vam reći? ZVUČNIK 5: Imaš peticu JOSEPH: Da. Imaš svaki jedan od onih u pravu. Imaš peticu, imaš B, što dobio C i D, zar ne? Dakle, sve to se ocjenjuje radi. Dakle, dok 95 je veći od 90, što je i veći od 80, što je također veći od 70, a to je i više od 60 godina. Dakle, imaš sve te ocjene. I pretpostavljam da bi Samo želim A. Način da se popraviti da je zamijeniti one s Else / Ako je. Dakle, u ovom scenariju, vidi da je 95 veći od 90, a zatim se radi Ne ocjenjuju ostatak od izjava. Sva pitanja o tome? Dakle, postoji još jedna uvjetna vrsta Struktura da ovdje imamo što smo nazvati izjavu prekidač. Dakle, ovo vam zapravo provjeriti što je vrijednost niza ste stavili u izjavi switch je. Dakle, u ovom scenariju, mi smo prebacivanje na n, a mi tvrdimo, oh, ako je n jedan, a zatim ispisati tu izjavu. A onda razbiti, što znači izlaz iz izjave prekidača. Ako to nije bio jedan, a zatim, dobro, samo na kraju provjeriti sve te slučajeve. I tako se provjerava je li to jedan ili dva ili tri, i to ispisuje u skladu s tim. A što ovdje to zadana ključna dolje znači da je, ako se ne ulaze bilo od onih, onda kažu Invalid. Pa recimo da sam pitati za n a Korisnik daje mi četiri. Pa, on odgovara da nitko od tih slučajeva, tako da će ispisati ono što je u Zadana poglavlje. Da, pitanje? ZVUČNIK 5: Mogu li koristiti Boolean izrazi umjesto jedan, dva ili tri? JOSEPH: Dakle, pitanje je može li koristiti Boolean izraza umjesto jednog, dva, tri? A u C, ja ti vjerujem Ne mogu to napraviti. No, u drugim jezicima, što možda naići na kraju semestar kao JavaScript, možete. Pa, što će morati izračunati prvi da je vrijednost, a zatim ga koristiti u prebaciti izjavu. Da? ROB: Dakle dio korist prekidača izvještaji se sjetiti ako je to učinio što ako / Else, tako kao što je, ako je n = jednaka jedan ili bilo što drugo. Else / Ako je n = jednako dva, što god. Else / Ako je n = jednako je tri. Dakle, način na programu će se izvoditi je će postupno ići dolje tom popisu i provjeriti, je N jedan? Nope. Je n dvojica? Nope. Je n tri? Da. Učinite to. Dok s prekidačem izjavama, to je zapravo mogli sastaviti da bude jako brzo. I čim se kaže switch, to kaže, u redu, nje dva, ja sam odmah će skočiti na kojem Ja sam trebala početi izvršenja. Neću da se prvo provjeriti, n je jedan, n je dva? Može se odmah početi raditi ono što je trebao učiniti. I zbog toga, to se ne može potrajati logičke uvjete. Inače to će morati učiniti sekvencijalni, kao, u redu, je n veći od nule? Inače je n veći od 10 ili bilo što drugo. JOSEPH: U tom slučaju, ako se koristi Ako / Inače, ako je, onda bi prekidač trčanje oko tri puta brže nego ako / drugo, ako. Možemo organizirati prekidač u takva Način na koji mi ne razbiti Nakon svakog predmeta. Dakle, u ovom slučaju, ja sam particioniranje brojevi koje smo izabrali u jedan i dva su ne visoki brojevi i tri su visok broj. Dakle, u tom slučaju, ako je n jednak jedan ili dva, to će pogoditi slučaj i onda će propadnu, jer nema prekida. I to će završiti ovdje. Dakle, ako ćemo odabrati jedan, to će učiniti printf a onda razbiti tako da nitko od ovo je pogubljen. I naravno, ukoliko uđu u tri ili nešto drugo, onda će preskočiti oni i ne idu tamo, i to obavljat će umjesto odgovara liniju. Ima li kakvih pitanja u vezi toga? Da? Zvučnik 4: Biste li se pogreška ako vam imala pauzu nakon slučaja jedne, ali to nisu imali nešto za što učiniti? JOSEPH: Dakle, pitanje je bi li se pogreška ako imate pauzu nakon jednom slučaju, ali ne postoji ništa učiniti? A odgovor je ne. Vi zapravo neće doći na pogrešku. Da, mm hmm. Dakle, što je neka vrsta malo promjene ovdje, Ja ću staviti printf ovdje. Ups. Pa što bi to ispisati ako Stavio sam jednu u kao ulaz? Da. To će vam reći da nije trebalo Veliki broj dva puta, zar ne? Zato što bi pogodio da je prvi slučaj, to ne bi razbiti, a to će pasti do drugog slučaja. Sva pitanja o tome? ROB: Jeste li još jedno pitanje? JOSEPH: OK, ohladi. U redu. Dakle, postoji nešto drugo što mi zovemo ternarna operater koji je u osnovi Alternativni sintakse radi Ako i nakon toga još. I to vam omogućuje da to sve na jednoj liniji. Dakle, u ovom konkretnom programu, Ja sam za to traži za n. I ako je n veći od 100, sam reći njih su pokupili velik broj. Inače sam im reći da Odabrala je mali broj. Tako možemo koristiti ovaj stvarno dugo sintakse, string, S, a zatim provjerite je li n veći od 100 i dodijeliti je u skladu s tim. Ali možemo napraviti više je sažeto pomoću ovog ternarnih sintaksu operatera koji uključuje i pitanje Mark i debelog crijeva. Dakle, upitnik je u biti molba pitanje, zar ne? ROB: Možda uvećanje na to. JOSEPH: Da. Dobro pitanje. Dakle, ovo je trodjelna operatera. Prvi put sam postaviti pitanje, n je veći od 100? Ako je, onda sam izvršiti prvi dio prije debelog crijeva. Ako nije, onda sam izvršiti Drugi dio nakon dvotočke. Tako da, ako je n veći od 100, onda preuzima visoka i stavlja da se u string s. Ako je n manji od 100, da pokupi niska a zatim stavlja da je u string s.. Tako da će se kondenzirati ovaj veliki komad dolje u samo toj jednoj liniji. ZVUČNIK 5: Je li popularna? JOSEPH: Da, to je vrlo popularan za stvari u kojoj osnovi želite Ne dodjela na temelju neka vrsta stanja. I u ovom slučaju, bili smo pokušava dodijeliti vrijednost niza s.. To nije tako - Mislim da stvarno ne vole to se u drugim slučajevima. No, to je osobito korisno za ovaj zadatak. ROB: To je prilično čest uzorak gdje imate neku varijablu koja što ćeš reći, ako je nešto, postavite ova varijabla na jednu vrijednost, drugo, postaviti ova varijabla drugoj vrijednosti. I to je scenarij gdje se koristiti trodjelna. JOSEPH: I ti spašavaš puno linija, zar ne? I to samo čini šifru nedvojbeno malo više čitati. Da, pitanje? ZVUČNIK 6: Za trodjelna, mogao idete, String s jednaki s, upitnik? I onda bi mogao imati, recimo, pet različitih opcija. I ovisno o tome što je broj n je, bi li odabrati jedan od onih? JOSEPH: Dakle, pitanje je, je li vrsta sintakse, gdje možete učiniti niz s jednako n, a zatim su više od dva Opcije nakon toga upitnikom? I Jednostavan odgovor je ne, ne postoji stvarno dobar način za to, osim ako Želite li gnijezdo multiple ternarnih operatori unutar svake druge. Moglo bi se učiniti kao da je n veći od 100, upitnik, a zatim još jedan ternarna operator, n veći od 50, upitnik, i nest ga na taj način. No, u tom scenariju, vaš broj je uzimajući vrsta nečitak i neuredan, i to bi moglo biti bolje samo otići u Ako / else iskaz u tom trenutku. ROB: I također, kao strani bilješku, PHP pogrešno primjenjuje ternarna operator takav da ugniježđeni ternaries uopće ne rade onako kako bi trebali. JOSEPH: Da. Tako se dobiva malo zbunjujuće, pogotovo kad idete na različitim jezicima. ROB: To je zbunjujuće dovoljno da jezici su u krivu o tome. JOSEPH: Pa zapravo, samo da pojasnimo, ne svi znate što to % S radi ovdje? Sva pitanja o tome? Valjda za kameru,% s osnovi omogućuje nam staviti rezervirano za niz. I onda na kraju, možemo navesti da promjenjiva želimo staviti u ovo Nositelj mjesto je s. Tako da je u osnovi vodi s. i to ga stavlja ovdje. I onda će se ispisati, izabrao si visoka ili vi odabrali mali broj. OK. Dakle petlje omogućiti da obavlja stvari kružnim pokretima, zar ne? Možda ste naišli na ovo Nule u obliku petlje zauvijek ili ponovite sve dok ili Ponovi posebice broj puta. Pa zašto je to dobro za nas? Pa, u C, recimo imamo ovo Pjesma provodi u nule da pjeva, to je pjesma koji nikada ne prestaje. To samo ide na i na i zauvijek i zauvijek. Pa, stvarno ne mogu napraviti program koji ima beskonačan broj printf izjave u tome, zar ne? Dakle, u ovom konkretnom slučaju, jedan od načina da bi mogao napraviti ovo djelo i da bi ga ispisati zauvijek je Umjesto toga koristite while petlja. Dakle, dok petlja će izvršavati ono što je na tijelu dviju proteza koje pripada njemu na temelju onoga što stanje. Dakle, u ovom konkretnom primjeru prije, ako želimo ispisati zauvijek, što Možda nam je činiti? Pa, je li, zar ne? Dakle, ova vrsta kombinira ideju nekog Boolean izraza zajedno s petljom. I mi smo naučili o Boolean izrazi ranije. Dakle, kad god je stanje unutar da, dok ostaje istina, ova petlja će se izvršiti na i na i na. I u ovom slučaju, ako mi samo ga dostaviti s istina, to uzrokuje beskonačno petlja koja ispisuje pjesmu na i na i kao što smo prije želji bez ima program koji ima beskonačan broj printf izjava, koja je nije moguće. Dakle, više uvjerljivo, iako je, možete koristiti s promjenjiva i stanje. Pa recimo da želimo ponoviti fraza, potpuno pun krivina, 10 puta. Dakle, što možete učiniti s while petlja je prvo se inicijalizirati brojač varijabla izvan Dok petlje do 10.. A onda je u osnovi, svaki put kad idete kroz while petlje, što ispisati izjavu, a onda smanjite brojač varijabla sve dok na kraju, u nekom trenutku, nakon što oduzmemo sam dovoljno puta, jednom s sam dovoljno vremena - i samo da pojasnimo, I minus minus znači da je jednaka I minus 1. To će zapravo donijeti sam do točka u kojoj jednom sam pogodio nulu, to stanje više nije istina i tako da izlazi iz petlje. Dakle, potpuno loopy samo ispisuje 10 puta. Sva pitanja oko while petlja? OK. Dakle, ne postoji način na koji možemo učiniti ono što smo upravo učinio u više jezgrovit način s ono što mi zovemo Za petlju. Dakle, za petlje se sastoji od inicijalizacije, stanje i ažuriranje, baš kao što smo imali prije u ovoj while petlja. Tako ćemo pogledati. U ovoj while petlja, imali smo inicijalizacije, onda smo imali uvjetom da smo provjeriti. I onda smo imali ažuriranje korak na vrhu. Uz for petlje, to zapravo traje ove tri stvari i to kondenzira dolje u jednoj liniji. Dakle, prva stvar koja se radi u Za petlje je pokrenuo. I onda napraviti-zarez, a zatim ti stanje, koje je sam veći od nule ide tamo, a zatim ažurirati korak. Dakle, ovo dobiva nastupili na Vrlo kraju petlje tijela. Dakle, ova dva programa su u biti ekvivalent. Ima li pitanja? Dakle, što je jedna razlika između ta dva? Može li itko na to ukazati? To bi moglo biti malo suptilniji. To je samo vrlo mala razlika. Da? ZVUČNIK 5: Vi ne bi mogli koristiti promjenjiva sam izvan for petlje [Nečujan]? JOSEPH: Točno. Dakle, to je nešto što ćemo doći do kasnije nazvao varijabla opseg. Ali u biti, to int i živote izvan ovog while petlja. Dakle, kada se to Dok petlje je učinio izvršenja, ja ću biti u mogućnosti da sam koristiti kasnije na u programu. Dok s ovim za petlje, ovo int sam je scoped unutar toga za petlju. I zato što je unutar tog dijela od for petlje, koja počinje u zagradama, a završava s kovrčava braće tamo. Sve što je proglašen unutar Ovdje se ne može koristiti izvan. Dakle, ako sam pokušati Koristim izvana, to ću reci mi, neprijavljeni simbol. A u biti, ne bih biti u mogućnosti koristiti ga. ROB: A dobro, prije 10 godina, u Doslovno svi slučajevi, vitičastim zagradama su ono što se koristi kako bi se utvrdilo opseg varijable. Dakle tamo, int sam jednako 10 je proglašen unutar toga set vitičastim zagradama. I tako onda koliko god pokušati iskoristiti I Prije ove kovrčave vitice, to je u redu. Možda ćete vidjeti kada upišete napraviti, te vidi crtica, crtica, std, jednako c99. Tako da je kasnije verzija C koji GCC je implementiran koji također daje ovaj prečac. Dakle, ovo se koristi da neće biti dopušteno u C. A možete vidjeti zašto, jer to int I je izvan ove kovrčave vitice, ali to je još uvijek smatra da se u Opseg tih vitičastim zagradama. No, to je vrlo povoljno stvar, pa to je dobra proširenje. JOSEPH: Ima li pitanja? OK. Dakle, što je više koristan je da ponekad Želite vrsta dinamizma u Vaš petlje, zar ne? Vi ne želite da se samo nužno ispis potpuno loopy cijelo vrijeme, što želite odbrojavati od 10 ili tako nešto. I tako možete koristiti varijablu suprotnom unutar te petlje i. I u ovom slučaju, ovaj program jednostavno odbrojava od 10. do kraja. A što to nisu ispisali? To ne ispisuje nulu, pravo, jer kad - Da, to također ne ispisuje 11. Tako da ne ispisuje nulu, jer kada I je nula, zapamtite, ocjenjuje stanje prije nego se ide na izvršavanje petlje tijelo. A kad sam je nula, to je lažna, pa ne ispisuje iz odbrojavanje nula, to samo isprinta brojanje pao za 10 pa sve do jednog. Ako mi zapravo htjeli to ispisati nulu, onda bi stavio znak jednakosti nakon toga veći od znaka. OK. Tako je jedan način da to učinite za unos valjanosti, koji je kada pitati korisnik za napraviti nešto, što želite da biste bili sigurni da slijediti vaše upute, koristiti Dok petlje, zar ne? Dakle, u ovom konkretnom slučaju, ja tražim za pozitivan broj, a onda sam čekajući ulaz. A onda sam provjerio Dok ulaz manje od nule, držati ih pita. Dakle, dokle god su mi dati broj to nije pozitivno, stalno postavljaju, držati molba, stalno postavljaju. No, ono što je vrsta čudno o tome? Ili ono što ne čini optimalna o ova struktura ovdje? Svatko? Da? ZVUČNIK 6: Vi ste ponavlja upute za dva puta. JOSEPH: Točno. Dakle, imamo dva printf izjave ovdje, zar ne? Dakle, ne postoji način na koji smo mogli dobiti to samo sve do jednog koji bi naše Kod lakše čitati i malo više čisto. I onda mi ne bi trebala su dobili u dva puta, kao dobro. A jedan od načina na koje možete učiniti je pomoću do-while petlje. I Do-while petlje je u osnovi drugi oblik while petlja gdje sve što se nalazi unutar vitičastih zagrada dobiva izvršiti barem jednom. Dakle, ovdje izjavljujem, int ulaz, izvan prve. I onda sam samo reći, učiniti upute dok je ulaz manje od nule. Tako ga pogodi učiniti prvi. To će uvijek izvršiti to najmanje jednom, tako da će se uvijek pitati korisnik za ulaz barem jednom. I onda se procjenjuje da je ulaz, i to se događa u krug. Da, pitanje? ZVUČNIK 6: Da li postoji način da to učinite [Nečujan] vrste, kao i ako ti kažeš, GetString, a netko [nečujan] postoji li način da se [nečujan] JOSEPH: Dakle, pitanje je, je li način da to učinite za unos valjanosti ako korisnik ne stavi u pravu tip varijable? Dakle, ako ćemo tražiti int i oni daju nam niz umjesto. I u funkcijama koje provode za vas, GetInt, GetString u svim one funkcije, oni su zapravo već napraviti takvu vrstu osnovnog tipa ulaz valjanosti ispod haube. Dakle, ako ste koristeći funkcije koje smo dao ti, ti stvarno ne moraju. No, ako želite pogledati više u tome što zapravo može učiniti, možete pogledati ispod haube na datoteku I/O-- Ne podnijeti, standardni I / O funkcije kao što je čitanje iz standardnog ulaza i standardni izlaz. A možete dobiti bolji osjećaj kako se može učiniti. ROB: Jedno pitanje, iako je posebno uz primjer što , rekao je, što očekujete String i ja ući int. Kako bi vam reći razliku između namjerno žele Niz 123 naspram žele int 123? Tako niz, to je prilično puno ne postoji valjanosti, to je samo ono što oni ušao ćete tumače kao niz. Interesi je lakše, jer bez obzira Ulaz se uzme od korisnika, što su uvijek vodeći niz. I tako da string onda možete ček, su svi ovi zapravo znamenkama? JOSEPH: OK. Sva pitanja o Do-while petlja? ROB: Oh, i to je također - ide natrag u opsegu, nešto zajedničko pogreška pokušava koristiti neki lokalni varijabilni unutar ovog Do-while petlji unutar tog stanja. A zapravo, ako ćemo baš dobio osloboditi od to i rekao, int ulaz jednaka GetInt, zatim prevodilac će vikati na nama, jer je ulaz ne postoji izvan opsega ove vitičastim zagradama. JOSEPH: I to je razlog zašto smo treba ovaj lineup ovdje. OK. Tako i vi možete izaći iz loop rano, ako želite. Dakle, ovo je drugačiji način provedbi onoga što smo upravo provodi. I umjesto da koristi stanje unutar zagrade, koristimo Ako izjavu unutar tijela o Do-while petlje. A u osnovi, kada je ulaz napokon veći od nule, što će izaći iz petlje. I tako ćemo ići sve put ovdje dolje. A možete vidjeti da bi to Vjerojatno se preferira u ovu scenarij, jer je malo malo čišći i malo malo lakše čitati. Dok je ovaj, svojevrsni imaju dodatne linije u njemu. To je samo malo ružnija, Mislim, u izvjesnom smislu. Da, pitanje? Zvučnik 4: Hoće razbiti samo dobiti što je iz jednog skupa aparatić? JOSEPH: Točno. Dakle, pitanje je hoće slomiti samo dobili ste iz jedne petlje? A odgovor je potvrdan. Dakle, ako ste se ugnijezdio Za petlje, za Na primjer, ako imam za int i jednaka je 0 do 10 i onda za INT J jednaka je 0 do 10., ako sam pobjeći iz unutarnjeg loop, ja ću i dalje ići na vanjskoj petlji. Tako da ću držati obavljanje radovi na vanjskoj strani. Sva pitanja o tome? Da? ZVUČNIK 5: Ali razbiti samo funkcije za vitičastim zagradama, a ne za druge izjave? [Nečujan] JOSEPH: Dakle, pitanje je hoće slomiti Funkcija samo za petlje za razliku druge izjave poput ako? I da, to je tako, jer gubiš iz petlje, zar ne, u smislu. ROB: U velikoj većini slučajeva, to je to je vrsta ako se nešto, onda razbiti. Dakle, ne morate razbiti primjenjivati ​​na Ako to se omotava oko nje. I također, to nije mnogo petlji, ali sjetite se da su i prekidači izbila po pauze. Vidjeli smo pauze koristi s prekidačima prije. JOSEPH: I vi možete također koristiti ih Dok se u petlji i za petlje. Ima li pitanja? OK. Dakle, pored gore je funkcija. Dakle, možda ćete imati koristi jedan od tih BYOB blokovi u vašem Scratch projekt. I to u osnovi omogućuje da se definira set upute kojih se treba pridržavati. I ono što mislim da je razmislimo natrag na matematici, zar ne, algebra. Imate ono što mi zovemo funkcija x, neke varijable, a recimo ova funkcija f od x jednako x plus 5. Tako se možete sjetiti f xi jer to black kutija koja traje 15 godina i onda proizvodi 20. Tako da općenito, funkcija nešto što traje oko ulaza i onda stvara neke izlaze. I zašto su funkcije dobri? Oni su dobri za niz razloga. Tako se netko želi uzeti ubod na što organizacija znači? U smislu zašto funkcije su korisne? Da? Zvučnik 4: To čini vaš Kod više čitati. JOSEPH: Točno. Dakle, jedna od stvari koje se čini kod koji se može čitati, zar ne? Umjesto da kao int x jednaka x. puta x puta x, ja mogu imati kocku x, što je više čitati i više razumljivo da se na čitač. Organizacija je također u smislu Podijelit svoj kod u rukovanje dijelova, tako da umjesto da pokušavate implementirati to sve u jednom dugom dijelu u glavnom, što nekako može ga podijeliti u kao, u redu, idemo napisati funkciju na kocke nešto, neka je pisati funkcionirati na trgu nešto. Na taj način možete ga podijeliti u maleni, mali dijelovi koje može uhvatiti u koštac za razliku od pokušaja da se pozabave Veliki problem sve odjednom. ROB: Ili oni sitni, mali dijelovi koji vi i partner možete uhvatiti u koštac. JOSEPH: Da. ROB: Dakle, umjesto da obojica pokušavate usaditi jedan djelovati u isto vrijeme. JOSEPH: pojednostavljenje. Svatko želi uzeti pogodak? Da? ZVUČNIK 5: Više ponavljanje. JOSEPH: Točno. Dakle, jedna stvar koju možete učiniti s pojednostavljenje je da je to na neki način na na isti način kao ponovnu upotrebljivost je da Jednom sam napisati funkciju kocka, ja mogu samo koristiti da se iznova i iznova i iznova Ponovno u mom programu umjesto tipkanja x puta x puta x više i iznova i iznova. I pojednostavljenje i ovdje samo znači da ima svoj kod vrsta lakše ispravljanje nakon što podijeliti ovo gore na funkcijama. Jer tada možete lokalizirati koju gdje Vaši problemi kakve su. Ima li pitanja? Dakle, još jedna ideja je apstrakcija, zar ne? Ova crna kutija. Kao i znate li što GetInt radi da prima ulazni signal od korisnika? Mi smo zapravo i nije ti rekao, zar ne? Sve što sam ti rekao je GetInt radi točno ono što kaže da radi. Dakle, čak i ako mi ne možete reći kako to radi, još uvijek zna. Dakle, u ovom konkretnom slučaju, to je četverostruko funkcija koja radi različite stvari na ulazni da se dobije izlazni. A možete učetverostručiti broj tako da se pomnoži sa četiri. Ili možete ono što mi zovemo malo ga pomaknuti za dva. I mi ćemo pokriti to Malo kasnije. I nema potrebe da znaju kako je to funkcija zapravo radi dok njega radi kao što je navedeno. Dakle, ispod haube, mogao sam biti kao, vratiti ulazne puta osam podijeljeno s dva. A vi ne bi znali, zar ne? Sve što trebate znati je čini ono što kaže. Dakle, to je korisna stvar o apstrakcije. I još jedna stvar je vrsta ova ideja lokalizaciju svoj kod jednog Posebno poglavlje. Dakle, ako imate problem, ne znaš morati ići u cijelom kodu pokušava popraviti, gdje je problem. Dakle, u ovom slučaju, ja provodi kocke u krivu. Mislio sam da je kocka množenjem s tri. Dakle, u ovom slučaju, to je jedan program da je upravo pomnoži sa tri posvuda. A tu je još jedan program koji ima factoring kocka van u funkciji. I sad ako želim popraviti moje pogreške ovdje, moram popraviti svaku liniju koda u ovom programu. Dok s druge strane, ako koristite funkcija, samo moram promijeniti što je krivo na jednom mjestu. Tako je u računalnoj znanosti, mi nazvati ulaza i izlaza. Ulazi se nazivaju parametri ili argumente, a izlazi su pozvani povratak vrijednosti. A vidjet ćemo kako nam to pomaže vrsta od definirati funkciju u sekundi. Dakle, ovo je definicija funkcija za rotacije. Tako to traje ulaz, a zatim vraća taj broj puta Sama tri puta. Tako ćemo razbiti ovaj dolje. Tako imamo funkciju zaglavlje, koje u osnovi se sastoji od tri stvari. Dakle, imamo parametre, koji su, kao što sam rekao prije, ulazi u ovu funkciju. I onda mi daju funkciji ime. U ovom slučaju, to se zove kocka. A onda ćemo odrediti što je tip od povratka vrijednost. Dakle, u ovom slučaju, moja je funkcija kocka se na cijeli broj i to također vraća cijeli broj. Dakle, ako sam prošla u dva, dva je cijeli broj, vraća osam do mene, koji je cijeli broj. Dakle, povratak imena tipa parametara. Pitanja o tome? I onda povratna vrijednost je zapravo naveden na kraju rekavši povratak , a zatim se vraćaju god sadrži povratnu vrijednost. Dakle, u ovom slučaju, ako bismo to sve stavili zajedno, funkciju preuzima u parametri, to se zove nešto, a vraća nešto što je tip da mi kažu da će to biti. Ima li pitanja? Pa kako ćemo koristiti funkciju? Pa, možemo napisati funkciju, a zatim možemo ga koristiti u našem programu, zar ne? Pa sam nazvao ga kocka, a onda ja mogu koristiti kocku. No, ono što je važno imati na umu je to bitno reda. Ako imam kocku ispod glavni, to je će se izvoditi u kocke. I u ovom trenutku, nema ništa zove kocka u programu, a to je Samo želim biti poput, moram nema pojma što je kocka. Dakle, to će vam reći, implicitno Izjava o funkciji. To je pogreška koja se pojavljuje. I tako, u ovom slučaju, kocka je u nastavku Glavni, pa ne ide znati o tome. ZVUČNIK 5: Dakle glavno je obično posljednja funkcija definirana? JOSEPH: Dakle, pitanje je, Glavni je obično posljednja stvar koju bih definirati? I nema. To je zato što mi obično vole glavna biti na vrhu, zar ne? Budući da je prva stvar koju Želite otvaranja programer Program za vidjeti. I tako, kako ćemo riješiti ovaj problem i mi Želite glavna biti na vrhu, ali Funkcije koje želimo, mi ih želimo da se u nastavku još glavni moći koristiti ih unutar glavna? Pa, mi koristimo ono što mi zovemo Funkcija prototip. Dakle, ono što je funkcija prototip suštini je je to prvi uzima ono što potpis ili funkcija header od onoga što želimo provesti niz ovdje, i stavio mi u vrhu programa. Dakle, u ovom slučaju, možemo reći da, dobro, kasnije u našem programu, idemo da bi obećanje za provedbu ovog funkcija zove int kocka koja traje cijeli ulaz. Tako sada, jer to je iznad glavna, Glavni, to će reći, oh, dobro, kasnije u programu, koji će biti tamo, tako da mogu odnositi na njega, pa ću samo neka to ide kroz za sada. A onda je na dnu, implementiramo kocku. A onda je glavna bit samo reći, dobro, to će sortirati linka ta dva simbola zajedno. I mi ćemo pokriti ono koje znači kasnije. I tako ćete znati da je ovo Kocka je funkcija da bi trebalo koristiti. ROB: [nečujno] o nedostatku Glavni na dnu ili top, vidio sam kako. Postoje stvari koje baš kao i Glavni staviti na dno. No, nakon što je projekt dobiva posebno velika, obično glavna je u uložiti sve svoje vlastite. I u tom trenutku, kao što su int kocka linija bi - unutar stdio.h su hrpa linija samo tako int Kocka int ulaz linije. I tako ti prototipovi su stvari koje imaju tendenciju da se stavi u zaglavlje datoteke, na kojem trenutku, to ne smeta. Pa, to ne smeta. Oni idu uvijek na vrhu. A ako glavni ne sliku sve svoje vlastite, ne morate brinuti o stavljanju pojedinačne funkcije prototipovi u spisu. JOSEPH: A mi ćemo govoriti malo Malo kasnije, kada je Rob počne govoriti o sastavljanju. I tako tu je i razlika između parametra i argumenta. I parametar je upravo ono što Mi ih zovemo ulaza kada definiramo funkciju. I mi to zovemo argument kada smo zapravo ga proći u funkciji. Dakle, u ovom slučaju, to je parametar, Kao što smo rekli prije. A kada smo ga zapravo koristiti tamo, kocka x, onda x sama je ono što mi zovemo argument na funkcije kocke. ROB: Dakle argumenti parametra su - tu je ta razlika, vrlo zbunjen naizmjenično. U ovom trenutku, za mene, to je kao jedan od one riječi koje kad ga vidim u divlja, ja ne mogu pomoći, ali odmah pitanje je da li su ga koristite u točna kontekstu, zato Razlika je dovoljno suptilna da samo svatko teži - I gotovo uvijek kažu argument bez obzira na to što mislim. Josipa i funkcije su također koristan za ono što zovemo nuspojave. Dakle funkcija može potrajati ne ulazi, a ona također može proizvesti nema izlaza. Dakle, u ovom konkretnom slučaju, ja sam definiranja potprogram koji nema vratiti vrijednost. A kako bi se odredili da, koristimo ono što mi zovemo prazninu ovamo. Pa nuspojava ovog funkcije je da je to samo ispisuje stvari van na stranici. To zapravo ne poduzeti bilo ulaza, i to ne zapravo proizvesti bilo izlaza. Međutim, to može biti korisna u smislu Ako želite, na primjer, debug nešto u svom programu, ako želite pisati malo potprogram koji ispisuje, recimo, sadržaj memorije ili nešto. I tako ove nuspojave su ponekad korisni izvan konteksta samo mi se ulaza i izlaza. Ima li pitanja? I za kraj ovaj segment, što ovaj program učiniti? Dat ću ti dečki par sekundi da ga pročitajte. Na vrlo osnovnoj razini, ono što želimo rekao je da je to swaps xiy, zar ne? Dakle, koliko vas zapravo misle to će zamijeniti xiy? Podignite ruku. Nitko. OK. Tko misli da će se Ne mijenjati xiy? I suma koja je Ne cijelu sobu. Dakle, neki ljudi nisu sigurni. OK. To je razumna. Dakle, idemo kroz ono što se događa kada što zapravo poziv funkcije prvi u Kako bi odgovorili na to pitanje. Dakle, to je ono memorije nekako izgleda. To je nešto kao pojednostavljeni model onoga memorije izgleda kad pokrenete program. Dakle, postoji nešto što se zove stog ovdje dolje i nešto što se zove gomila. I to raste prema Srednji memorije. Dakle, u ovom konkretnom slučaju, kad je nazovete funkciju, to dobiva staviti na stog. I onda ono što je sadržano u tome Funkcija ostaje u ono što mi zovemo funkciji je stack frame. I tako bi dobili lijep vizualizaciju to, let's - primjerice, imali smo Program Glavni ranije. A unutar glavna, nazvali smo kocku. Dakle, glavna prvi će ići na dimnjak uokviriti, jer je to prva uloga to se zove. A onda, kada kocka zove unutar Glavni, ona dobiva staviti na vrhu glavna unutar memorije. Dakle, što ćete primijetiti je da kocka ima svoje parametre i njegovih vlastiti mještani. Dakle, kada ste zapravo prođe nešto funkcija, parametri koji se dobiva se kopije onoga što je donesen iz glavna. I to nekako objasniti, neka je prošetati kroz program. Dakle, imamo hrpu, a to je samo stog dio. A što mi radimo je prvo započeti X i Y se jedan i dva. Dakle, imamo te male kutije. Oni sjede u glavnom je stog okvir na stog. Oni sadrže jedan i dva. Sada smo zvati zamjenu. Ono što se događa je da prođe xiy u swap, i swap stvara svoje kopije od one varijable za korištenje unutar svoje stog okvira. Tako sada tamo imamo, što sadrži vrijednost koja je imala x i b, koji sadrži vrijednost koja godina imao. Dakle, jedan, dva. A vi ćete primijetiti da je to zasebna iz xiy unutrašnjost glavna. Tako smo sada stvoriti privremena promjenjiva sadržavati. Mi smo postavili jednak B, pa je Promjene od jednog do dva. I onda smo postavili b jednak na temperaturu, koja je jedan. I onda sada smo izašli van ove funkcije. Kada izađete iz funkcije, stack frame dobiva popped off snop. Zovemo ga gurati. Možete gurnuti hrpu okvir na stog a ti, ako pop off dimnjaku. I tako ono što se događa je sve ono što bio je u toj stack frame kakve samo ide gore u plamenu. I, tako da više ne postoji. Ali što ćemo primijetiti? Mi zapravo nikada nije promijenila Vrijednosti xiy, zar ne? Dakle, oni ostao lokalne do glavne. I tako prolaze stvari u zamjeni, mi zapravo nikad nije promijenio te vrijednosti. A što ćemo ovo nazvati? Mi to nazivamo prolazu vrijednosti. Tako je u C, kad prođe stvari u funkcije, to im prolazi po vrijednosti i čini kopiju njima Funkcija za korištenje. I mi ćemo učiti o nečemu što se naziva u prolazu kasniju referencu, ali to je način možete riješiti ovaj problem. Ali nećemo brinuti o da je tek kasnije. ROB: A zapravo, taj pojam, u prolazu pozivanjem, pa C nema ni u prolazu pozivom. C isključivo je u prolazu vrijednosti. Bez obzira na to što radite, vi ste uvijek prolazi kopiju nečega. To je samo da je, kao što sam spomenuo vrsta da je prije s pokazivače i da niz je zapravo samo četiri bajtova koji upućuju na neko mjesto u memoriji. Pa, ako imam ovaj niz i to je mi govori da je mjesto gdje string - Pa, ako imam tu pointer na to mjesto u memoriji, onda ja mogu proći Kopiju tog pokazivač na funkciju, a da je funkcija još ne zna gdje se u Memorija je. Dakle, obje ove naputke ukazuju na istom mjestu u memoriji, i to je kako ćemo biti u stanju mijenjati stvari šire Trenutna okvir stack. JOSEPH: Želite li napraviti sastavljanja? ROB: Ne, to je 05:30. JOSEPH: OK. Bilo je 05:30. OK. Dakle, mi ćemo pokriti prikupljanjem valjda u Sljedeći dio, ili vaš poglavlje Lider će u tom trenutku. I - ROB: Ima li pitanja? JOSEPH: Ima li pitanja? Da? ZVUČNIK 5: Korištenje konce CS50, bilo Funkcije koje želimo koristiti za onima, koji će biti poput C funkcija. CS50 nije otišao u i napravili sve dodatne. ROB: Točno. Svaka od C kao [nečujan], što će koristiti onima na našim žice. JOSEPH: I jedna posljednja stvar koju želim spomenuti je da imamo stil vodič za ovaj razred. ROB: Oh, da. JOSEPH: Dakle, ako ste došli iz programiranje pozadinu prije, možda imaju određene konvencije kada pišeš koda poput stavljanja aparatić na istoj liniji ili posebno načini uvlačenje ili imenovanje varijabli. U ovoj klasi, želimo slijediti specifičan vodič stil samo zato, dobro, ako idete van i raditi u industrija, ti ćeš se očekivati slijediti stil vodič za Tvrtka kod koje idete. Kao na primjer, Facebook mislim ima određenu vrstu imenovanja konvencija. I tu je razlika između deva kućište varijable i kao odvajajući ih podvlakama. A isto tako, mislim da je najvažnije, kao što su primjerice, udubljenje, zar ne? Mi ne kovrčava aparatić početak, gdje Uvjet je, i oni se u sljedećem retku. I mi također staviti u vitičastim zagradama čak i ako je samo jedan redak. I mnogo puta, postoje načini kako to učiniti ona u kojoj možete ostaviti ove aparatić off i ako je samo jedan redak pod IF. No, u ovoj klasi, želimo slijediti specifičan vodič stil samo tako da se koristi za takve stvari. ROB: Da, i Stil 50 će se provesti ovaj stil vodič, a mi smo će koristiti Style 50 do stupnja kodu. Tako se čini stvari lakše za nas i nadamo se ne bi trebalo napraviti stvari koje puno gore za vas s obzirom standardizirani stil ne mora biti da je nerealno. JOSEPH: I na kraju, kako biste pronašli stil vodič, idite na manual.cs50.net/style. I da. Zvučnik 4: Hoćete li provoditi bilo znakova po redu? ROB: Da. JOSEPH: Žao mi je, momci. ROB: To je kao jedan od samo one. U ovom trenutku, ja sam u redu s 120 osoba. Ja sam u redu s rekavši 120 znakova po redu. Ja razumijem da se neki limit. Mislim da 80 je tako mali, ali mi smo ga provedbu. JOSEPH: Osobno, mislim da s C, 80 znakova je više OK. Jednom kada počnete dobivanje na druge jezika kao što su JavaScript i PHP, a ne tako razumno samo ograničiti je do 80 znakova. OK. Pa, to je bilo super poglavlje. Zar itko želi slatkiše? Zvučnik 4: Da.