Rob Bowden: Kjo është seksion më të rehatshme, por kjo nuk do të thotë se në qoftë se ju ndjeni sikur ju nuk jeni më të rehatshme ju nuk do të mësojnë gjëra këtu. Pra, le të ketë filluar. A keni sllajdet shkon drejtë në gjëra. Jam unë për ta marrë vetëm atë të drejtë tani? Switching laptopë. ALLISON: Ju nuk duan të prezantuar veten, Rob? Rob Bowden: Oh, unë jam Rob. Ky është viti i pestë TF-ing CS50 tim. Gabriel: Unë jam Gabriel. Unë jam TF kreu i CS50. Unë kam qenë TF vitin e kaluar dhe këtë vit. ALLISON: Dhe unë jam Alison, dhe kjo Është viti i dytë TF-ing CS50 tim. Rob Bowden: Të gjithë të drejtë, kështu që kjo gjë në të majtë, shpresojmë se ju kam parë atë më parë. Nëse jo për shkak se ju shkarkuar atë për veten tuaj, ju duhet të keni parë atë në leksion. Pra, kjo është aplikim CS50, dhe ai bëri një disi e një përshkrim të saj në leksion. Por në thelb kjo është vetëm ju janë drejtimin e një operative Sistemi në operimin tuaj Sistemi në mënyrë që ne mund të ju jap Programet pa nevojë për t'u shqetësuar, oh kjo është do të punojë në të dy Windows dhe Mac, ose në qoftë se disa prej jush janë tashmë të përdorur Linux, Linux. Ajo është menduar vetëm për të të jetë një luajtur përbashkët fushë kështu që të gjithë ka Mjedisi njëjtën saktë. Pra, nëse ju nuk e keni shkarkuar këtë tashmë, ju duhet të shkarkoni atë, sepse ju jeni do të ketë nevojë për atë për të vendosur problemit. Dhe kjo është një dy Gigabyte shkarko, kështu që ajo mund të marrë pak kohë. Në Harvard ai do të shkojë shpejt. Aplikim Pra CS50. Tani në fillim, ne jemi duke shkuar për flasim për vetëm një bandë e linjës së komandës sende, dhe kështu me këtë, dua të them duke punuar në këtë mjedis të vogël mbi këtu. Dhe vini re të gjitha gjërat Unë them të drejtën këtu tani do të punojë në qoftë se ju jeni në brendësi të një terminal në brendësi të pajisjes, ose në qoftë se ju jeni në brendësi të dritare terminali gedit brenda pajisjes. Pra, këto mjedise janë identike. Por unë jam duke shkuar për të shkuar një rrugë të tretë. Dhe vini re këtu poshtë këtë pak adresa IP të drejtë këtu. Pra, ju nuk keni për të bëni këtë, por kjo IP address-- tani nëse I-- përveç është e bllokuar nga kjo gjë. OK, kështu që adresa IP gjithë në një terminal here-- kështu që ky terminal gjatë këtu është një terminal në Mac tim. Pra, kjo është në asnjë mënyrë aktualisht lidhur me aplikim në të gjitha. Dhe në qoftë se ju jeni në Windows, atëherë ju jeni do të duhet për të shkarkuar diçka posaçërisht për këtë, në veçanti njerëzit priren të përdorin stuko, P-U-T-T-Y. Pra, ajo që unë jam duke shkuar për të bëni është të shkruani SSH dhe pastaj se adresa IP. E pra, jharvard në atë adresë IP. Pra 192.168.24.220. Ky mesazh frikshme, të injorojë atë. Vetëm lloji po. Kjo është CS50 në një kuti. Ai pyet për fjalëkalimin tuaj. Dhe kështu në një shumë prej këtyre konteksteve aty ku ajo pyet për fjalëkalim, [e padëgjueshme]. Ne kemi marrë një shumë pyetje aty ku ajo thotë se nuk është në të vërtetë shtypja. Ajo nuk ju tregojnë karakteret e fjalëkalimi si ju shkruani, nëse ndonjë gjë, për një funksion të sigurisë, sepse nëse dikush është në kërkim mbi supe tuaj dhe ata e shohin yll yll yll yll, atëherë ata e di se fjalëkalimin tuaj është katër karaktere. Pra, ideja është se do të kërkojë ju për fjalëkalimin tuaj, lloj. Kjo nuk do të tregojë ju personazhet, por ajo është në fakt i pranuar ato. Në këtë rast, në çdo kohë ju ndonjëherë shoh një fjalëkalim të shpejtë që kanë të bëjnë me aplikim, fjalëkalimi do të jetë i kuq. Pra purpur. Dhe tani këtu brenda kësaj dritare që është në Mac tim, Unë jam në thelb të pasurit njëjta pamje e saktë si në brendësi të një terminal në aplikim. Pra, ju nuk keni për të bërë këtë. Ju mund të bëni gjithçka t'ju duan brenda pajisjes. Unë pothuajse kurrë në të vërtetë të bëjë asgjë në këtë aplikim. Unë pothuajse gjithmonë minimizuar atë dhe tani Unë jam duke punuar SSH në aplikim. Nëse ndonjë gjë, në qoftë se ju të ketë një kompjuter të ngadalshëm, ju mund të vini re një ndryshim. Bëj këtë, sepse unë preferoj kjo dritare terminali. Ajo ka disa karakteristika si Unë mund të ndarë dritare, dhe tani unë mund të SSH në nëpërmjet pajisjes. I kam dy SSH po ndodh në të njëjtën kohë. Në qoftë se kompjuteri juaj është veçanërisht i ngadaltë dhe ju jeni duke punuar në aplikim, dhe ti e kupton këtë është vërtetë laggy, çfarëdo. Ka tendencë të jetë shumë më të shpejtë në qoftë se ju jeni SSH-ed in. Por ndryshe ju mund të punoni ose mënyrë. AUDIENCA: Çfarë do të thotë SSH? Rob Bowden: predha të sigurta, diçka si kjo? Çfarë do të thotë SSH? GABRIEL: shell Sigurt. ALLISON: Është shell vetëm sigurt. Rob Bowden: shell Sigurt. Kjo është një protokoll që you-- është një protokoll të sigurt, kështu Encrypted. Njerëzit nuk mund të snoop rrjetin dhe shikoni se çfarë ju jeni duke thënë për asgjë ju jeni SSH-ed për të. Dhe në fakt, ne i vjetër ditët e CS50, kështu që në vitin 2009 kur unë isha një studente, mënyra se si keni punuar në CS50 grupe me probleme, ju ishte SSH-ed për disa server që kemi dhënë juve akses për të, dhe ju ka punuar atje. Pra, ju nuk e keni këtë aplikim grafike. Ju nuk keni gedit. Ju nuk keni të gjitha këto gjëra që ju mund të Vizualisht pikë dhe klikoni. Ju kishte për të punuar në këtë ndërfaqe. Unë preferoj të punojnë në këtë ndërfaqe. Pra, pjesë e asaj që ne jemi duke shkuar që të shkojnë në mbi tani janë një bandë e urdhëron që ju duhet të fillojë të marrë të njohur me si ju shkoni së bashku në kurs. Dhe sinqerisht, një herë ju mësohemi me ta, ajo është aq shumë më të shpejtë për të punojnë në këtë mjedis se ajo është që të punojë me finder, zvarritje dhe duke klikuar gjëra. Pra, këtu ne jemi. Tani unë vetëm SSH-ed në, dhe kështu parazgjedhur location-- ju pa disa nga këto komanda në klasë, por ne do të shkojnë mbi të gjithë ata përsëri. Default Vendndodhja jemi në është directory shtëpi. Dhe directory, vetëm një tjetër fjalë për dosje. Pra, ne jemi në directory shtëpi. Lloji ls, lista e fotografi në këtë directory. Dukshëm kam krijuar një blah.c më parë. Pra, ne kemi një directory desktop. Vëreni theksim i sintaksës? Theksuar dritë blu tregon një directory dhe të bardhë drejtë tregon vetëm një skedar të thjeshtë. Pra, nuk do të jenë të disa ngjyra të tjera që ju shihni. Një skedë të ekzekutueshme është ndoshta do të jetë e gjelbër apo diçka të tillë. OK, kështu që ne jemi në directory shtëpi. Tani, nëse unë dua të shkoj në një tjetër Lista, cd është urdhri që kam dua. Pra, të ndryshuar directory, dhe pastaj ju kalojë emrin e directory se ju doni të shkoni në. Pra, këtu kemi katër opsione. Unë mund të shkoj në shkarkime, dhe tani ne shohim këtu ajo e ka përditësuar këtë kllapa të thonë se unë jam në ~ / downloads. Pra, çfarë është tildë? Kjo është një stenografi për directory tuaj në shtëpi. Pra, pothuajse çdo gjë që ju bëni do të të jenë në lidhje me dosjen tuaj në shtëpi, dhe pwd është vetëm një komandë I përdorur një herë në vit që vetëm shtyp dosjen aktuale. Dhe kështu që ju shihni këtu se ~ / Shkarkime të vërtetë vendos në / shtëpi / jharvard / downloads. Pra, / home / jharvard është directory ime në shtëpi. Pra, ne mund të cd dot dot. Tani dot dot është një directory të veçantë që gjithmonë i referohet një directory deri. Pra, nëse unë jam në ~ / downloads, pastaj cd dot dot do të sjellë më të Tilde. Çka mendojmë ne cd dot dot do të më sjellë në tani? Ajo do të sjellë më në / shtëpi. Pra, Tilde duke directory punës të shtypura, Unë jam në tani / shtëpi / jharvard. një directory nga kjo, tani ajo thotë se këtu / në shtëpi. Tani cd dot dot. Tani unë jam në directory rrënjë, dhe ju nuk mund ta bëjë atë përsëri. Ju vetëm do të qëndrojë në directory rrënjë përgjithmonë. Lista rrënjë ka një bandë e tërë e gjërat që, në qoftë se ju dëshironi të shikoni në, ju mund. Për shembull, në qoftë se unë shkoj në kazan, e cila përmban të gjitha këto binareve, të tilla si ls, dhe cd, dhe të gjitha këto gjëra. Pra, këto komanda duhet të ekzistojnë diku në sistemin, dhe kjo është në / bin directory. Por, pothuajse çdo gjë që ju bëni është e do të jetë nga dosjen tuaj në shtëpi. Dhe cd pa argumente whatsoever, ju mund të thoni cd ~, nuk kanë nevojë për të. cd do të t'ju sjellë përsëri në directory tuaj. Një fundit. cd - do të të sjell përsëri në Lista e fundit që keni qenë në. Kështu që unë vetëm cd'd dy herë në një rresht, kështu që im Lista e kaluar ishte directory shtëpi. Nëse unë shkoj për të zvogëluar bin, dhe tani le të shkojnë deri dhe në përdorues. Pjesa User. Le të shkojnë në pjesën e përdoruesit. Tani unë jam tani në pjesën e përdoruesit. cd -, përsëri në kazan. Pra, kjo merr veçanërisht e dobishme kur ju have-- dhe kjo do të toggle. Pra aksion përdorues, prapa bin, bin aksion. Pra, kjo merr të dobishme. Ju mund të gjeni veten duke pasur shumë, shumë, shumë directories mbivendosur. Dhe ju doni të bëni diçka të shpejtë të vërtetë në një directory e sipërme. Ju shkoni në atë directory, të bëjë Ndryshimet dhe stuff like that, dhe tani ju dëshironi të shkoni kthehet aty ku keni qenë. cd -. Unë jam gjithmonë i frustruar kur unë të ndodhë për të shkuar për këtë directory I donte për të bërë punë në. Unë gjithmonë merrni frustruar kur kam bërë atë në dy hapa në vend të një hap, sepse kjo do të thotë se CD - po për të sjellë në këtë vend të ndërmjetëm në vend të ku unë dua të shkoj. Pra, ne shohim të gjitha lista e fotografi. Ne e dimë se si për të marrë rreth deri tani. Pra, tani le të flasim për redaktimi fotografi. Pra, në këtë kurs, ju jeni gati gjithmonë pritet të përdorin gedit. Nëse ju dëshironi, ju mund të marrë hapin e ardhshëm dhe të fillojnë të mësojnë një tekst command line editor. Pra, ekzistojnë opsione të ndryshme. Dhe ato që janë ndoshta do të jenë të rëndësishme për ju, ne kemi Nano, Vim, dhe Emacs. Pra, Nano është fillestar command line editor teksti. Pra, Nano, le të shkojnë në blah.c I krijuar më parë. Është pikërisht kjo fotografi standarde C. Dhe ju shihni një bandë e tërë e gjëra ndodh në pjesën e poshtme të ekranit, dhe me sa duket blah.c përmban këtë kod C. Pra, në këtë editor të veçantë, atë që është thënë në bottom-- tani ky simbol caret, ne e shohim këtë ^ G, ^ X, ^ o. Kështu që në të pothuajse të gjitha Konteksti që ju shihni, ju mund të shihni se simbol caret në vende të tjera në internet, në Stack Derdhja, diçka si kjo. Ai pothuajse gjithmonë i referohet për të kontrolluar. Pra, për të dalë që unë dua të bëj Kontrolli X. Kontrollit X, daljet. Dhe unë mund të përdorni shigjeta e mia çelësat për të lëvizur përreth. Njoftim Unë nuk mund të pikë dhe klikoni lehtësisht. Ju duhet të përdorni arrow tuaj çelësat për të lëvizur përreth. Nuk mund të jetë një mjedis për pikë dhe klikoni. Por le të bëjë disa ndryshime. Tani Kontrolli X për të shkuar dalje. Ajo do të thonë ruaj tampon modifikuar. Tani shpejtë, y për po, n për nr. Kontrolli C për të anulluar. Unë do të them vetëm po. File name për të shkruar. Default është fotografi se ajo tashmë është. Hit Enter. OK. Tani unë kam redaktuar vetëm këtë fotografi, ruajtur atë, dhe ajo është e ndryshuar. Pra, Nano është më e lehtë editor teksti të mësohen për të. Alternativat janë Vim dhe Emacs. Këto janë redaktorët tekst të nivelit të lartë që kanë një kurbë shumë të madhe të mësuarit. Pra preferenca ime personale është Vim. Dhe kjo ka një shumëllojshmëri të gjerë të opsioneve. Dhe një herë ju merrni përdorur për atë, ju nuk do të duan të shkojnë në ndonjë tjetër editor teksti sepse ju vetëm kemi kaq shumë gjëra në dispozicion për ju në këto, por ajo merr një të vërtetë kohë të gjatë për të mësuar. Kështu që ndoshta ju vetëm dëshironi të forcës veten tani për të marrë të përdoret për të, por unë do të thoja se është e vlefshme. Por kjo është e vështirë. Dhe pastaj Emacs. Unë gjithmonë luftojnë në Emacs, sepse Unë e di se si të bëjë absolutisht asgjë. Me sa duket Emacs nuk është nga default instaluar në pajisjen. Ne ndoshta do të shtoja se si një instalimeve parazgjedhje. Sapo ju mësoni një Vim ose Emacs, ka asnjë arsye bindëse për ndonjëherë të mësojnë të tjera, por kjo është një stil krejtësisht të ndryshme. OK kështu që është redaktimi fotografi tekst. AUDIENCA: Nëse ju u mbërthyer në Vim tani, se si bëjnë we-- Rob Bowden: Nuk modes shumta në Vim, dhe ka të gjithë mësime për të mësuar Vim. Pra, nëse ju ndodh që të jetë në insert mode, në mënyrë të tipit tekst, të cilat ju mund të të hyjë që në mënyra të ndryshme, por unë është se si ju të merrni në insert mode. Ose të marrë nga ndonjë veçantë Mënyra që ju jeni në, vetëm arratisjes. Dhe ju vetëm bash shpëtuar për të marrë nga çdo modes mbivendosur në tuaj. Vetëm OK, tani unë jam kthyer në mënyrë normale. Dhe kështu që në mënyrë normale, një zorrë e trashë. Ju shikoni të duket në fund. Dhe pastaj q. Pra, q do të lë në qoftë se ju keni bërë ndryshime, e cila I-- kam bërë ndryshime? Unë kam bërë ndryshime sa duket. Pra, nëse ju keni bërë ndryshime, ajo do të thonë se ju mund të vendosni një pikëçuditëse. Unë jam duke shkuar për të thirrur atë një zhurmë. Kështu që ju mund të vendosni një ndalim të vetëm lë pa bërë asgjë, ose wq zorrës së trashë do të shpëtojë dhe u largua. Pra, w në përgjithësi është shkruar. Pra, shkruani skedarin. Unë mund të shkruaj dhe të lënë. Ose ju mund të keni vetëm slam QX, q zhurmë vetëm për të dal nga atje, pavarësisht për çdo ndryshim që ju keni bërë. Të gjitha të drejtat, kështu që tani le të go-- ne mund të krijojë fotografi. Le të fillojmë duke hequr dosjet. Dhe unë do të hedh vetëm në një komandë të shpejtë të re, touch. Pra prek foo. Bar kontakt. Prekni Baz. Nëse I ls, tani ne shohim se këto fotografi ekzistojnë. Ata janë krejtësisht bosh. Pra touch është vetëm një e lehtë Mënyra e një, [e padëgjueshme]. Dy, teknikisht vetëm për shtetin ai, ai përditëson timestamps. Pra, çdo fotografi që keni krijuar ka një timestamp të lidhur me të. Kështu baz u krijua në 14 Sht në 16:21. Tani është 16:22, kështu që nëse I prek Baz përsëri, ne shihni se baz ishte më e modifikuar kohët e fundit në 16:22. Por përndryshe unë pothuajse nuk shikoni në timestamps në fotografi. Pra kontakt, këtu unë jam vetëm duke përdorur atë për të krijuar disa fotografi të shpejtë. Të gjitha të drejtat, kështu që tani është rm Komanda se ne kujdesemi për këtu. Dhe ne mund të rm boo. Thuaj hiqni rregullt skedarëve boo bosh. Dhe ne mund të shtypni y, dhe tani është e heq. baz rm. Hiq skedarin rregullt bosh baz dhe lloji n për nr. Tani ajo nuk është hequr. Pra, bar dhe baz ende ekzistojnë. Foo është zhdukur. GABRIEL: Mbani folur. Rob Bowden: Great. Pra, mesazhi bezdisshëm këtu, hiqni empty-- rregullt çfarë po bën atje poshtë? Hiq skedarin rregullt bosh. Pra, në qoftë se ne nuk duam të jenë të shqetësuar nga ky mesazh, ne mund të hedhin në këtë -F flamuri, dhe kështu që është forca. Dhe tani, nëse unë rm -F, ajo nuk do të thonë se ju dëshironi të hiqni këtë fotografi. Ajo thjesht do të bëjë atë. Dhe ls, unë nuk e shoh bar më aty. Tani që është një potencialisht Komanda e rrezikshme. Ajo tenton që të mos shumë e keqe. Ne do të kthehet në një të dytë si ajo mund të merrni të vërtetë të rrezikshme. Dhe le të krijojnë një directory temp. mkdir, një tjetër komandë. Pra mkdir është një komandë që e bën një directory. Dhe tani nga ls ne e shohim këtë dritë e bukur blue theksuar directory temp. Unë mund cd në temp. Dhe unë mund të mkdir foo. cd në foo. bar mkdir. cd në bar. Pra, ne shohim, ne mund të merrni me lehtësi në një fole mjaft të thellë. Tani si mund të hiqni një directory? rmdir. Pra, në qoftë se unë vetëm e drejtë të përpiqet të RM, si ne e bëmë me një fotografi të rregullt, bar rm do të thonë se nuk mund të hiqni bar. Ajo është një directory. Ka një komandë të veçantë për heqjen directories, lloj. Bar kështu rmdir. Tani bar është zhdukur. OK, kështu që rmdir që unë pretty much kurrë nuk përdorin. Arsyeja tani being-- le të bëjë një bar të rregullt fotografi këtu. Boo kështu rmdir. rmdir. Dështoi për të hequr foo. Drejtoria jo bosh. Pra, ju nuk mund të përdorni të hiqni dir në a Lista që ka gjëra në të. Pra, ju keni disa opsione. Ju mund të shkoni në atë directory, hiqni çdo gjë me dorë, dhe pastaj të dalë dhe rmdir dosjen. Kjo padyshim tingëllon bezdisshëm. Çka në qoftë se ka mijëra e dosjeve në atje? E pra, ju mund të rm *. Ne do të flasim për * në një të dytë. Kjo në thelb do të thotë të gjitha gjërat. Por më mirë akoma, -r kështu rm. Pra, rm -r-- në një shumë të kontekste, -R thotë rekursive, të cilat ne do të flasim për atë Mjetet rekursive në disa javë. Por kjo në thelb do të thotë kundërvënie tërësia e këtij directory dhe për të hequr çdo gjë. Foo Pra rm -r do të thonë të zbresë në directory foo? Po. Hiq rregullt bosh dosja foo / bar? Po. Hiq dosjen foo? Po. Deri tani foo dhe çdo gjë brenda saj është hequr. Tani që mund të merrni veçanërisht i bezdisshëm when-- le të prekë 1, 2 prek, prek 3. Mund të ketë një bandë e tërë e dosjeve. Nëse unë të kërkuar, unë mund të krijojë mijëra dosje në këtu. Dhe foo rm -R po shkon të jetë mjaft i bezdisshëm. Po, po, po, po, po, po. Me një shumë më shumë fotografi që ju shpejt të shihni se si shumë herë Unë do të duhet të tipit po. E pra, ne vetëm e pa para si ne mund të shpëtoj e që kanë nevojë për të tipit po, -F. Pra mkdir foo foo touch cd 1 2 3. OK, kështu që foo rm -rf do të verbërisht hiqni foo tërësisht. No shpejtë. Nuk ka asgjë. Foo është zhdukur. Kështu që unë priren të përdorin këtë urdhëroj të gjithë kohës. Kjo tha, ajo është një komanda shumë të rrezikshme, sepse në qoftë se unë bëj diçka si kjo, ajo nuk do të shkaktonte ju. Ajo do të jetë zhdukur. Dhe kjo ndodh mjaft shpesh, dhe madje edhe në nivel më të lartë kurse CS. Ndonjëherë ne do të shohim diçka kur dikush thotë se unë aksidentalisht rm tonë rf-ed shtëpia ime Lista e të gjithë të vendosur tim P është zhdukur. Dhe kjo është shkatërruese, por nuk ka plehra mund. Nuk ka asnjë nuk ka asgjë për ju për të tërhequr. Është shkuar vetëm. Edhe më keq do të jetë diçka si rm -rf /. Pra, ne vetëm të diskutuar që directory rrënjë. Ajo mban të gjithë fotografi në sistemin tuaj. Gjërat kanë tendencë për të marrë mjaft të çrregullt kur ju hiqni gjëra të tilla si ls, dhe cd, dhe të gjithë ata. AUDIENCA: Çfarë është dallimi në mes të RM, RF, dhe rm * Rob Bowden: Pra rm * - ALLISON: Pyetje ishte çfarë është Dallimi në mes të RM, RF, dhe rm *. Rob Bowden: Pra rm *. Star në mjetet e përgjithshme të gjithë e përmbajtjet e kësaj directory. Duke u përpjekur të mendojnë për të tjera mënyra për të treguar yll. E pra, yll të vërtetë në përgjithësi do të thotë të përputhen me ndonjë model. Pra, nëse unë kam një skedar të quajtur dog1, prek dog2, prek cat1, prek cat2. Pra ls * 1 do të shtypura cat1 dhe dog1, sepse kjo yll mund të plotësohet në with-- ai duhet të jetë atje, por yll mund të jetë ose mace apo qen. Kjo është një kartë të egra. Kjo është fjala që unë jam duke kërkuar për. Kartë të egra. Ose unë mund ls qen *, dhe Unë jam marrë për të parë dog1, dog2. Pra, ata janë renditur fotografi që përputhen me këtë model të veçantë. Ju mund të përdorni ls në këtë mënyrë. Ls * yll ndeshjet asgjë. Pra, kjo do të shtypur të gjitha përmbajtjet e kësaj directory pasi që të gjithë prej tyre përputhen. Kjo nuk do të shtypura asgjë në directories të nivelit të sipërm. Nëse unë kam një nën directory, foo, dhe prek 1 2 3-- kështu që tani, nëse rm * yll, hiqni cat1, cat2, dog1, dog2. Nuk mund të hiqni foo. Ajo është një directory. Pra yll zgjerohet për të gjithë fotografi në directory. Pra, teknikisht rm * është si duke thënë cat1 rm, cat2, dog1, dog2, foo. Ndërsa -rf rm, teknikisht yll do të arritur atë që duam, por rm -rf-- në qoftë se unë shkoj nga kjo directory, temp rm -rf, që do të shkojnë në temp dhe Recursively hiqni çdo gjë. Pra yll është i veçantë në atë që Kuptohet by-- kështu këtë gjë se unë jam drejtimin në, kjo gjë që është duke bërë mua për komandat dhe pastaj ekzekutimin dhe duke bërë ata, unë e quaj këtë shell tim. Dhe kështu që ky shell është në vetvete një program. Dhe nëse kam kërkuar, unë mund të shkojë në / bin / bash. Shell quhet bash. Dhe tani vërejmë diçka ka ndryshuar pak, dhe kjo është për shkak se parametrat e mi për shell janë disi të ndryshme. Por tani unë jam teknikisht running një predhë brenda shell tim origjinal, dhe unë mund të dalë se shell, dhe tani Unë jam kthyer në shell tim të nivelit të lartë. Qëllimi i thënë që is-- yll. Pra, yll është diçka kuptohet nga bash. Pra rm -rf, flamuri -rf është kuptohet vetëm nga RM. Ai e di se kur ju të kalojë një -rf që ju duan që ajo të hequr Recursively të gjitha dosjet pa shkaktuar. Ylli është diçka e kuptueshme duke bash se kur thoni rm *, bash nuk do të thonë hey rm *, hiqni yll. Bash do të thonë rm * hiqni cat1, cat2, dog1, dog2. Ajo automatikisht do të zgjerohet të gjitha dosjet në dosjen. Dhe në mënyrë të ngjashme tildë është një tjetër simbol që bash kupton. Kur ju thoni cd ~, bash zgjeron që në directory tuaj. Pyetje të tjera deri më tani? OK kështu që ne jemi duke shkuar për të filluar do të shpejtë. Tab përfundimi. Vetëm për të hedh atë atje. Shumë njerëz nuk e bëjnë kuptojnë këtë ekziston. Pra, nëse unë lloji cd Dow, I duan të shkojnë në shkarkime. Unë nuk kam nevojë të tipit nloads. Unë vetëm mund të goditur Tab. Pra, ajo pranon se Dow është një prefiks që nuk përputhet me asgjë tjetër në këtë directory, kështu ajo do të përfundojë se për ju. Tani unë mund të hyjë. Unë gjithashtu të bëjë që rekurzive. Foo kështu mkdir. Le të shkojnë në foo. bar mkdir. Pra, do të kthehet në shtëpinë time directory, unë mund të shoh shkarkime. Tani goditur tab përsëri, automatikisht do të plotësoni në foo. Kjo është e vetmja directory. Goditur butonin përsëri, automatikisht duke shkuar për të mbushur bar. Deri tani unë jam në (~ Shkarkimet / foo / bar). Pra, ky përfundimi tab, sa herë që unë kam për të orarit të punës, dhe unë jam i shkeli sup dikujt, dhe ata do rm D-O-W-N-L-O-A-D-S, I m vdekur. Tab vetëm, tab, tab, tab. Pra, definitivisht përdorur tab. Dhe në mënyrë të ngjashme dhe poshtë, shumë njerëz vetëm se ka ndodhur me kurrë nuk kanë goditur lart dhe poshtë. Ajo do të kalojnë nëpër mëparshme komandat, kështu që nëse ju vetëm u diçka, dhe ju doni të drejtuar atë përsëri, vetëm të mbajë up derisa ju të merrni atë. OK. Pra të shpejtë, disa gjëra të tjera. Le të kthehemi në temp. Le të krijojnë disa fotografi. Kështu që këtu, unë jam vetëm duke shkuar tek lista disa fjalë. qen, mace, meow. Le të bëjmë qen, peshk. Deri tani rep është një shumë Komandat e dobishme që ju të përdorin për të kërkuar të gjithë fotografi për një tekst të caktuar, dhe teknikisht ju mund të bëni me të vërtetë shprehje komplekse për të që të shkojë. Kështu që këtu, në qoftë se unë grep, dhe çfarë mund të dëshironi të kërkoni për të? Le të thonë se unë jam në kërkim për macet, dhe Unë dua për të kërkuar të gjitha këto fotografi. Pra, si mund ta bëni të gjitha këto fotografi? Star. Pra, në dosjen e parë, unë kam cat. Unë ndoshta mund të ketë quajtur diçka të mirë, pasi që duket sikur Numrat e linjës apo diçka. Por në dosjen e një Unë kam një linjë me mace. Në dosjen dy kam një linjë me mace. Deri tani unë mund të shikoni brenda një dosje dhe shih oh yeah, se dosja nuk kanë cat. Njoftim skedar tre nuk u shoqërua sepse cat nuk është në atje. Unë mund grep për mjaullin. Vetëm të paraqesë dy ka Meow. Pra, kjo që ju mund të kombinohen, përsëri, me -R, e cila siç kam thënë më parë shpesh do të thotë rekursive. Dhe kështu që unë mund të vij deri këtu, grep -r për çdo shkallës of-- le të redaktoni kjo vetëm për të hedhur një mace në atje. Pra grep -r për çdo rast të cat gjithë këtë directory. Dhe kjo do Recursively kërko ndonjë subdirectories. Pra, në Baz, ka cat. Në temp / 2, nuk ka mace. Dhe në temp / 1 nuk ka mace. Pra, kjo është të kërkoni brenda fotografi. Tani ju mund të përdorë gjithashtu edhe një zbulim. Dhe kështu që të gjeni është në mënyrë specifike në lidhje me kërkoni për fotografi me një emër të caktuar. Pra, le të bëjë disa më shumë. Le të shkojnë në shkarkime. Prekni dog1. Prekni cat2. Prekni cat_dog. Prekni catcat. Kështu që unë dua të gjeni të gjitha fotografi me qen në emër. Pra, gjeni, dhe të gjatë Ora Unë kurrë mend se si të gjeni punuar, derisa më në fund lexuar diçka që e bëri atë në mënyrë të qartë. Pra, gjeni, automatikisht rekursive. Ju nuk keni nevojë të kalojnë një -R. Pra, gjeni dot. Ne nuk kemi biseduar në lidhje me dot akoma. Ndërsa dot dot gjithmonë do të thotë një directory up. Dot gjithmonë nënkupton dosjen aktuale. Kështu që unë mund të rm dot-r në të njëjtën mënyrë unë mund rm -rf *. Në fund të fundit ata kryer të njëjtën gjë. rm -rf dot do të heqë tërë directory aktuale. OK, të cilat unë nuk dua të bëj atje. Por e gjejnë dot. Pra Recursively kërko tanishme directory, dhe tani gjithçka pas kësaj janë një bandë e flamujve që ju përdorin për të përjashtuar gjërat nga kthimi. Pra, gjeni dot kthen çdo gjë që ajo mund të gjeni nga dosjen aktuale. Këto janë të gjitha dosjet Recursively kërkim. Ne do të shohim disa prej atyre që në një të dytë. Por në rast se ju jeni të pyesin se si të bëj se, kështu që Komanda e K, në shumë pak në terminal time në Mac hap atë. Kontrolli L përgjithësi hap atë për çdo lloj të terminalit. Ju gjithashtu mund të shkruani qartë. Dhe në qoftë se ju merrni ndonjëherë në një scenario-- pazakontë kjo ka ndodhur me mua një çift time-- ku ngjyrat e promptet tuaj janë të gjitha messed up, ose ju nuk janë në gjendje për të parë ndonjë gjë duke shtypur kur ju jeni të shtypni, sepse ndonjëherë si ngjyra e sfondit është e vendosur njëjtë si ngjyra i dukshëm dhe tani ju nuk mund të shihni fonts. Reset është diçka që vetëm resets ju me sfond zi parazgjedhur, para të bardhë, apo çfarëdo keni vendosur ta. Pra, ku ishim? Gjeni dot. Deri tani gjithçka kaluar këtë Pika kufizon rezultatet për diçka që përputhet model i dhënë. Kështu që këtu unë dua për të kërkuar çdo gjë me emrin mace. I kam asgjë. Pse është kjo kështu? E pra, unë jam vetëm në kërkim për diçka pikërisht me emrin cat. Nëse unë dua të kërkoni diçka se ka disa model, dhe cat-- kuotat teknikisht nuk janë të nevojshme, por unë jam duke hedhur ato në atje. Kështu që tani ai gjen catcat sepse kjo është e vetmja gjë që ka disa arbitrare model ndjekur nga cat. Unë mund të vënë cat *, dhe tani gjeni catcat, cat_dog, cat2, sepse ato janë të gjitha gjërat me macen në fillim pasuar nga çdo gjë. Ju mund të kombinoni këtë. Nëse ju dëshironi të kërkoni për të gjitha dosjet C që ju keni, ju mund të bëni * .c. Ne kemi blah.c këtu. Pra, kjo është një gjetje e punimeve. Ju mund të kërkoni. Ajo ka një bandë e tërë e flamujve për kufizime të mëtejshme. Dhe një nga ata, le të themi -d. Pra deprecated. Oh, kjo nuk është ajo që unë dua. Jo -D. Lloji d. Pra, gjeni dot - lloj d. Pra, se çfarë bëri vetëm është që unë jam në kërkim për të gjitha dosjet në dosjen e tanishme me a-- d qëndron për Lloji i directory-- directory. Kjo ia kthen të gjitha directories në dosjen aktuale. Dhe lloji F është e gjitha e rregullt fotografi, të gjitha directories jo. Pra, kjo është vetëm një shembull mënyra të tjera që ju mund të kufizojnë kërkimin tjera se vetëm emrin e file. Ajo ka qenë 30 minuta. Ende do. ALLISON: Unë do të fllad përmes. Ajo do të jetë mirë. Rob Bowden: Pra disa gjëra të tjera. Tani zhurmë, pikëçuditëse. Kështu që në përgjithësi means-- mirë, le të shohim një shembull. Pra! F, çka është ajo që do të bëni? E pra kjo duket të ketë përsëritet gjeni dot -Lloji f. Po në lidhje me! G? Kjo thjesht grep cat-r *. Pra zhurmë ju mund të përdorni për të përsëritur një komandë bërë kohët e fundit. Pra, nëse unë lloji! Gre, ajo do të ri-drejtuar komandat që filloi me GRE më kohët e fundit. Dhe ju mund të shihni të gjitha këto komandat me historinë. Pra, historia. Këto janë të gjitha Komandat Unë kam drejtuar sot. Dhe të mirë, kjo nuk është fjalë për fjalë kufizuar për sot, por unë kam përdorur vetëm këtë aplikim që nga sot. Është tërësia juaj Historia e shell tuaj bash, përveç se shkurtimet off në një pikë. AUDIENCA: Çfarë ndodh nëse ju bëni Historia [padëgjueshme] komandë dhe një gabim në rezultat do të vazhdojë të shtypura the-- Rob Bowden: Po, në qoftë se ka një gabim në një nga këto commands-- kështu që le të themi, se është një Komanda gabim nuk u gjet. Ende shfaqet në histori. Dakord. Pyetje të tjera mbi çdo gjë? Pra, kjo është zhurmë. Tani, komanda të vërtetë të dobishme, njeri. Kështu që ju jep manual për një komandë të caktuar. Pra, le të themi ls njeriu, kështu kjo tregon mua ls. Ajo listat përmbajtjen directory. Dhe ky është vendi ku unë shoh se atje janë këto flamuj të ndryshme që ekzistojnë. Pra, ne shohim se ls -l ekziston në qoftë se ne ishim për të lexuar atë. ls -l më jep këtë listë të plotë të Lista me që zotëron file, Madhësia e dosjes, timestamp modifikuar. Pra ls -a, është një tjetër që ju mund të në fakt përdorin disi shpesh. -al është flamuri im më i zakonshëm ky ls kaluara. Pra -a, të vini re se ka shumë fotografi më shumë se vetëm ls. ls -a. Çfarë është në të përbashkët me të gjitha këto fotografi? Ato fillojnë me një pikë. Pra, kjo është një konventë në Linux që fotografi që fillojnë me një pikë janë të fshehur. Pra, kjo thjesht do të thotë se kur ne vetëm ls drejtë, ose ne jemi në kërkim të këtij direktoriumi përdorur ekuivalente finder, ose Windows Explorer ekuivalente, që ne nuk duan të shohin këto dot fotografi. Ata vetëm ndotin pamjen e gjërave. Pra, ata janë të fshehura përveç nëse ju në mënyrë specifike kërkesën e tyre me diçka si -A. Kështu që unë mund të cd në .local, dhe unë shoh se kjo në vetvete është një directory me një directory të përbashkët, dhe aplikacionet, dhe blah blah blah. Pra dot, fotografi ata janë vetëm të fshehura. OK, kështu që ato të tjera të rëndësishme. Unë kam një çift që unë mund të kaloni. Le të flasim vetëm të vërtetë të shpejtë për file redirection gjërat. Pra, ka një seri e tërë e ndërlikuar të gjërave që ju mund të bëni me këto, por vetëm për të parë ato, le të themi, jehonë. Një komandë. Komandë të vërtetë memec. Gjithë kjo nuk është e shkruar ajo që unë them atë. Pra, jehonë përshëndetje. Ajo vetëm bëri jehonë përshëndetje në ekran. Përshëndetje botë. Bën jehonë Hello World. Pra, një urdhër, ose një simbol që bash kupton kjo është më e madhe sesa simbol, dhe se është prodhimi në një simbol file. Pra, nëse unë output këtë foo, ka tani një fotografi quajtur foo, brenda e cila është përshëndetje bota. Pra, vini re se kur unë jehonë Hello tub bota në foo, ajo nuk ka jehonë Hello World. Në vend të kësaj ajo është vënë në fotografi foo. Dhe një tjetër komandë vetëm për të hedhur atë në ju, cat. Kjo është një mënyrë e lehtë për të vetëm të krejtësisht lista përmbajtjen e file kështu që unë nuk kam për të hapur një editor teksti për të parë atë. Kështu përmbajtja Dosja foo jemi bota përshëndetje. Dhe unë mund të blah.c cat, përmbajtja janë të këtë. Përsëri, këto janë urdhërimet që nuk bëjnë presim që ju keni të gjithë përmendësh. Ideja është që ju keni parë ato. Ndoshta ju jeni duke punuar në diçka, dhe ju jeni si unë jam i sëmurë e hapjes këtë fotografi. Uroj unë mund vetëm shikoni në përmbajtjen e vërtetë të shpejtë. Ju mund ta bëjë këtë, atëherë shohim prapa dhe i thuaj oh unë mos harroni diçka si që ekziston, dhe kjo është cat. Kështu që është duke shkuar në një skedar. Tani nuk është me të vërtetë ndonjë të mirë Shembulli i lexuar nga një skedar ende. Çfarë është diçka që merr diçka nga standardi në? Çdo thjeshtë Komanda Linux? Kur ne të merrni atë, në çift javë të gjithë piece-- mirë, këtë javë ju keni një pjesë ku ju fillojë të marrë të dhëna nga përdoruesi. Dhe kështu që zakonisht ju shtypni se input në tastierë. Në vend të shtypur që input në tastierë, vend të kësaj ju mund të tub nga një skedar kështu që kur ju bëni Mario, ./mario, tub nga ndonjë skedar të caktuar, dhe që do të drejtuar programin mario. Nuk pret të dhëna në tastierë, në vend të kësaj ajo është vetëm do të lexuar linjat nga file foo. Pra, më e madhe se foo vë atë në file foo, dhe më pak se foo merr sende nga file foo dhe përdor atë si input në këtë program. Dhe vetëm për të parë atë, ne mund të echo foo bar Baz, dhe pastaj në vend të një më e madhe se, le të bëjë dy në foo. Çfarë do që të bëni? Ajo thjesht appends në dosjen. Pra, në vend që të vini re se unë nuk jehonë blah në foo dhe pastaj foo mace, kjo është vetëm llafe. Pra, kur ju të prodhimit në një skedar, ajo plotësisht mbivendos këtë dosje. Nëse ju vetëm dëshironi të append, dyfishtë [? grader. ?] Dhe e fundit është tub. Pipe merr shumë më e komplikuar, ku ajo merr e prodhimit të një komandë dhe ushqen atë në komandën e ardhshëm. Pra, një gjë të përbashkët, histori. Pra, ugh, unë nuk dua të shikoni në këtë. Trego më të gjitha komandat në historinë time ku I grep-ed për diçka. Jo, kjo është konfuze. Trego më të gjitha urdhërimet ku unë gjej. Të gjitha të gjej komandat unë ndonjëherë binin. Pra, historia. Tani rezultatet historisë për ekran këtë listë të komandave, por unë nuk dua të prodhimit atë në ekran. Në vend të kësaj unë jam duke shkuar për tub saj në grep. Pra, le grep për të gjitha rastet e gjetjes. Pra, tani në vend të marrjes grep input, në vend of-- grep është në gjendje për të trajtuar si input-- ne jemi duke përdorur grep pak më ndryshe këtu. Pra, në vend që të shtypni listën e Gjërat që ne të kërkuar për të kërkuar për dhe i tha grep po merr si input. Pra, nëse unë do të vetëm të gjejnë grep, atë pret për mua të tipit gjëra. Pra cat përshëndetje gjetur. Përshëndetje. Gjeni. Njoftim çdo herë që unë gjej shkruani ajo pranon se kam shtypur zbulim. Pra, në vend të kësaj, do të Dosjet e kërkimit për të gjetur. Pra, historia tani do të Prodhimi një listë të të gjitha komandat. Ne jemi vënë atë dalje, dhe ne jemi ushqyer atë me grep, dhe kështu është e jashtëzakonshme nga të gjitha instancat e gjetur. Arsyeja që unë tha se do të jetë konfuze është në qoftë se I-- është ende konfuze. Nëse unë grep për grep. Vini re kjo është pretty much gjithmonë duke treguar I komandën vetëm u zhvillua për shkak se këtë komandë në vetvete ka grep në brendësi të saj. OK, kështu që çdo pyetje për çdo gjë? Dhe unë do të transferojë atë gjatë në këtë pikë. Shpresojmë se kjo është një e bukur pasqyrë të të gjitha komandat që ju nuk keni nevojë që të kenë memorizuar, por këto përbëjnë një të ngurta 95% e asaj që unë bëni në vijën komanduese. Gjithashtu mbani në mend se command line në vetvete, bash është një gjuhë programimi, dhe kështu që kur ju merrni deri në atë, që ju mund të dëshironi të bëni gjëra të vërtetë komplekse. Dhe kështu që ka gjëra të tilla si unazore, dhe ifs, dhe të gjithë ata se ju jeni duke shkuar për të marrë të përdoret për të me gjuhët tuaja programimit. Por kjo është përtej Qëllimi i këtij seksioni. OK, kështu që nuk ka pyetje? ALLISON: Asnjë? GABRIEL: A do to-- ALLISON: Unë mund ta bëjë këtë në minierë, nëse ju dëshironi. Ne mund të shohim se çfarë ndodh. Rob Bowden: Off për Allison. ALLISON: Woo. Ju jeni një akt të vështirë për të ndjekur, Rob. A ju doni mua për të kaluar me ty? Ose ju mori, OK. Unë jam duke shkuar për të përpiqen dhe të mos mjaft të jetë aq e gjatë atje. Le të shohim nëse kjo do të punojnë në mënyrë unë dua që ajo të. Ndoshta? Haha! Po. Kështu që unë jam vetëm duke shkuar për të shkuar shumë shpejt nëpërmjet variablave, unazore, conditionals, dhe një pak të përpiluesit. Nëse keni pyetje në çdo kohë, ju lutem të ndaluar mua. Këta njerëz do të kujtoj mua për të përsëritur pyetja juaj në rast se të harroj, por nuk duhet të jetë shumë e keqe. Pra variablave, vërtet. Ne nuk kemi një nga tuaj Copë zeroja këtu. Unë jam i sigurt se shumica prej jush, në qoftë se keni pasur një lloj të lojës që keni krijuar me Scratch, keni pasur për të mbajtur gjurmët e diçkaje si rezultat, apo kohë, ose diçka të tillë. Pra, ato portokalli ndritshme copë që ne shohim aty janë vetëm forma Scratch e variabla, dhe ju patjetër do të të jetë duke përdorur ndryshoret të gjithë programet tuaja. Nëse ju nuk jeni, unë nuk jam me të vërtetë të sigurt se çfarë jeni duke bërë. Por, gjithsesi, gjë e madhe, përcaktimin e variablave. Me C çdo variabli që të ketë një lloj deklaruar, kështu që unë ju dha një shumë të një gjeneral në krye. Pra, ju do të keni tuaj shtypni dhe pastaj çdo gjë ju vendosni për të thirrur ndryshore tuaj. Pra, në këtë rast, lloji në listën tuaj të ndryshueshme. Ne kemi tre shembuj. Char nga disa klasa, e një A, e cila është çfarë Unë jam i sigurt që të gjithë doni për të marrë në këtë klasë. Ju mund të përcaktojë të shumta Variablat në një rresht për aq kohë sa ata janë të gjithë të njëjtën lloji, e cila është shembulli ynë i dytë ka ku ju keni tre variablat, x, y dhe z. Ata janë të gjitha gjithandej. Dhe pastaj ju mund të, në këtë të fundit Shembulli me rezultatin int dhe numrin i ekipeve, ju mund të nisja e tyre të drejtë atje. Kështu në shembullin e mesme, ku ne vetëm kanë noton e x, y, dhe z, ata që nuk janë nisur ende. Ata nuk kanë asnjë vlerë. Apo ata kanë vlera të mbeturinave. Dhe në qoftë se ju provoni dhe përdorimin e tyre, përpiluesi do të bërtasin në ju. Ju duhet për të dyja deklarojnë dhe nisja variablave tuaj. Pra, në këtë të fundit, ne jemi duke bërë të dyja. Ne jemi deklaruar variabla i shënuar dhe numri i ekipeve, dhe ne jemi të fillimit të tyre, duke i dhënë t'i çuar vlerat e tyre fillestare të 7 dhe 4 respektivisht. Ftohtë. Gjithkush e mirë? Awesome. OK, kështu që disa konventa. Nëse ju djema janë lexuar me stil 50, këto janë vetëm gjërat që ne do të donim për të ju për të zbatuar në stilin tuaj. Emrat kaq kuptimplote. Nëse ju filloni duke e quajtur gjëra vetëm x, y dhe z, veçanërisht si ju të merrni në lengthier programe, ju jeni ndoshta do të ngatërruar veten dhe të jetë si çfarë është kjo variabël iu referuar. Unë nuk kam asnjë ide se çfarë do të thotë kjo. Pra, në qoftë se ajo është menduar për të mbajtur një rezultat, e quajti atë të shënuar. Në qoftë se kjo është menduar për të mbajtur një përgjigje apo rezultat, t'i jepte një emër të tillë. Për të unazore, të cilat ne do të merrni në në rrëshqitje tjetër, Variablat vetme letër janë të mirë. Rob Bowden: Unë, j, k dhe janë vetëm konventa për për sythe që të gjithë pret ata për të quajtur I, j, k dhe. Ju mund të telefononi them-- të shoh rresht kolona ose telefononi rresht ndonjëherë për dy sythe mbivendosur, dhe që është edhe lloj standarde. Por unë dhe j është kuptuar plotësisht. ALLISON: Po, i dhe j ju jeni krejtësisht fine. Për hir të qartësisë, si në disa grupe tuaja P, ajo mund të ketë kuptim që të ketë më shumë gjërat përshkruese në atje vetëm për të mbajtur gjurmët e saj. Por unë mendoj se i, j, k dhe unë mendoj se shumica prej nesh të gjitha përdorimi. Rob Bowden: Me këto konventat, kështu stil është e rëndësishme. Kjo është një prej katër akseve në të cilën ju jeni të vlerësohet, dhe kjo është aq e lehtë për të vetëm të shkuar mbi P tuaj të vendosur në fund dhe të sigurohemi se nuk ka gabime stilistike. Pra, sigurohuni që ju jeni të tastit tab saktë. Sigurohuni variablat tuaja janë emëruar. Të lënë disa komente. Është shumë e lehtë për të marrë ato pikë. Ju nuk duhet të mendojnë për çdo gjë në mënyrë që të marrë ato pikë. Ju nuk duhet të kuptoj asgjë jashtë. Ajo është vetëm duke e bërë atë të duket bukur. ALLISON: Në fakt, ne kemi kanë stil 50, e cila do të ju tregojnë se ku ju jeni messing në qoftë se ju jeni messing deri në stil dhe do t'ju them saktësisht se çfarë ju nevojë për të rregulluar dhe si keni nevojë për të rregulluar atë. Është gjithashtu e vetëm e mirë për të përmendur se kjo është politika kurs se në qoftë se ju jeni në zyrë orë dhe kodi juaj është një rrëmujë, ne mund të bjerë për të ndihmuar ju deri sa duket nicer. Pra, filloni të drejtë, mbani stil të qëndrueshme, ju jeni edhe vetëm duke shkuar për të bërë jetën tuaj një tërësi shumë më e lehtë kur jeni duke u përpjekur për të shkuar nëpër korrigjoj. Nëse ju jeni duke u përpjekur të kuptoj se ku ju jeni të humbur një mbajtëse kaçurrel dhe ata janë në të gjithë vendin, ju jeni vetëm duke e bërë jetën tuaj të vështirë. Pra, të jetë në përputhje me stil. Unë premtoj se do të bëni jetën tuaj më të lehtë. Kjo do të bëjë jetën tonë më të lehtë. Gjithkush do të jetë shumë më të lumtur. Dhe kjo është ajo që ju dëshironi. GABRIEL: klasa juaj do të jenë më të larta. ALLISON: Po, dhe klasën tuaj. Nëse TF juaj është si ju, ka tendencë të jetë e favorshme. Të gjithë të drejtë, dhe pastaj vetëm Pika e dytë këtu. Initializations konsistente. Pra, siç e pamë, ju mund të deklaroni dhe nisja gjërat. Variabla të shumta në të njëjtën linjë. Një gjë që ne do të dëshironim që ju të mos të bëni është që të deklarojë disa variablave dhe mos nisja e tyre në të njëjtën Linja që ju jemi të fillimit të tjerët. Pra, në rast se e bëri nuk ka kuptim whatsoever, ne kemi shembullin këtu ku ne jemi deklaruar ints në variablat e tremujorëve dimes dhe pennies, por lagjet dhe pennies nuk kanë vlerë fillestare. Ne nuk kemi firmosur ato, por të drejtë në mes atje ne tashmë nisur dimes në 0. Pra, ose të bëjë të katërtat, Dimes, pennies. Ose të bëjë të katërtat të barabartë 0. Dimes të barabartë 0. Pennies të barabartë 0, apo çfarëdo këto vlera fillestare janë. Gjë e madhe me stil, të jenë në përputhje. Kur në dyshim, të jenë në përputhje. Por ndiqni udhëzuesin tonë stil too. Ftohtë. Gjithkush mirë atje? AUDIENCA: Ku është udhëzues stil? ALLISON: udhëzues stil është on-- çfarë është website? Gabriel: Unë mendoj se është manual.cs50.net/-- ALLISON: Style? GABRIEL: Style. Yep. ALLISON: Po. Pra pyetja, ku është stili 50. manual.cs50.net/style. Po? AUDIENCA: Nëse ne jemi definimin variabla, është OK në qoftë se ne kemi vënë si [e padëgjueshme] si Rezultati int dhe pastaj int qëllimi. Pra, do të ju them se tani ne kemi marrë për të përcaktuar ato së bashku? ALLISON: Pra pyetje, duhet të ju keni kodin tepërta kur ju jeni të definimit variabla të tilla si rezultat int dhe në linjë tjetër int lojë? Rob Bowden: Nuk ka dyshim raste kur Kodi i tepërt është e keqe. Unë nuk do ta konsideronte që kodi të tepërta. Unë pothuajse asnjëherë nuk deklaroj të shumta Variablat në të njëjtën linjë ndonjëherë. Dhe në qoftë se ndonjë gjë, kjo është për shkak se Zakonisht kam lënë një lloj komenti shpjeguar se çfarë është e ndryshueshme për të. Kështu që unë do të them rezultatin int çaj çaj. Mban gjurmët e çdo gjë. Në plagë totale çaj. Pra, kjo është shumë më e grosser në atë mënyrë për të vënë të gjitha ato në të njëjtën linjë. Unë thjesht nuk e vënë ato në të njëjtën linjë. ALLISON: Ndjehem si ajo e preferenca personale në këtë pikë. AUDIENCA: A do të shkojnë për për sythe dhe sende too? Rob Bowden: Like brenda? Ashtu si int i barabartë me 0 presje Gjatësia e barabartë me diçka? Se ju nuk keni një zgjedhje. Me të unazore të inicializimit part-- kështu që ju mund të keni parë vetëm int i barabartë me 0, pikëpresje i pak se çfarëdo pikëpresje i plus plus. Kjo int i barabartë me 0, teknikisht ju gjithashtu mund të bëjmë atë që pamë më parë me sintaksë presje. int i barabartë me 0 presje j është e barabartë me 3 presje k është e barabartë me 5. Ju nuk keni një zgjedhje për të ndarë se deri në linja të shumta, dhe kjo është standarde. Duke parë atë atje është e mirë. ALLISON: mbresëlënës. Well, Segue përshtatshëm në sythe. Pra, vërtet, këtu kemi disa shembuj i sythe që ju djema parë në Scratch. Dhe sigurisht të gjitha këto vetëm mund të rikrijuar në C. Dhe në thelb ju lejojnë të përsëris disa pjesë të kodit deri në një gjendje të caktuar është plotësuar, të cilat ne do të të marrë në të djathtë, pasi duke folur rreth sythe me conditionals. Pra, ne kemi tre lloje kryesore. Sepse, ndërsa, dhe të bëjë kohë, e cila ne të gjithë do të shkojnë nëpër tani. Pra, e para është për sythe. Pra, për disa gjendje, ekzekutojë këtë bllok të kodit. Ne kemi Kjo pak ftohtë diagramin këtu në fund. Por në thelb ju keni në per tuaj, që rreshtin e parë, ju do të jeni të nisja variablave tuaj. Pra, siç kemi biseduar rreth, i është barabarte me 0 ose I është e barabartë me 10. Çfarëdo që ju duhet se ndryshueshme të jetë ajo e do të niset atje, deklaruar dhe firmosur me disa vlera. Pra, atëherë ne kemi disa Kushti që po ndodh të jetë i kontrolluar tonë ndryshueshme kundër diçka. Pra, në rastin rasti tipik ku ndoshta ju doni këtë seksion të kodit për të ekzekutuar pesë herë. Pra, ne do të kemi int i barabartë me 0, dhe ne duan që ajo të jetë, kur i është më pak se 5. Kështu që gjendja është vetëm shkuar për të kontrolluar se çdo herë. Nëse kjo gjendje vlerëson të vërtetë, kjo është do të kandidojë kodin, e cila është pikërisht çfarë ky diagram tregon pak. Dhe kështu që ekzekuton atë. Ajo përditësime një ndryshore, e cila është ajo që ne e shohim në pjesën e fundit të për tonë Initialization loop atje. Pra, ai vetëm do të vazhdojmë të bëjmë këtë deri në atë kusht nuk është plotësuar, dhe pastaj ajo do të dalë loop dhe të vazhdojë të lëvizin me pjesën tjetër të programit tuaj. Gjithkush mirë atje? Ftohtë. Kështu që këtu është një shembull, shumë të ngjashme për diçka që unë vetëm biseduar rreth. Pra, ne vetëm duam të shtypura kjo është CS50 10 herë. Kështu që ju shihni këtu kemi për tonë, dhe pastaj ne nisja ndryshueshme i të jenë të barabartë me 0. Gjendja jonë është e kontrolluar se ajo është më pak se 10. Kështu vlerësojnë të vërtetë, kur kemi parë të fillojë, dhe pastaj përditëson ndryshore tonë çdo herë që ai në fakt ekzekuton dhe printime nga kjo është CS50. Dhe do të përfundojë pas 10 herë. Ftohtë. Kështu, ndërsa sythe janë lart e ardhshme. Dhe, siç e shihni këtu, ne vetëm kemi disa njerëz, kurse kjo pyetje condition--? AUDIENCA: Si mund të kërcejnë në fakt jo vetëm një numër, por dy numra [padëgjueshme] i plus plus plus? ALLISON: Pra pyetja ishte se si mund të Përditëso ndryshore tuaj nga më shumë se një në një kohë. Kështu që unë plus plus do Azhurimi nga një çdo kohë. Në qoftë se ju të kërkuar për të rinovuar atë me dy, ju mund të bëni unë plus barabartë 2. Rob Bowden: A keni parë plus të barabartë në leksion akoma? Audienca: [padëgjueshme]. ALLISON: Kjo është në mënyrë efektive njëjta gjë si i barabartë i plus 2. Pra, ajo do të marrë atë dhe update it me dy çdo herë. Plus barabartë është vetëm diçka ne e quajmë sheqer sintaktik. Rob Bowden: Po, ato ekzistojnë për pretty much të gjithë operatorët aritmetike. Herë në mënyrë të krahasoj do të dyfishojë numrin. j Ndarja e barabartë 3 është njëjtë si j barabartë j ndarë me 3. ALLISON: Ose minus barabartë 2 do të pakësim i nga dy çdo herë. Rob Bowden: Edhe barabartë MM. Ju nuk e keni parë operatorët bitwise, por caret barabartë dhe simbol të barabartë, të gjithë ata ekzistojnë. ALLISON: Pra, shumë herë, sidomos me disa tuaj të parë në grupe P, ju do të jetë ndoshta bën rritjen nga një, kështu që unë plus plus, j plus plus janë të gjitha gjërat që ju jeni duke shkuar të jetë në mënyrë tipike duke përdorur. Por se gjendja Azhurimi i është plotësisht brenda kontrollit tuaj. Ju mund update it me çfarëdo increments ose në çfarëdo mënyrë që ju vendosni për të. Ndoshta edhe ju dëshironi që ajo të jetë e një numër të rastit ndonjëherë. Por po, ka shumë gjëra që ju mund të bëni me atë. Ju nuk jeni të kufizuar në i plus plus. Rob Bowden: Vetëm kështu që ju e dinë se ekziston, ajo gjithashtu ekziston në një formë tjetër, plus plus i. Pra, nëse ju jeni ndonjëherë të kërkoni në internet dhe ndodh që të shoh plus plus i, pretty much do të thotë të njëjtën gjë. ALLISON: ftohtë. Mirë? Awesome. Kështu, ndërsa sythe. Shumë të ngjashme. Ju keni disa kushte. Gjëja kryesore në njoftim këtu është në vend të tre pjesë të ndryshme për të ngritur, ne kemi një të tillë. Ne vetëm kemi disa gjendje që është duke u kontrolluar. Dhe në të njëjtën mënyrë, për aq kohë sa se gjendja e vlerëson të vërtetë, Kodi juaj do të kandidojë. Dhe në qoftë se është false, ajo do të përfundojë, veprim mbi pjesën tjetër të programit tuaj. Pra, kjo është lloj i like-- çka është një shembull i mirë i kontrolluar për disa kushte normale? GABRIEL: Ndërsa vërtetë. ALLISON: Ju mund të bëni ndërsa e vërtetë. Dhe, 1 është e barabartë me 1. Rob Bowden: Ju mund të bëni while-- vetëm në vend të përdorimit të një për lak, ju mund gjithmonë kodin a për lak në një lak, ndërsa, kaq i madh se 0 ose ndërsa i më pak se 10. ALLISON: mbresëlënës. Dhe pastaj ne kemi bërë, ndërsa sythe, e cila është e madhe për vlefshmërinë e përdoruesit, ku ju doni të merrni diçka nga përdoruesit e juaj, të shohim nëse ajo është e vlefshme, dhe pastaj të vazhdojë nga atje. Pra, një nga gjërat që e di, është me një bëni ndërsa është se ajo do të ekzekutojë, dhe pastaj ajo do të ri-ekzekutuar nëse ky kusht është plotësuar. Pra, ndoshta mënyra më e mirë për të bërë këtë është vetëm për të parë një shembull këtu. Pra, si unë sapo përmendur, përdoruesit validation është me të vërtetë useful-- ose bëni ndërsa jeni me të vërtetë dobishme me përdoruesit validation. Pra, kjo është vetëm duke shkuar të ri-krijonte një përdorues derisa ata të hyjnë në një numër pozitiv, të cilat mund të jenë të dobishme për të vendosur tuaj P këtë javë. Dhe kështu në këtë rast, kur ne fillimisht të drejtuar këtë program, ajo do të shtypura të hyjë në një numër pozitiv. Ajo do të marrë disa input nga përdoruesi, dhe pastaj ajo do të kontrollojë se input kundër gjendjes që ju keni vendosur për të. Pra, në këtë rast ajo do të kontrolloni. Kjo do të thotë, OK, është input tona negative, apo është 0 ose negative, e cila do të jetë e pavlefshme. Pra, atëherë ajo do të ri-shpejtë. Pyetje? AUDIENCA: A është kjo njëjtë atëherë si ndërsa lak në qoftë se ju vetëm të kopjuar këtë kod dhe vënë atë [e padëgjueshme], ndërsa loop? ALLISON: Pra pyetja ishte e do kjo të jetë e njëjtë si vetëm një kohë loop në qoftë se ne ishim të vetëm kopje lak, ndërsa sipër. Pra, në këtë rast, loop juaj ndërsa është shkuar për të kontrolluar gjendjen e parë. Pra, në këtë rast, në qoftë se kemi provuar për të shkruar vetëm si një lak, ndërsa, ajo do të thonë se ndërsa dhëna është më pak se një. Por ne nuk kemi një kontribut për të. AUDIENCA: Nëse ju [padëgjueshme] ndërsa loop përfshirë këtë kod, por pastaj ju përballuar kodin mbi lak, ndërsa edhe. Ju vetëm e kishte këtë kod [Padëgjueshme], ndërsa loop. ALLISON: Ajo do të jetë e e njëjta gjë, po. Kështu që ju mund vetëm write-- në vend të paturit e një po do--. GABRIEL: Por kjo është më elegante. ALLISON: Po, kjo është shumë elegante. Ju mund të merrni në hartimin dhe gjësend, por po, ju mund të krejtësisht të bëni atë. Çdo pyetje të tjera? OK, cool. Pra, ne kemi folur shumë për kushtet me të gjitha këto sythe që kemi, kështu që ne jemi të vërtetë duke marrë në kushtet në shprehje Boolean. Përsëri, ju përdorni këto në C, kështu që vetëm lloj tranzicion nga më ndërfaqe grafike në fakt coding. Cool, njëri kaq i madh, nëse. Në thelb vetëm na lejon për të futur disa logjika në programin tonë dhe kontroll Kushtet SYS. Pra, në këtë rast, OK, n është më i madh se 0? Po kjo është, kështu që ju mund të ekzekutojë këtë. Është vetëm kontrolluar disa kusht që ju keni vendosur, të cilat unë mendoj se ne jemi të gjithë të kënaqur me kontrollin e kushteve. Ftohtë. Pra, nëse tjetër është një tjetër tuajin, ju mund të thoni OK, nëse kjo është e vërtetë, bëni këtë gjë e parë. Përndryshe unë dua që ju të parazgjedhur dhe të bëjë diçka tjetër. Ashtu si në këtë rast, ju ose të vini një Numri pozitiv ose një numër negativ. Ju keni vetëm dy opsione. Ju duhet ajo të ekzekutuar pa dallim e çfarë inputet tuaj të përdoruesit. Kështu që ju mund të thoni, a është më i madh se 0? Ftohtë. Print një numër pozitiv. Nëse nuk është, të shtypura një negative. Gjithkush e mirë? Dhe pastaj një gjë të njohin është se në qoftë se në qoftë se kushti është plotësuar, tjetër kurrë nuk do të ekzekutojë. Vetëm një nga këto do të kryer te nje kohe. Pra, kjo është një tregti off. Ju nuk merrni të ketë të dyja. Ju ose keni kusht të parë. Ju ose keni nëse ose tjetër, jo të dyja. Të cilat pastaj mund të bëjë gjëra edhe më e komplikuar, sepse ju mund të bëni në qoftë se, tjetër ajo, dhe pastaj tjetër. Pra, në këtë rast, ne kanë tre kushte. Dhe përsëri, vetëm një prej tyre është do të përfundojnë duke u ekzekutuar. Kështu që ju mund të pyesin mirë, çfarë nëse ju kanë diçka që mund të plotësojnë dy nga këto. Ndoshta çdo gjë që ju jeni duke inputting plotëson dy kushtet sepse në qoftë se dhe tjetër nëse. Vetmja gjë që do të kandidojë ALLISON: Sapo gjen diçka që ajo i plotëson kushtet për të cilat vlerëson të vërtetë, kjo është ajo ajo do të kandidojë dhe asgjë tjetër. Pra, nëse keni pasur është ky numër në mes të 0 dhe 5 për një tuaj të parë, apo është ky numër në mes të 3 dhe 5 për tjetër, nëse pjesë, dhe ju input number-- Unë i thashë: 0 dhe 5 and-- 4. Ajo do të goditur një të parë. Ajo do të thonë OK, kjo numër është midis 0 dhe 5. Ekzekutuar dhe të lënë. Ajo kurrë nuk do të goditur atë opsionin e dytë. Ftohtë? Awesome. OK, ne gjithashtu kemi kaloni pasqyrave ju doni të merrni edhe more-- apo keq, switch është tjetër. Unë jam duke marrë përpara veten time këtu. Përsëri, të shumta nëse blloqet ku si unë vetëm tha është sa më shpejt që ju të gjeni një kusht që është takuar dhe një rast tjetër në qoftë tjetër, ajo lë. Nëse keni nevojë të kontrolloni gjëra të shumta, ju jeni do të duan të përdorin këtë, sepse ajo do të kontrollojë çdo kohë këtu. Pra, kjo do të vazhdojë deri dhe në qoftë se ajo është më e madhe se ose e barabarte me 90, ajo do të shtypura atë. Dhe kjo do të vazhdojë deri dhe kontrolloni çdo një të vetme prej tyre. Audienca: Pra, kjo do të jetë më shumë buggy se [padëgjueshme]. Do të jetë kjo si [e padëgjueshme]? ALLISON: Pyetja është e do të jetë kjo buggy ose ka kjo të bëjë atë që ju dëshironi. Kjo me të vërtetë varet nga çfarë ju doni nga programin tuaj. AUDIENCA: Unë do të thotë si në qoftë se ju vendosni 90 në. ALLISON: Në qoftë se ju vendosni 90-- Audienca: [padëgjueshme]. GABRIEL: Ju jeni do të merrni dy gjëra. ALLISON: Ju jeni do të merrni dy gjëra. Po, dy. Rob Bowden: Dy? ALLISON: Jo Rob Bowden: Katër. Nëse ju vendosni 90, ajo do të thonë se ju mori një A, ju mori një B, ju mori një C, ju mori një D. Audienca: [padëgjueshme]. ALLISON: E drejta. Kështu që unë varet nga ajo që ju dua nga ju programi. Nganjëherë keni nevojë për shikoni gjëra të shumta. Ju do të merrni shumë më të thellë në atë dizajn i mirë është si ju shkoni përpara. Gjëja më e rëndësishme për të kuptojnë është se kjo do të kontrollojë të gjitha katër kushtet këtu. Ndërsa në qoftë se kjo ishte një rast tjetër, nëse tjetër në qoftë tjetër, ajo do të goditur atë rastin e parë, ajo do të shtypura që ju mori një A dhe të bëhet. Rob Bowden: Edhe në qoftë se ne vendosi të ndryshojë këtë në qoftë se dhe më e madhe se ose e barabarte me 90, nëse dhe më e madhe se ose e barabarte me 80, dhe më pak se, ose e barabarte me 89, nëse n më e madhe se ose e barabarte me 70, dhe n pak se ose e barabartë me 79, kështu që do të jetë e saktë. Kjo do të bëjë atë që duam, por ajo ende kontrollon çdo të vetme të. Pra, ndërsa në skenarin e parë, në qoftë se ne hyjnë 90 me vetëm në qoftë tjetër në qoftë tjetër, nëse, dhe hyjmë 90, atëherë ajo do të korrigjuar. Ajo do të kontrollojë parë një, print ju mori një A, kaloni çdo gjë, sepse ajo tashmë e gjetur atë që punon. Të gjitha rastet janë reciprokisht ekskluzive bazuar në qoftë tjetër në qoftë se tjetër rast. Pra, kjo do të ekzekutojë të parë nëse, atëherë ajo është bërë. Ajo do të shkojë deri në fund. Ndërsa në qoftë se ne ndryshojmë kjo të jetë ajo që unë kam qenë thënë me pak se ose te barabarte me 89. Ajo do të kontrollojë një të parë. Ajo do të shtypura. Ajo do të shikoni një të dytë. Kjo nuk do të shtypura. Kontrolloni një të tretë. Nuk do të shtypura. Kontrolloni atë katërt. Tani duke shkuar për të shkruar. Pra, në këtë rast, tjetër, nëse version, pasi që këto raste janë reciprokisht ekskluzive, kjo është përdorim më të mirë në qoftë tjetër në qoftë tjetër, nëse, sepse kjo do të ketë pak kontrolle të kushteve se këtë version. ALLISON: mbresëlënës. Pra, një tjetër gjë që mund të bëni është të kaloni deklarata. Në thelb një deklaratë switch merr në disa variabël, në këtë rast është n, dhe përcakton cilin rast për të ekzekutuar. Pra, kjo është edhe një ku rastet tuaja duhet të jetë lloj i reciprokisht ekskluzive. Pra, në këtë rast, në qoftë se ne kemi marrë një, kjo është do të shkojë çdo gjë që variable-- çfarëdo vlera e n është në një nga këto raste, OS 1, 2, ose 3, dhe të shtypura jashtë vijën përkatëse. Dhe pastaj, nëse vëreni këtu, ne gjithashtu kemi një default, të cilat ju mund të mendojnë si juaj tjetër. Pra, në qoftë se ju të vini ndonjë numër tjetër Përveç 1, 2 dhe 3, në këtë rast ajo është vetëm do të shtypura pavlefshme. Marrja e vendimeve kur do të përdorin IFS kundrejt në qoftë se elses kundrejt ndizet po shkon të jetë diçka që ju djema do të shohin projektimit mençur si ju të filloni me shkrim Programet më të komplikuara, dhe nuk ka rregulla të vështirë dhe të shpejtë e kur do të përdorin ato. Kjo me të vërtetë varet nga konteksti tuaj. Rob Bowden: Dhe vetëm për të hedhur atë atje pasi ajo është pjesa më e rehatshme. Switches, ata kanë tendencë për të be-- kështu që ju jeni të kufizuar në disa mënyra që ju mund t'i përdorë ato, sepse VJ, gjendja mund të jetë goxha më shumë çdo gjë që ju dëshironi. Me çelsin e rasteve duhet të jenë numra, ose teknikisht ato mund të jenë chars, por chars, siç do të shohim, janë vetëm numra. Pra, ata duhet të jenë numra, por çelsin janë me të vërtetë më efikase se në qoftë se tjetër në qoftë tjetër, nëse, sepse edhe duke marrë shembullin before-- mirë, shembull klasën duket e mirë. E pra, le të themi ketu, ne vend bëjmë këtë si një rast tjetër, në qoftë tjetër, nëse skenari. Pra, nëse n është e barabartë e barabartë me 1, printoni ju kap një numër të ulët. Në qoftë se tjetër nëse n është e barabartë me të barabartë 2, ju kap një numër të mesme. Tjetër në qoftë barabartë barabartë 3, të lartë. Else pavlefshme. Pra, le të themi se ishte skenar tonë. Pra, le të themi të hyjmë 4, kështu që ne presim të pavlefshme. Mënyra se nëse tjetër rast tjetër nëse qasja do të punojë është kontrollon gjendjen e parë. Kjo nuk është e kënaqur. Pra, ne kontrolloni gjendjen e dytë. Kjo nuk është e kënaqur. Kontrolloni gjendjen e tretë. Jo të kënaqur. Pra, ne do të shkojmë në tjetër dhe të shtypura të pavlefshme. Mënyra se si kaloni punon është ajo harton poshtë në atë që ne jemi duke shkuar për të thirrur një tryezë të kërcejnë. Kryesore Qenia Ideja se kur ju shkruani 4, menjëherë mund të shkojnë në default. Ajo nuk ka nevojë për të kontrolluar am rast I 1? Jo kjo nuk është ajo. Rasti 2? Jo. Rasti 3? Jo. Default. OK, kjo duhet të jetë aty ku jam duan, dhe pastaj ekzekutuar atë. Jo, ajo menjëherë hedhje në default. Ose unë të hyjë 2, është menjëherë do të shkojë në 2 pa pasur nevojë për të shkuar nëpër rastin 1. Pra, në këtë mënyrë, realisht në ditët e sotme kjo është jo se e madhe e një fitimi efikasitetit. Zakonisht kompjuterat janë goxha të shpejtë, dhe kjo nuk është aq e madhe. Por kjo është e vërtetë se switches janë më të shpejtë. Nëse ju jeni të vërtetë duke u përpjekur të zgjedh, të përdorur një switch. ALLISON: ftohtë. Dhe pastaj ne kemi operatorin tresh. Kështu që unë e di që unë e përmenda më parë fjala sheqer sintaktik. Pra, kjo është vetëm gjërat që e bëjnë të Kodi tuaj shumë më konciz. Pra, kjo është një nga ato raste. Pra operator tresh është pikëpyetje zorrës së trashë si ne e shohim në vargun linjë s barabartë n më e madhe se 100 pikëpyetje të ulët zorrës së trashë të lartë. Pra, në thelb si punon kjo është e n madh se 100 është një kusht. Kështu që unë mendoj se mund të bëjë kuptim. Është si të pyesësh një pyetje. Është thënë oh, është më i madh se n 100. Kush e di? Dhe në qoftë se ajo vlerëson të vërtetë, ajo do të ju jap gjëja e parë që është e listuara atje, e cila është e lartë. Përndryshe ajo do të ju jap të ulët. Pra, kjo është vetëm një të vërtetë të thjeshtë dhe Mënyra më efikase për të bërë si një rast tjetër. Kjo është e gjitha kjo është. Dhe në qoftë se ne do të shkruaj këtë si një rast tjetër të kushtëzuar, kjo do të ishte nëse n është më i madh se 100, të kthehet të lartë. Else, kthehen të ulët. Kjo është vetëm një shumë më tepër mënyrë koncize të shkruar atë. Rob Bowden: Pra, ky shembull të veçantë është kur ju jeni duke bërë diçka si kjo, kjo është model ku I use tresh shumë shpesh. Pra, ne nuk kemi biseduar në lidhje me qëllimin ende, por unë e urrej sepse String s pikëpresje. Nëse n më të madh se 100, s është e barabartë me të lartë. Else, s është e barabartë me të ulët. Kështu që model, këto pesë linja i kodit fjalë për fjalë 100% të kohës mund të transferohen në çfarë ishte deri atje me një treshe. Pra tresh, një linjë e kodit. Qoftë tjetër, pesë. Kjo është një shembull I theksoj out çdo herë të vetme. Kjo do vend i madh për një operator treshe. Kjo është aq e pastër. Por njerëzit kanë tendencë për të nuk e përdorin atë. ALLISON: Merrni atë larg Gabe. GABRIEL: Deri tani ju djema të gjithë mësuar në leksionin e kësaj jave se çdo gjë në një kompjuter është binar, e drejtë? Ashtu si llambat këtu. Ju mund të jetë e ndezur dhe fikur. Dhe nga çdo gjë, unë do të thotë fjalë për fjalë çdo gjë. Disa numra, dhe karakteresh, dhe vargjet, dhe madje edhe kodi që ju shkruani, kur ajo merr hartuar në makinë Kodi dhe stuff like that, kështu që të gjitha boils poshtë për të 0 dhe 1 '. Dhe kështu, kur kemi të bëjmë me numra të plotë që është diçka që është teknikisht shumë të thjeshtë, ne duhet të jetë në gjendje të bëjë gjëra shtuar si ato, që është ndoshta një nga gjërat më të thjeshta ju mund të bëni për të dy integers, e drejtë? Pra, mbledhja dhe zbritja punon vetëm si ajo punon në simbol dhjetore, përjashtim këtu është binar, e drejtë? Pra, kjo është në bazë të dy. Pra, shtoni 1 plus 1. Që i jep 0 dhe 1. mbart. Dhe vetëm të vazhdojmë të bëjmë atë, Kështu që tani vjen pyetja më interesante. Ne e dimë se si për të përfaqësuar të gjithë integers pozitive në kompjuter, por le të bëjmë këtë një ushtrim. Pretendon ju djema janë të gjitha në vitin 1960, ose diçka duke u përpjekur për të krijuar një kompjuter, dhe ju keni për të dalë nga një mënyrë për ruajtjen minus 1, për shembull, ose minus ndonjë integer për këtë çështje. Si do ta bëni këtë? Ndonjë ide? Vetëm hedhin asgjë në mua. Po? Audienca: [padëgjueshme] caktojë një të veçantë në qoftë se juaj [padëgjueshme]. GABRIEL: Ju mund të caktojë një bit special, e cila do të jetë 0 ose 1. Le të thonë se një në qoftë se është pozitive dhe 0 nëse është e negative. Dhe pastaj pjesa tjetër e pak është vetëm për të ruajtur numrin. Ftohtë. Pra, kjo është një ide shumë e mirë. Ne kemi, unë nuk e di, 200. Dhe në qoftë se pak para është ndezur, atëherë kjo është plus 200. Nëse është e fikur, ajo është minus 200. Ftohtë. Nuk është vetëm një i vogël Problemi me këtë, e cila është në qoftë se ne të përpiqemi për të përmbledhur gjërat. Pra, imagjinoni ne kemi 11.111 këtu, dhe ne jemi mbledhur këtë me 00.100 çfarëdo. Nëse ata të dy janë pozitive, kjo është në rregull. Por pastaj, nëse një nga tyre është negative, si le të themi se kjo pak here është ai që është përgjegjës for-- Unë jam duke shkuar për të bërë një separate-- kështu që kjo do të thotë se ky numër here është pozitiv. Kjo do të thotë se ky Numri këtu është negative, e drejtë? Por pastaj kur ju jeni shkuar për të përmbledhur ato, ju nevojë për një nëse deklaratë duke thënë oh, nëse kjo është 0, atëherë shuma ime do të jetë diçka të ndryshme, e drejtë? Pra, ka një pak Mënyra më e mençur për të bërë se, e cila është e quajtur komplementin e dytë,. Pra, në thelb ajo që ne bëni është që të përcaktojë minus 1 të jetë gjë që nëse ne të shtoni deri në 1 na jep 0. Më lejoni të përsëris se. Pra, le të themi se ky këtu është 1. Cila është gjëja që natyrisht në integers pozitive shtohet se na 0 jep? Çfarë ndodh nëse ne përpiqemi për të shtuar se ky numër? Ne jemi duke shkuar për have-- OK, kështu që le të shtoni. Ne do të kemi 1 plus 1 është 0, dhe pastaj ajo mbart mbi. Dhe atëherë ne jemi duke shkuar për të marrë 0 përsëri. Unë jam duke u hutuar. Dhe ju jeni duke shkuar për të marrë 0 dhe 0 dhe 0 dhe 0 dhe 0 dhe 0. Shumë e 0-së. Në një e fundit, ne nuk jemi do të jetë në gjendje për të kryer atë mbi, sepse le të thonë se ne jemi vetëm që kanë të bëjnë me një byte, kështu që vetëm 8 bit. Pra, çfarë kompjuteri bën parazgjedhje është vetëm harron atë [e padëgjueshme], OK? Pra, kjo është ajo që quhet plotësues të dy së. Ne thjesht të përcaktojë minus 1 të jetë gjë këtu se në qoftë se ju të shtoni atë në 1 do ju jap 0. Dhe kjo është pretty cool sepse ne nuk të vërtetë duhet vonë për të zbatuar një lloj të ndryshme të shumës në varësi të faktit nëse kjo është një negative ose një numër pozitiv. Ka që e bëjnë kuptim? Pra, një gjë që ne bëjmë këtu në mënyrë që të konvertohet në mes të një pozitiv dhe një negativ integer është atëherë ne rrokullisje çdo gjë, dhe pastaj shtojmë 1 të këtij numri. Nëse ju të përpiqet të bëjë atë vetë në një copë letër, ju jeni duke shkuar për të parë se ka kuptim. Por, nëse unë përfitoj nga ky numër këtu, kjo është pesë. Pra, nëse unë rrokullisje gjithçka here, kështu 1, 1, 1, 1, 1. Flip, rrokullisje, rrokullisje. Dhe atëherë unë shtoj 1 të saj. Unë jam duke shkuar të ketë pikërisht minus 5. OK? Kjo lloj e bën kuptim, sepse nëse ju përpiqeni për të përmbledhur këtë me numrin e që kemi pasur më parë, të cilat was-- le të shfletoj këtë përsëri. Ajo ishte 101 dhe shumë të 0-së. Nëse ju provoni për të shtuar këto dy numra së bashku, ju jeni do të ketë pikërisht 0. OK. Ndonjë pyetje? Audienca: [padëgjueshme] GABRIEL: Çfarë doni të thoni? AUDIENCA: Negativ për pozitiv [padëgjueshme]. Gabriel: Jo, ju rrokullisje dhe ju shtoni 1 gjithmonë. Po. OK, kështu që personazhet e koduara edhe binareve. Ne kemi tabelën ASCII, si ju ashtu pamë në leksionin, e drejtë? Pra, kjo është në thelb një hartë të gjërave. Dhe këtu unë nuk mund të theksoj mjaftueshëm se për një kompjuter, a dhe 65 fjalë për fjalë janë e njëjta gjë. Pra, nëse unë shkruaj diçka si char c barabartë a, I mund njëkohësisht të shkruani vetëm 65 here, dhe kjo do të jetë saktësisht e njëjtë, OK? Nuk ka asnjë ndryshim whatsoever. Ne zakonisht priren për të vënë Karaktere në variablat e tipit. Char, jo për shkak se ata janë në thelb bërë për atë, por për shkak e konventës të njeriut. Por ju vetëm mund të merren me integers në vend të variablave të tipit char, dhe ju do të jetë mirë. Dallimi i vetëm aktual në mes të një c char dhe një i int është se një int ka katër bytes në shumicën sistemeve, ndërsa një char ka një bajt. Ata janë në thelb të njëjtën gjë në aspektin e të dhënave. Pra, çfarë do të shtypura këtu? Këtu ne jemi shtypjen një shifër duke përdorur printf me një plus 1, dhe ashtu si integers, chars mund të përmblidhet, në mënyrë karaktere mund të përmblidhet. Pra, kjo është pikërisht 65. Pra, nuk do të jetë 66, dhe këtu kemi 65 plus pak a madhe A minus, e cila do të jetë, unë nuk e di me të vërtetë. Por kjo do të jetë pikërisht hendeku midis shkronja kapitale dhe dhe letra të vogla, kështu që ne jemi duke shkuar për të marrë i vogël, apo jo? Po. Pra, kjo do të shtypura një Karakteri i cili është pikërisht kjo. Mirë? Ndonjë pyetje? Këtu kemi një bandë e ndryshme Lloje për variablave numerike. Ne tashmë flasim për int. Float është vetëm një mënyrë to-- kjo është me të vërtetë funny, sepse kur kam parë mësuar të programit mbrapa në ditë me Python, programi i parë që kam u përpoq për të shkruar, pashë se kishte një Lloji i thirri dhe një lloj i quajtur noton. Dhe noton ishte për të gjithë numrat reale. Deri atëherë unë pyetur pse duhet të Kam përdorur ndonjëherë një int, atëherë? Sepse në qoftë se unë mund të përdorni të gjitha Numrat real me një noton, Unë vetëm do të ndaluar përdorimin ints, e drejtë? Sepse numrat reale janë shumë si më të përgjithshme. Ajo rezulton se kjo është e nuk ndodh në kompjuterë për shkak se ata janë në thelb gjëra të ndryshme. Pra integers dhe gjithandej, Operacionet që ju të bëni për ta janë në thelb të ndryshme, sepse për mënyrën se si ata janë të ruajtur, OK? Ne do të flasim pak pak më shumë në lidhje me atë në një të dytë. Pra dyfishtë është vetëm një noton madhe. Zakonisht në shumicën e sistemeve, a noton është katër bytes, ashtu si një int. Dhe një të dyfishtë është tetë bytes. Një kohë të gjatë është në fakt vetëm një simbol që ju të append në një lloj si int. Ju thoni kohë të gjatë int si kjo. Kohë të gjatë int x ta bërë atë më të gjatë. Kështu që në shumicën e sistemeve, që do t'i japë tetë bytes në vend të katër zakonshme. Dhe ju në fakt mund të bjerë në, kështu që mund të them vetëm kohë të gjatë, dhe që punon shumë, OK? Ju gjithashtu mund të bëjë gjëra të tjera të tilla si int unsigned, ose përsëri vetëm të panënshkruar do të punojë. Dhe kjo do të bëjë x të jetë një variabël si çdo gjë është pozitive, kështu që ju nuk mund të vërtetë të ketë negative numrat në mënyrë që pamë deri këtu. Pra pas mrekullueshme pikë dhe saktësi lundrues. Kjo është një nga arsyet pse ju dëshironi të përdorni ints vend të gjithandej, sepse ints janë 100% të sakta, e drejtë? Është pikërisht ky numër. Për pikë lundrues, në qoftë se ju thonë se përgjigja është e barabartë me 1 mbi 10-- Unë të ndodhë që të ketë këtë saktë Programi këtu, float.c. Kjo shtyp në 20 numra pas presjes dhjetore. 1 ndarë nga 10, dhe që zakonisht është 0.1, e drejtë? Por këtu në qoftë se ne bëjmë noton dhe pastaj të drejtuar atë, ne shohim se kjo nuk është saktësisht 0.1. Kjo është diçka 0,149. Dhe pse është kjo? Sepse ju nuk mund të vërtetë të përfaqësojë çdo numër të vetëm të jetë e mundur të vërtetë në kujtesë sepse ka uncountably shumë prej tyre. Pra, ne jemi teknikisht në gjendje të përfaqësojnë një sasi e fundme të tyre me një sasi të caktuar të të dhënave. Por kjo është me të vërtetë interesante. Tani kjo ngre Pyetja se si ju do të shkoni në lidhje me përfaqësimin e këtë me bit, e drejtë? Pra, si janë ruajtur gjithandej? Me integers ajo ishte e lehtë. Por me gjithandej që ju dëshironi për të maksimizuar varg, dhe ju duan të jenë në gjendje për të përfaqësuar numër të madh dhe numër shumë të vogël si 0.000001 në të njëjtën kohë. Pra, përsëri, të njëjtën lojë. A ka dikush ndonjë ide se si ne mund të shkoni në lidhje me përfaqësimin e noton në kujtesë? Vetëm hedhin asgjë. Po, të lutem. Audienca: [padëgjueshme] si në qoftë se ajo ishte dy ints dhe një duke qenë [e padëgjueshme] dhe një qenie gjithçka pas presjes dhjetore. Gabriel: OK, cool. Pra, dy integers të ndryshme. Ju mund të keni 12.45, kështu që është e 12 dhe 45. E bukur. Çfarë zimi ju do të thoni? E njëjta gjë? Vërtet? Audienca: [padëgjueshme] shënim ku keni ndarë bazë. GABRIEL: simbol shkencore, vërtet kjo është zakonisht ajo që ndodh. Pra, kjo është ajo që quhet mantissa. Kjo është ajo që është në të vërtetë numrin, dhe pastaj shpjegues është vetëm ku comma është, e drejtë? Pra, kjo do të jetë diçka e Formes 1, 2, 3, 4, 5 herë 10 në 4 minus. Unë vetëm e kuptoi that-- yeah, pikërisht. Dhe pastaj kjo 10 në minus 4 është do të përcaktojë se ku comma është, OK? Në Brazil ne përdorim presje. Këtu ju djema të përdorni një pikë. Pra, a dot. Dhe kjo është e ftohtë, sepse atëherë ju mund të përqëndrohet shumë bit tuaja në këtë djalë këtu, në mantissa, dhe atëherë kjo është do të jetë saktësi tuaj aktuale. Dhe ju mund të bëni këtë ose në decimal ose në sistemin e bazuar binar. Nuk janë të ndryshme mënyra për të zbatuar këtë. Pyetje? Po? AUDIENCA: Sa vende pas decimal [padëgjueshme]? GABRIEL: Kjo është një pyetje e ndërlikuar, sepse ajo nuk është me të vërtetë 100% të sakta, sepse siç e shihni këtu, për disa numra kjo është 100% i saktë. Unë besoj se në qoftë se ne kemi vënë 0.5 këtu, ajo do të jetë 100% i saktë. Ajo do të jetë 0,500000. Pra, në këtë rast, është e përsosur. Por në raste të tjera, kjo është shumë më pak të përsosur. Në përvojën time, ashtu si deri në katër, pesë numra pas presjes dhjetore, është shumë e saktë. Në qoftë se ju përdorni një të dyfishtë, ajo do të të jetë mënyra më e saktë se kaq, OK? Rob Bowden: Pra, vetëm për të hedhur disa Konteksti më shumë në gjithandej, Unë kurrë nuk kujtohet 100% si në spekulim i gjithandej në fakt punon, por unë ju gjithmonë mbani mend që gjithandej të fillojnë marrjen e çrregullt. Pra, ideja është se kur ju të merrni të vërtetë, me të vërtetë një numër të madh apo me të vërtetë, me të vërtetë numrat të vogla, ne fillim duke u përkeqësuar dhe më keq në diferencuar në mes të dy gjithandej ngushtë. Pra, si unë doja të mendoj për është me lundrues pikë jo saktësi, ka dy pluskues që në qoftë se unë të përpiqet për të specifikojë ato në C, përkundër faktit se ata janë numra të ndryshëm, ata do të jenë të interpretohet si njëjtin numër, sepse ne nuk mund të ruajë ato në mënyra të ndryshme. Ne duhet të përdorin të njëjtat bit. Dhe kështu që kur ne të merrni për të me të vërtetë, një numër i vërtetë i madh, duke folur si 10 për 300 ose diçka, ajo është në atë pikë që 10 deri 300 ose 5 herë 10 deri 300 nuk mund të jenë të diferencuara nga 7 herë 10 në 300. Pra, kjo është një dallim shumë i madh midis dy numrave. Por pastaj kur ju merrni poshtë për gjërat normale varg, ju kanë tendencë të jetë goxha mirë në diferencuar. Dhe pastaj kur ju merrni poshtë me të vërtetë të vogël, ju jeni gjithashtu duke marrë mjaft e keqe përsëri. Pra, si një bandë e tërë e 0,0000, ajo merr mjaft e keqe. Gabriel: Yeah, kështu që një shënim të shpejtë. Asnjëherë mos e bëjnë këtë. Asnjëherë mos të përpiqet për të krahasuar gjithandej përdorur barabartëve barabartë, sepse edhe në qoftë se ata janë gati njëjtë, pothuajse e njëjta nuk është e njëjtë. Pra, ajo që ju zakonisht e bëni është që ju të zbres ata, të marrë vlerën absolute të cilat, dhe të shohim nëse kjo është më e vogël se 0.0001 ose diçka të tillë, OK? Dhe cool. Unë e di shumë njerëz kanë disa sfond në Java, sidomos ata që bënë Shkenca AP kompjuterike, e drejtë? Dhe Java është një gjuhë që më së shumti të bazuara në C, ajo ka një çift dallime shumë të mëdha. Por, për unazore, dhe VJ, dhe stuff like se, ata janë të gjithë të njëjtën sintaksë e. Unë kam disa programe këtu për të treguar këtë. Kështu për shembull, një botë të thjeshtë përshëndetje. Kjo është përshëndetje botë në C, e cila ju djema janë patjetër të njohur me të, dhe kjo dhe kjo është në Java. Pra në Java, ne kemi këtë publik klasë, hello world, dhe i pavlefshëm publik statike args kryesore, dhe string. Të args string do për të dalë në C shumë shpejt. Por le të mos shkojë atje akoma. Tani për tani ne kemi pavlefshëm këtu, që do të thotë që kryesor nuk është marrë ndonjë argumente. Dhe pastaj ne kemi println, dhe kjo është lloj ekuivalentin për printf. Këtu ne nuk kemi me të vërtetë nevojë për backslash n sepse ln shtypura e bën këtë për ju. Ajo appends backslash n në fund të linjës. Por në qoftë se ju shkoni në diçka si një, ju mund të shihni se ata janë shumë e shumë të njëjtën gjë. Pra Initialization, dhe kusht, dhe përditësimi is-- kam humbur një hapësirë ​​here-- ata janë shumë e shumë të njëjtën gjë, me përjashtim Java ka si një pak më të gjëra të nivelit të lartë. Këtu ne mund të bëjmë plus I dhe Java do të automatikisht e bëjnë këtë unë këtu, e cila është një numër i plotë, në një varg, dhe pastaj append Dy vargjet bashku. Këtu në C, ne duhet të bëjmë dhe% d. Linja këtu, për duket tamam njëjtë. Dhe nëse ne shikojmë në qoftë se, në IFS gjithashtu duken të njëjtë, e drejtë? Pra dallimet reale mëdha janë në ato gjëra që ju shihni këtu. Statike publike, i pavlefshëm, dhe pastaj publik klasë nëse. Pra, Java ka se çfarë është quajtur një makinë virtuale. Dhe kjo është e bazuar shumë të rëndë në atë quhet objekt orientuar programimit, cila është një shumë shumë zakonshme paradigmë për programimin në ditët e sotme. Dhe kjo gjë klasë është ajo që ju shihni, diçka nga orientimi i objektit, është që ju të krijoni një klasë dhe pastaj ju mund të nxjerrin objekte nga kjo klase. Ne nuk do të flasim shumë shumë për këtë në CS50, por kjo është patjetër diçka të vërtetë e ftohtë, veçanërisht në qoftë se ju doni të shkoni në zhvillimin më të sofistikuar web në fund të rrjedhës, si paraqesë projektin tuaj përfundimtar dhe disa kornizave bukur dhe stuff. Pra, në thelb ideja është që ju nuk duan të ri-zbatuar diçka, kështu që ju të krijoni diçka që është shumë të përgjithshme, si formë, dhe pastaj ju krijoni forma të ndryshme nga ajo, dhe pastaj nga secili prej këto forma, ju e krijoni disa forma shumë specifike në tre Dimensionet apo diçka si kjo. Dhe ata e kanë këtë hierarki ata e trashëgojnë nga ato të tjera, kështu që të gjitha funksionet dhe të gjitha ndryshoret që formë madh këtu e ka, të gjitha këto do të ketë, dhe të gjitha këto janë do të ketë, dhe kështu me radhë e kështu me radhë. Pra, kjo është ideja themelore. C nuk ka se, por C ++ e ka këtë lloj të funksion. Dhe Java është ndikuar rëndë nga orientimi objekt, kështu që kjo është arsyeja pse ju të shihni klasit këtu gjatë gjithë kohës. Dhe gjëja tjetër është ky Java makinë virtuale. Pra, kjo, mendoj, është një ide shumë e zgjuar. Pra, çfarë folks të cilët java shpikur bëri është ata nuk duan të përpilojnë kodin e tyre dy herë në qoftë se ata kishin për të drejtuar atë në një Windows-it, ose një Mac apo Linux, kështu që atë që ata bëjnë po ata të drejtuar fjalë për fjalë diçka si aplikim, por ju nuk duhet të vërtetë shoh se ndodh. Pra, ata të drejtuar një makinë virtuale brenda kompjuterit tuaj, i cili është në thelb si një mini sistem operativ. Dhe kjo operativ Qëllimi i sistemit në jetën e është vetëm për të drejtuar atë që quhet kodin bajt. Pra, në vend të në C, për mënyrën se si ne do të përpilojnë kjo është bërë në qoftë se, dhe pastaj të drejtuar ./if. Kam harruar backslash në. Në Java, ju do të bëni të parë Java C për hartimin e tij, if.c. Kjo nuk është C. Është dot java. Dhe atëherë ju keni për të mos kandidojë ./. Ju merrni këtë skedë të re if.class, por ju nuk mund të vërtetë drejtuar if.class tani vetëm siç kemi bërë më parë. Kjo nuk është një ekzekutues. Ju keni për të kandiduar. Ju keni për të ushqyer atë në një program të quajtur Java, dhe se programi është makinë virtuale, dhe pastaj ju bëni if.class, ose në qoftë se. Po. Dhe pastaj ajo punon. OK kështu që kjo është lloj i makinë virtuale ndodh. C nuk ka se, kështu që në qoftë se unë do të vënë këtë program në një makinë Windows-it, kjo nuk do të punojë në C. Në Java e bën atë. Pyetje? Ftohtë. Kjo është në qoftë se për seksionin super për sot.