>> ROB BOWDEN: Jedná sa o pohodlnejšie časť,
ale to neznamená, že ak máte pocit, že nie ste pohodlnejšie
budete tu nie sú učiť veci.
Tak poďme začať.
Máte zábery ísť priamo do veci.
Som asi len vziať práve teraz?
Prepínanie notebookov.
>> ALLISON: Nechcete, aby predstaviť seba, Robe?
>> ROB BOWDEN: Oh, ja som Rob.
To je môj piaty rok TF-ing CS50.
>> GABRIEL: Som Gabriel.
Som vedúci TF na CS50.
Bol som TF vlani a tento rok.
ALLISON: A ja som Alison, a to je môj druhý rok TF-ing CS50.
>> ROB BOWDEN: Tak jo, tá vec na ľavej strane,
Dúfam, že som to nevidel.
Ak tomu tak nie je, pretože vás stiahnite si ju pre seba,
mali ste to vidieť v prednáške.
Tak toto je CS50 zariadenie, a to robil niečo z opisu toho
v prednáške.
Ale v podstate je to len vy používate operačný
Systém priamo vo Vašej prevádzke systém, takže vám môžeme dať
programy bez nutnosti strach, oh to je
bude pracovať v oboch systémoch Windows a Mac, alebo v prípade, že niektorí z vás
sú už používate Linux, Linux.
Je to len má byť spoločné hranie
pole, takže každý má rovnaký presný prostredie.
>> Takže ak nemáte stiahnuť to už,
by ste mali stiahnuť, pretože ste bude potrebovať pre problémové sady.
A to je dve GB k stiahnutiu, takže môže chvíľu trvať.
Na Harvarde to pôjde rýchlo.
Tak CS50 spotrebiča.
>> Teraz na začiatku, budeme hovoriť o len banda príkazového riadku
veci, a to tým, že mám na mysli prácu V tomto malom prostredí tu.
A všimnite si všetkých vecí Hovorím tu práve teraz
budú fungovať, ak ste vo vnútri terminál vo vnútri spotrebiča,
alebo ak ste vo vnútri okno terminálu gedit
vo vnútri spotrebiča.
Takže tieto prostredia sú identické.
>> Ale ja idem tretiu cestu.
A všimnite si, tu to dole málo IP adresa tady.
Takže nemusíte mať to urobiť, ale to IP
address-- teraz, ak Já-- okrem je to blokované tejto veci.
OK, takže IP adresa viac ako v termináli
here-- takže tento terminál cez Tu je terminál v mojom počítači Mac.
Takže toto nie je v žiadnom prípade v súčasnosti spojená so spotrebičom vôbec.
A ak ste na Windows, potom ste bude musieť stiahnuť niečo
špeciálne pre to, najmä ľudia majú tendenciu používajú tmely, P-U-T-T-Y.
>> Takže to, čo budem robiť, je typ SSH a potom, že IP adresa.
No, jharvard na tejto IP adrese.
Tak 192.168.24.220.
Táto desivá správa, ignorujte ju.
Stačí zadať áno.
To je CS50 v krabici.
Sa spýta na heslo.
>> A tak v mnohých z týchto kontextoch kde sa spýta na heslo [nepočuteľné].
Máme veľa otázok, kde hovorí, že to nie je vlastne písať.
Nie je vám ukázať znaky heslo pri písaní, ak vôbec niečo,
pre funkciu zabezpečenia, pretože ak niekto sa pozerá cez rameno
a vidí star star star star, potom sa
viete, že vaše heslo je štyri znaky.
Takže myšlienka je, že sa bude pýtať od vás vaše heslo, typ.
Nebude to ukázať budete znaky,
ale to je vlastne prijatie.
V tomto prípade, kedykoľvek vám niekedy videl výzvy na zadanie hesla
zaoberajúca sa spotrebičom, Heslo bude červený.
Tak karmínovo.
>> A teraz tu vnútri tejto okno, ktoré je v mojom počítači Mac,
Ja som v podstate s presne rovnaký pohľad
ako vnútri terminálu v spotrebiči.
Takže nemusíte to urobiť.
Môžete to urobiť všetko, čo Ak vo vnútri spotrebiča.
Skoro som vlastne nikdy robiť niečo v prístroji.
Aj takmer vždy minimalizovať, že teraz Pracujem SSH do prístroja.
>> Keby nič iné, ak máte máte pomalšiu počítač,
môžete zaznamenať rozdiel.
Robím to preto, že som radšej toto okno terminálu.
To má niektoré funkcie, ako je Aj možno rozdeliť okno,
a teraz môžem SSH cez spotrebiča.
Dostal som dva SSH sa deje naraz.
Ak je váš počítač je obzvlášť pomaly a pracujete v zariadení,
a uvedomíte si to Naozaj LaGGy, čokoľvek.
Má tendenciu byť oveľa rýchlejší ak ste SSH-ed v.
Ale inak môžete pracovať v oboch smeroch.
>> Divákov: Čo SSH znamená?
>> ROB BOWDEN: Secure škrupiny, niečo také?
Čo SSH znamená?
GABRIEL: Secure shell.
ALLISON: Je to len Secure Shell.
ROB BOWDEN: Secure shell.
Je to protokol, ktorý you-- je to zabezpečený protokol, takže šifrované.
Ľudia nemôžu odpočúvať sieť a čo hovoríš na čokoľvek
ste SSH-ed na.
A v skutočnosti, v dávny dni CS50, takže v roku 2009
keď som bol v prvom ročníku, tak, že ste pracovali na CS50 problémové súpravy,
Bol ste SSH-ed na nejaké servera že sme dali prístup k,
a pracoval tam.
Takže ste nemal tento grafické zariadenie.
Nemusel si gedit.
Nemusel ste všetky tieto veci, ktoré môžete vizuálne bod a kliknite na tlačidlo.
Vy ste mali pracovať v tomto rozhraní.
Dávam prednosť práci v tomto rozhraní.
Takže časť toho, čo budeme sa bude v priebehu práve teraz
sú banda Príkazy, ktoré by ste mali
začne sa zoznámiť s čo pochodu v priebehu.
A úprimne povedané, akonáhle sa zvyknúť si na ne, je to
je tak oveľa rýchlejší práce v tomto prostredí
ako to je pracovať s nálezcu, ťahaním a kliknutím veci.
>> Tak sme tu.
Teraz už len SSH-ed in, a tak Predvolené vás location--
videl niektoré z týchto príkazov v triede, ale pôjdeme cez všetky z nich znovu.
Predvolené umiestnenie sme v je domovský adresár.
A adresár, rovnako iný výraz pre zložku.
Takže sme v domovskom adresári.
Typ LS, zoznam súborov v tomto adresári.
Zrejme som vytvoril blah.c skôr.
Takže máme adresár na ploche.
Všimnite si zvýrazňovanie syntaxe?
Svetlo modrá zvýraznenie indikuje adresár a rovný biely
označuje len obyčajný súbor.
Takže tam sa bude niektoré ďalšie farby, ktoré vidíte.
Spustiteľný súbor je pravdepodobne bude byť zelené alebo niečo také.
OK, takže sme v domovskom adresári.
>> Teraz, keď chcem ísť do inej adresár, cd je príkaz chcem.
Takže zmeniť adresár, a potom odovzdať názov adresára
že chcete ísť do.
Takže tu máme štyri možnosti.
Môžem ísť na sťahovanie, a teraz vidíme, tu to je aktualizovaná to vsuvka
povedať, že som v ~ / k stiahnutiu.
>> Takže to, čo je tilda?
Je to skratka pre domovský adresár.
Takže takmer všetko, čo urobiť, je ísť na byť s ohľadom na vašom domovskom adresári,
a pwd je len príkaz Ja používam raz za rok, že
len vypíše aktuálny adresár.
A tak tu vidíte, že ~ / Sťahovanie naozaj rieši
do / home / jharvard / k stiahnutiu.
Tak / home / jharvard je môj domovský adresár.
>> Takže môžeme cd dot dot.
Teraz dot dot je špeciálny adresár, ktorý vždy odkazuje na úroveň vyššie.
Takže keď som v ~ / sťahovania, potom cd bodkou bodka sa chystá, aby ma na vlnovku.
Čo si myslíme, cd dot dot bude, aby ma teraz?
Je mi to prinesie do / home.
Takže Tilda tlačou pracovného adresára, Som teraz / home / jharvard.
o úroveň vyššie z toho, Teraz hovorí, že tu / home.
>> Teraz cd dot dot.
Teraz som v koreňovom adresári, a môžete to urobiť znova.
Budete jednoducho zostať v koreňový adresár navždy.
Koreňový adresár má veľa veci, ktoré, ak sa chcete pozrieť na,
môžete.
Napríklad, keď som ísť do koša, ktorý obsahuje
všetky tieto binárne súbory, ako napríklad ls, a CD, a všetky tie veci.
Takže tieto príkazy potrebujú existuje niekde v systéme,
a to je v adresári / bin.
Ale takmer všetko, čo robíte, je bude z vášho domovského adresára.
A cd bez akýchkoľvek argumentov, by sa dalo povedať cd ~, nemusíte.
cd sa chystá, aby vás späť do svojho domovského adresára.
>> Jedna posledná.
cd - bude vás vráti späť do posledný adresár, ktorý ste v.
Tak som cd'd dvakrát za sebou, tak my posledný adresár bol domovský adresár.
Ak idem na lomítko bin, a teraz poďme hore a do používateľa.
Užívateľ podiel.
Poďme do užívateľského akciu.
Teraz som teraz v užívateľskom akciu.
CD -, späť do zásobníka.
Takže sa to dostane obzvlášť užitočné keď have-- a to bude prepínať.
Takže užívateľského podielu, zadné priehradky, podiel bin.
>> Tak toto dostane užitočné.
Môžete nájsť sami s mnohými, veľa, veľa vnorené adresáre.
A chcete niečo urobiť naozaj rýchlo v hornej adresára.
Idete do tohto adresára, skontrolujte, zmeny a veci ako to,
a teraz chceš ísť späť na miesto, kde ste boli.
cd -.
Ja som vždy sklamaný keď som sa náhodou ísť
do tohto adresára I chcel robiť prácu.
Vždy som si frustrovaný, keď som to urobil to v dvoch krokoch namiesto jedného kroku,
pretože to znamená, že CD - sa deje aby do tejto prechodnej umiestnenie
Miesto, kde chcem ísť.
>> Vidíme teda všetky súbory v zozname.
Vieme, ako sa dostať okolo tak ďaleko.
Takže teraz poďme hovoriť o editáciu súborov.
Takže v tomto kurze, ste skoro vždy očakáva, že budú gedit.
Ak chcete, môžete si vziať ďalší krok a začnite sa učiť text príkazového riadku
editor.
Takže existujú rôzne možnosti.
>> A tie, ktoré sú pravdepodobne Bude pre vás relevantné,
máme Nano, Vim, Emacs a.
Takže Nano je pre začiatočníkov príkazového riadku textový editor.
Takže Nano poďme na blah.c som vytvoril skôr.
Je to práve táto norma C súbor.
A vidíte, veľa vecí deje v spodnej časti obrazovky,
a zrejme blah.c obsahuje tento kód C.
>> Takže v tomto konkrétnom editore, to, čo hovorí na bottom--
Teraz tento symbol strieška, Vidíme to ^ G, ^ x, ^ O.
Tak, že takmer vo všetkých kontext, ktorý vidíte,
môžete vidieť, že symbol striešky v ďalšie miesta on-line, na pretečenie zásobníka,
niečo také.
Je takmer vždy sa odkazuje na kontrolu.
Takže ukončiť chcem robiť Control X. Control X, ukončí.
A môžem používať svoj šíp klávesy pre pohyb v okolí.
Všimnite si nemôžem bod a kliknite na tlačidlo rýchlo.
Musíte použiť šípky klávesy pre pohyb v okolí.
Tam by mohlo byť nastavenie bod a kliknite na tlačidlo.
>> Ale poďme urobiť nejaké zmeny.
Teraz Control X ísť exit.
Bude to hovoriť zmenený buffer.
Teraz je výzva, y pre áno, n pre ne.
Control C pre zrušenie.
Budem len povedať, že áno.
Meno zapísať súbor.
Predvolené nastavenie je súbor že už je.
Stlačte kláves Enter.
OK.
Teraz som len upravil tento súbor, chytá, a to sa zmení.
>> Takže Nano je najjednoduchšie textový editor zvyknúť.
Alternatívy sú Vim a Emacs.
Tí, ktorí sú textové editory vyššej úrovne ktoré majú veľmi strmé krivky učenia.
Takže moje osobné preferencie je Vim.
A má širokú škálu možností.
A akonáhle si zvyknete na to, už nikdy nebudete
ísť do akejkoľvek inej textový editor, pretože ste práve
toľko vecí pre vás k dispozícii v týchto,
ale to sa naozaj dlho sa učiť.
Takže možno si len chcete vynútiť si teraz zvyknúť na to,
ale povedal by som, že to stojí za to.
Ale je to ťažké.
>> A potom Emacs.
Vždy som bojovať v Emacsu, pretože Ja viem, ako to urobiť vôbec nič.
Zrejme Emacs nie je v predvolenom nastavení nainštalovaný na zariadení.
Budeme asi dodať, že ako predvolené zariadenie.
Akonáhle sa naučíte jeden z Vim alebo Emacs, je tu
žiadny presvedčivý dôvod niekedy učiť druhej,
ale je to úplne iný štýl.
OK, takže to editáciu textových súborov.
>> Divákov: Ak ste sa zasekol vo Vim práve teraz, ako to we--
>> ROB BOWDEN: Existuje viac režimov v Vim,
a tam sú celá návody na učenie Vim.
Takže ak ste náhodou v režime vkladania, aby
na zadanie textu, ktoré si môžete zadanie, ktoré rôznymi spôsobmi,
ale aj je, ako sa dostať do režimu vkladania.
Alebo dostať sa z akejkoľvek zvláštne režim, ktorý ste v, len útek.
A práve bash Escape dostať z prípadných vnorených režimov vaše v.
Len OK, teraz som späť v normálnom režime.
>> A tak v normálnom režime, hrubého čreva.
Môžete vidieť, že sa objaví v dolnej časti.
A potom q.
Takže q ukončí, ak ste vykonali zmeny, ktoré Já-- som vykonal zmeny?
Urobil som zmeny zrejme.
Takže ak ste vykonali zmeny, bude to povedať si môžete dať výkričník.
Budem to nazývať rana.
Takže si môžete dať zákaz len opustiť bez toho, aby robili niečo,
alebo hrubého čreva WQ ušetrí a ukončite.
Tak w všeobecne je napísať.
Takže zapísať súbor.
Dokážem písať a ukončite.
Alebo môžete mať len QX slam, q bang len
dostať von bez ohľadu na o všetkých zmenách, ktoré ste vykonali.
>> Dobre, tak teraz poďme go-- môžeme vytvárať súbory.
Začnime mazanie súborov.
A ja si len hodiť do jedného rýchle nový príkaz, kliknite na.
Takže dotknúť foo.
Dotykový bar.
Dotknite sa baz.
Ak ls Aj teraz vidíme, že tieto súbory existujú.
Sú to úplne prázdna.
Takže touch je len jednoduchý spôsob, ako jeden, [nepočuteľné].
Dva, technicky len stáť to, že aktualizuje časové pečiatky.
Takže každý súbor, ktorý vytvoríte má časová pečiatka s ním spojené.
Takže Baz bol vytvorený na 14 septembra v 16:21.
Teraz je 16:22, takže ak Znovu som sa dotknúť baz sme
vidieť, že Baz bol najviac nedávno zmenená na 16:22.
Ale inak som skoro nikdy pozrite sa na časové pečiatky na súbory.
Tak kontaktu, tu som len pomocou to vytvoriť niekoľko rýchlych súbory.
>> Dobre, tak teraz rm je príkaz, ktorý nám záleží tu.
A môžeme rm vypískať.
Povedzme, že odstránenie pravidelné prázdny súbor vypískať.
A môžeme písať y, a teraz je to Odstráni.
rm Baz.
Odstrániť pravidelné prázdny súbor Baz a typ n pre ne.
Teraz to nie je odstránený.
Tak bar a baz stále existujú.
Foo je preč.
GABRIEL: Hovor.
ROB BOWDEN: Skvelé.
Tak nepríjemné správy tu, odstráňte pravidelné empty--
Čo to robíš tam dole?
Odstrániť pravidelné prázdny súbor.
Takže ak nechceme byť Vadí tejto správe,
môžeme hodiť v tomto -f vlajka, a tak to je sila.
A teraz keď som rm -f, že to nebude povedať si, že chcete odstrániť tento súbor.
Bude to jednoducho urobiť.
A ls, nevidím bar tam už.
>> Teraz, keď je potenciálne nebezpečný príkaz.
To nebýva príliš zlé.
Vrátime sa do druhej, ako to môže dostať naozaj nebezpečné.
A poďme vytvoriť nejaký dočasný adresár.
mkdir, iný príkaz.
Takže mkdir je príkaz že je adresár.
A teraz ls vidíme tento pekný svetlo modro zvýraznené dočasný adresár.
Môžem CD do temp.
A môžem mkdir foo.
cd do foo. mkdir bar.
cd do baru.
>> Vidíme teda, môžeme ľahko dostať do pekne hlbokej vnorenia.
Teraz, ako mám odstrániť adresár?
rmdir.
Takže keď som sa rovno skúsiť rm, ako sme to urobili s pravidelným súboru
rm bar sa chystá povedať nemožno odstrániť bar.
Jedná sa o adresár.
Je tu špeciálny príkaz pre odstránenie adresára, druh.
Tak rmdir bar.
Teraz bar je preč.
>> OK, takže rmdir som skoro nikdy použiť.
Dôvodom being-- Teraz sa poďme vytvoriť obyčajný súbor bar tu.
Tak rmdir boo.
rmdir.
Nepodarilo sa odstrániť foo.
Adresár nie je prázdny.
Takže nemôžete použiť odstrániť dir na Adresár, ktorý má veci v ňom.
>> Takže máte niekoľko možností.
Môžete ísť do tohto adresára, odstrániť všetko ručne a potom vyjdú
a rmdir adresár.
To samozrejme znie nepríjemné.
Čo keď sú tisíce súborov v tam?
No, mohol by si rm *.
Porozprávame sa o * v druhom.
To v podstate znamená, všetky tie veci.
Ale ešte lepšie, tak rm -r.
Takže rm -r-- v mnohých kontexty, -r znamená rekurzívne,
ktoré budeme hovoriť o tom, čo rekurzívne prostriedky v niekoľkých týždňov.
Ale je to v podstate znamená posuv celistvosť tohto adresára
a odstrániť všetko.
>> Takže rm -r foo bude hovoriť zostúpiť do adresára foo?
Áno.
Odstrániť pravidelné prázdny súbor foo / bar?
Áno.
Odstráňte adresár foo?
Áno.
Takže teraz foo a všetko v nej bola odstránená.
>> Teraz, keď môžete získať obzvlášť nepríjemné when-- poďme dotknúť 1, stlačte tlačidlo 2, stlačte 3.
Môže mať veľa súborov.
Keby som chcel, mohol by som vytvoriť tisíce súborov tu.
A rm -r foo sa deje byť dosť nepríjemné.
Áno, áno, áno, áno, áno, áno.
S oveľa viac súborov, ktoré rýchlo zistiť, koľkokrát
Budem musieť písať áno.
No, práve sme videli skôr, ako môžeme zbaviť nutnosti písať áno, -f.
Takže mkdir foo foo cd touch 1 2 3.
OK, tak rm -rf foo bude slepo odstrániť úplne foo.
Žiadna výzva.
No nič.
Foo je preč.
>> Tak mám tendenciu použiť Príkaz po celú dobu.
To znamená, že, že je veľmi nebezpečný príkaz,
pretože keby som niečo také to, nebude to výzva.
Bude preč.
A to sa stáva dosť často, a dokonca aj na vyššej úrovni kurzov UO.
Niekedy sa uvidíme niečo, kde niekto
hovorí, že som omylom naše rm rf-ed môj domov adresár a všetky moje P súpravy je preč.
A je to zničujúce, ale nie je odpadkový kôš.
Neexistuje nič pre vás získať.
Je to proste preč.
Ešte horšie by bolo niečo ako rm -rf /.
Tak sme len diskutovali že koreňový adresár.
To si myslia všetci súbory na vašom systéme.
Veci majú tendenciu byť dosť chaotický pri odobratí veci ako ls,
a CD, a všetky z nich.
>> Divákov: Aký je rozdiel medzi RM, rf, a rm *
ROB BOWDEN: Takže rm * -
>> ALLISON: Otázka je to, čo je Rozdiel medzi RM, rf a rm *.
>> ROB BOWDEN: Tak rm *.
Hviezda všeobecne znamená, že všetky Obsah tohto adresára.
Snažím sa myslieť na druhej spôsoby ukazuje hviezdu.
No, hrať vlastne všeobecne znamená, zodpovedajú akémukoľvek vzoru.
Takže ak mám súbor s názvom dog1, dotknúť dog2, stlačte CAT1, dotknite sa kategórie 2.
Takže ls * 1 bude tlačiť CAT1 a dog1, pretože to hviezda môže byť vyplnená
v with-- je potrebné, aby sa tam, ale hviezda môže byť buď mačka alebo pes.
Je to divoká karta.
To je slovo, Zháňam.
Divoká karta.
Alebo by som mohol ls pes *, a Ja mám vidieť dog1, dog2.
Takže tie sa zoznam súborov ktoré zodpovedajú konkrétny vzor.
Môžete použiť ls týmto spôsobom.
>> Ls * hviezda zápasu nič.
Takže to bude tlačiť všetky Obsah tohto adresára
pretože všetky ich priradenie.
To nebude tlačiť čokoľvek v hornej úrovni adresárov.
Mám Ak podadresár, foo a dotknúť 1 2 3-- tak teraz, ak rm * hviezdičkou,
odstrániť CAT1, kategória 2, dog1, dog2.
Nemožno odstrániť foo.
Jedná sa o adresár.
>> Tak hviezda expanduje na všetky súborov v adresári.
Takže technicky rm * je ako tvrdiť, že rm CAT1, CAT2, dog1, dog2, foo.
Vzhľadom k tomu, rm -rf, technicky hviezda by dosiahnuť to, čo chceme, ale rm -rf--
keď pôjdem z toho adresár, rm -rf temp,
že pôjde do temp a rekurzívne odstrániť všetko.
>> Takže hviezda je oddelené v tom, že Je zrejmé, by-- tak túto vec
že bežím na to, čo ktorá je výzvou pre mňa príkazy
a potom sa vykonávania a robí je, hovorím to môj shell.
A tak to shell je sám program.
A keby som chcel, som mohol bežať v / bin / bash.
Shell sa nazýva bash.
A teraz sme si všimli niečoho mierne zmenil,
a to preto, že moje nastavenia shell sú trochu odlišné.
>> Ale teraz som technicky beh shell v mojom pôvodnom obale,
a môžem opustiť tento shell, a teraz Vrátil som sa k môjmu najvyššej úrovni shellu.
Účelom hovorí že je-- hviezdu.
Takže hviezda je niečo, rozumie bash.
Takže rm -rf, -rf vlajka je rozumie len rm.
Vie, že keď vás prejsť -rf, ktoré vás
chcem, aby to rekurzívne odstrániť všetky súbory bez výzvy na potvrdenie.
Hviezda je niečo pochopil, o bash, že keď hovoríte rm *,
bash nebude hovoriť hey rm *, odstráňte hviezdičku.
Bash sa povie rm * odstrániť CAT1, kategória 2, dog1, dog2.
Je to automaticky bude rozširovať všetky súbory v adresári.
>> A podobne tilda ďalšie symbol, ktorý bash rozumie.
Keď sa povie cd ~ bash rozširuje že do vášho domovského adresára.
Ďalšie otázky tak ďaleko?
OK, takže budeme začať chodiť rýchlo.
>> Dokončenie Tab.
Stačí hodiť to tam.
Mnoho ľudí nie realizovať tento existuje.
Takže keď som typ cd Dow, I chcem ísť do sekcie downloads.
Nepotrebujem písať nloads.
Môžem len hit Tab.
Tak uznáva, že dow je predpona, ktorá
nezodpovedá nič inde v tomto adresári,
tak to bude kompletný, že pre vás.
Teraz môžem vstúpiť.
>> Tiež som robiť, že rekurzívne.
Tak mkdir foo.
Poďme do foo.
mkdir bar.
Takže ísť späť do môjho domu adresáre, vidím súbory na prevzatie.
Teraz kartu znova biť, automaticky chystá vyplniť foo.
Je to jediný adresár.
Kartu znova biť, automaticky chystá vyplniť baru.
Takže teraz som v (~ k stiahnutiu / foo / bar).
>> Tak toto doplňovanie pomocou klávesy TAB, keď som sa dostal do pracovného času,
a ja som stál nad niečí rameno,
a idú rm D-O-W-N-L-O-D-S, umieram.
Len kartu, kartu, kartu, kartu.
Kartu tak určite použiť.
A podobne a dole, veľa ľudí
práve to sa stalo nikdy hit hore a dole.
Bude to prejsť predchádzajúce príkazy, takže ak ste práve spustili niečo,
a chcete ho spustiť znova, len držať, až sa dostanete k nej.
OK.
>> Tak rýchlo, niektoré ďalšie veci.
Poďme späť do temp.
Poďme vytvoriť niektoré súbory.
Takže tu, ja som len ísť na zoznam pár slov.
pes, mačka, mňau.
Poďme robiť psa, ryby.
Takže teraz rep je veľmi užitočné príkazy, ktoré ste
slúži na vyhľadávanie v celom súbory pre konkrétny znení,
a technicky môžete urobiť naozaj komplexné výrazy pre to, aby zodpovedala.
>> Tak tu, keď som grep, a to, čo chcem vyhľadať?
Povedzme, že som hľadal mačky, a Chcem vyhľadávať všetky tieto súbory.
Tak ako to mám urobiť všetky tieto súbory?
Hviezda.
Takže jeden súbor, mám mačku.
Asi som mohol mať volal to niečo lepšie,
pretože to vyzerá ako čísla riadkov alebo niečo.
Ale v jednom súbore mám linku s mačkou.
V súbore dvoch mám linku s mačkou.
Takže teraz môžem pozrieť do jedného súboru a vidieť ach jo, že súbor robil mať mačku.
Oznámenia súbor troch nebolo uzavreté pretože mačka nie je tam.
Môžem grep pre mňau.
Podať iba dve má mňau.
>> Takže to môžete kombinovať, opäť, s -r, ktorý
ako som už povedal skôr často znamená rekurzívne.
A tak som si sem hore, grep -r pre of-- akékoľvek inštancie poďme upraviť
tohle len hodiť mačku tam.
Takže grep -r pre každú inštanciu mačka na celom tomto adresári.
A to bude rekurzívne vyhľadať všetky podadresáre.
Takže Baz, je to mačka.
V temp / 2, je to mačka.
A v temp / 1 tam je mačka.
Tak to je vyhľadávanie v súboroch.
>> Teraz môžete použiť tiež nález.
A tak si ich konkrétne o hľadať súbory s krstným menom.
Takže poďme sa ešte viac.
Poďme do sťahovania.
Dotknite dog1.
Dotknite sa kategórie 2.
Dotknite cat_dog.
Dotknite kočkakočka.
>> Tak som chcel nájsť všetky Súbory sa psom v názve.
Takže nájsť, a najdlhšia Čas nikdy som si spomenul
ako nájsť pracoval, až som nakoniec prečítajte si niečo, čo je tak jasné.
Takže nájsť, automaticky rekurzívne.
Nemusíte prejsť -r.
Takže nájsť bodku.
Nehovorili sme o bod ešte.
Vzhľadom k tomu, dot dot vždy znamená jednu úroveň vyššie.
Dot vždy znamená aktuálny adresár.
Takže som mohol rm -r bodku Rovnako tak môžem rm -rf *.
Nakoniec sa dosiahnuť to isté.
rm -rf bodka sa chystá odstrániť Celá aktuálny adresár.
>> OK, ktoré nechcem robiť tam.
Ale nájsť bodku.
Tak rekurzívne prehľadať aktuálne adresár, a teraz je všetko
po tomto sú banda vlajok, ktoré ste použiť na vylúčenie veci z návratu.
Takže nájsť bodka vráti všetko, čo je nájdete z aktuálneho adresára.
To sú všetky súbory rekurzívne vyhľadávanie.
Uvidíme, niektoré z nich v druhom.
>> Ale v prípade, že ste zvedaví, ako to robím že, tak Command K, prinajmenšom
v mojom terminálu v Mac vymaže ju.
Control L všeobecne vymaže je pre každý druh terminálu.
Môžete tiež zadať jasné.
A ak ste niekedy do podivné scenario--
to sa mi stalo pár time-- kde farby vašich výziev
sú spackal, alebo vám nie sú schopní vidieť nič
napísaný pri písaní, pretože niekedy ako farba pozadia nastavená
rovnako ako farbu popredia a teraz nemôžete vidieť písma.
Reset je niečo, čo jednoducho resetuje môžete predvolený čiernom pozadí,
biela predné, alebo čokoľvek iného nastaviť im.
>> Tak kde sme to skončili?
Nájsť bodka.
Takže teraz všetko okolo tejto bod obmedzuje výsledky
na niečo, čo zodpovedá daný vzor.
Tak tu Chcem vyhľadávať všetko s názvom mačka.
Nemám nič.
Prečo je to tak?
No, ja som len hľadal niečo, čo sa presne meno mačky.
Chcem Ak hľadať niečo že má nejaký vzor, ​​a cat--
úvodzovky technicky nie sú nutné, ale ja som ich hodil tam.
Takže teraz zistí kočkakočka z nasledujúcich dôvodov to je jediná vec, ktorá
má niektoré ľubovoľná vzor nasleduje mačka.
Môžem dať mačku *, a teraz nájsť kočkakočka, cat_dog, kategórie 2,
pretože to sú všetky veci s mačkou Na začiatku nasleduje ničím.
Môžete skombinovať.
Ak chcete vyhľadať všetky súbory C že máte, môžete robiť * .c.
Sme blah.c tu.
Tak to je nájsť práca.
Môžete vyhľadávať.
Má veľa vlajok pre ďalšie obmedzenia.
A jeden z nich, povedzme -d.
Tak zastarané.
Oh, to nie je to, čo chcem.
Nie -d.
Typ d.
Takže nájsť bodku - typ d.
Takže, čo to urobil je, že som vyhľadávanie pre všetky súbory v aktuálnom adresári
s je-- d predstavuje directory-- typ adresára.
Vráti všetky adresáre v aktuálnom adresári.
A typ F je všetko pravidelné súbory, všetky non adresára.
Tak to je len Príkladom ďalších spôsobov, ako
môže obmedziť ďalšie hľadanie než len názov súboru.
>> Už je to 30 minút.
Stále pokračuje.
>> ALLISON: Budem vánok cez.
Bude to v poriadku.
>> ROB BOWDEN: Takže niektoré ďalšie veci.
Teraz bang, výkričník.
Takže všeobecne means-- dobre, poďme si pozrieť príklad.
Tak! F, čo sa to bude robiť?
No zdá sa, že opakoval find bodka -typ f.
Čo! G?
Že práve grep -r mačku *.
Takže bang môžete použiť opakovať nedávno urobili príkaz.
Takže keď som písať! Gre, že to bude znovu-run príkazy, ktoré začali s gre najviac
v poslednej dobe.
>> A môžete vidieť, všetky tieto príkazy s históriou.
Histórie tak.
To všetko sú Príkazy som dnes spustiť.
A dobre, nie je to doslova obmedzená na dnes,
ale ja som použiť iba tieto zariadenia ako dnes.
Je to vaša celistvosť históriu Vášho bash shell,
okrem toho, že odreže v určitom okamihu.
Divákov: Čo sa stane, ak nemáte História [nepočuteľné] príkaz a chyby
vo výsledku bude stále tlačiť the--
>> ROB BOWDEN: Áno, v prípade, že je chyba v jednom z týchto commands--
tak povedzme, že je Príkaz k chybe nebol nájdený.
Stále sa totiž javí v histórii.
Dobrá.
Ďalšie otázky týkajúce sa niečo?
Tak to je rana.
>> Teraz naozaj užitočné príkaz man.
Tak, že vám Príručka pre daný príkaz.
Takže povedzme, že muž ls, tak to sa tiež prejavilo mi ls.
Uvádza obsah adresára.
A to je miesto, kde vidím, že tam sú tieto rôzne príznaky, ktoré existujú.
Vidíme teda, že ls -l existuje ak by sme mali čítať, že. ls -l
mi dáva túto úplný výpis adresár, ktorý vlastní súbor,
Veľkosť súboru, upravené časovú pečiatku.
Takže ls -a je ešte jeden, ktorý by ste mohli skutočne používať trochu častejšie.
-al je môj najčastejší príznak tento rok ls.
>> Takže -a, všimnite si, že je to veľa viac súborov, než len ls.
ls -a.
Čo je spoločné so všetkými týmito súbormi?
Začínajú s bodkou.
Tak to je konvencie v Linuxe, že súbory, ktoré začínajú bodkou sú skryté.
Tak to jednoducho znamená, že keď my len rovno ls,
alebo si hľadáte tento adresár pomocou nálezcu ekvivalent, alebo Windows
Ekvivalentná Explorer, že sme nechcem vidieť tieto dot súbory.
Proste znečisťujú pohľad na vec.
Tak oni sú skryté ak o to výslovne
požiadať je niečo ako -a.
Tak som si cd do .místní, a vidím že, že je sám o sebe adresár s
zdieľaný adresár a aplikácie, a bla bla bla.
Takže dot, súbory, sú to len skryté.
>> OK, takže ostatné najdôležitejšie.
Mám pár môžem vynechať.
Povedzme, naozaj rýchlo hovoriť o Presmerovanie súbor vecí.
Takže tam je celý komplex séria vecí, ktoré môžete robiť s nimi,
ale len preto, aby ich videl, povedzme, echo.
Ďalší príkaz.
Naozaj hlúpy príkaz.
Všetko, čo to urobí, je pre tlač, čo ti poviem to.
Tak echo ahoj.
Je to len ozvena pozdrav na obrazovku.
Hello world.
Ozveny hello world.
>> Takže jeden príkaz, alebo jedno symbol, ktorý bash chápe
je to väčšie ako symbol, a že je výstup na symbol súboru.
Takže ak výstup som to foo, je tu teraz súbor
s názvom foo, vnútri čo je hello world.
Tak si všimnite, že keď som echo hello world potrubia do foo,
nemala echo Hello World.
Namiesto toho bol uvedený do súboru foo.
A ďalší povel len to hodiť na vás, mačku.
Je to jednoduchý spôsob, ako len úplne vypísať obsah súboru
takže nemám otvoriť textový editor pre zobrazenie.
Takže obsah foo súbor sú hello world.
A ja som mohol mačka blah.c, obsah sú to.
>> Opäť platí, že sa jedná o príkazy, ktoré, nie Predpokladám, že ich všetky naspamäť.
Myšlienka je, že ste ich videli.
Možno, že pracujete na niečo, a vy ste
ako ja som chorý z otvorenia tohto súboru.
Kiež by som mohol len pozerať na obsah naozaj rýchlo.
Dalo by sa to urobiť, potom obzrieť a povedať, oh I
pamätať niečo ako že existuje, a je to mačka.
>> Tak, že sa chystá do súboru.
Teraz tam nie je naozaj k ničomu Príklad čítanie zo súboru doteraz.
Čo je to niečo, čo má niečo z štandardne?
Každý jednoduchý Linux príkaz?
Keď sme sa k nej dostanete, v páre týždňov všetky piece-- dobre,
tento týždeň budete mať kúsok, kde sa začnete vstup od užívateľa.
A tak zvyčajne napíšete že vstup na klávesnici.
Miesto písania, že vstup na klávesnicu,
môžete namiesto toho potrubia od súboru takže keď robíte Mario, ./mario,
potrubia v každom z daného súboru, a že to bude na spustenie programu Mario.
Nečakal vstup na klávesnica, namiesto toho je to
len tak čítať riadky zo súboru foo.
>> Takže väčšie ako foo stavia do súbor foo, a menej ako foo
berie veci zo súboru foo a používa to ako vstup do tohto programu.
A práve to vidieť, mohli by sme tiež echo foo bar Baz, a potom namiesto jedného
väčšie ako, poďme robiť dva do foo.
Čo to robí?
Je to len pripojí k súboru.
Takže namiesto toho všimnúť, keď sa mi echo bla do foo a potom mačka foo, je to len bla.
Takže keď sa výstup do súboru to, kompletne prepíše tento súbor.
Ak si len chcete pripojiť, double [? grader. ?]
>> A posledný je rúrka.
Pipe dostane oveľa zložitejšie, kde trvá výstup jedného príkazu
a napája ho do ďalšieho príkazu.
Takže niektorí bežná vec, história.
Tak, fuj, nechcem, aby sa na to pozrel.
Ukáž mi všetky príkazy v mojej minulosti kde som grep-ED za niečo.
Nie, to je mätúce.
Ukáž mi všetky príkazy kde nájdem.
Všetko nájdete príkazy, čo som kedy bežal.
>> Histórie tak.
Teraz histórie výstupov na Obrazovka tento zoznam príkazov,
ale ja nechcem výstup na obrazovku.
Namiesto toho budem potrubia nej do grep.
Takže poďme grep pre všetky prípady nálezu.
Takže teraz miesto grep odberu vstup, namiesto toho of--
grep je schopný zvládnuť, ako input-- sme pomocou grep trochu inak tu.
Takže namiesto písania zoznamu veci, ktoré sme chceli hľadať
a povedal, grep berie ako vstup.
Takže keď som to len grep nájsť, to čaká na mňa písať veci.
Takže mačka ahoj nájsť.
Dobrý deň.
Nájsť.
Všimnite si, zakaždým, keď som si napíšete uznáva, že som napísal nález.
Takže namiesto toho, bude vyhľadávanie súborov na nájsť.
>> Takže história sa teraz chystá Výstup zoznam všetkých príkazov.
Dávame tento výstup, a my sme kŕmenie, aby grep,
a tak to vypľuje všetky inštancie nájsť.
Dôvod, prečo som povedal, že to bude mätúce ak je Já-- je stále mätúce.
Keby som grep pre grep.
Všimnite si, že je to skoro vždy ukazuje príkaz som práve
bežal, pretože tento príkaz sám má grep vnútri nej.
>> OK, takže všetky otázky týkajúce sa niečo?
A ja budem prenášať ju v tomto bode.
Dúfajme, že to je pekný Prehľad všetkých príkazov
že nemusíte mať pamäti, ale tie tvoria
pevná 95% z toho, čo som robiť na príkazovom riadku.
Tiež majte na pamäti, že príkazový riadok sám, bash je programovací jazyk,
a tak, keď sa dostanete až na to, vy chcieť urobiť naozaj zložité veci.
A tak to má veci, ako je slučky, a IFS, a všetky tie,
že budete zvykať na so svojimi programovacích jazykov.
Ale to je mimo Rozsah tejto časti.
OK, takže žiadne otázky?
ALLISON: None?
GABRIEL: Chystáš to--
ALLISON: Ja to zvládnem na mňa, či chceš.
Vidíme, čo sa deje.
ROB BOWDEN: Vypnuté Allison.
ALLISON: Woo.
Si tvrdý akt sledovať, Robe.
Chceš, aby som prejsť s vami?
Alebo máš, OK.
Budem sa snažiť, a nie pomerne byť zdĺhavé tam.
Uvidíme, či to bude pracovať tak, ako chcem, aby to.
Možno, že?
Haha!
Áno.
>> Tak som len tak rýchlo ísť pomocou premenných, cykly, podmienky,
a trochu na kompilátora.
Ak máte otázky na kedykoľvek, prosím, prestaň ma.
Títo chalani mi bude pripomínať opakovať Váš dotaz v prípade, že som zabudol,
ale nemala by byť príliš zlé.
>> Takže premenných, jo.
Nemáme jeden z vašich Stieracie kúsky tu.
Som si istý, že väčšina z vás, ak je ste mali nejaké hry
ktoré ste vytvorili pomocou Scratch, ste mali sledovať niečo ako skóre,
alebo čas, alebo niečo také.
Takže tí jasne oranžovej kusy, ktoré vidíme tu
sú len Scratch forma premenné, a budete určite
byť pomocou premenných po celú dobu svojej programy.
Ak nie, naozaj nie som istí, že to, čo robíte.
>> Ale aj tak veľká vec, definovanie premenných.
S C každá premenná má mať typ vyhlásil,
tak som vám dal veľmi Všeobecne jeden hore.
Tak budete mať vaše typ a potom, čo
sa rozhodnete volať premennú.
Takže v tomto prípade, typu v zozname premenných.
>> Máme tri príklady.
Char nejaké triede, z A, čo je to, čo
Som si istý, že všetci chcú aby sa v tejto triede.
Môžete definovať viac premenné na jednej linke
ako dlho ako oni sú všetci rovnakého typu, ktorý je naším druhým príkladom tu
kde máte tri premenné, x, y a z.
Sú to všetko pláva.
A potom sa môžete tiež, v tomto poslednom príklad s int skóre a počet
tímov, môžete Inicializácia je tu.
>> Tak v strednej príklade, kde sme proste plavák X, Y a Z,
tie nie sú inicializované ešte.
Nemajú žiadnu hodnotu.
Alebo majú hodnoty odpadky.
A ak sa pokúsite a ich použitie, kompilátor bude revať na vás.
Máte ako deklarovať a premenné inicializovať.
Takže v tomto poslednom, robíme obaja.
Sme deklarovanie premenných na skóre a počet tímov,
a my sme ich inicializácia, čo im, že ich počiatočné hodnoty 7 a 4
resp.
V pohode.
Každý dobrý?
Úžasné.
>> OK, takže niektoré konvencie.
Ak Prečítal vy cez štýl 50, tieto
sú len veci, ktoré by sme chceli pre implementovať vo svojom štýle.
Tak zmysluplné názvy.
Ak začnete nazývať veci len x, y a z, a to najmä
ako sa dostanete do zdĺhavejšie programy, ty si
pravdepodobne bude pliesť sa a byť
ako to, čo je táto premenná s odkazom na.
Nemám potuchy, čo to znamená.
>> Takže ak to znamenalo držať skóre, hovoria skóre.
Ak to malo mať nejaké odpovede alebo spôsobiť, dať mu meno, ako je to.
U slučiek, ktoré budeme dostať sa do do ďalšej snímku,
premenné jednotlivé list sú v poriadku.
ROB BOWDEN: Aj, j a k sú len konvencie pre slučky
že každý je očakáva, byť nazývaný i, j a k.
Môžete volať them-- vidím riadok stĺpec alebo riadok volanie niekedy
dvoch vnorených cyklov a to je tiež druh štandardom.
Ale i a j je úplne známy.
>> ALLISON: Jo, ja a j, že ste úplne v pohode.
Z dôvodu jasnosti, ako je v niektorej z vašich P sád,
to by mohlo mať zmysel mať viac popisné veci tam jednoducho
sledovať to.
Ale myslím, že i, j, k a myslím, že Prevažná väčšina z nás všetky použitia.
>> ROB BOWDEN: S týmito konvencie, takže štýl je dôležité.
Je to jedna zo štyroch osí na ktorom ste triedi,
a je to tak jednoduché jednoducho ísť cez Váš P stanovená na koniec, a uistite sa, že
že tam nie sú štylistické chyby.
Takže sa uistite, že ste tabbing správne.
Uistite sa, že premenné sú pomenované.
Nechajte niekoľko poznámok.
Je veľmi ľahké sa dostať tie body.
Nemusíte premýšľať o tom, čokoľvek, aby sa tieto body.
Nemusíte prísť na niečo von.
Je to len aby to vyzeralo pekne.
>> ALLISON: V skutočnosti sme majú štýl 50, ktorý
vám povie, kam si hrať up, ak ste poplietol na štýl
a povie vám presne to, čo vám je potrebné opraviť, a ako je potrebné ho opraviť.
Je to tiež len dobré sa zmieniť že to je samozrejme politika
že ak ste v kancelárii hodín a váš kód je neporiadok,
môžeme odmietnuť pomôcť ste až to vyzerá krajšie.
Takže začať hneď, udržať konzistentný štýl,
ste tiež len tak, aby sa vaše životy oveľa jednoduchšie, keď
sa snažíte prejsť ladenie.
Ak sa snažíte prísť na to, kam chýba zložená zátvorka
a oni sú všade, že ste len aby svoj vlastný život ťažší.
Takže byť v súlade so štýlom.
Sľubujem, že to, aby váš život jednoduchší.
Bude to náš život jednoduchší.
Každý, kto bude oveľa šťastnejší.
A to je to, čo chcete.
GABRIEL: Vaša známka bude vyššia.
ALLISON: Áno, a vaša trieda.
Ak váš TF je ako vy, má tendenciu byť priaznivý.
V poriadku, a potom už len Druhým bodom je tu.
Konzistentné inicializácia.
Tak ako sme videli, môžete deklarovať a inicializovať veci.
Viac premenných na rovnakom riadku.
Jedna vec, ktorú by sme vám radi nie urobiť, je, aby vyhlásil niektoré premenné
a nemožno inicializovať je na rovnakej riadok, ktorý sa inicializuje ostatní.
>> Takže v prípade, že z nemá zmysel vôbec,
máme príklad tu kde sme vyhlásení celých čísel
v premennej štvrťroku desetníky a haliere,
ale štvrtiny a haliere nemajú žiadnu počiatočnú hodnotu.
Sme im nie je inicializovaný, ale priamo tam uprostred
sme už inicializovaný desaťhalierniky na 0.
Takže buď urobiť štvrte, desaťhalierniky, haliere.
Alebo štvrtiny rovnať 0.
Desaťhalierniky rovná 0.
Haliere rovný 0, alebo čokoľvek iného tieto počiatočné hodnoty.
>> Veľká vec vo veľkom štýle, byť v súlade.
Ak ste na pochybách, byť v súlade.
Ale sledujte náš štýl sprievodca taky.
V pohode.
Každý, kto tam dobre?
>> Divákov: Kde je sprievodca štýl?
ALLISON: Sprievodca štýl je on-- čo webové stránky?
>> GABRIEL: Myslím, že je manual.cs50.net/--
ALLISON: Style?
>> GABRIEL: Style.
Jo.
>> ALLISON: Áno.
Takže otázka, kde je v štýle 50.
manual.cs50.net/style.
Áno?
>> Divákov: Ak budeme definovať premenné, je to v poriadku
Dáme Ak ako [nepočuteľné] ako int skóre a potom int cieľ.
Takže by si povedal, že teraz máme dostal je definovať spoločne?
>> ALLISON: Takže, by mali Máte redundantný kód
pri definovaní premenné, ako je int skóre a
Na ďalšom riadku int hry?
ROB BOWDEN: Existujú určite prípady, keď redundantný kód je zlý.
Ja by som nepovažoval že redundantný kód.
Skoro som nikdy deklarovať viac premenné na rovnakom riadku v histórii.
A keď už, tak je to preto, zvyčajne nechám nejaký komentár
vysvetlí, čo je premenná pre.
Takže budem hovoriť int skóre lomítko lomítko.
Udržuje čokoľvek.
V celkovom lomítko lomítko.
Takže je to oveľa drsnejšie týmto spôsobom dať ich všetky na rovnakom riadku.
Len som nikdy dať ich na rovnakom riadku.
>> ALLISON: mám pocit, že je to osobné preferencie v tomto bode.
>> Divákov: Znamená to, že ísť na pre slučky a tak taky?
ROB BOWDEN: Ako vo vnútri?
Rovnako ako int i = 0 čiarku dĺžka sa rovná niečo?
Že nemáte na výber.
Vďaka za slučky inicializácii part-- tak ste mohli vidieť iba
int i = 0 bodkočiarka aj menej než čokoľvek bodkočiarka i a a.
To int i = 0, technicky môžete tiež
to, čo sme videli pred so syntaxou čiarkou.
int i = 0 čiarkou j sa rovná 3 čiarka k sa rovná 5.
Nemáte na výber rozdeliť že až do viac riadkov,
a to je štandardné.
Vidieť to je v poriadku.
ALLISON: Úžasné.
No, pohodlný prechod do slučiek.
Tak jo, máme tu niekoľko príkladov zo slučky, ktoré vy videli v Scratch.
A samozrejme všetky tieto stačí byť znovu v C.
A v podstate, aby vás opakovať nejakú časť kódu
až do určitého stavu je splnená, čo my budeme
dostať sa do pravej po rozhovore o slučky s conditionals.
>> Takže máme tri hlavné typy.
For, while, a to nejakú chvíľu, ktorá budeme všetci prejsť práve teraz.
Takže prvá je pre slučky.
Tak pre niektoré stavu, spustiť tento blok kódu.
Sme to pekné malé majú diagram tu dole.
Ale v podstate máte v Váš na, že prvý riadok,
budete premenné inicializovať.
>> Tak, ako sme hovorili o, i je rovné 0 alebo aj je rovný 10.
Či už budete potrebovať variabilný byť, že je to
bude tam inicializovaný, deklarované a inicializované na nejakú hodnotu.
Takže máme niektoré podmienka, že sa deje
bude kontrolovať naše premenná proti niečomu.
Takže v prípade, typický prípad, kedy Možno budete chcieť túto časť kódu
vykonať päťkrát.
Takže budeme mať int i = 0, a my chcem, aby to bolo, keď som je menšia ako 5.
Takže táto podmienka je len bude kontrolovať, že zakaždým.
Ak túto podmienku vyhodnotený ako pravdivý, je to
chystá spustiť kód, ktorý je presne čo tento malý diagram ukazuje.
>> A tak sa spustí ho.
Aktualizuje premennú, čo je to, čo vidíme,
V poslednej časti nášho servera na Inicializácia slučky tam.
Takže to bude len pokračovať v tom to kým táto podmienka nie je splnená,
a potom to bude ukončený slučky a pokračovať
pohybujúce sa zvyškom vášho programu.
Každý, kto tam dobre?
V pohode.
>> Tak tu je príklad, veľmi podobné na niečo, čo som práve hovoril.
Tak sme sa len chcete vytlačiť To je CS50 10 krát.
Takže vidíte, máme tu naše pre, a potom sme
inicializovať premennú i sa rovná 0.
Naša podmienka je kontrola že je to menej ako 10 rokov.
Tak vyhodnotiť na hodnotu true, keď sme sa prvýkrát začať, a potom aktualizuje svoje premenné
Vždy, keď v skutočnosti vykonáva a vytlačí je CS50.
A bude ukončený po 10-krát.
V pohode.
>> Takže zatiaľ čo slučky sú až nabudúce.
A ako vidíte tu, musíme sa nejaký čas to condition-- otázka?
>> Divákov: Ako môžem skočiť v skutočnosti jednoducho nie je jedno číslo,
ale dve čísla [nepočuteľné] i a a a?
>> ALLISON: Takže otázka je, ako môžete aktualizovať premennú o viac ako jeden
naraz.
Tak som a Plus Aktualizácie jeden zakaždým.
Ak by ste chceli aktualizovať ho dva, si to mohol urobiť aj a rovná 2.
>> ROB BOWDEN: Videli ste a rovná sa v prednáške ešte?
>> Divákov: [nepočuteľné].
>> ALLISON: Je to skutočne to isté, ako aj rovná i a 2.
Takže to bude trvať to a aktualizovať dvoma zakaždým.
Plus rovná je proste niečo hovoríme Syntactic Sugar.
ROB BOWDEN: Jo, tie, pre existujú skoro všetky aritmetické operátory.
Tak som sa časy rovná by zdvojnásobiť počet.
j predel rovná 3 je rovnaký ako j sa rovná j deleno 3.
>> ALLISON: Alebo mínus rovná 2 by decrement aj dva zakaždým.
ROB BOWDEN: Aj mod rovní.
Ste ho ešte nevideli bitové operátory, ale strieška rovná a ampersand rovná,
všetky z tých, ktoré existujú.
>> ALLISON: Takže mnohokrát, a to najmä s prvou dvojicou P sád,
budete pravdepodobne zvyšovanie by jeden, tak som navyše plus, j a navyše
sú všetko veci, ideš sa obvykle používajú.
Ale to aktualizácia stavu je plne vo vašej kontrolou.
Môžete ho aktualizovať akýmikoľvek krokoch alebo akýmkoľvek spôsobom sa rozhodnete.
Možno, že dokonca chcú, aby to bolo náhodné číslo niekedy.
Ale áno, existuje veľa veci, ktoré môžete robiť s tým.
Nie ste obmedzený aj naviac plus.
>> ROB BOWDEN: Len tak vás viem, že to existuje, ale tiež
existuje v inej forme, a navyše aj.
Takže ak ste niekedy hľadanie online a náhodou vidieť a navyše aj,
do značnej miery znamená to isté.
ALLISON: cool.
Dobré?
Úžasné.
Takže zatiaľ čo slučky.
Veľmi podobné.
Máte nejaký stav.
Hlavná vec k správe Tu je miesto toho, aby
tri rôzne časti nastaviť, máme jeden.
Máme len nejaké podmienky že to je skúšaný.
A rovnakým spôsobom, ak táto podmienka vyhodnotená ako true,
Váš kód bude bežať.
A či je to falošný, je bude ukončená, pohyb
na ďalšiu časť programu.
Tak to je druh like--, čo je Dobrým príkladom je kontrola
pre niektoré normálnom stave?
GABRIEL: je síce pravda.
ALLISON: Dalo by sa pritom pravda robiť.
No, 1 je rovný 1.
>> ROB BOWDEN: Môžete to urobiť while-- len namiesto použitia pre sláčiky,
môžete vždy kód pre slučku v cykle while,
tak aj väčšie ako 0 alebo Aj keď som menej ako 10 rokov.
>> ALLISON: Úžasné.
A potom sme si robiť, zatiaľ čo slučky, ktorá je skvelé pre overenie užívateľa, kde
Ak chcete získať niečo od Vaše užívateľské, uvidíme, či je to platné,
a potom pokračujte odtiaľ.
Takže jedna z vecí, vedieť, s robiť, keď je to, že to bude robiť,
a potom sa znova spustiť ak je táto podmienka splnená.
>> Takže asi najlepší spôsob, ako to urobiť je jednoducho vidieť príklad tu.
Tak ako som práve spomenul, užívateľ validácia je naozaj useful--
alebo si chvíle sú naozaj užitočné pri overovaní užívateľa.
Takže to je len tak znovu vyzve nejakého užívateľa
kým nevstúpi kladné číslo, ktoré by mohli byť užitočné pre vašu P sadu
tento týždeň.
A tak v tomto prípade, kedy najprv spustiť tento program,
to bude tlačiť zadajte kladné číslo.
Bude to mať nejaký vstup od užívateľa,
a potom sa to bude kontrolovať že vstup proti stavu
ktoré ste nastavili pre neho.
>> Takže v tomto prípade to bude kontrolovať.
Bude to povedať, OK, je náš vstup negatívny,
alebo je to 0 alebo negatívne, ktorá by bola neplatná.
Tak to by re-prompt.
Otázka?
>> Divákov: Je to rovnaká, ako zatiaľ čo slučke, ak si len skopírovať tento kód
a dať to [nepočuteľné] while?
>> ALLISON: Takže otázka bola by to byť rovnaká ako len na chvíľu
loop keby sme len skopírujte while vyššie.
Takže v tomto prípade, váš čas je slučka bude najprv skontrolujte stav.
Takže v tomto prípade, ak sme sa snažili písať len ako while,
to by som chvíľu vstup je menšia ako jedna.
Ale nemajú vstup pre neho.
>> Divákov: Ak máte [nepočuteľné] while vrátane tohto kódu,
ale potom zvládol kód nad while tiež.
Práve ste mali tento kód [Nepočuteľné] while.
ALLISON: Bolo by to isté, áno.
Takže by ste mohli len write-- namiesto toho, do-- áno.
GABRIEL: Ale to je viac elegantné.
ALLISON: Jo, to je viac elegantný.
Môžete sa dostať do dizajnu a ktovie čo ešte, ale áno, môžete úplne urobiť.
Nejaké ďalšie otázky?
OK, v pohode.
>> Takže sme hovorili veľa o podmienkach všetkých týchto slučiek, ktoré máme,
takže sme vlastne dostal do podmienky boolovských výrazov.
Opäť platí, že použitie týchto v jazyku C, tak len tak prechádzať
z viac grafického rozhrania skutočne kódovanie.
>> Cool, tak veľký, ak.
V podstate len nám umožňuje zaviesť určitú logiku do nášho programu a kontrola
sys podmienky.
Takže v tomto prípade, OK, n je väčšie ako 0?
Áno, to je, takže môžete spustiť to.
Je to len kontrolovať niektoré podmienka, že ste
nastavenie, čo myslím, že sme všetci pohodlné s kontrolou podmienok.
V pohode.
Takže ak ešte je váš druhý, môžete povedať, OK, ak je to pravda,
urobiť prvá vec.
Inak chcem, aby ste Východiskové a robiť niečo iné.
Rovnako ako v tomto prípade, môžete buď vybrať kladné číslo alebo záporné číslo.
Máte len dve možnosti.
Musíte to urobiť bez ohľadu na O tom, čo vaše užívateľské vstupy.
Takže môžete povedať, dobre, to je väčšie ako 0?
V pohode.
Vytlačiť kladné číslo.
Ak tomu tak nie je, vytlačte negatívne.
Každý dobrý?
>> A potom jedna vec, rozpoznať je že ak je splnená, ak podmienka,
inak sa nikdy tiež spustiť.
Iba jeden z nich bude vykonať naraz.
Takže je to kompromis.
Nemusíte dostať mať oboje.
Môžete mať buď prvý podmienku.
Buď máte, ak alebo inak, nie oboje.
Ktoré potom môžu robiť veci ešte zložitejšie,
pretože ak môžete urobiť, inde to, a potom ostatné.
Takže v tomto prípade sme majú tri podmienky.
A opäť, iba jeden z nich je skončí popravený.
Takže môžete sa pýtať, No, čo ak vás
niečo, čo môže splniť dva z nich.
Možno, že čokoľvek, čo zadanie spĺňa aj podmienku
pretože ak a else if.
Jediná vec, ktorá sa deje na beh
>> ALLISON: Akonáhle sa nájde niečo, čo že spĺňa podmienky na to
vyhodnotí ako pravda, to je to, čo to bude bežať a nič iného.
Takže ak ste mali, je toto číslo medzi 0 a 5 pre prvý,
alebo je to číslo medzi 3 a 5 pre else if časť,
a zadáte number-- Povedal som 0 a 5 a- 4.
Bude to hit prvý.
Je to povie OK, toto číslo medzi 0 a 5.
Vykonávanie a odísť.
To sa nikdy zasiahnuť, že druhú možnosť.
V pohode?
Úžasné.
>> OK máme tiež vyhlásenie prepínač ak, Ak chcete získať ešte more-- alebo ľúto,
Spínač sa nachádza hneď vedľa.
Som predbieham tu.
Opäť platí, že v prípade viacerých blokov kde, ako som práve povedal,
je, akonáhle zistíte stav že je splnená aj v prípade, else if iný,
opustí.
Ak potrebujete skontrolovať viac veci, ty si
bude chcieť používať to, pretože bude kontrolovať zakaždým tu.
Takže to bude prejsť, a ak je väčšia ako alebo rovná 90 ° C,
to bude tlačiť to.
A pobeží až do konca a skontrolovať každý jeden z nich.
>> Divákov: Takže by to bolo viac buggy než [nepočuteľné].
Bolo by to ako [nepočuteľné]?
>> ALLISON: otázka by to bolo buggy, alebo to, čo chcete.
To naozaj záleží na tom, čo Chcete zo svojho programu.
>> Divákov: Myslím, ako keď dáte 90 palcov
ALLISON: Ak dáte 90--
Divákov: [nepočuteľné].
GABRIEL: Budeš mať dve veci.
ALLISON: Budeš mať dve veci.
Áno, dve.
>> ROB BOWDEN: Two?
>> ALLISON: Nie
>> ROB BOWDEN: Štyri.
Ak vložíte 90, bude to hovoríte dostal A, máš B, máš C,
máš D.
>> Divákov: [nepočuteľné].
ALLISON: Správne.
Tak som je závislá na tom, čo chcem od vás programu.
Niekedy je potrebné skontrolovať viac vecí.
Získate oveľa hlbšie do toho, čo Dobrý dizajn je ako ísť dopredu.
Je dôležité si si uvedomiť, že táto
bude kontrolovať tu všetky štyri podmienky.
Vzhľadom k tomu, keby to bolo v prípade, else if iný ak iný by to hit, že prvá vec,
že by vytlačiť ste sa dostali k A a hotovo.
>> ROB BOWDEN: aj keď sme rozhodla zmeniť to, či
a väčšia ako alebo rovná 90 ° C, ak a väčšie alebo rovné 80 ° C,
a menšie ako alebo rovná 89, ak n väčšie ako alebo rovná 70 ° C,
a n menšie alebo rovné 79, takže bude správne.
To bude robiť to, čo chceme, ale stále kontroluje každý to.
>> Takže zatiaľ čo v prvom prípade, ak by sme zadajte 90 sa len v prípade, else if else if,
a zadáme 90, potom bude to napraviť.
To bude kontrolovať prvé jeden, tlač máš s A,
preskočiť všetko, pretože to už našiel jeden, ktorý funguje.
Všetky prípady sa navzájom vylučujú na základe ak else if else if.
Takže to bude vykonávať prvý, ak, potom je to hotovo.
Pôjde až do konca.
>> Vzhľadom k tomu, ak zmeníme to byť tým, čím som bol
hovorí s menej alebo rovné 89.
Bude to skontrolovať prvý.
To bude tlačiť.
To bude kontrolovať ten druhý.
To nebude tlačiť.
Skontrolujte, či tretie.
Nebude tlačiť.
Skontrolujte, či štvrtý.
Teraz ide do tlače.
Takže v tomto prípade, ak iný verzie, pretože tieto prípady
sa navzájom vylučujú, je to lepšie využitie, ak else if else if,
pretože to bude mať menej kontroly podmienok
než táto verzia.
ALLISON: Úžasné.
Takže ďalšia vec, ktorú môžeme urobiť, je vyhlásenie spínač.
V podstate switch sa v niektorých premenné,
V tomto prípade je to n, a určuje, ktorý prípad spustiť.
Takže to je tiež jeden, kde sa vaše prípady by mal byť druh vzájomne vylučujú.
Takže v tomto prípade, ak je my sme si jeden, je to
bude zodpovedať čo to proměnná-- bez ohľadu na hodnotu n
je na jednom z týchto prípadov, tak 1, 2, alebo 3, a vytlačiť zodpovedajúci riadok.
>> A potom, keď si všimnete, tu, máme tiež predvolený,
ktoré si môžete z myslieť ako váš iného.
Takže ak si vyberiete iné číslo okrem 1, 2, a 3, v tomto prípade
je to len bude tlačiť neplatné.
Rozhodovanie o tom, kedy použiť IFS porovnanie ak elses proti spínača sa deje
ako niečo, čo vy bude pozri navrhnúť múdry, ako začnete písať
zložitejšie programy, a tam žiadna tvrdá a rýchla pravidlá
kedy ich použiť.
To naozaj záleží na vašom kontextu.
>> ROB BOWDEN: A práve hodiť to tam
pretože to je oveľa pohodlnejšie časť.
Spínače, majú tendenciu be-- takže máte obmedzený
V mnohých ohľadoch si je použiť, pretože IFS,
stav môže byť docela čokoľvek budete chcieť.
S prepína prípady musia byť čísla,
alebo technicky môžu byť znaky, ale znaky, ako uvidíme, sú len čísla.
Takže musí byť čísla, ale prepínače sú naozaj účinnejšie ako v prípade
else if else if, pretože aj na príklade before-- dobre,
Príkladom stupeň sa zdá byť dobré.
>> No povedzme, že tu máme namiesto toho robiť to ako v prípade, else if else if scenár.
Takže ak n sa rovná rovná sa 1, vytlačte si vybral nízky počet.
V prípade iného, ​​pokiaľ je n rovné rovná 2, si vybral strednú číslo.
Else if rovná sa rovná 3, vysokým.
Else neplatné.
>> Takže povedzme, že bol náš scenár.
Takže povedzme, že zadáme 4, tak očakávame, že neplatné.
Tak, že ak else if iný ak bolo prístup bude fungovať, je
kontroluje prvú podmienku.
Nie je spokojný.
Tak sme skontrolovať druhú podmienku.
Nie je spokojný.
Skontrolujte, či tretiu podmienku.
Nie je splnená.
Tak sme sa ísť do iného a vytlačiť neplatné.
>> Spôsob, akým sa spínacie práce je to prekladá dole
na to, čo budeme zavolať skok tabuľky.
Hlavná myšlienka je že ak zadáte 4,
môže ísť ihneď na predvolené hodnoty.
Nie je potrebné kontrolovať som prípad 1?
Nie, že to nie je ono.
Prípad 2?
Nie.
Prípad 3?
Nie.
Default.
OK, to musí byť tam, kde som chcú, a potom spustiť to.
Nie, to okamžite skočí na predvolené hodnoty.
Alebo to zadám 2, je to okamžite ísť na 2
aby bolo nutné prejsť prípade 1.
>> Takže týmto spôsobom, realisticky, že dnes je
Nie je to moc nárastu efektívnosti.
Obvykle počítače sú dosť rýchlo, a to nie je tak veľký.
Ale je pravda, že prepínače sú rýchlejšie.
Ak ste naozaj snaží optimalizovať, použiť prepínač.
>> ALLISON: cool.
A potom máme ternárnu operátor.
Takže viem, že som sa zmienil predtým, slovo syntaktický cukor.
Takže je to len veci, ktoré kód oveľa výstižnejší.
Tak toto je jeden z tých prípadov.
>> Takže ternárnu operátor je otáznik hrubého čreva, ako vidíme v riadku reťazci
s sa rovná n väčšie ako 100 otáznik vysoká hrubého čreva nízka.
Takže v podstate, ako to funguje, je to n väčšie ako 100, je podmienkou.
Takže myslím, že to môže mať zmysel.
Je to ako pýtať otázku.
To hovorí oh, je n väčšie ako 100.
Kto vie?
A ak to vyhodnotí ako pravda, že to bude tak, aby vám
Prvá vec, ktorá je v ňom uvedené, čo je vysoká.
V opačnom prípade to bude, aby vám nízky.
Takže je to len naozaj jednoduchá a účinný spôsob, ako to urobiť, ako v prípade iného.
To je všetko, to je.
>> A ak by sme mali napísať, ako v prípade iného podmienené,
by bolo, keby n je väčšie ako 100, vráti vysoká.
Inak vráti nízka.
To je len oveľa stručné spôsob písania.
>> ROB BOWDEN: Takže tento konkrétny príklad je vždy, keď robíte niečo, čo
ako je toto, je vzor kde sa používa ternárnu veľmi často.
Takže sme nehovorili o objeme ešte, ale ja neznášam vidieť reťazci s bodkočiarku.
Ak je n väčšie ako 100, s sa rovná vysoké.
Inak, s rovná nízka.
Tak, že vzorka, tých päť riadkov kódu doslova 100% času
môžu byť prenesené do čo Bol tam s trojice.
Takže trojica, jeden riadok kódu.
Ak iný, päť.
To je príklad I bode z každého okamihu.
To by skvelé miesto pre ternárnu operátor.
Je to tak čisté.
Ale ľudia majú tendenciu nikdy použiť.
>> ALLISON: Daj to preč Gabe.
>> GABRIEL: Tak teraz vy všetci získané v prednáške tento týždeň
že je všetko v Počítač je binárny, že jo?
Rovnako ako lampy tu.
Môžete buď zapnúť alebo vypnúť.
A všetko, mám na mysli doslova všetko.
Niektoré čísla a znaky a reťazce, a dokonca aj kód, ktorý píšete, keď
sa dostane zostavené tak, aby stroj kód a podobné veci,
tak to všetko sa scvrkáva na 0 a 1 ".
>> A tak, keď máme čo do činenia s celými číslami, ktorá
je niečo, čo je technicky veľmi jednoduché, mali by sme byť schopní robiť veci,
ako ich pridanie, ktoré je Pravdepodobne jeden z najjednoduchších vecí,
môžete robiť dve celé čísla, že?
Takže sčítanie a odčítanie funguje rovnako ako to funguje v desiatkovej,
okrem tu je to binárny, že jo?
Takže je to v základe dve.
Takže pridať 1 + 1.
To sme našli 0 a 1 sa prenáša.
A len pokračovať v tom, že, Takže teraz je zaujímavejšia otázka.
>> Vieme, ako reprezentovať všetky pozitívne celé čísla v počítači,
ale urobme to cvičenie.
Predstierať, že vy ste všetci v roku 1960 alebo niečo, čo sa snaží vytvoriť počítač,
a budete musieť prísť na spôsob ukladania mínus 1,
napríklad, alebo mínus číslo na to príde.
Ako by ste to urobil?
Nejaké nápady?
Stačí hodiť niečo na mňa.
Áno?
>> Divákov: [nepočuteľné] určí zvláštne, ak váš [nepočuteľné].
>> GABRIEL: Môžete určiť, špeciálny bit, ktorý bude 0 alebo 1.
Povedzme, že jeden, ak je to pozitívny a 0, ak je to negatívne.
A potom zvyšok bitu práve na uloženie čísla.
V pohode.
Tak to je veľmi dobrý nápad.
Máme, ja neviem, 200.
A v prípade, že prvý bit je zapnutý, potom je to navyše 200.
Ak je to vypnuté, to je mínus 200.
V pohode.
>> Je tu len jeden malý Problém s týmto,
ktorý je, ak sa snažíme zhrnúť veci.
Tak si predstavte máme 11111 tu, a sme ako súčet to s 00100 čokoľvek.
Ak tí dvaja sú pozitívne, to je v poriadku.
Ale potom, ak jeden z nimi je negatívne, rovnako ako
povedzme, že tento bit tu je ten, ktorý je zodpovedný
for-- budem robiť separate-- tak to znamená, že jeden toto číslo tu
je pozitívny.
To znamená, že táto jedna Číslo ktoré tu je záporná, je to tak?
>> Ale potom, keď ste bude im povedané, vy
Potrebujete if hovorí, oh, ak je to 0,
potom môj suma bude niečo iné, nie?
Takže tam je trochu viac šikovný spôsob, ako to urobiť
To, čo sa nazýva dvojkový doplnok.
Takže v podstate to, čo sme urobiť, je definujeme mínus 1
byť vec, ktorá v prípade sčítame 1 dáva nám 0.
Dovoľte mi to zopakovať.
Takže povedzme, že toto je 1.
Čo je to, čo prirodzene v prirodzených čísel
pripočítať k nám 0 dáva?
Čo keď sa snažíme pridať do tejto položky?
Budeme have-- OK, tak sa poďme pridať.
Budeme mať 1 + 1 0, a potom sa to prenáša.
A potom budeme mať opäť 0.
Začínam zmätený.
A budete mať 0 a 0 a 0, a 0, a 0 a 0.
Veľa 0 rokov.
>> Na posledný jeden, nie sme bude schopný vykonávať ju,
pretože povedzme, že máme iba rokovania s jedným bytom, tak len 8 bitov.
Takže to, čo počítač robí štandardne je jednoducho zabudne, že [nepočuteľné]
OK?
Tak toto je to, čo sa nazýva dvojkového doplnku.
Proste sme definovať mínus 1, musí byť vec tu, že ak pridáte, že na 1
by vám 0.
A to je celkom v pohode pretože my naozaj
Potrebujete neskoro realizovať iný typ súčtu
v závislosti na tom, či je to negatívne alebo pozitívne číslo.
Dáva to zmysel?
>> Takže jedna vec, ktorú robíme tu za účelom premeny
medzi pozitívne a negatívne číslo sa potom otočiť všetko,
a potom pridáme 1 na toto číslo.
Ak sa pokúsite urobiť sami na kus papiera,
budete vidieť, že to dáva zmysel.
Ale keď si vezmem toto číslo tu, to je päť.
Takže keď som fanda všetko tu, tak 1, 1, 1, 1, 1.
Flip, flip, flip.
A potom som pridať 1 k nemu.
Budem mať presne mínus 5.
OK?
>> Tento druh dáva zmysel, pretože ak sa pokúsite sčítať to s číslom
že sme mali predtým, čo was-- poďme otočiť to znova.
Bolo to 101 a kopa 0 rokov.
Ak sa pokúsite pridať tieto dve čísla dohromady,
budete mať presne 0.
OK.
Nejaké otázky?
>> Divákov: [nepočuteľné]
>> GABRIEL: Čo tým myslíš?
>> Divákov: negatívny Pozitívne [nepočuteľné].
>> GABRIEL: Nie, otočiť a pridáte 1 vždy.
Jo.
OK, takže znaky kódované binárky.
Máme ASCII tabuľku, ako vy tiež videl v prednáške, že jo?
Takže je to v podstate mapovanie vecí.
A tu nemôžem dostatočne zdôrazniť, že počítač, a 65
sú doslova to isté.
Takže keď som sa napísať niečo ako char c rovná, mohol by som zároveň
stačí napísať 65 tu, a to by byť presne rovnaký, OK?
Neexistuje žiadny rozdiel vôbec.
>> Zvyčajne majú tendenciu dať znaky v premennej typu.
Char, nie preto, že sú v podstate stanovená, ale preto, že
ľudskej konvencie.
Ale môžete len riešenie s celými číslami miesto premennej typu char,
a budete v pohode.
Jediný skutočný rozdiel medzi char c, int i
je to, že int má štyri byty vo väčšine systémy, zatiaľ čo char má jeden bajt.
Sú to v podstate to isté čo sa týka dát.
Takže to, čo sa bude tlačiť tu?
Tu tlačíte číslicu pomocou printf so znamienkom plus 1, a rovnako ako celé čísla,
znaky možno zhrnúť, tak znaky môžu byť zrátané.
Tak to je presne 65.
Takže tam to bude 66, a tu máme
65 a trochu mínus veľký, ktorá bude, ja naozaj neviem.
Ale to bude presne medzera Medzi veľkými písmenami
a a menšie písmená, takže budeme mať malý, že jo?
Jo.
Takže to bude tlačiť charakter, ktorý je presne toto.
Dobré?
Nejaké otázky?
>> Tu máme veľa rôznych typy pre numerické ukazovatele.
Už hovoríme o int.
Float je len spôsob, ako to-- je to naozaj legrační, pretože keď som sa prvýkrát dozvedel,
naprogramovať späť v deň s Python, prvý program, čo som kedy
sa snažil písať, videl som, že to tam bolo Typ zavolal a typ nazvaný plávať.
A plavák bol pre všetky reálne čísla.
Tak som sa spýtal, prečo by sa Čo som kedy použiť int potom?
Vzhľadom k tomu, či môžem používať všetky reálne čísla s plavákom,
Len by som prestať používať celých čísel, je to tak?
Pretože reálne čísla sú rovnako ako všeobecnejšie.
>> Ukazuje sa, že je to nie je tomu tak v oblasti počítačov
preto, že sú v podstate rôzne veci.
Takže celé čísla a plaváky, operácie, ktoré môžete urobiť, aby sa im
sú v podstate odlišné, pretože spôsobu, akým sú uložené, OK?
Budeme hovoriť trochu niečo viac o tom, že v druhom.
>> Takže double je len väčší float.
Zvyčajne vo väčšine systémov, plavák sú štyri byty, rovnako ako int.
A double je osem bajtov.
Long long je vlastne len symbol ktorý pripojíte k typu, ako je int.
Hovoríte, že long long int takhle.
Long long int x, aby to dlhšie.
Takže vo väčšine systémov, ktoré umožnia osem bajtov namiesto obvyklých štyroch.
A môžete skutočne klesnúť in, tak to môže len povedať, long long,
a že pracuje príliš, OK?
Môžete si tiež robiť iné veci, ako je unsigned int, alebo opäť len unsigned
by tiež fungovať.
A že by x byť premenná ako všetko je pozitívne,
takže si môžete naozaj mať negatívny čísla tak, že sme sa sem videl up.
Takže po nádherné plávajúcou desatinnou čiarkou a presnosť.
To je jeden z dôvodov, prečo ťa chcete použiť celých čísel namiesto plavákov,
pretože ints sú 100% presné, že jo?
Je to presne to číslo.
Pre plávajúce body, ak máte povedať, odpoveď sa rovná 1 nad 10--
A stalo sa, že to presne Program tu float.c.
Ktorá tlačí na 20 desatinných miest.
1 delené 10, a že Obvykle je 0,1, nie?
Ale tu ak urobíme plávať a potom ho spustiť,
vidíme, že je to presne 0,1 nie.
Je to 0,149 niečo.
>> A prečo je tomu tak?
Pretože nemôžete skutočne reprezentovať každý jediné možné reálne číslo v pamäti
preto, že tam sú uncountably mnoho z nich.
Takže sme technicky schopní iba predstavujú obmedzené množstvo z nich
s konečným množstvom dát.
Ale je to naozaj zaujímavé.
Teraz to prosí otázka, ako by ste
ísť o zastupovanie to s kúskami, že jo?
Tak, ako sa pláva uložené?
S celými číslami to bolo jednoduché.
Ale s plavákmi chcete maximalizovať rozsah,
a ak chcete mať možnosť reprezentovať obrovské množstvo a veľmi malé množstvo, ako je
0.000001 v rovnakom čase.
Takže znovu, rovnaká hra.
Má niekto nejaký nápad, ako by sme mohli ísť o zastupovanie plavák v pamäti?
Proste nič nehádžte.
Áno, prosím.
>> Divákov: [nepočuteľné] as ak je to dva a jeden ints
že [nepočuteľné] a jedna bytosť všetko za desatinnou čiarkou.
GABRIEL: OK, v pohode.
Takže dva rôzne celé čísla.
Môžete mať 12,45, takže to je 12 a 45.
Nice.
Čo ERE chceš povedať?
To isté?
Jo?
>> Divákov: [nepočuteľné] notácie kde oddeliť základňu.
>> GABRIEL: Vedecká notácie, jo to je zvyčajne to, čo sa stane.
Tak toto je to, čo sa nazýva mantisa.
To je to, čo je v skutočnosti číslo, a potom exponent
je presne tam, kde je čiarka, nie?
Takže to bude niečo formuláre 1, 2, 3, 4, 5 krát 10
na mínus 4.
Len som si uvedomil, that-- jo, presne tak.
A potom 10 k mínus 4 je bude definovať, kde je čiarka, OK?
V Brazílii sme používať čiarku.
Tu si chlapci použiť bodku.
Tak bodka.
>> A to je v pohode, pretože potom môžete zamerať veľa vašich bitov na toho chlapa
Tu, na mantisy a potom je to bude skutočná presnosť.
A môžete to urobiť buď v desiatkovej sústave alebo v systéme na báze binárne.
K dispozícii sú rôzne spôsoby, ako realizovať to.
Otázky?
Áno?
Divákov: Koľko miesta za desatinnou čiarkou [nepočuteľné]?
>> GABRIEL: To je zložitá otázka, pretože to nikdy 100% presné,
pretože ako vidíte tu, pre niektoré čísla, že je 100% presné.
Verím, že ak dáme 0.5 tu to bude 100% presné.
To bude 0,500000.
Takže v tomto prípade, je to perfektné.
V iných prípadoch, je to oveľa menej dokonalé.
Podľa mojich skúseností, rovnako ako až štyri, päť desatinných miest je celkom presný.
Ak používate double, že to bude byť spôsob presnejší než to, OK?
>> ROB BOWDEN: Takže stačí hodiť niektoré ďalšie súvislosti na plaváky,
Nikdy som sa spomenúť si na 100%, ako sa spec plavákov skutočne funguje,
ale ja si vždy pamätať že pláva začať sa chaotický.
Takže predstava, že keď sa dostanete naozaj, naozaj veľké číslo, alebo naozaj, ale naozaj
malé množstvo, začneme stále horšie a horšie
pri rozlišovaní medzi dvoma blízkymi plaváky.
>> Tak, ako som chcel premýšľať o tom, s plávajúcou desatinnou čiarkou nepresnosti,
sú dva plaváky, ktoré ak sa pokúsim špecifikovať
v C, a to napriek skutočnosti, že sú rôzne čísla,
že budeš interpretovaný ako rovnakým číslom,
pretože nemôžeme ukladať ich inak.
Musíme používať rovnaké kúsky.
A tak, keď sa dostaneme do Naozaj, naozaj veľké množstvo,
hovorí ako 10 na 300 alebo niečo, to je v tomto bode
že 10 až 300, alebo 5x 10 až 300
nemôžu byť rozlíšené od 7 krát 10 na 300.
Tak to je dosť veľký rozdiel medzi týmito dvoma číslami.
>> Ale potom, keď sa dostanete dole do normálneho rozmedzia vecí,
máte tendenciu byť docela dobre odlíšiť.
A potom, keď sa dostanete dole naozaj malý, ste tiež stále znova dosť zlý.
Tak ako celá banda 0,0000, dostane dosť zlé.
GABRIEL: Jo, tak krátka poznámka.
Nikdy to nerobte.
Nikdy sa nesnažte porovnávať pláva pomocou rovná rovná,
pretože aj keď sú takmer To isté, takmer rovnaká nie je rovnaká.
Takže to, čo zvyčajne robíte, je odpočítať je, mať absolútnu hodnotu, že
a uvidíme, či to je menšia než 0,0001, alebo niečo také, OK?
A v pohode.
Viem, že veľa ľudí, ktorí majú Niektoré pozadia v jazyku Java,
najmä tých, ktorí sa AP počítačovej vedy, nie?
A Java je jazyk že väčšinou založené na C,
to má niekoľko veľmi veľké rozdiely.
Ale pre slučky a investičných fondov a tak podobne to, že sú všetky rovnakú syntax.
Mám niekoľko programov tu pre zobrazenie tejto.
>> Tak napríklad, jednoduchý Hello World.
To je hello world v C, ktorá vás Chlapci sú určite oboznámení s,
a to a to jeden je v Jave.
Takže v Jave máme to public class, hello world,
a public static void hlavné, a reťazec args.
Reťazec args idú sa objaví v C veľmi krátko.
Ale poďme sa tam doteraz.
Práve teraz tu máme void, čo znamená, že hlavná nie je žiadne argumenty.
A potom máme System.out.println, a to
druh ekvivalentu pre printf.
Tu nepotrebujú spätné lomítko n, pretože tlač ln urobí za vás.
To pripojí spätné lomítko n na konci riadku.
>> Ale keď idete do niečo ako A pre ste
je vidieť, že sú skoro to isté.
Tak inicializácia, a stav a aktualizácie
je-- Cnelo sa mi priestor here-- sú skoro to isté, okrem Java
má ako niekoľko ďalších vecí na vysokej úrovni.
Tu môžeme urobiť a ja a Java bude automaticky
aby to aj tu, čo je integer, do reťazca,
a potom sa pripojiť dva reťazce dohromady.
Tu v C musíme urobiť, a% d.
Linka tu, pre vyzerá úplne rovnako.
>> A ak sa pozrieme na v prípade, IFS tiež vyzerajú úplne rovnako, nie?
Takže skutočné veľké rozdiely sú v tých veciach, ktoré tu vidíte.
Public static, void, a potom public class-li.
Takže Java má to, čo je nazýva virtuálny stroj.
A to je veľmi silne založená na tom, čo sa nazýva objektovo orientované programovanie,
čo je veľmi, veľmi časté paradigma programovania v dnešnej dobe.
A táto trieda vec je to, čo vidíte, niečo z objektovej orientácie,
je vytvoriť triedu a potom vás možno odvodiť objekty z danej triedy.
Nebudeme hovoriť príliš veľa o tom v CS50,
ale to je určite niečo naozaj cool,
najmä v prípade, že chcete ísť do sofistikovanejšie vývoj webových aplikácií
Na konci kurzu, ako odošlete záverečný projekt
a niektoré pekné rámca a veci.
>> Takže v podstate myšlienkou je, že vás nechcem znovu zaviesť niečo,
tak vytvoriť niečo, čo je veľmi všeobecný, rovnako ako tvar,
a potom vytvoriť rôzne tvary z nej,
a potom sa z každého Tieto tvary môžete vytvoriť
niektoré ďalšie špecifické tvary v troch rozmery alebo niečo také.
A majú túto hierarchiu, ktoré dedí od ostatných, takže
všetky funkcie a všetky premenné, ktoré veľký tvar tu má všetky tieto
budú mať, a všetky z nich sú bude mať, a tak ďalej a tak ďalej.
Tak to je základná myšlienka.
>> C nemá, ale C ++ má mať takú funkciu.
A Java je silne ovplyvnený o objektovej orientácie,
tak to je dôvod, prečo vidíte trieda tu po celú dobu.
A ďalšia vec je, Tento Java virtual machine.
Takže to, myslím, že je to veľmi šikovný nápad.
Takže to, čo ľudia, ktorí vynašiel java urobil, je
nechceli, aby zostaviť svoj kód dvakrát
keby ho spustiť v systéme Windows, alebo Mac alebo Linux, takže to, čo robia
je doslova beží niečo ako zariadenie,
ale nemáte naozaj vidieť že sa to deje.
Tak sa spustiť virtuálny stroj vnútri počítača, ktoré
je v podstate ako mini operačný systém.
A to prevádzkové Účelom systému je v živote
je len spustiť to, čo sa nazýva bajt kódu.
>> Takže namiesto toho, v C, tak by sme kompilácie je to, aby v prípade, a spustite
./if.
Zabudol som spätné lomítko v.
V Jave, by ste urobili ako prvé Java C sa ho skompilovať if.c.
Nie je to C. Je to bodka java.
A potom budete musieť spustiť nie ./.
Dostanete tento nový súbor if.class, ale nemôžete naozaj
spustiť if.class teraz len ako sme to urobili predtým.
To nie je spustiteľný.
Musíte spustiť.
Musíte kŕmiť do program s názvom Java,
a že program je virtuálny stroj, a potom robiť if.class, alebo ak.
Áno.
A potom to funguje.
OK, takže to je druh virtuálny stroj deje.
C nemá, takže ak by som mal aby tento program v počítači so systémom Windows,
že to nebude fungovať v C. V Jave to robí.
Otázky?
V pohode.
To je v prípade, Super sekciu pre dnešok.