>> ROB Bowden: Ovo je udobnije poglavlje,
ali to ne znači da ako vas Osjećam se kao da nisi ugodniji
nećete naučiti stvari ovdje.
Tako ćemo početi.
Imate li slajdova ide ravno u stvari.
Jesam li o tome da ga samo uzeti upravo sada?
Prebacivanje laptop.
>> ALLISON: Vi ne želite predstaviti sebe, Rob?
>> ROB Bowden: Oh, ja sam Rob.
Ovo je moja peta godina TF-ing CS50.
>> GABRIEL: Ja sam Gabriel.
Ja sam šef TF od CS50.
Bio sam TF lani i ove godine.
ALLISON: I ja sam Alison, i to je moja druga godina TF-ing CS50.
>> ROB Bowden: U redu, tako da ova stvar na lijevoj strani,
nadam se da ste ga vidjeli.
Ako ne zbog tebe skinuti ga za sebe,
trebali ste ga vidjeti u predavanju.
Dakle, ovo je CS50 aparat, a on učinio nešto od opisa njega
U predavanju.
Ali u osnovi to samo ti se izvodi operativni
Sustav unutar vašeg poslovanja sustav tako da možemo vam dati
Programi bez potrebe brinuti, oh je to
raditi na oba Windows i Mac, ili ako neki od vas
već koriste Linux, Linux.
To je samo trebao biti zajedničko igranje
polje tako da svatko ima Isto točno okoliš.
>> Dakle, ako niste skinuti to je već,
trebali biste ga skinuti, jer si ide to potrebno za set problema.
I to je dva gigabajta skinuti, tako da bi to moglo potrajati neko vrijeme.
Na Harvardu to će ići brzo.
Tako CS50 aparat.
>> Sada u početku, idemo u govoriti o samo hrpa naredbenog retka
stvari, i tako to, mislim raditi U ovom malom okruženju ovamo.
I primijetiti sve stvari Kažem ovdje upravo sada
idu na posao ako ste unutar terminala unutar aparata,
ili ako su unutar Prozor gedit terminala
unutar uređaja.
Dakle, oni okruženja su identični.
>> Ali ja ću otići treći put.
I ovdje primijetiti ovaj dolje Malo IP adresu ovdje.
Dakle, ne morate se to učiniti, ali to IP
address-- sada, ako I-- osim to je blokirao ovu stvar.
U redu, tako da je IP adresa više u terminalu
here-- tako da je ovo terminala iznad Ovdje je terminal u mom Macu.
Dakle, ovo je ni na koji način trenutno povezana s aparatom na sve.
A ako ste na Windows, onda ste Trebat će preuzeti nešto
posebno za to, naročito ljudi imaju tendenciju koristiti kit, P-U-T-T-Y.
>> Dakle, ono što ću učiniti je tip SSH i onda to IP adresa.
Pa, jharvard na toj IP adresi.
Tako 192.168.24.220.
Ova zastrašujuća poruka, ignorirajte ga.
Samo upišite yes.
Ovo je CS50 u kutiji.
Ona traži vašu lozinku.
>> I tako u puno tih situacija gdje ona pita za lozinku, [nečujan].
Imamo puno pitanja gdje ona kaže da nije zapravo tipkati.
To vam ne pokazuju znakove lozinke dok tipkate, ako ništa drugo,
za sigurnosne značajke, jer ako netko gleda preko ramena
i oni vide zvijezde zvijezdu star star, onda oni
znate da je vaša lozinka četiri znaka.
Dakle, ideja je da će zatražiti ste za svoj password, tipa.
To se neće pokazati vi likovi,
ali to je zapravo ih prihvaća.
U tom slučaju, bilo vam vrijeme ikada vidjeli lozinku upit
bave aparata, Lozinka će biti grimizne.
Tako grimizne.
>> A sada ovdje u ovo prozor koji je u mom Mac,
Ja sam u osnovi ima Isto točan prikaz
kao unutar terminal u aparatu.
Dakle, ne morate to učiniti.
To možete učiniti sve što vam Želite unutar aparata.
Ja gotovo nikad zapravo učiniti ništa u aparatu.
Ja gotovo uvijek se smanjila da je i sad Radim SSH u aparat.
>> Ako ništa drugo, ako vas imaju sporiji računalo,
možda ćete primijetiti razliku.
Ovo radim jer sam radije ovo terminala prozor.
Ona ima neke značajke kao što su Ja mogu podijeliti prozor,
i sad ja mogu SSH u kroz aparata.
Dobio sam dva SSH se događa odjednom.
Ako vaše računalo je posebno spor i radite u aparatu,
i shvatite to stvarno laggy, god.
Tendira biti puno brže ako si SSH-ed u.
Ali inače možete raditi u oba smjera.
>> PUBLIKA: Što SSH znači?
>> ROB Bowden: Secure školjke, nešto slično?
Što SSH znači?
GABRIEL: Sigurna ljuska.
ALLISON: To je samo sigurne ljuske.
ROB Bowden: Sigurna ljuska.
To je protokol koji you-- je siguran protokol, tako kodiran.
Ljudi ne mogu Snoop mrežu i vidi što govoriš da ništa
ti si SSH-ed na.
A u stvari, u ostariti dana CS50, pa u 2009. godini
kad sam bio brucoš, način na koji ste radili na CS50 problema setovima,
je li SSH-ed na neki server da mi je dao vam pristup,
a vi radili tamo.
Dakle, nisu imali ovu grafički aparat.
Niste imali gedit.
Niste imali sve te stvari koje možete vizualno točku i kliknite.
Morao si raditi u ovom sučelju.
Volim raditi u ovom sučelju.
Dakle, dio onoga što ćemo da se ide na preko upravo sada
su hrpa naredbe koje ste trebali
započeti kako bi se upoznali sa što idete zajedno u tijeku.
I iskreno, nakon što vas naviknuti na njih, to
toliko mnogo brže raditi u ovom okruženju
nego što je to raditi s tražila povučete i klikom stvari.
>> Dakle, ovdje smo.
Sada sam samo SSH-ed u, i tako zadani vas mjesto--
vidio neke od tih naredbi u razredu, ali mi ćemo ići preko svih njih opet.
Zadana mjesto smo U kući je katalog.
I katalog, samo drugo ime za mapu.
Tako smo u početnoj imenik.
Upišite ls, popis datoteka u ovom direktoriju.
Očito sam stvorio blah.c ranije.
Dakle, imamo desktop imenik.
Možete primijetiti sintakse?
Svijetlo plava isticanje ukazuje imenik i ravno bijeli
pokazuje samo običan datoteku.
Tako će biti neke druge boje koje vidite.
Izvršna datoteka vjerojatno ide biti zelena ili nešto slično.
U redu, tako da smo u početnoj imenik.
>> Sad ako želim ići u različite katalog, cd je naredba želim.
Dakle promijeniti imenik, a onda prolaze ime imeniku
da želite ići u.
Dakle, ovdje imamo četiri opcije.
Mogu ići u preuzimanja, a sada vidimo ovdje je obnovljeno to usputna
reći da sam u ~ / download.
>> Dakle, ono što je tilda?
To je skraćenica za Vaš dom katalog.
Dakle, gotovo sve što vam je činiti će biti s obzirom na vašu kućnu imenik,
i zap je samo naredba Koristim jednom u godini koja
Samo ispisuje trenutni direktorij.
I tako vidite da se ovdje ~ / Preuzimanja stvarno rješava
na / home / jharvard / preuzimanja.
Dakle / naslovna / jharvard je moj dom katalog.
>> Tako možemo cd dot dot.
Sada točka točka je poseban katalog koji Uvijek se odnosi na jedan katalog up.
Dakle, ako sam u ~ / preuzimanja, zatim cd dot točka će me dovesti do Tilde.
Što mislimo cd dot dot će me dovesti do sad?
To će me dovesti do / kuće.
Dakle, Tilde strane ispisa radnog imeniku, Ja sam sada / kuće / jharvard.
jedan katalog iz toga, Sada ovdje piše / kući.
>> Sada cd točkica točku.
Sada sam u root direktorij, i ne možete to učiniti opet.
Samo ćeš ostati u korijenski direktorij zauvijek.
Korijenski direktorij ima cijela hrpa stvari koje, ako želite pogledati u,
možete.
Na primjer, ako odem u smeće, koja sadrži
sve ove binarne datoteke, kao što su ls, i CD, a sve te stvari.
Dakle, ove naredbe trebaju negdje postoji u sustavu,
i to je u / bin direktorij.
No, gotovo sve što trebate učiniti je će biti iz svog doma imenik.
I cd bez ikakvih argumenata bilo koje vrste, moglo bi se reći cd ~, ne trebaju.
CD će vam donijeti natrag na početnu imenik.
>> Jedan posljednji.
cd - će vas vratiti u Posljednji katalog koji ste bili u.
Pa upravo sam cd'd dva puta za redom, tako da je moj Posljednji katalog je katalog kući.
Ako odem smanjiti smeće, a sada idemo gore i na korisnika.
Korisnik udjela.
Idemo na korisničkom dionici.
Sada sam sada u korisničkom dionici.
cd -, ponovno u smeće.
Dakle, to dobiva posebno korisna kada have-- i to ću popisa.
Dakle korisnika dionici, leđa smeće, dionica smeće.
>> Dakle, ovaj dobiva korisna.
Vi svibanj pronaći sebe ima mnogo, mnogo, mnogo ugniježđena imenici.
A vi želite učiniti nešto jako brzo u gornjoj imenik.
Možete ići na taj direktorij, provjerite Promjene i stvari kao što je to,
a sada želite ići natrag do mjesta gdje ste bili.
cd -.
Uvijek sam frustriran kad sam se dogoditi da ide
na taj imenik I. htjeli da rade u.
Uvijek sam dobiti frustriran kada sam učinio je u dva koraka, umjesto jednog koraka,
jer to znači da je cd - ide dovesti u tu posrednoj lokaciji
umjesto gdje želim ići.
>> Dakle, vidimo sve datoteke u popis.
Mi znamo kako da biste dobili okolo do sada.
Dakle, sada ćemo govoriti o uređivanju datoteka.
Tako je u ovom tečaju, ti si gotovo uvijek očekuje da će koristiti gedit.
Ako želite, možete poduzeti sljedeći korak i početi učiti tekst naredbenog retka
urednik.
Dakle, postoje razne opcije.
>> A one koje su vjerojatno će biti relevantni za vas,
imamo Nano, Vim i Emacs.
Dakle, Nano je početnici naredbenog retka tekst editor.
Dakle Nano idemo na blah.c sam stvorio ranije.
To je samo ovaj standard C datoteku.
I vidjet ćete hrpu stvari događa na dnu zaslona,
i očito blah.c sadrži ovaj C koda.
>> Dakle, u ovom konkretnom urednika, ono što govori na bottom--
Sada to znak za umetanje simbola, vidimo tu ^ G, ^ X, ^ O.
Tako da je u gotovo svim Kontekst što vidite,
možete vidjeti da je znak za umetanje simbola u drugih mjesta online, na Stack Overflow,
nešto slično.
To je gotovo uvijek se odnosi na kontrolu.
Dakle, za izlaz želim napraviti Kontrola X. Kontrola X, izlazi.
I ja mogu koristiti moj strelicu tipke za pomicanje.
Obavijest ja ne mogu ukazati i kliknite lako.
Morate koristiti svoj strelicu tipke za pomicanje.
Tu bi moglo biti postavka za točku i kliknite.
>> Ali neka se napraviti neke promjene.
Sada Kontrola X ići izlaz.
To će reći štedite modificiranom tampon.
Sada upit, y za da, n za ne.
Kontrola C za odustajanje.
Ja ću samo reći da.
File naziv za pisanje.
Zadana je datoteka da već je.
Hit Enter.
U redu.
Sada sam upravo uredio tu datoteku, ga spasio, i to se promijenilo.
>> Dakle, Nano je najlakši tekst editor priviknuti.
Alternative su Vim i Emacs.
Oni su više razine teksta urednika da imaju vrlo strma krivulja učenja.
Dakle, moja osobna preferencija je Vim.
I to ima široku paletu mogućnosti.
A kada se naviknete na njega, nikad vi ćete
želite ići na bilo koji drugi tekst editor, jer vas jednostavno
ima toliko stvari dostupne u njih,
ali to traje jako Dugo vremena za naučiti.
Dakle, možda samo želite prisiliti se sada naviknuti na njega,
ali rekao bih da je vrijedno toga.
Ali, to je teško.
>> A onda Emacs.
Uvijek se bore u Emacs, jer Znam kako to učiniti apsolutno ništa.
Očito Emacs nije po defaultu postavljeni na aparatu.
Vjerojatno ćemo dodati da kao zadane instalacije.
Nakon što ste naučili jednu od Vim i Emacs, postoji
niti jedan uvjerljiv razlog da ikada naučiti druge,
ali to je potpuno drugačiji stil.
U redu, tako da je uređivanje tekstualnih datoteka.
>> PUBLIKA: Ako ste zapeli u VIM upravo sada, kako we--
>> ROB Bowden: Postoji više načina u VIM,
a tu su cijelo tutorijali na učenje Vim.
Dakle, ako vam se dogoditi da bude u insert modu u cilju
upisati tekst, koji možete ući se na različite načine,
ali ja je kako možete dobiti u insert modu.
U ili dobiti iz bilo kakvu posebnu Način da ste u, samo pobjeći.
A ti samo bash pobjeći dobiti iz bilo ugniježdenih načina tvoja u.
Samo u redu, sad sam ponovno u normalnom načinu rada.
>> I tako u normalnom načinu rada, debelog crijeva.
Vidite što se pojaviti na dnu.
A onda q.
Dakle, q će prestati ako ste napravili promjene, što I-- nisam napravio promjene?
Ja sam napravio promjene očito.
Dakle, ako ste napravili izmjene, to će kažu možete staviti uskličnik.
Ja ću ga nazvati prasak.
Dakle, možete staviti zabranu na samo otkaz bez radiš ništa,
ili debelog wq će spremiti i zatvoriti.
Tako w općenito je napisati.
Dakle, pisati datoteku.
Mogu napisati i prestati.
Ili možete imati samo QX Slam, q bang jednostavno
izaći od tamo, bez obzira o svim promjenama koje ste napravili.
>> U redu, tako da sada neka je go-- možemo stvarati datoteke.
Počnimo uklanjanje datoteke.
A ja ću samo baciti u jednom Brzo novi naredbu, dodir.
Tako touch foo.
Dodirnite bara.
Dodirnite Baz.
Ako sam ls, sada vidimo da postoje te datoteke.
Oni su potpuno prazna.
Dakle, dodir je samo lako način jednog, [nečujan].
Dva, tehnički samo stanje da, to ažurira vremenske oznake.
Dakle, bilo koju datoteku koju stvaraju ima timestamp povezane s njom.
Dakle, Baz je stvoren na 14. rujna u 16:21.
Sada je 16:22, pa ako Ponovno sam dotaknuti Baz, mi
vidim da je većina Baz Nedavno izmijenjena na 16:22.
Ali inače gotovo nikada ne pogledate Vrijeme na datotekama.
Dakle kontaktu, evo ja sam samo pomoću to stvoriti neke brze datoteke.
>> U redu, tako da sada RM je Naredba da nam je stalo ovdje.
I možemo rm izviždati.
Recimo uklanjanje redovito prazne datoteke izviždati.
I možemo upisati y, a sada je uklanja.
rm Baz.
Uklonite redovito prazne datoteku Baz i tip n za ništa.
Sada to nije uklonjen.
Tako bar i Baz i dalje postoje.
Foo je otišao.
GABRIEL: Držite govori.
ROB Bowden: Sjajno.
Tako dosadnih poruke Ovdje, uklonite redovito empty--
što radiš tamo dolje?
Uklonite redovito prazne datoteku.
Dakle, ako ne želimo biti smeta te poruke,
možemo baciti u ovom f zastava, i to tako da je sila.
A sada, ako sam -F RM, to neće kažu želite ukloniti ovu datoteku.
To ću upravo to učiniti.
I ls, ne vidim bar tamo više.
>> Sada kada je potencijalno opasne naredbe.
Nije sklona previše loše.
Mi ćemo se vratiti u drugi način to može dobiti vrlo opasno.
I neka je stvoriti neki temp direktorij.
mkdir, druga naredba.
Dakle mkdir je naredba koji čini imenik.
A sada po ls vidimo ovu lijepu svjetlo plavi istaknuo temp imenik.
Mogu CD u temp.
I ja mogu Mkdir foo.
cd u foo. mkdir bara.
cd u baru.
>> Dakle, vidimo da se lako može doći u nekim prilično duboko gniježđenje.
Sada kako mogu ukloniti imenik?
rmdir.
Dakle, ako sam samo ravno pokušati RM, kao što smo učinili s redovitim datoteke,
rm bar će se kažu ne može ukloniti traku.
To je katalog.
Postoji posebna naredba za uklanjanje imenika, vrsta.
Tako rmdir bara.
Sada bar je otišao.
>> U redu, tako da sam prilično rmdir nikada se ne koristi.
Razlog being-- Sada napraviti redovite datoteke bar ovdje.
Tako rmdir Boo.
rmdir.
Nije uspjelo ukloniti foo.
Imenik nije prazan.
Dakle, ne možete koristiti ukloniti dir na katalog da ima stvari u njemu.
>> Dakle, imate neke opcije.
Možete ići u tom direktoriju, izvadite sve ručno, a onda izaći
i rmdir imenik.
To je očito zvuči neugodno.
Što ako postoje tisuće datoteka u tamo?
Pa, mogli rm *.
Razgovarat ćemo o * u sekundi.
To u osnovi znači da sve stvari.
No, još bolje, pa rm -r.
Tako rm -r-- u puno konteksti, r znači rekurzivna,
koje ćemo razgovarati o tome što rekurzivni sredstva u nekoliko tjedana.
No, to zapravo znači poprijeko cjelokupnost ovaj direktorij
i uklonite sve.
>> Dakle rm -r foo će reći sići u imenik foo?
Da.
Uklonite redovito prazan file Foo / bar?
Da.
Skinite katalog foo?
Da.
Tako sada Foo i sve u njoj je uklonjen.
>> Sada kada može dobiti posebno neugodno when-- ćemo dotaknuti 1, 2 dodirnite dodirnite 3.
Može imati hrpu datoteka.
Da sam htio, mogao sam stvoriti tisuće datoteka u ovdje.
I rm -r foo ide biti prilično neugodno.
Da, da, da, da, da, da.
S puno više datoteka koje brzo vidjeti koliko puta
Ja bih se upisati pozitivan.
Pa, upravo smo vidjeli prije kako bismo mogli riješi trebaju upisati yes, -F.
Dakle mkdir foo foo cd dodir 1 2 3.
U redu, tako da rm-rf foo će slijepo uklanjanje foo cijelosti.
Nema brz.
Nema ništa.
Foo je otišao.
>> Tako sam imaju tendenciju da koriste ovo zapovijedati svih vremena.
To je rekao, to je vrlo opasno naredbe,
jer ako sam nešto slično to, neće vas pitati.
To će nestati.
I to se događa prilično često, pa čak i viša razina CS tečajeva.
Ponekad ćemo vidjeti nešto gdje netko
kaže da sam slučajno naša RF-ed RM moj dom imenik i sve moje P set je otišao.
I to je poražavajući, ali nema smeće.
Nema ništa za vas dohvatiti.
To je samo otišao.
Još gore bi bilo nešto poput rm-rf /.
Tako smo samo razgovarali da je korijenski direktorij.
On drži sve datoteke na vašem sustavu.
Stvari imaju tendenciju da se prilično neuredan kada uklonite stvari poput ls,
i cd, a svi oni.
>> PUBLIKA: Koja je razlika između RM, RF, i rm *
ROB Bowden: Pa rm * -
>> ALLISON: Pitanje je što je Razlika između RM, RF, i rm *.
>> ROB Bowden: Pa rm *.
Star općenito i na sve Sadržaj ovog kataloga.
Pokušavajući se sjetiti drugog načina pokazuje zvijezdu.
Pa, zvijezda zapravo općenito znači odgovarati bilo uzorak.
Dakle, ako imam datoteku pod nazivom dog1, touch dog2 dodirnite cat1 dodirnite cat2.
Dakle ls * 1 će ispisati cat1 i dog1, jer je to zvijezda može biti popunjena
U with-- treba biti tamo, no zvijezda može biti ili mačku ili psa.
To je wild card.
To je riječ koju tražim.
Wild card.
Ili bih mogao LS pas * i Ja sam dobio da vidi dog1, dog2.
Dakle, oni su s popisom datoteka koji odgovara uglatim uzorak.
Možete koristiti ls na ovaj način.
>> Ls * zvijezda utakmice ništa.
Dakle, to će ispisati sve Sadržaj ovog kataloga
jer sve njih odgovarati.
To se neće ispisati ništa u višim razinama direktorije.
Ako imam sub imenik, foo, a touch 1 2 3-- pa sad ako rm * zvijezda,
uklanjanje cat1, cat2, dog1, dog2.
Ne mogu ukloniti foo.
To je katalog.
>> Dakle zvijezda proširuje na sve datoteke u imeniku.
Dakle, tehnički rm * kao što je rekao rm cat1, cat2, dog1, dog2, foo.
Dok rm-rf, tehnički zvijezda bi ostvariti ono što želimo, ali RM -rf--
ako odem iz toga katalog, rm-rf temp,
to će ići u temp i rekurzivno uklonili sve.
>> Pa star je odvojena u tome da Podrazumijeva by-- tako ovu stvar
da sam trčanje u, ova stvar da se mene pitajući za naredbe
a onda i radi izvršavanja ih, ja nazivam ovo moje ljuske.
I tako je to školjka je sama programa.
I ako sam htjela, ja mogao pokrenuti u / bin / bash.
Ljuska se zove bash.
I sada smo primijetiti nešto nešto malo promijenila,
a to je zato što moje postavke za ljuske su nešto drugačiji.
>> Ali sada sam tehnički sam trčanje ljuske u mojoj izvornoj ljusci,
i ja mogu napustiti taj oklop, a sada Vratio sam se u moj top level ljuske.
Svrha govoreći da is-- zvijezdu.
Dakle, zvijezda je nešto razumjeti bash.
Dakle rm-rf, rf zastava je razumjeti samo rm.
On zna da, kada vas proći rf koja vas
Želite da rekurzivno ukloniti sve datoteke bez navelo.
Zvijezda je nešto razumio by bash da kad kažeš rm *,
bash ne ide reći hej rm *, uklanjanje zvijezda.
Bash će reći rm * uklanjanje cat1, cat2, dog1, dog2.
To automatski će se proširiti sve datoteke u direktoriju.
>> A slično tilda je još simbol koji bash razumije.
Kad kažem cd ~, bash širi da je na kućnu imenik.
Ostala pitanja do sada?
U redu, tako da ćemo početi ide brzo.
>> Tab završetak.
Samo da ga baci vani.
Puno ljudi ne shvatite to postoji.
Dakle, ako sam tip cd Dow, ja želim ići u preuzimanja.
Ne trebate upisati nloads.
Ja samo mogu pogoditi Tab.
Dakle, priznaje da Dow je prefiks koji
ne odgovara ništa drugdje u ovom imeniku,
tako da će završiti za vas.
Sada mogu ući.
>> Također sam to rekurzivno.
Tako mkdir foo.
Idemo u foo.
mkdir bara.
Dakle, ide natrag u moj dom katalog, vidim preuzimanja.
Sada karticu opet udaranje, automatski će se popuniti u foo.
To je jedini katalog.
Karticu Udaranje opet, automatski će ispuniti traci.
Dakle, sad sam u (~ Preuzimanja / foo / bar).
>> Dakle, ovo završetak karticu, svaki put kad sam dobio to radno vrijeme,
i ja stojim nad nečije rame,
i oni će rm D-O-W-N-L-O--D-S, ja umirem.
Samo kartica, kartica, kartica, kartica.
Dakle, definitivno koristiti karticu.
A slično i dolje, puno ljudi
upravo to se dogodilo Nikada nisam udario gore i dolje.
To će proći kroz prethodna naredbe, pa ako ste upravo trčao nešto,
i želite ga ponovo pokrenuti, Samo držite se dok ne dođete do njega.
U redu.
>> Tako brzo, neke druge stvari.
Idemo natrag u temp.
Idemo stvoriti neke datoteke.
Dakle ovdje, ja sam samo ću navesti neke riječi.
pas, mačka, mijau.
Učinimo psa, ribe.
Tako sada rep je vrlo korisne naredbe koje
koristiti za traženje cijeloj datoteka za određeni tekst,
i tehnički možete napraviti stvarno složeni izrazi za njega odgovarati.
>> Pa evo, ako sam grep, a što Ne želim tražiti?
Recimo da sam u potrazi za mačke, i Želim pretraživati ​​sve ove datoteke.
Pa kako ja sve ove datoteke?
Star.
Tako je u jednoj datoteci, imam mačku.
Vjerojatno bih mogao imati nazvao je to nešto bolje,
jer to izgleda kao brojeve redaka ili nešto.
No, u jednoj datoteci imam liniju s mačkom.
U datoteci dva imam liniju s mačkom.
Tako sada mogu pogledati u datoteku jedne i vidim ah, taj file imala mačku.
Obavijest datoteka troje nije uskladiti jer mačka nije tamo.
Mogu grep za Meow.
Samo podnijeti dva ima Mijau.
>> Dakle, to možete kombinirati, Ponovno, za r, koji je
kao što sam rekao prije često znači rekurzivna.
I tako ja mogu doći ovamo, grep r za bilo primjer of-- ćemo urediti
ovaj je samo baciti mačku unutra.
Tako grep r za svaku instancu mačka u cijelom ovom direktoriju.
I to će rekurzivno Pretražite sve podmape.
Tako je u Baz, tu je mačka.
U temp / 2, tu je mačka.
A u temp / 1 postoji mačka.
Tako da je u potrazi unutar datoteke.
>> Sada možete koristiti nalaz.
I tako naći je konkretno o u potrazi za datoteke s traženim nazivom.
Tako ćemo napraviti nešto više.
Idemo u downloads.
Dodirnite dog1.
Dodirnite cat2.
Dodirnite cat_dog.
Dodirnite catcat.
>> Dakle, želim pronaći sve datoteke s psom u nazivu.
Tako naći, a za najdulji Vrijeme Nikada nisam sjetio
Kako pronaći radio, dok nisam napokon pročitati nešto što je napravio je to tako jasno.
Tako naći, automatski rekurzivna.
Vi ne morate proći -R.
Dakle, naći točku.
Nismo razgovarali o dot još.
Dok dot dot uvijek znači jedan imenik gore.
Dot uvijek znači trenutnu imenik.
Tako sam mogao rm -r točku u Isto tako ja mogu rm-rf *.
Na kraju su postići istu stvar.
rm-rf točka će ukloniti Cijeli trenutni katalog.
>> U redu, što ne želim raditi tamo.
Ali naći točku.
Tako rekurzivno pretraživanje struje katalog, a sada je sve
Nakon toga su hrpa zastava koju koristiti isključiti stvari od povratka.
Dakle, naći dot vraća sve ono što ga može naći od trenutnog imenika.
To su sve datoteke rekurzivno traži.
Vidjet ćemo neke od onih u sekundi.
>> No, u slučaju da se pitate kako sam to da, tako zapovjedništva K, u najmanju ruku
u mom terminala u Mac to samouvjereno.
Kontrola L općenito briše je za bilo kakve terminala.
Također možete upisati jasna.
A ako ste ikad dobili u čudan scenario--
to mi se dogodilo par time-- gdje su boje vaše upite
sve zabrljao, ili vam nisu u stanju vidjeti ništa
se upisali kada pišete, jer ponekad kao boja pozadine je postavljena
isto kao i boje teksta a sada ne možete vidjeti fontove.
Reset je nešto što jednostavno resetira da zadani crnoj podlozi,
bijela prsa, ili što god postavite ih.
>> Dakle, gdje smo stali?
Pronađite točku.
Dakle, sada je sve to prošlost Točka ograničava rezultate
na nešto što odgovara dao uzorak.
Dakle ovdje želim tražiti sve s imenom mačka.
Nemam ništa.
Zašto je to tako?
Pa, ja sam samo u potrazi za nešto s točno ime mačka.
Ako želim da se traži nešto da ima neki uzorak, a cat--
citati tehnički nisu potrebne, ali ja sam ih bacanje tamo.
Dakle, sada se nađe catcat, jer to je jedina stvar koja
ima neke proizvoljne Uzorak slijedi mačka.
Ja mogu staviti mačka *, a sada nalaze catcat, cat_dog, cat2,
jer to su sve stvari s mačkom na početku slijedi ništa.
Možete kombinirati.
Ako želite tražiti sve datoteke C da ste, možda vi * .c.
Mi smo blah.c ovdje.
Tako da je nalaz djela.
Možete pretraživati.
Ima cijela hrpa zastava za daljnje ograničenja.
I jedan na njih, recimo D.
Dakle zastarjelo.
Oh, to nije ono što želim.
Nije D.
Tip d.
Dakle pronaći točku - tipa d.
Pa što je to upravo učinio je sam u potrazi za sve datoteke u trenutnoj mapi
s A- d označava directory-- tipa katalog.
To vraća sve direktorije u trenutnom direktoriju.
A tipa F je sve regularno datoteke, svi non direktorije.
Dakle, to je samo primjer drugim načinima na koje
može ograničiti drugi pretragu nego samo ime datoteke.
>> Prošlo je 30 minuta.
Ipak ide.
>> ALLISON: Ja ću povjetarac kroz.
To će biti u redu.
>> ROB Bowden: Pa neke druge stvari.
Sada bang, uskličnik.
Tako da uglavnom means-- dobro, idemo vidjeti primjer.
Dakle! F, što se da učiniti?
Pa čini se da su ponoviti nalaz dot -tipa f.
Što je! G?
To samo grep -r mačka *.
Dakle bang možete koristiti ponoviti nedavno učinio naredbe.
Dakle, ako sam tip! Gre, to će se ponovno pokrenuti naredbe koja je započela s gre najviše
u zadnje vrijeme.
>> A možete vidjeti sve ove naredbe s poviješću.
Dakle, povijest.
To su sve Naredbe sam pokrenuti i danas.
A dobro, to nije doslovno ograničena do danas,
ali ja sam se samo to uređaja od danas.
To je vaš cjelokupnost povijest vašeg bash ljuske,
osim što prekida u nekom trenutku.
PUBLIKA: Što će se dogoditi ako to ne učinite Povijest [nečujan] zapovijedanja i pogreške
u rezultat i dalje će ispisati the--
>> ROB Bowden: Da, ako postoji Pogreška u jednoj od tih commands--
pa recimo, da je Naredba o pogrešci nije pronađen.
Još uvijek se pojavljuje u povijesti.
U redu.
Ostala pitanja o bilo čemu?
Dakle, to je prasak.
>> Sada, stvarno korisna naredba, čovječe.
Tako da vam daje Priručnik za određenu naredbu.
Pa recimo čovjek ls, pa to mi pokazuje ls.
Ona navodi sadržaj imenik.
I ovo je mjesto gdje vidim da postoji su ti razne zastave koje postoje.
Dakle, vidimo da je ls -l postoji ako smo pročitali da je. ls -l
daje mi tu cjelovit popis katalog s koji posjeduje datoteku,
veličina datoteke, modificirani datumom.
Dakle ls -a je još jednom da bi mogao zapravo koristiti nešto češće.
-al je moj najčešći zastava ovom prošlom ls.
>> Dakle -a, primijetiti da je dosta više datoteka nego samo ls.
ls -a.
Ono što je zajedničko svim tim datotekama?
Oni počinju s točkom.
Dakle, ovo je konvencija u Linuxu da datoteke koje počinju s točkom su skriveni.
Dakle, to samo znači da kad smo samo ravno ls,
ili smo u potrazi imenika pomoću tražilo ekvivalent, ili Windows
Explorer ekvivalent, da mi ne žele vidjeti te datoteke dot.
Oni su samo zagađuju pogled na stvari.
Dakle, oni su skriveni Osim ako izričito
zatražiti ih s nečim poput -A.
Dakle, ja mogu cd u .local, a ja vidim da je to samo po sebi katalog s
zajednički katalog, i aplikacije, i bla bla bla.
Dakle dot, datoteke oni su samo skrivene.
>> U redu, tako da druge važne one.
Imam par mogu preskočiti.
Ajmo brzo pravi razgovor o datoteku preusmjeravanje stvari.
Dakle, postoji cijeli kompleks serija stvari koje možete učiniti s njima,
ali samo da ih vidim, recimo, odjek.
Još naredbe.
Stvarno glupo naredbe.
Sve je to ipak za ispis ono što sam mu reći da.
Tako odjek zdravo.
To samo odjek pozdrav na zaslonu.
Pozdrav svijetu.
Odjeci Pozdrav svijetu.
>> Dakle, jedna naredba ili jedan simbol koji bash razumije
je to veći od simbola, i to je izlaz na simbol datoteke.
Dakle, ako izlaz sam to foo, tu je sada datoteka
zove foo, unutar što je Hello World.
Dakle, primijetite da kad sam jeka Pozdrav svijetu cijevi u foo,
nije odjek Pozdrav svijetu.
Umjesto toga ga je staviti u datoteku foo.
I još samo naredba ga baciti na vas, mačku.
To je jednostavan način da se jednostavno u potpunosti popis sadržaja datoteke
tako da ja ne moram otvarati tekst editor da bi je vidjeli.
Tako sadržaj foo datoteka su Pozdrav svijetu.
A što sam mogao mačka blah.c, je sadržaj toga.
>> Opet, to su naredbe koje, ne Očekujemo imate ih sve zapamtio.
Ideja je da ste ih vidjeli.
Možda radite nešto, a ti si
kao da sam bolestan od otvaranja ove datoteke.
Volio bih da mogu samo gledati na sadržaj jako brzo.
Ti bi mogao učiniti, a zatim osvrnuti i reći oh ja
zapamtite nešto slično što postoji, i to je mačka.
>> Tako da se ide u datoteku.
Sada ne postoji stvarno bilo dobro Primjer čitanja iz datoteke gostiju.
Što je nešto što traje nešto od standarda u?
Svaka jednostavna Linux naredbe?
Kada smo doći do njega, u paru tjedana svi piece-- dobro,
ovaj tjedan imate komad gdje se počnete uzimati podatke od korisnika.
I tako se obično upišete da je ulaz na tipkovnici.
Umjesto da upišete ulaz na tipkovnici,
umjesto toga možete cijev u iz datoteke tako da kada radite Mario, ./mario,
cijev s bilo koje datoteke, a koja će pokrenuti Mario programa.
Ne očekuju ulaz na tipkovnica, umjesto da je
Samo ću pročitati linije iz Foo datoteke.
>> Dakle, veći od foo ga stavlja u foo datoteka, a manje od foo
uzima stvari iz foo datoteke i koristi da se kao ulaz u ovom programu.
I samo da ga vidim, mi također mogli jeka foo bar Baz, a onda umjesto jednog
veći od, neka je učiniti dvije u foo.
Što to učiniti?
To samo dodaje na datoteku.
Dakle, umjesto da primijetiti, ako ja to odjek blah u foo a onda mačka foo, to je samo bla.
Dakle, kada se izlaz u datoteku ga, potpuno prebrisati tu datoteku.
Ako samo želite dodati, dvostruka [? greder. ?]
>> I prošle je cijevi.
Pipe dobiva mnogo kompliciranije, gdje to traje izlaz jedne naredbe
i uvlači u sljedeću naredbu.
Pa neka uobičajena stvar, povijest.
Dakle, uh, ne želim gledati na to.
Pokaži mi sve naredbe u mojoj povijesti gdje sam grep-ed za nešto.
Ne, to je zbunjujuće.
Pokaži mi sve naredbe gdje sam naći.
Sve nalaze naredbe koje sam ikada trčao.
>> Dakle, povijest.
Sada povijesti izlazi na zaslon ovaj popis naredbi,
ali ja ne želim Izlaz ga na zaslonu.
Umjesto da idem na njega cijevi u grep.
Tako ćemo grep za sve slučajeve nalaza.
Tako sada umjesto grep uzimanja ulaz, umjesto of--
grep je u mogućnosti da obrađuju kao input-- smo pomoću grep malo drugačije ovdje.
Dakle, umjesto upisivanja popis stvari koje smo htjeli tražiti
i rekao grep izvodi kao ulaz.
Dakle, ako ja jednostavno ne grep naći, to čeka me tip stvari.
Dakle mačka Pozdrav pronaći.
Pozdrav.
Pronađi.
Obavijest svaki put sam upisati naći prepoznaje da sam upisali nalaz.
Dakle, umjesto toga, će se Traži datoteke za pronaći.
>> Dakle, povijest se sada ide na Izlaz popis svih naredbi.
Mi smo stavljajući tu izlaz, a mi smo hranjenja da grep,
pa to je pljuvanje iz svi slučajevi pronaći.
Razlog zbog kojeg sam rekao da bih se zbunjujuće je li I-- je još uvijek zbunjujuće.
Ako sam grep za grep.
Obavijest to je prilično velik i uvijek prikazuje naredbu Upravo sam
ran, jer tu zapovijed sebi ima grep unutar nje.
>> U redu, tako da bilo kakva pitanja o bilo čemu?
I ja ću to prenijeti preko u ovom trenutku.
Nadam se da je ovo lijepa Pregled svih naredbi
da ne morate imati napamet, ali to čine
čvrsta 95% onoga što sam učiniti na naredbenog retka.
Također, imajte na umu da naredbenog retka Sama, bash je programski jezik,
pa kad dođete do njega, možda želite učiniti jako složene stvari.
I tako ima stvari poput petlje, i IFS, a sve one
da ćeš se naviknuti na sa svojim programskim jezicima.
Ali to je izvan Opseg ovog poglavlja.
U redu, tako da nema pitanja?
ALLISON: Ništa?
GABRIEL: Hoćete to--
ALLISON: Ja mogu to učiniti na minu, ako želite.
Možemo vidjeti što se događa.
ROB Bowden: Off Allison.
ALLISON: Woo.
Ti si teško čin slijediti, Rob.
Želite li mi se prebaciti s tobom?
Ili imaš, u redu.
Ja ću pokušati, a ne dosta biti dugotrajan tamo.
Da vidimo je li to volja raditi onako kako to želite.
Možda?
Haha!
Da.
>> Dakle Samo ću se vrlo brzo ići kroz varijable, petlje, uvjetne,
i malo na prevodilac.
Ako imate pitanja na bilo koje vrijeme, molim vas, prestanite me.
Ovi momci će me podsjetiti ponoviti Vaše pitanje u slučaju da ne zaboravim,
ali ne bi trebalo biti previše loše.
>> Dakle varijabli, da.
Mi nemamo jedan od vaših Scratch komada ovdje.
Siguran sam da većina od vas, ako je ste imali neku vrstu igre
koje ste stvorili s nule, imali ste pratiti nešto kao rezultat,
ili vrijeme, ili nešto slično.
Dakle, one svijetlo narančaste komadi koje vidimo postoji
samo su ispočetka oblik varijable, a vi ćete sigurno
se pomoću varijabli tijekom svoje programe.
Ako niste, nisam stvarno sigurni što radite.
>> Ali svejedno, velika stvar, definiranje varijabli.
Uz C svaki varijabla ima da ima tipa izjavio
pa sam ti dao vrlo Općenito jedan na vrhu.
Tako ćete imati svoj tipa, a zatim god
odlučite nazvati svoju varijablu.
Dakle, u ovom slučaju, vrsti u svom promjenjivom popisu.
>> Imamo tri primjera.
Char neke ocjene, od A, što je što
Siguran sam da svi žele da se u ovoj klasi.
Možete definirati više varijable na jednoj liniji
dok su svi istog tipa, što je naš drugi primjer postoji
gdje imate tri varijable x, y, i z.
Oni su sve pluta.
A onda također možete, u ova posljednja primjer s int rezultat i broj
timova, možete inicijalizirati ih tamo.
>> Tako je u srednjem primjeru gdje smo samo float x, y i z,
oni su još uvijek nije pokrenut.
Oni nemaju nikakvu vrijednost.
Ili su vrijednosti smeće.
A ako pokušate i koristiti ih, prevodilac će vikati na vas.
Morate i proglasiti i Inicijalizacija varijabli.
Tako je u ovom zadnjem jednom, radimo oboje.
Mi se izjavljuje varijable za rezultat i broj timova,
a mi smo ih inicijalizacije, dajući ih njihove početne vrijednosti 7 i 4
respektivno.
Cool.
Svi su dobro?
Strašan.
>> U redu, tako da neke konvencije.
Ako ste vi pročitali po stilu 50, te
su samo stvari koje bismo željeli za vas provesti u svom stilu.
Dakle smislene imena.
Ako počnete zovete stvari Samo x, y i z, naročito
kao što ste dobili u duže Programi, ti si
Vjerojatno će zbuniti sebe i biti
kao što je to varijabla koja se odnosi na.
Nemam pojma što to znači.
>> Dakle, ako je to značilo da se držite rezultat, nazovite to postići.
Ako je to značilo da se držite neki odgovor ili rezultat, dati mu ime kao što je to.
Za petlje, koje ćemo ući u sljedeći slajd,
jednog slova varijable su u redu.
ROB Bowden: I, J i K su samo konvencije za za petlje
da svatko ih očekuje zvati I, J, i k.
Možete nazvati them-- vidim red stupac ili redak poziva ponekad
za dva ugniježđene petlje, i to je također vrsta standardni.
Ali ja i j potpunosti razumio.
>> ALLISON: Da, ja i j si potpuno u redu.
Zbog jasnoće, kao u nekim od Vaših P skupova,
možda ima smisla da imaju više opisne stvari tamo jednostavno
pratiti njega.
Ali mislim da i, j, k, a mislim Velika većina nas svi koriste.
>> ROB Bowden: Uz njih konvencije, tako da stil je važno.
To je jedan od četiri osi na kojoj ste ocjenjuju,
i to je tako lako samo ići preko Vaš P postaviti na kraju i uvjerite se
da ne postoje stilske pogreške.
Tako bi bili sigurni da ste tabbing ispravno.
Provjerite jesu li varijable ime.
Ostavite neke komentare.
To je vrlo lako dobiti te bodove.
Vi ne morate razmišljati o ništa kako bi dobili te bodove.
Ne morate shvatiti ništa.
To je samo što ga čini izgledaju lijepo.
>> ALLISON: U stvari, mi ima stila 50, koji je
će vam reći gdje ste petljaju gore ako ste zabrljati gore na stil
te će vam reći točno ono što vam potrebno popraviti i kako ćete ga morati popraviti.
To je također samo dobro spomenuti da je politika tečaj
da, ako ste u uredu sati i tvoj broj je u neredu,
možemo odbiti pomoći što sve izgleda ljepše.
Dakle, početi u pravu, zadržati dosljedan stil,
ti si također samo će napraviti Vaši životi puno lakše kada
pokušavate proći ispravljanje.
Ako pokušavate odgonetnuti gdje ste nedostaje kovrčavu braće
i oni su sve više mjesta, da ste samo što svoj život teže.
Dakle, biti u skladu sa stilom.
Obećavam da ću učiniti vaš život lakšim.
To će učiniti naš život lakšim.
Svatko će biti puno sretniji.
I to je ono što želite.
GABRIEL: Vaša ocjena će biti veći.
ALLISON: Da, i vaša ocjena.
Ako vaš TF je poput tebe, tendira biti povoljna.
U redu, i onda samo Druga točka ovdje.
Dosljedan inicijalizacije.
Dakle, kao što smo vidjeli, možete proglasiti i inicijalizirati stvari.
Više varijable na istoj liniji.
Jedna stvar koju bi ti se sviđa ne učiniti je da se proglasi neke varijable
a ne ih inicijalizirati na istom linija koje su resetiranja drugima.
>> Dakle, u slučaju da se nema smisla uopće,
Ovdje imamo primjer gdje smo progla Ints
u varijabli četvrtine dimes i novčana jedinica,
ali četvrtine i novčana jedinica nemaju početnu vrijednost.
Mi ih nismo inicijalizacije, ali usred tamo
smo već inicijalizacije dimes na 0.
Pa bilo to četvrtine, deaktivira, novčana jedinica.
Ili četvrtine jednak 0.
Dimes jednaka 0.
Penija jednak 0, ili što god one početne vrijednosti.
>> Velika je stvar sa stilom, biti dosljedan.
Kada su u nedoumici, biti dosljedan.
Ali slijedite naše stil vodič previše.
Cool.
Svatko dobro tamo?
>> PUBLIKA: Gdje je stil vodič?
ALLISON: Stil Vodič je on-- što je web stranica?
>> GABRIEL: Mislim da je manual.cs50.net/--
ALLISON: stil?
>> GABRIEL: Stil.
Yep.
>> ALLISON: Da.
Dakle pitanje, gdje je u stilu 50.
manual.cs50.net/style.
Da?
>> PUBLIKA: Ako smo definiranja varijable, je li u redu
ako smo stavili kao [nečujan] kao int rezultat i onda int cilj.
Tako će vam reći da sada imamo dobio ih definirati zajedno?
>> ALLISON: Dakle pitanje, trebao imate viška koda
kada se definiraju varijable kao što su int rezultat i
na sljedećoj liniji int igri?
ROB Bowden: Tu su definitivno slučajevi gdje je suvišan broj je loše.
Ne bih uzeti u obzir da je suvišan broj.
Ja gotovo nikad ne proglasi višestruki varijable na istoj liniji ikad.
A ako ništa, to je zato što Obično odem nekakav komentar
objašnjavajući što varijabla za.
Dakle, ja ću reći int ocjene kose crte udarac.
Prati god.
U ukupnom slash udarac.
Dakle, to je mnogo Grosser na taj način staviti ih sve na istoj liniji.
Upravo sam ih nikad stavio na istoj liniji.
>> ALLISON: Osjećam se kao da je osobnih preferencija u ovom trenutku.
>> PUBLIKA: Da li to ići za petlje i stvari previše?
ROB Bowden: Kao unutra?
Kao int ja jednak 0 zarez duljina iznosi nešto?
To nemate izbora.
Sa za petlje inicijalizacije part-- tako da možda samo vidjeli
int ja jednak 0 zarez i manje od god zarezom ja plus plus.
To int i = 0, tehnički također možete
učiniti ono što smo vidjeli prije sa zarezom sintakse.
int ja jednak 0 zarez j iznosi 3 zarez k jednaka 5.
Vi nemate izbora za Split da se u više redaka,
i to je standard.
Vidjevši to je u redu.
ALLISON: Strašan.
Pa, praktično prikazali u petlje.
Tako da, ovdje imamo neke primjere od petlje da ti dečki vidjeli u ispočetka.
I naravno, sve to mogu samo biti ponovno u C.
A oni u osnovi vam omogućuju ponoviti neki dio koda
do određenog stanja zadovoljen, koje ćemo
dobili u pravu nakon razgovora oko petlje s uvjetne.
>> Dakle, imamo tri glavne vrste.
Jer, dok je, i to vrijeme, koji je svi će proći kroz upravo sada.
Dakle, prvi je za petlje.
Tako je za neke stanju, izvršiti ovaj blok koda.
Imamo ovu cool mali dijagram ovdje na dnu.
Ali u osnovi imate u Vaš za, kako prvoj liniji,
idete Inicijalizacija varijabli.
>> Dakle, kao što smo razgovarali o tome, ja se jednak 0 ili jednak 10.
Što god je potrebno da se promjenjiva da se to
će se vratiti u tvorničke tamo, proglasio i inicijalizacije do neke vrijednosti.
Pa onda imamo neke stanje koje se događa
da provjere naše promjenjiva protiv nečega.
Tako je u slučaju tipičan slučaj u kojem Možda želite ovaj dio koda
izvršiti pet puta.
Dakle, imali bismo int i = 0, a mi želite da bude kada sam je manji od 5.
Dakle, taj uvjet je samo će provjeriti da svaki put.
Ako taj uvjet true, to je
ide za pokretanje koda, što je točno Što ovaj mali dijagram pokazuje.
>> I tako ga izvršava.
To ažurira varijablu, što je ono što vidimo
U posljednjem dijelu svoga na petlje inicijalizacije tamo.
Dakle, to će samo zadržati to dok se taj uvjet nije ispunjen,
i onda će izlaz petlje i dalje
kreće na s ostatkom vašeg programa.
Svatko dobro tamo?
Cool.
>> Pa evo primjer, vrlo sličan nešto sam upravo govorio.
Dakle, mi samo želimo ispisati ovo je CS50 10 puta.
Dakle, vidite ovdje imamo naša za, a onda smo
inicijalizirati varijablu ja bude jednak 0.
Naš uvjet provjerava da je manje od 10.
Tako procjenjuju da vrijedi kada smo prvi put start, a zatim ažurira našu varijablu
svaki put da se zapravo izvršava i ispisuje to je CS50.
I da će prekinuti nakon 10 puta.
Cool.
>> Dakle, dok su petlje do sljedećeg.
I kao što vidite ovdje, upravo smo neka dok je ovaj condition-- pitanje?
>> PUBLIKA: Kako mogu skočiti zapravo ne samo jedan broj,
ali dva broja [nečujan] I plus plus plus?
>> ALLISON: Dakle, pitanje je kako možeš ažurirati svoj varijablu više od jedne
u isto vrijeme.
Tako sam plus plus će Ažuriranje po jedan svaki put.
Ako ste htjeli da je ažurirati dva, što bi mogao činiti ja plus 2 jednako.
>> ROB Bowden: Jeste li vidjeli plus jednako u predavanju još?
>> PUBLIKA: [nečujan].
>> ALLISON: To je učinkovito Ista stvar kao i ja jednako i plus 2.
Dakle, to će ga uzeti i ga ažurirati po dva svaki put.
Plus jednaka je samo nešto zovemo sintaktičke šećer.
ROB Bowden: Da, oni postoje prilično mnogo sve aritmetički operatori.
Tako sam puta jednaka do će udvostručiti broj.
j podjela iznosi 3 je ista kao j jednak j podijeljen s 3.
>> ALLISON: Ili minus iznosi 2 bi opadanje ja po dva svaki put.
ROB Bowden: Čak mod jednaki.
Niste vidjeli bitovni operatori, ali znak za umetanje jednako i znak za struju iznosi,
svi oni postoje.
>> ALLISON: Pa mnogo puta, pogotovo sa svojim prvim P skupova,
ćete se vjerojatno povećavati strane jedna, pa sam plus plus, j plus plus
su sve stvari koje idete se obično se koriste.
Ali to ažuriranje stanje potpunosti unutar vaše kontrole.
Možete ga ažurirati bilo kakvim koracima ili na bilo koji način da se odlučite.
Možda čak želite da bude slučajni broj ponekad.
Ali da, postoji mnogo stvari koje možete učiniti s tim.
Niste ograničeni na i plus plus.
>> ROB Bowden: Samo da vas Znam da postoji, ona također
postoji u drugom obliku, plus plus ja.
Dakle, ako ste ikada ste u potrazi na internetu i dogoditi da vidim plus plus ja,
prilično puno znači istu stvar.
ALLISON: Cool.
Dobro?
Strašan.
Dakle, dok petlje.
Vrlo slično.
Imate neki uvjet.
Glavna stvar za primijetiti Ovdje je, umjesto da
Tri različite dijelove postaviti, imamo jednu.
Mi samo imamo neke uvjete koji je se provjerava.
I na isti način, sve dok da je uvjet true,
Vaš broj će se pokrenuti.
A ako je lažna, to će prekinuti, potez
na sljedeći dio vašeg programa.
Dakle, ovo je vrsta like-- što je Dobar primjer za provjeru
neko normalno stanje?
GABRIEL: Dok je istina.
ALLISON: Vi mogli učiniti dok je istina.
Pa, 1 je jednak 1.
>> ROB Bowden: Možete napraviti while-- Samo umjesto korištenja za petlje,
uvijek možete kodirati za petlju u while petlji
pa sam veći od 0 ili Dok sam manje od 10.
>> ALLISON: Strašan.
A onda smo učiniti dok petlje, koja je super za korisnika vrednovanje, gdje
želite dobiti nešto od Vaš korisnički, vidi ako je valjana,
a zatim nastaviti od tamo.
Dakle, jedna od stvari koje treba znati je s učiniti dok je u tome što će se izvršiti,
a onda će ponovno izvršiti ako je ispunjen taj uvjet.
>> Tako je vjerojatno najbolji način da to učinite je samo vidjeti primjer ovdje.
Dakle, kao što sam upravo spomenuto, korisnika valjanosti stvarno useful--
ili učiniti dokle su stvarno korisne korisnika validacije.
Dakle, to samo ide ponovno potaknuti neke korisnika
dok uđu pozitivan broj, što bi moglo biti korisno za svoju P set
ovaj tjedan.
I tako u ovom slučaju, kad smo početku pokrenuti ovaj program,
to će ispisati unesite pozitivan broj.
To će dobiti neki unos od korisnika,
i onda će provjeriti ulaz se protiv stanja
koje ste postavili za to.
>> Dakle, u ovom slučaju to će provjeriti.
To će reći, u redu, je naš ulaz negativna,
ili je 0 ili negativan, koji će biti nevažeći.
Pa onda bi ponovno brz.
Pitanje?
>> PUBLIKA: Je li to isto onda kao dok petlje i ako samo kopirati taj kod
i staviti ga [nečujan] while petlja?
>> ALLISON: Dakle, pitanje je bi ovo biti isti kao samo neko vrijeme
petlje, ako smo bili samo kopirati while petlja gore.
Dakle, u ovom slučaju, vaše vrijeme petlja će provjeriti stanje na prvom mjestu.
Dakle, u ovom slučaju, ako ćemo suditi pisati samo kao while petlji
što će reći vrijeme ulaz je manje od jednog.
Ali nemamo ulaz za njega.
>> PUBLIKA: Ako vas [nečujan] while petlja uključujući tu šifru,
ali onda nosile kôd iznad while petlje također.
Upravo ste imali ovaj kod [Nečujan] while petlja.
ALLISON: Bilo bi ista stvar, da.
Dakle, vi samo mogli write-- umjesto da do-- da.
GABRIEL: Ali to je elegantnije.
ALLISON: Da, to je elegantnije.
Možete dobiti u dizajnu i sitnica, ali da, možete se potpuno učiniti.
Ima li još pitanja?
U redu, u redu.
>> Tako smo razgovarali puno o uvjetima sa svim tim petlje koje imamo,
tako da smo zapravo uzimajući u uvjeti u Boolean izraza.
Opet, koristite ove u C, pa samo vrsta prelazaka
više od grafičkog sučelja zapravo kodiranja.
>> Cool, tako da jedan veliki, ako je.
Uglavnom samo nam omogućuje uvođenje neke logike u naš program i provjeriti
sys uvjeti.
Dakle, u ovom slučaju, u redu, n je veći od 0?
Da je to, tako da možete izvršiti ovo.
To je samo provjeru neke uvjetom da ste
postaviti, što mislim da smo svi ugodno s provjere uvjeta.
Cool.
Dakle, ako ostalo je vaša druga, možete reći u redu, ako je to istina,
učinite to prva stvar.
Inače sam ti želim zadana i raditi nešto drugo.
Kao u ovom slučaju, možete ili pokupiti pozitivan broj ili negativan broj.
Imate samo dvije mogućnosti.
Morate se izvršiti bez obzira na to onoga što korisničke ulaza.
Tako da mogu reći dobro, to je veći od 0?
Cool.
Ispis pozitivan broj.
Ako to nije, ispisati negativan.
Svi su dobro?
>> A onda jedna stvar prepoznati je da, ako je zadovoljen ako je uvjet,
inače nikada ne će izvršiti.
Samo jedan od njih neće izvršiti na vrijeme.
Tako da je trgovina off.
Vi ne bi imati oboje.
Ili ste prvi uvjet.
Ili ste, ako ili drugo, ne oboje.
Koji onda može napraviti stvari još kompliciraniji,
jer možete učiniti ako, drugo je, a onda ostalo.
Dakle, u ovom slučaju, mi imaju tri uvjeta.
I opet, samo jedan od njih je će završiti se izvršava.
Dakle, možda se pitate dobro, što ako vas
ima nešto što može zadovoljiti dva od njih.
Možda ono što ste unos ispunjava oba uvjeta
jer ako i drugdje, ako.
Jedina stvar koja će pokrenuti
>> ALLISON: Čim se nađe nešto da ispunjava uvjet za to
true, to je ono što to će pokrenuti i ništa drugo.
Dakle, ako ste imali je taj broj između 0 i 5 za svoj prvi,
ili je to broj između 3 i 5 za drugo, ako dio,
i unesete number-- Rekao sam 0 i 5 and-- 4.
To će pogoditi prvi.
To će reći OK, ovo Broj je između 0 i 5.
Izvršite i ostaviti.
Ona nikada neće pogoditi drugu opciju.
Cool?
Strašan.
>> U redu imamo switch izjave ako je Želite li dobiti još još mnogo toga i ispričavam se,
Prekidač je sljedeći.
Ja sam uzimajući ispred sebe ovdje.
Opet, ako je višestruki blokova gdje je kao što sam upravo rekao
je čim naći stanje koji je upoznao i ako inače ako drukčije,
to ostavlja.
Ako trebate provjeriti više stvari, ti si
će htjeti iskoristiti ovu, jer to će provjeriti svaki put ovdje.
Dakle, ovo će se izvoditi kroz te ako da je veći od ili jednak 90,
to će ispisati to.
I to će se izvoditi kroz te provjeriti svake pojedine od njih.
>> PUBLIKA: Dakle, to bi bilo više lud od [nečujan].
Bi li to biti kao [nečujan]?
>> ALLISON: Pitanje je bi to bilo lud ili to učiniti ono što želite.
To stvarno ovisi o tome što želite iz svog programa.
>> PUBLIKA: Mislim kao i ako ste stavili u 90.
ALLISON: Ako stavite 90--
PUBLIKA: [nečujan].
GABRIEL: Ti ćeš dobiti dvije stvari.
ALLISON: Ti ćeš dobiti dvije stvari.
Da, dva.
>> ROB Bowden: Dvije?
>> ALLISON: Ne.
>> ROB Bowden: Četiri.
Ako stavite 90, to će vam reći dobio peticu, imaš B, imaš C,
imaš D.
>> PUBLIKA: [nečujan].
ALLISON: Tako je.
Tako sam ovisi o tome što žele od vas programa.
Ponekad vam je potrebno provjeriti više stvari.
Vi ćete dobiti puno dublje u ono što Dobar dizajn je kao i ti ići naprijed.
Važna stvar za shvaćaju da je to
će provjeriti sve četiri uvjeta ovdje.
Dok ako bi to bilo, ako drugo, ako drukčije ako je drugo, to bi pogodio da je prvi slučaj,
to će ispisati imaš A i biti učinjeno.
>> ROB Bowden: Čak i ako mi odlučio promijeniti to, ako
i veći ili jednak 90, i ako je veći od ili jednak 80,
i manji od ili jednak 89, ako n je veći od ili jednak 70,
i n manja ili jednaka 79, tako da će biti točna.
To će učiniti ono što želimo, ali to još uvijek provjerava svaki je.
>> Dakle, dok je u prvom scenariju, ako se ući sa samo 90 ako je drugo, ako drugo, ako,
i ulazimo u 90, a zatim to će ispraviti.
To će provjeriti prvi jedan, ispis imaš A,
preskočiti sve, jer je to već pronašao jedan koji radi.
Svi slučajevi su međusobno isključivi na temelju, ako drugo, ako inače ako.
Dakle, to će izvršiti Prvo ako je, onda se to radi.
To će ići do kraja.
>> Dok ako promijenite da je to ono što sam bio
govoreći s manje od ili jednako 89.
To će provjeriti prvi.
To će ispisati.
To će provjeriti drugu.
To se neće ispisati.
Provjerite treći.
Ne ide na ispis.
Provjerite četvrtu.
Sada će se ispisati.
Dakle, u tom slučaju, ako je drugo verzija, jer su ti slučajevi
se međusobno isključuju, to je bolje koristiti, ako drugo, ako drugo, ako,
jer to će imati manje provjera uvjeta
od ove verzije.
ALLISON: Strašan.
Dakle, još jedna stvar što možemo to je prekidač izjave.
Uglavnom izjavu prekidač traje u nekim varijable,
U ovom slučaju to je n, a određuje kojem slučaju izvršavati.
Dakle, to je također jedan gdje su ti slučajevi trebao biti neka vrsta međusobno isključuju.
Dakle, u tom slučaju, ako mi smo dobili jedan, to je
će odgovarati što god to variable-- god vrijednost n
je jedan od tih slučajeva, pa 1, 2, ili 3, i ispisati odgovarajuću liniju.
>> A onda, ako primijetite ovdje imamo i zadani,
koje možete of misle kao vaš drugi.
Dakle, ako odaberete bilo koji drugi broj osim 1, 2 i 3, u ovom slučaju
to je samo tiskanja nevažećim.
Odlučivanje kada koristiti IFS odnosu ako je drukčije u odnosu na prekidače ide
biti nešto što ti dečki će vidi dizajn mudar kao što počnete pisati
složeniji programi, te da nema tvrdih i brzo pravila
kada ih koristiti.
To stvarno ovisi o kontekstu.
>> ROB Bowden: I samo da ga baci vani
jer je ugodnije poglavlje.
Prekidači, oni imaju tendenciju da be-- tako da ste ograničeni
u broju načina na koje Možete ih koristiti, jer oklijevanja,
stanje može biti prilično koliko sve što želite.
S prebacuje slučajeve moraju biti brojevi,
ili tehnički mogu biti znakova, ali znakova, kao što ćemo vidjeti, samo su brojke.
Dakle, oni moraju biti brojevi, ali se mijenja stvarno učinkovitije nego ako
drugo ako je drugo, ako, jer čak i uzimanje primjer before-- dobro,
ocjena primjer čini dobro.
>> Pa recimo ovdje, mi umjesto toga napraviti to što je, ako drukčije, ako inače ako scenarij.
Dakle, ako je n jednak jednak 1, ispisati ste odabrali mali broj.
Ako je drugo, ako je n jednak jednak 2, ste odabrali srednje broj.
Inače, ako jednaki iznosi 3, visoka.
Inače nevažeći.
>> Pa recimo da je naš scenarij.
Pa recimo da ulazimo 4, tako da očekujemo nevažeća.
Način da ako inače ako drukčije ako je pristup ide na posao je
provjerava prvi uvjet.
Nije zadovoljan.
Tako smo provjerili drugi uvjet.
Nije zadovoljan.
Provjerite treće stanje.
Nije zadovoljan.
Dakle, idemo na drugo i ispis nevažeći.
>> Način na prekidač radovi je li to sastavlja prema dolje
u ono što ćemo pozvati skok stol.
Glavna ideja biće da kada uđete 4,
to može odmah otići na zadanu.
To ne treba provjeriti jesam li slučaj 1?
Nope to nije to.
Slučaj 2?
Nope.
Slučaj 3?
Nope.
Zadani.
U redu, to mora biti tamo gdje sam žele, a zatim izvršiti to.
Ne, to se odmah skače na zadani.
Ili da ulazim 2, to je Odmah će ići u 2
bez potrebe da ide kroz slučaj 1.
>> Dakle, na taj način, realno danas da je
Ne toliko od dobitka učinkovitosti.
Obično računala su prilično brzo, a to nije tako velika.
Ali, to je slučaj da prekidači su brži.
Ako ste stvarno pokušavamo optimizirati, koristite prekidač.
>> ALLISON: Cool.
I onda imamo trostruki operatera.
Tako da znam što sam spomenuo ranije Riječ sintaktička šećera.
Dakle, to je samo stvari koje čine Vaš kod mnogo koncizan.
Dakle, ovo je jedan od tih slučajeva.
>> Dakle ternarna operator upitnik debelog crijeva kao što smo vidjeli u liniji nizu
a jednak je n veći od 100 upitnik visoka debelog niska.
Tako je u osnovi kako se to radi je to n veći od 100 je stanje.
Dakle, mislim da to može imati smisla.
To je kao da pitate pitanje.
To govori o, n veći od 100.
Tko zna?
A ako je ta vrijednost Istina, to će vam dati
Prva stvar koja je na popisu nema, što je visoka.
Inače to će vam dati niska.
Dakle, ovo je samo jako jednostavan i učinkovit način da se ne sviđa, ako drugo.
To je sve to.
>> A ako smo napisati to kao drugo, ako uvjetno,
da bi se, ako je n veći od 100, vratiti visoka.
Inače, povratak niska.
Ovo je samo još mnogo toga jezgrovit način pisanja.
>> ROB Bowden: Dakle, ovaj primjer je, kad god radite nešto
ovako, ovo je uzorak gdje sam koristiti ternarnih vrlo često.
Dakle, nismo razgovarali o opsegu, ali, ali Mrzim vidim String s zarez.
Ako je n veći od 100, a jednako visok.
Inače, s jednako niska.
Tako da uzorak, tih pet linija koda doslovno 100% vremena
može se prenijeti u što bio tamo s ternarna.
Dakle ternarna, jedna linija koda.
Ako je drugo, pet.
To je primjer ukazujem kako svakom pojedinom trenutku.
To bi sjajno mjesto za ternarnog operatora.
To je tako čisto.
No, ljudi imaju tendenciju da nikada ne koristiti.
>> ALLISON: Uzmi ga daleko Gabeu.
>> GABRIEL: Pa sad vi svi naučio u predavanju ovaj tjedan
da je sve u Računalo je binarna, zar ne?
Baš kao lampi ovdje.
Možete biti uključen i isključen.
A po svemu, mislim doslovno sve.
Neke brojke i znakova, i žice, pa čak i kod koji ste napisali, kada
to dobiva sastavio stroj broj i stvari kao što je to,
tako da sve se svodi na 0-a i 1 '.
>> I tako, kada imamo posla s brojeva koji
je nešto što je tehnički vrlo jednostavna, trebali bismo biti u mogućnosti napraviti stvari
kao što ih je dodao, što je vjerojatno jedan od najjednostavnijih stvari
možete učiniti za dva broja, zar ne?
Dakle, zbrajanje i oduzimanje radi samo kao što se to radi u decimalnom zapisu,
osim ovdje je binarna, zar ne?
Tako da je u bazi dva.
Dakle, dodajte 1 plus 1.
To daje 0, a 1 prenosi.
I upravo bi taj događaj, tako da sada dolazi još zanimljivo pitanje.
>> Znamo kako to predstavlja sve pozitivni cijeli brojevi u računalu,
no budimo to vježba.
Pretvarajte se da ste vi svi u 1960 ili nešto pokušava stvoriti računalo,
i morate doći do mjesta način skladištenja minus 1,
na primjer, bilo koji ili minus broj za tu stvar.
Kako bi ste to učinili?
Bilo koji ideja?
Samo bacati bilo što u meni.
Da?
>> PUBLIKA: [nečujan] odrediti Posebno ako je vaš [nečujan].
>> GABRIEL: Možete odrediti Poseban malo, koji će biti 0 ili 1.
Recimo jedan ako je to pozitivno a 0 ako je negativan.
I onda ostatak malo je samo pohraniti broj.
Cool.
Dakle, to je vrlo dobra ideja.
Imamo, ne znam, 200.
A ako prvo malo je uključen, onda je plus 200.
Ako je isključen, što je minus 200.
Cool.
>> Postoji samo jedna mala Problem s ovim,
koji je, ako ćemo pokušati Ukratko stvari.
Pa zamislite imamo 11.111 ovdje, a mi smo zbrajanjem ovo sa 00.100 god.
Ako oni dvojica su pozitivni, to je u redu.
Ali onda, ako jedan od ih je negativan, kao što
recimo da je ovo malo ovdje je onaj koji je odgovoran
for-- ću napraviti separate-- tako da je ovo jedan znači da je taj broj ovdje
pozitivna.
To znači da ova jedna broj ovdje je negativan, zar ne?
>> Ali onda kada si će ih Ukratko, vi
potrebna ako izjavu govoreći oh, ako je to 0,
onda moj suma će biti nešto drugo, zar ne?
Dakle, postoji nešto više pametan način da to učinite
da, što se naziva dva komplement.
Tako je u osnovi ono što mi to je definiramo minus 1
da se stvar da ako Dodamo do 1 daje nam 0.
Dopustite mi da ponovim da.
Pa recimo da je ovo ovdje je 1.
Što je ono što naravno, u brojeva
dodao da to nam daje 0?
Što ako ćemo pokušati ga dodali na ovaj broj?
Idemo have-- redu, pa neka je dodati.
Mi ćemo imati 1 plus 1 0, a onda prenosi.
A onda ćemo dobiti 0 opet.
Ja sam dobivanje zbunjeni.
I ti ćeš dobiti 0 i 0 i 0 i 0 i 0 i 0.
Mnogo 0 godina.
>> Na posljednjem jedan, nismo će biti u mogućnosti to prenijeti,
jer recimo imamo samo bave s jednim bajt, tako da samo 8 bitova.
Dakle, ono što računalo radi po defaultu samo zaboravlja da je [nečujan]
OK?
Dakle, to je ono što se zove Dvojica komplement.
Mi jednostavno definirati minus 1 do bude stvar ovdje da ako ste dodali da na 1
će vam dati 0.
I to je prilično cool jer mi stvarno ne
potrebno kasno za provedbu različite vrste zbroja
ovisno o tome je li to negativan ili pozitivan broj.
Znači li to smisla?
>> Dakle, jedna stvar koja nam je činiti Ovdje bi se pretvoriti
između pozitivnog i negativnog broj onda se možemo okrenuti sve,
a onda smo dodali 1 do tog broja.
Ako pokušate to učiniti sami na komad papira,
ti ćeš vidjeti da ima smisla.
Ali ako uzmem taj broj ovdje, ovo je pet.
Dakle, ako sam okrenuti sve ovdje, pa 1, 1, 1, 1, 1.
Flip, flip, flip.
A onda dodam 1 do njega.
Ja ću imati točno minus 5.
OK?
>> Ova vrsta ima smisla, jer ako te pokušati sumirati to s brojem
koje smo imali prije, što was-- ćemo okrenuti to opet.
Bilo je 101, a puno je 0.
Ako pokušate dodati tih dva broja zajedno,
ti ćeš imati točno 0.
U redu.
Bilo kakva pitanja?
>> PUBLIKA: [nečujan]
>> GABRIEL: Što misliš?
>> PUBLIKA: Negativno se Pozitivan [nečujan].
>> GABRIEL: Ne, flip i dodate 1 uvijek.
Da.
U redu, tako da likovi također kodirani izvršne datoteke.
Imamo ASCII tablicu, kao i vi Također vidio u predavanju, zar ne?
Dakle, to je u osnovi mapiranje stvari.
I tu ja ne mogu dovoljno naglasiti da za računalom, a 65
doslovno ista stvar.
Dakle, ako napišem nešto poput char c jednak, mogao sam u isto vrijeme
samo pisati 65 ovdje, i to bi biti isti, u redu?
Nema nikakve razlike.
>> Mi obično imaju tendenciju da se stavi likovi u varijabli tipa.
Char, ne zato što su oni u biti napravljen za to, nego zato
ljudske konvencije.
No, možete jednostavno nositi s cijelih brojeva umjesto varijable tipa char,
a vi ćete biti u redu.
Jedina stvarna razlika između char c i int i
je da int ima četiri bajtova u većini sustavi, a char ima jedan bajt.
Oni su u biti Ista stvar u smislu podataka.
Pa što će se ispisivati ​​ovdje?
Ovdje smo ispisa znamenku pomoću printf s plus 1, a baš kao i brojeva,
znakova mogu zbrajati, tako znakovi mogu se sažeti.
Dakle, to je točno 65.
Tako će biti 66, a ovdje imamo
65 plus mali minus veliko, što će biti, ne znam.
No, to će biti upravo jaz između slovima
a i manja slova, tako ćemo dobiti je mala, zar ne?
Da.
Dakle, to će se ispisati lik koji je upravo ova.
Dobro?
Bilo kakva pitanja?
>> Ovdje imamo hrpu različitih Tipovi za numeričke varijable.
Već smo razgovarati o int.
Float je samo način na koji to-- ovo je stvarno smiješno, jer kad sam prvi put saznao
programirati natrag u dan s Python, sam ikad prvi program
pokušao napisati, vidio sam da je Tip se zove i zove tipa float.
A plovak je za sve realne brojeve.
Pa onda sam pitao zašto bi Sam ikada koristiti int onda?
Jer ako ja mogu koristiti sve realni brojevi s plovak,
Ja bih samo prestati koristiti Ints, zar ne?
Jer pravi brojevi su baš kao i više općenito.
>> Ispada da je to Nije slučaj u računalima
jer oni su u biti različite stvari.
Dakle, brojeva i kola, operacije koje radite s njima
bitno razlikuju jer načina na koji su pohranjene, u redu?
Idemo razgovarati malo malo više o tome u sekundi.
>> Tako je samo dvaput veća plovak.
Obično u većini sustava, plutaju je četiri bajta, baš kao i int.
I dvaput je osam bajtova.
Dugo dugo je zapravo samo simbol da li dodati tipu poput int.
Kažeš dugo dugo int ovako.
Dugo dugo int x to napraviti više.
Tako je u većini sustava, koji će dati bajtova osam umjesto uobičajenih četiri.
A što zapravo može pasti u, tako da mogu samo reći dugo dugo,
i da radi previše, u redu?
Također možete raditi druge stvari kao što su unsigned int, ili opet samo nepotpisani
će također raditi.
I to bi bilo x varijabla kao i sve što je pozitivno,
tako da zapravo ne mogu imati negativan Brojevi na način na koji smo vidjeli ovdje.
Dakle, slijedi divno pomičnim zarezom i preciznost.
To je jedan od razloga zašto vas želite koristiti Ints umjesto kola,
jer Ints su 100% precizni, zar ne?
To je upravo taj broj.
Za plutajuće točke, ako vas kažu odgovor jednak 1 preko 10--
Ja se dogoditi da se to točno Program ovdje, float.c.
To ispisuje do 20 decimalnih mjesta.
1 podijeljen s 10, a to Obično je 0,1, zar ne?
Ali ovdje ako napravimo plutaju, a onda smo ga pokrenuti,
vidimo da to nije točno 0.1.
To je 0,149 nešto.
>> A zašto je to tako?
Zato što zapravo ne može predstavljati svaka Jedan mogući realni broj u memoriji
jer postoje uncountably mnogi od njih.
Tako smo tehnički samo u mogućnosti predstavlja konačnu količinu njih
s konačnim količinom podataka.
Ali, to je stvarno zanimljivo.
Sada to moli Pitanje kako što bi
ići oko zastupanje ovo s bitova, zar ne?
Pa kako se spremaju pluta?
Uz brojeva bilo je lako.
No, s plovcima želite kako bi se povećala raspon,
a vi želite biti u mogućnosti da predstavljaju veliki brojevi i vrlo maleni brojevi poput
0.000001 istovremeno.
Pa opet, ista igra.
Se bilo tko imati bilo koji ideja kako bismo mogli ići oko zastupanje plutaju u sjećanju?
Samo bacajte ništa.
Da, molim te.
>> PUBLIKA: [nečujan] kao ako je dva Ints i jedan
što [nečujan] i jedan biće sve nakon decimalne točke.
GABRIEL: OK, super.
Dakle, dva različita prirodna broja.
Možete imati 12,45, tako da je 12. i 45.
Lijepo.
Što ERE ćeš reći?
Ista stvar?
Da?
>> PUBLIKA: [nečujan] zapis gdje se odvojiti bazu.
>> GABRIEL: Znanstveni zapis, Da to je obično ono što se događa.
Dakle, to je ono što se zove kazaljka.
To je ono što je zapravo broj, a zatim eksponent
je samo gdje zarez je, zar ne?
Dakle, to će biti nešto obrasca 1, 2, 3, 4, 5 puta 10
na minus 4.
Upravo sam shvatio that-- Da, točno.
A onda je to 10 na minus 4 je će definirati gdje zarez je, u redu?
U Brazilu koristimo zarez.
Evo ti dečki koristite točku.
Dakle, točka.
>> I to je super, jer onda možete usredotočiti puno vaših bitova na ovim tipom
Ovdje, na kazaljka, a zatim da je će biti vaša stvarna preciznost.
A možete to učiniti bilo u decimale ili u binarnom sustavu zasnovanom.
Postoje različiti načina kako provesti ovo.
Pitanja?
Da?
PUBLIKA: Koliko mjesta nakon decimale [nečujan]?
>> GABRIEL: To je komplicirano pitanje, jer to nikad nije 100% precizno,
jer kao što vidite ovdje, za neke brojeve da je 100% precizno.
Vjerujem da ako stavimo 0,5 ovdje to će biti 100% precizan.
To će biti 0,500000.
Dakle, u tom slučaju, to je idealno.
No, u drugim slučajevima, to je mnogo manje savršena.
Po mom iskustvu, kao i do četiri, pet decimalna mjesta je prilično precizan.
Ako koristite dvostruka, to će biti put precizniji od toga, u redu?
>> ROB Bowden: Dakle, samo baciti neki više kontekst u kola,
Nikad ne zaboravite 100% koliko je spec od kola zapravo radi,
ali ja si uvijek sjećati kako pluta počnete dobivanje neuredan.
Dakle, ideja je da kada se stvarno, stvarno velike brojeve ili jako, jako
mali broj, počinjemo sve gore i gore
na razlikovanje između dviju bliskih plovcima.
>> Pa kako ja volim razmišljati o tome je s pomičnim zarezom nepreciznosti,
postoje dva pluta da ako sam pokušati ih navesti
u ° C, bez obzira na činjenicu da oni su različite brojeve,
oni će biti tumačiti kao istim brojem,
jer mi ih ne možemo pohraniti drugačije.
Moramo koristiti iste bitova.
I tako kad smo dobili jako, jako veliki broj,
govoriti kao 10. na 300 ili nešto, što je u tom trenutku
da 10 do 300 ili 5 puta po 10 do 300
Ne može se razlikovati od 7 do 10 puta u 300.
Dakle, to je prilično velika razlika između dva broja.
>> A onda, kada se spustite do normalnog raspona stvari,
imaju tendenciju da se prilično dobro razlikovanje.
I onda kada se spustite stvarno mali, ste također uzimajući prilično loše opet.
Dakle, kao što je cijela hrpa 0,0000, to dobiva prilično loše.
GABRIEL: Da, tako brzo bilješku.
Nikad to učiniti.
Nikad ne pokušati usporediti lebdi pomoću jednakima jednaka,
jer čak i ako oni su gotovo Isto, gotovo isto nije isto.
Dakle, ono što se obično učiniti je oduzmete ih, uzeti apsolutnu vrijednost koja,
i vidjeti ako je to manje od 0,0001 ili nešto slično, u redu?
I super.
Znam puno ljudi ima Neki pozadini u Javi,
posebno oni koji su radili AP računalnih znanosti, zar ne?
A Java je jezik koji se uglavnom temelji na C,
ima nekoliko vrlo velike razlike.
No, za petlje, i oklijevanja, i stvari kao što su da, oni su svi isti sintaksu.
Imam nekoliko programa ovdje pokazati ovo.
>> Tako na primjer, jednostavno Pozdrav svijetu.
To je zdravo svijet u C, koji vam Dečki su definitivno poznaju,
i ovo i to je jedna u Javi.
Tako je u Java imamo ovo javne klase, halo svijet,
a public static void Glavni i gudački argumenata.
String argumenata idu da se pojavi u C vrlo kratko.
Ali nemojmo ići još tamo.
Trenutno imamo praznina ovdje, što znači da je glavna ne poduzimati nikakve argumente.
I onda imamo Sustava, a to je
vrsta ekvivalent za printf.
Ovdje mi stvarno ne treba crticu n, jer ispisa ln to radi za vas.
Ona dodaje se crticu n na kraju linije.
>> Ali ako idete u nešto kao za,
Možete vidjeti da su oni prilično ista stvar.
Dakle inicijalizacije, a stanje i ažuriranje
is-- sam propustio prostor here-- oni prilično ista stvar, osim Java
ima za još nekoliko stvari na visokoj razini.
Ovdje možemo učiniti plus sam i Java će automatski
čine ovaj sam ovdje, što je cijeli broj, u nizu,
a zatim dodajte dvije žice zajedno.
Ovdje u C moramo učiniti i% d.
Linija ovdje, za izgleda baš isto.
>> A ako gledamo li, IFS Također izgledaju točno isto, zar ne?
Dakle, pravi velike razlike u onim stvarima koje vidite ovdje.
Javna statična, praznina, i zatim javne klase, ako.
Dakle, Java je ono što je zove virtualni stroj.
I to je vrlo teško na temelju onoga naziva objektno orijentirano programiranje,
što je vrlo, vrlo čest paradigma za programiranje danas.
I ova klasa stvar je ono što vidite, nešto od objekta orijentacije,
je li stvoriti klasu, a zatim vam mogu izvući predmete iz te klase.
Nećemo se previše govoriti toliko o tome da je u CS50,
ali to je definitivno nešto stvarno cool,
pogotovo ako želite otići u sofisticiraniji web development
na kraju se, naravno, kao i podnijeti svoj konačni projekt
i neke lijepe okvire i stvari.
>> Tako je u osnovi ideja je da vas Ne želim ponovno provesti nešto,
tako da napravite nešto što je vrlo općenito, kao i oblik,
a zatim stvorite različiti oblici od njega,
i od svake od ti oblici, te stvoriti
neki više specifičnih oblika u tri dimenzije ili nešto slično.
I oni imaju tu hijerarhiju Oni naslijediti od one druge, tako da
sve funkcije i sve varijable koje Veliki oblik ovdje ima, sve to
će imati, a sve su to će imati, i tako dalje i tako dalje.
Dakle, to je osnovna ideja.
>> C nema, ali C ++ nema tu vrstu značajku.
I Java pod velikim utjecajem strane objekta orijentacije,
pa zato što vidite Klasa ovdje cijelo vrijeme.
A druga stvar je to Java virtualni stroj.
Dakle, ovo, mislim da je jako pametna ideja.
Dakle, ono što su ljudi koji su izumio Java učinio je
oni nisu htjeli sastaviti svoj kod dvaput
ako su ga pokrenuti u sustavu Windows, ili Mac ili Linux, pa što im je činiti
je doslovno pokrenuti nešto poput aparata,
ali stvarno ne vidim što se događa.
Tako su pokrenuti virtualni stroj unutar računala, koji je
je u osnovi kao što je Mini operativni sustav.
I to operativnog Sustav je svrha u životu
je samo pokrenuti ono što se zove bajt koda.
>> Dakle, umjesto u C, na način na koji bi sastaviti to učiniti ako se, a zatim pokrenuti
./if.
Zaboravio sam crticu u.
U Java, što će učiniti prvi Java C da ga sastaviti, if.c.
Nije C. To je točka java.
A onda morate pokrenuti ne ./.
Možete dobiti ovu novu datoteku if.class, ali ne može stvarno
pokrenuti if.class sada samo kao što smo učinili prije.
Ovo nije izvršna.
Morate pokrenuti.
Morate ga hraniti u Program pod nazivom Java,
i da program je virtualni stroj, a onda radite if.class, ili ako.
Da.
I onda se to radi.
U redu tako da je ovo vrsta virtualni stroj događa.
C ne da, pa ako bih stavi ovaj program u sustavu Windows stroj,
to ne bi išlo u C. U Java to radi.
Pitanja?
Cool.
To je, ako za super odjeljak za danas.