Rob: Në rregull. Mirëpritur në seksionin e parë. Unë jam Rob. Joseph: Unë jam Jozefi. Rob: Pra, ne do të drejtë pikiatë in Gjëja e parë për të folur për është Appliance. Kështu që shpresojmë se shumica prej jush kanë shkarkuar atë tashmë. Por ju mund të shihni udhëzimet në cs50.net/appliance. Oh zot, tani unë jam vetë-vetëdijshëm. Unë ende të dëgjojë atë. JOSEPH: Wow, kjo tingëllon si është e çorientuar. Rob: Pra, disa njerëz janë të pasur çështje me të, kështu që mos prisni deri minutën e fundit të problemit të vendosur për provoni dhe zgjidhur Appliance dhe gjetur se ajo nuk është duke punuar. JOSEPH: Dhe në qoftë se diçka po nuk punon dhe keni nevojë për ndihmë, ju mund të shkoni në cs50.net/discussion ku ne të ketë një forum ku ju mund të postoni pyetjet tuaja. Dhe ne do të merrni për ta më në fund. Rob: Në rregull. Pra, kjo është ajo që Appliance duket si. Përsëri, kjo është vetëm një krejtësisht të veçantë sistemit operativ drejtimin brenda çfarëdo sistemi operativ që të vrapojnë në laptop. Dhe gjërat kryesore që ju do të të përdorur janë të gedit. Kështu që shpresojmë se kjo tashmë ka të bëhet një vend të njohur. Terminal. Dhe ju gjithashtu mund të kandidojë Chrome brenda Appliance. Ka pasur disa njerëz të cilët kanë raportuar internet nuk punojnë në Appliance. Dhe disa prej tyre kanë marrë vetëm se nuk është menduar të jetë internet në Appliance. Por po, nuk është menduar të jetë e internetit. Unë do të them atë të drejtë tani, por kjo nuk ka vërtetë do të thotë asgjë. Në qoftë se interneti nuk është duke punuar, kjo është ajo që ju kanë tendencë që të duhet për të kandiduar për të rregulluar atë. Nëse keni çështje të internetit, nuk e bëjnë mos harroni atë, vetëm pas atë në Diskutoni, dhe ne do të themi, të drejtuar këtë. Por në internet duhet të jetë duke punuar. Pra, e vetmja gjë tjetër - po, asgjë nuk tjetër është me të vërtetë e rëndësishme. Por unë vetëm të kërkuar për të vënë në dukje se - shohin në këtë këndin e poshtëm të djathtë. Pra, secili i Pajisje tuaja duhet kanë një adresë IP. Dhe më pas në semestrin, kjo IP Adresa e do të bëhen më të rëndësishme kur ju jeni duke punuar në p-set e internetit, sepse ju do keni të drejtë të hyni në Faqja e internetit ju jeni duke punuar në nga tuaj Chrome lokal duke përdorur këtë adresë IP. Por ajo që unë si për të përdorur adresën IP për - dhe ju nuk keni për të bërë këtë, unë vetëm dua të theksoj atë - është këtu. Pra, kjo është një dritare terminali në Mac im, kjo nuk është në Appliance në të gjitha. Dhe ju mund të kërkoni atë kjo komandë ka. Por unë jam duke shkuar për SSH direkt për Appliance tim. Unë nuk e di se çfarë IP është. JOSEPH: 168 - 168.224.1.0. Rob: Pra, një herë unë jam bërë me këtë, hyni brenda Tani, në thelb, kjo është identike me një dritare terminali në Appliance tim. Kështu që unë shumë e shumë nuk ka punuar në të vërtetë nga brenda pajisjes vetë. Unë vetëm gjithmonë e kanë atë drejtimin në sfond minimizohet dhe SSHed në të. Çështja me këtë është që ju nuk do të jetë në gjendje të përdorin gedit lehtë direkt nga kjo. Por në qoftë se ju doni të jetë një ftohtë i vërtetë hacker, atëherë ju duhet të merrni për të përdorur një Komanda linjë text editor anyway. Pra Vim dhe Emacs dhe Nano, të gjitha këto janë alternativa të ndryshme. Nano ka tendencë të jetë më e lehtë. Dhe unë mendoj se nuk ka sintakse theksuar. Oh, jo, kjo tërësisht e bën. Kështu që ju mund të përdorni Nanon, sepse se një është goxha e lehtë. Ju shikoni gjitha urdhërimet e mia në fund. Ky simbol pak karrota. Nëse ju nuk e keni parë atë më parë, ju do të ndoshta shohin atë shumë tani. Kjo zakonisht do të thotë karrota kontrollit, si poshtë-majtë të tastierës tuaj karakter të kontrollit. Kështu që këtu është e thënë mua këtu - oh, nuk është prerë në qoftë se unë të zoom in Pra Kontrolli, X është se si Unë jam duke shkuar për të dalë. Dhe ai thotë se unë mund të goditur Y për Po, për ruajtje, N për No Pra, kjo është Nano. Vim dhe Emacs kanë tendencë të jenë pak më të komplikuar dhe e madhe. Por ju mund të merrni përdorur për të, dhe pastaj ju do të love it. Pra, kjo është ajo. Joseph: Nuk ka nevojë për të bërë këtë. Rob: Po. Ju jeni të lirë për të përdorur gedit për Pjesa e mbetur e semestrit. Kështu që çdo pyetje aplikim të lidhura? A mos keni ndonjë mendime se çfarë tjetër duhet të flitet për aplikim? Po. Gjuha 1: Kur ju SSHed në tuaj gjë, ishte Crimson fjalëkalimin? Rob: Po. Fjalëkalimin për shumë e shumë çdo gjë në Appliance është duke shkuar të jenë Crimson. Gjuha 2: Install si një IDE të vërtetë për aplikim, do të punojë? Rob: I imagjinoni Eclipse nuk kanë një Version Fedora, në të cilin rast, po, ju mund ta bëni këtë. Kjo ndoshta nuk është me të vërtetë ia vlen. Gjuha 2: OK. Pra, kjo është ndoshta më e lehtë në qoftë se unë të kërkuar për të përdorni Eclipse, vetëm përdorni amtare dhe pastaj ngarkoni në - Rob: Oh, kjo është gjithashtu ndoshta më e lehtë. Por ju mund të merrni atë të punës brenda Appliance. JOSEPH: Dhe për kamera, pyetja ishte, mund të instaloni një tjetër IDE brenda Appliance? Rob: Eclipse duke qenë një shembull i një IDE. Çdo pyetje të tjera Appliance? Dakord. Pra, ne tani do të lëvizin për në rreshtin e komandave ndërfaqe të lidhura gjërat, kështu CLI. Dhe përsëri, unë jam vetëm duke shkuar për të punuar në këtu, sepse kjo është identike me duke punuar në një dritare terminali brenda Appliance. Si është kjo font kërkoni? A është kjo mjaft e madhe? Dakord. Pra, ka shumë të komandave që ju duhet të mësohen mjaft për të gjatë gjithë semestrit. Të dy e madhe për të lundrimit janë ls, lista fotografi në këtë directory, dhe cd, kështu që të ndryshojë directory. Kështu që unë mund të ndryshojë për desktop dhe pastaj një model shumë i zakonshëm është një cd të directory dhe menjëherë ls Çfarë është në directory. Njerëzit gjithashtu nganjëherë nuk e kuptojnë se përfundimi Tab është një gjë. Cd Pra si, VH, dhe pastaj i goditi Tab. Unë pothuajse asnjëherë lloji nga të gjithë gjë. Dhe pastaj, nëse unë të mbajtur goditur Tab përsëri, ajo do të automatikisht fillojnë listë për mua. Kështu që unë mund të cd vhosts, të presë lokale. Dhe kjo është vetëm do të - në rast se ju nuk e keni dëgjuar termin para, Lista është vetëm një tjetër fjalë për dosje. Deri tani, nëse ju shihni - le të sjellë që në krye. Deri tani, nëse ju shikoni në kllapa, ju shih tildë pak, çaj, vhost, çaj, host lokale. Pra tilde, që i referohet të directory time në shtëpi. Kjo është një directory të jeni në kur ju SSH in Është directory ju jeni në kur ju të hapur një terminal. Kjo është ajo ku ju filloni. Dhe kështu që unë jam brenda directory time në shtëpi, dhe unë jam në brendësi të vhost Drejtoria brenda directory time në shtëpi. Dhe atëherë unë jam në brendësi të lokale presë directory brenda që. Kështu që disa gjëra të tjera të dobishme me cd - ose mirë, në përgjithësi, kështu dot gjithmonë referohet dosjen aktuale. Cd, dot është një komandë shumë e pa vlerë. Por kjo është në ndryshim të Lista aktuale. Një një më shumë i dobishëm në aspektin e cd eshte dot, dot, e cila është thjesht shkoni deri një directory. Dhe vini re se këto - Unë dua të them emërtimet, por këto simbolet, dot, dhe dot, dot, ato punë për shumë e shumë çdo komandë ju jeni do të jetë duke menduar për drejtimin. Pra, si cd është ndoshta ku ju do të jetë duke përdorur më, por këto nuk janë gjëra që vetëm cd kupton. Është shumë e shumë diçka të gjithë tuaj command line kupton. Një shumë e programeve të kuptojnë dot dhe dot, dot. Kështu ato të tjera të dobishme - cd, dash. Kështu që do të më çojë në Lista e fundit që unë isha futur me emrin tuaj Kështu që nganjëherë unë do të bëjë diçka si, oh, unë jam duke punuar në këtu. Dhe unë shoh disa gabim me diçka, dhe Unë do të shkoj të hetuar atë duke shkuar në disa directory të rastit diku. Dhe unë nuk e di nëse kjo do të më lejoni në atje. Ajo do. Pra, atëherë unë bëj çdo gjë që unë dua në këtë directory. Blah, blah, blah, blah, blah. Dhe unë kam qenë si, të gjithë të drejtë, unë dua për të shkuar mbrapa aty ku isha. cd, dash, dhe kjo sjell me të drejtë mbrapa. Kështu që unë jam duke shkuar për të hedhur një shumë prej tyre në ju sot. Unë nuk pres që ju të mësuar përmendësh të gjitha prej tyre. Është lloj i vetëm e di se ato ekzistojnë. Dhe pastaj më vonë, kur ju jeni si, hmm, unë dua të kthehem në Lista që unë kam qenë vetëm në, oh, prisni, diçka e tillë ekziston. Ju nuk keni të drejtë të shkruani te gjithe direktorine përsëri. JOSEPH: Dhe në fund ju do të vetëm përdorimin e tyre pa pushim, dhe ajo do të bëhet e kujtesës muskujve. Rob: Po. Pra, si kam thënë më parë, se tilde është directory tuaj në shtëpi. Kështu që unë mund të cd, tildë. Por unë as nuk duhet të të bëjë që në qoftë se unë vetëm - Unë do të shkoj përsëri në directory kështu kjo nuk është një shembull i kotë. Por në qoftë se unë vetëm bëj cd, kjo është edhe njëjtë, të shkojnë në directory time në shtëpi. Unë bëj Command, K. JOSEPH: Ju gjithashtu mund të shkruani qartë, fjalë, dhe ajo duhet të qartë atë. Rob: Dhe unë mendoj gjithashtu Kontrollit, L gjithashtu e bën këtë. Kështu shumë mënyra të ndryshme. Unë mendoj se ka disa ndryshime ku qartë dhe Kontrollit, L do vetëm me të vërtetë të shtyjë atë të lartë dhe Unë ende mund të lëvizni prapa. Komanda, K fjalë për fjalë shkatërron çdo gjë, dhe ju nuk mund të shkoni back up. Në shumë pak, kjo është se si funksionon në iTerm2. Unë nuk e di se si gjëra të tjera - oh. Me SSHing, kështu që nëse ju jeni në Windows, ju jeni do të duhet për të shkarkuar stuko në mënyrë që të SSH që nga Windows-i nuk ka kanë si një ndërtuar në SSH mjet. Nga Macs, ju mund vetëm SSH direkt prej ndonjë terminali. OK. Pyetje? Me ls, kështu diçka për të marrë të përdoret për të me shumicën e këtyre komandave është - mirë, unë do të bëj vetëm një të tillë. Ls, dash, l. Pra dash, l është ajo që ne jemi duke shkuar për të thirrur një flamur për ls. Dhe shumë prej këtyre komandave kanë flamuj që ju mund të kalojë me ta. Pra, në këtë rast, dash, l është një flamur që tregon atë që të më jepni një të plotë listë e të gjitha informatat nga këto fotografi. Kështu që ne shohim këtu se desktop ishte modifikuar më 30 korrik në 12:54. Shkarkime është ndryshuar për herë në 6 shtator. Këto janë përmasat aktuale dhe bytes e këtyre drejtorive. Ju nuk keni për të kuptuar të gjithë këtë. Kjo stuff në të majtë, këto drwx-së, që do të bëhen shumë më të rëndësishme më vonë, kur ju duhet të merren me të - që ka të bëjë me të cilët ka leje për të parë në këto dosje. Dhe kështu nëse nuk keni qenë përdoruesi vetëm në ky kompjuter, ju do të jetë në gjendje të të themi, OK, unë duhet të jetë i vetmi lejohet të shikoni në këtë skedë ose unë jam i do të lejojë të gjithë për të parë në këtë skedë. Pra, dikush tjetër në kompjuterin tim mund të shikoni në këtë fotografi. Unë nuk e di edhe se çfarë ky - çfarë do të bëni këtë? Joseph: Unë nuk jam mjaft i sigurt, në të vërtetë. Rob: Asnjë ide. JOSEPH: Por në qoftë se ju nuk e dini, nuk ka një komandë të dobishme që ju mund të përdorni për të ju them se çfarë do të thotë prodhimi. Dhe në qoftë se ju shkruani në njeri para komandën - mënyrë M-A-N. Rob: Man. Pra, njeriu është një tjetër që është shumë i dobishëm. Dhe njeriu, ls. Pra faqet njeriu, ata kanë dy urdhëron që ju jeni do të jetë duke përdorur në rreshtin e komandave, dhe ata gjithashtu kanë funksionet që do të jenë të rëndësishme me C. Kështu që ju mund të njeriut - dhe unë injoruar 3. Por njeriu 3 printf do të sjellë up versionin C e printf. Por në qoftë se unë vetëm bëj njeri printf, kjo është do të sjellë deri printf komandës që ndodh në rreshtin e komandave. Pra njeriu, ls. Faqet e njeriu mund të jetë shumë e madhe. Këtu, edhe pse, ju do të shihni këtë listë të gjitha këto flamuj që ls kupton. Pra, nëse ne do të shkojmë për të dash, l, dhe - Unë jam vetëm duke shkuar për të hedhur këtë në ju. Por ne kerkim, ju doni për të goditur së pari pyetjen mark ose butonin çaj. Pra çaj. Dhe atëherë unë mund të kërkoni për çdo gjë që unë dua. Kështu që unë jam duke shkuar për të zvogëluar për dash, l. Dhe nuk ishte. Kështu që përdorin një format të gjatë liste. Kjo nuk do të më ndihmojë të kuptoj se çfarë që kolonë të veçantë do të thoshte, por unë marrë diku në këtu ajo do të shpjegojë se. Kështu që përdorin faqet njeri për çdo komandë që ju nuk e kuptojnë menjëherë. Unë jam goxha i sigurt që ju mund edhe njeri, njeri. Një ndërfaqe të online manualet e referencës. Oh, një e fundit që është ndoshta pak ls përkatëse është, dash, një. Pra, vini re, nëse unë vetëm bëj ls, Kam marrë këto pesë fotografi. Në qoftë se unë bëj ls, dash, një, unë të marrë një shumë më shumë fotografi. Pra, gjë të përbashkët mes të gjitha këto Fotografi të reja është dot paraprakisht. Pra, konventa është se një fotografi që fillon me një pikë është e fshehur. Pra, ju nuk duan të shohin këtë dosje, ju nuk duan që të ketë atë rrëmujë me Ju perket juve directory. Kjo është vetëm kur ju kërkoni në mënyrë eksplicite, të gjithë të drejtë, ls, dash, një, më tregoni. A qëndron për të gjitha dosjet, duke përfshirë edhe ato të fshehura. Kështu që disa komandat e tjera. Oh, pyetje në atë pikë? Po. Gjuha 3: Kur ju bëni ls, një, çfarë është dot, dot? Rob: Oh. Pra, kjo është ajo që unë isha duke folur rreth. Është e njëjta gjë, ku Unë mund të pëlqen cd, dot, dot. Pra teknikisht, dot dhe dot, dot jemi fotografi që ekzistojnë në çdo të vetme directory ku dot fotografi referohet në dosjen aktuale. Pra, nëse unë cd, dot, unë jam vetëm duke shkuar për të qëndruar në directory. Dhe dot, dot gjithmonë i referohet previous directory një nivel up. Pra, nëse unë shkoj në shkrimet dhe ls, dash, al, Unë do të shoh dot, dot. cd me dot, dot sjell mua me directory e mëparshme. Po. OK. Pra, një tjetër shumë e rëndësishme komanda është rm. Pra, kjo është ajo që ne jemi duke shkuar për të përdorur për të hequr. Dhe më lejoni të bëjë në fakt një tjetër komandën e parë. Pra mkdir. Mkdir është se si ju mund të krijuar directories. Dhe unë do të krijojë një directory të përkohshëm dhe shko në atë directory të përkohshëm. Dhe siç pritej, është bosh. Por në qoftë se I ls, dash, një, unë ende kam dot dhe dot, dot, sepse dot referohet Lista aktuale. Dhe dot, dot i referohet Lista mëparshme. Ata gjithmonë do të ekzistojë pa marrë parasysh Lista ju jeni futur me emrin Dhe kjo është një krejtësisht e panevojshme komandë, por touch. Unë jam vetëm duke e përdorur atë, sepse kjo është një mënyrë e thjeshtë për të krijuar fotografi. Pra prek a, b prek, prek c është vetëm do të krijojë tre fotografi të quajtur një, b, dhe c janë se krejtësisht bosh. Pra, pika e mua krijimit të atyre në Vendi i parë është vetëm mënyrë që rm është se si ne mund të hequr ato. Pra rm, një. Ajo do të pyesni mua, hiqni rregullt bosh fotografi a? Dhe atëherë unë do të them Po. Pra, në qoftë se unë e di me siguri që unë dua të fshini këtë dosje, pa pasur nevojë të jenë të bëri, hiqni fotografi të rregullt bosh?, pastaj rm, dash, f do të jetë flamur që thotë se, detyrojnë të hequr pa madje edhe duke bërë mua, oh, po ju sigurte qe doni te fshini file? Po, unë jam i sigurt. Pra rm, dash, fb do vetëm bëjë atë pa pyetur. Pra, le të bëjë disa directories më shumë. mkdir, tmp2, cd, tmp2, prek një prekje, b. OK. Pra, tani unë dua të hequr tmp2 si një directory. Tmp2 Pra rm. Ju nuk mund të hiqni tmp2, ajo është një directory. Pra, çështja është se këtu rm nuk menjëherë të punojnë në directories. Është menduar vetëm për fotografi si Fotografi të jo-directory. Dhe kështu që ajo që ne mund të bëjmë këtu është rm, dash, r. Kjo qëndron për Recursively, të cilat mund nuk do të thotë asgjë për ju akoma. Por kur ju të merrni për recursion, kjo do të thotë më shumë. Pra rm, dash, r, tmp2 do të Recursively të shkojnë në atë directory. Pra, të zbresë në directory tmp2? Po, le të shkojnë në atë. A duam të hequr tmp2 / a? Po. A duam të hequr tmp2 / b? Po. Tani duam të hequr tmp2 directory? Po. Dhe kështu që tani directory dhe çdo gjë brenda i është hequr. Nuk është teknikisht një rmdir komandë që ju mund të përdorni për të hequr directories, por ajo vetëm punon në Drejtoritë bosh gjithsesi. Dhe për të parë se, le të vetëm bëni mkdir, tmp2 përsëri. Tmp2, prek një. OK. Pra, në qoftë se unë të përpiqet për të hequr dirtmp2, ajo do të thonë, nuk directory bosh. Kështu që unë shumë e shumë kurrë nuk përdorin të hequr dir komandën gjithsesi, sepse rm, dash, r do të punojë në directories bosh dhe directories jo të zbrazëta. Dhe gjithashtu, në qoftë se unë nuk dua që të ketë për të kalojnë nëpër atë gjithë procesin e duke zbritur në directory dhe të hequr çdo fotografi individuale, rm, dash, rf, tmp2. Dhe tani është e shkuar. Diçka që të jenë të kujdesshëm rreth është rm, dash, rf. Dhe kjo frikëson mua që edhe shtypni atë, sepse në qoftë se unë aksidentalisht hit Enter apo diçka. Pra rm, dash, rf, tilde do, pa bërë mua, f nuk shpejtë mua, kjo automatikisht do të largojë gjithe direktorine im në shtëpi dhe çdo gjë në të. Kështu që ju mund të mendoni se kjo është një gjë e trashë për të bërë. Dhe mirë, kjo është. Por kjo mund të ndodhë shumë lehtë nga aksident në qoftë se, të themi, kam kërkuar për të hequr slash im, directory vhost. Dhe vetëm në të shtypni të shpejtë, Unë rastësisht e bëjnë këtë. Kjo do të heqë Recursively të dyja tim directory shtëpi dhe directory vhost në këtë directory të veçantë që vetëm ndodh që të mos ekzistojnë tani. Por kjo ende do të heqë gjithe direktorine tim në shtëpi. Paktën duke mos pasur një F, kjo do të shkaktonte më parë. Dhe unë do të jetë si, oh, jo, unë nuk duan ta bëjnë këtë. Por njerëzit, çaj, duke përfshirë më kanë tendencë për të marrë në zakon të gjithmonë rf-ing. Edhe fotografi rregullta që unë mund vetëm të RM-së, c, unë priren të vetëm rm, dash, rf, c. Vetëm të jenë të kujdesshëm kur ju jeni rf-ing. Kryetari 4: Çfarë do të bëni C? Rob: C është e unë jam duke folur për këtë dosje C në këtë directory, që rm, c. JOSEPH: Dhe më shumë të rrezikshme, në qoftë se ju përdorni një yll, ai i referohet çdo gjë në directory. Pra, ajo që unë zakonisht priren të bëni është të dua unë shkoni në një directory dhe unë dua të hequr të gjitha dosjet në atje. Pra rm, dash, rf, yll. Rob: Po. Rm, dash, rf, yll. JOSEPH: Dhe në qoftë se ju nuk jeni të kujdesshëm ajo directory ju jeni në - Unë nuk ishte në temp, por unë kam qenë rastësisht në directory time në shtëpi, atëherë unë do të largoj çdo gjë në directory time në shtëpi. Dhe unë e kam bërë në të vërtetë se para, dhe Unë mendoj se ju keni bërë këtë më parë ose Jay ka bërë që më parë. Rob: Unë e kam hequr aksidentalisht - kështu që injorojnë atë komandë për një grimë. Joseph: Nuk fun. Rob: Pra, në bin directory çaj është një bandë e fotografi binar ku nuk do të të jenë ato të njohura si tingëllim. E pra, tingëllimë dhe në thelb të gjitha këto gjëra që unë jam drejtimin me urdhër Linja janë në këtë bin directory çaj. JOSEPH: Ashtu si ls është këtu. Rob: Pra dot, çaj, ls do të lista këtë directory. JOSEPH: Rm është gjithashtu në këtë directory. Rob: Unë rastësisht kam rm, rf-ed bin, e cila hoqi çdo komandë unë mund ndoshta ndonjëherë duan. E, cilën unë vetëm reinstall një Aplikim i ri në atë pikë. JOSEPH: Pra, të jenë shumë të kujdesshëm kur ju përdorni këtë komandë. Audienca: [padëgjueshme]? Rob: Po. Kjo është gjithashtu një zakon i keq për të marrë në. Nëse vëreni, unë jam tani - mirë, ju nuk mund të vini re, por im zoom-në ndoshta mund. Kështu që unë jam tani root @ aplikim. Pra jharvard është përdoruesi që ne duam ju që gjithmonë të jeni duke përdorur. Root është përdoruesi që ka leje të bëjë absolutisht asgjë. Pra, vini re, kur unë jam jharvard, në qoftë se unë të përpiqet për të CD - çfarë është një directory që? Oh, rrënjë është një shembull i mirë. Pra cd, rrënjë. Ndalohet hyrja. Sepse në qoftë se ne e shikojmë në këtë listë - dhe përsëri, ju nuk keni për të tërësisht e kuptojnë këtë. Por këto tri dashes janë duke thënë se nuk e le ndonjë tjetër përdoruesit në këtë directory. Dhe directory ndodh me të jetë në pronësi nga rrënja përdorues. Pra, fakti që unë jam jharvard dhe nuk ai i cili nuk është rrënjë është e lejuar në kjo dosje, që do të thotë që unë jam duke shkuar për të marrë leje e mohuar kur kam përpiqen për të cd në të. Kështu që kur unë jam Rrënja, kam leje për të të bëjë absolutisht asgjë, duke përfshirë fshini fotografi thelbësore të pajisjes dhe të shkatërrojë të gjithë gjë. Pra, kjo është një zakon i keq për të marrë në vetëm enden përreth tuaj sistem operativ si rrënjë. Unë bëjë atë gjithsesi. Pyetje? Dhe unë do të të dalë rrënjë, të qëndrojnë si jharvard. OK. Komandat më shumë relevante. Pra, duke shkuar prapa në temp tonë, mv komanda qëndron për veprim. Ju mund të lëvizin një. Tani ne duam të telefononi atë b, kështu që tani është quajtur b. Apo ndoshta ne duam të lëvizur b up një directory. Deri tani bosh këtë directory-së. Unë do të kthehem në directory time në shtëpi, dhe ne shohim se b është këtu, sepse directory shtëpi ishte një directory nga Lista që b kishte qenë in Ka edhe krah. Pra cp është kopje seksion super, dot, teksti. Unë mund të telefononi atë s, dot, teksti. Tani ne kemi dy seksion super, dot, tekst, dhe s, dot, teksti. Kjo gjithashtu punon në directories. Unë RF-ed një skedar të vetëm. Pra cp - mirë, së pari le të përpiqemi krah, tmp, tmp2. Pra, duke lënë jashtë directory tmp. Pra, të ngjashme me rm, sjellja e parazgjedhur është që të mos punojnë në directories. Dhe përsëri, të ngjashme me rm, default sjellje - mirë, duke marrë atë për të punuar me directories është një, dash-r larg. Pra kopje Recursively temp directory në tmp2. Dhe kështu që tani ne kemi dy tmp dhe tmp2, dhe se nuk është e dobishme që nga tmp ishte bosh në vendin e parë. Tmp2. Tani le të kopjoni tmp në tmp2. Dhe ne shohim se tmp2 gjithashtu ka fotografi një, sepse directory dhe çdo gjë brenda që Lista është kopjuar. Dhe kjo mund të jetë disi e dobishme nëse, thonë se ju jeni duke punuar në problemin vendosur një të tillë - ose në të vërtetë, vendos më vonë problematike janë edhe më e rëndësishme, sepse ka do të jetë një bandë e tërë i dosjeve dhe gjëra. Por ju doni vetëm për të, për një ndarje të dytë, ju jeni si, të gjithë të drejtë, unë jam i do të provoni diçka të ndryshme. Më lejoni vetëm të kopjoni tërë pset1 time Lista në pset1 rezervë në mënyrë që nëse Unë deri në fund vidhosje gjërat, unë mund të kthehemi në directory tim backup. Ka mënyra më të përshtatshme të versioning mbështetjen e deri kodin tuaj, por kjo është gjithmonë një mënyrë e shpejtë për të vetëm të bëjë Sigurohuni që keni një kopje të diçka që ju jeni gati për të modifikuar. Pra echo është gjithashtu një komandë një-off që lloj sillily vetëm do të shtypura për command line pikërisht ajo që ju të kërkuar për të jehonë. Pra jehonë hi. Ne vetëm do të shtypura hi. Echo përshëndetje botë. Ne do të shtypura përshëndetje botën. Kjo vjen në përdorim kur ju fillojnë kombinuar komandat. Dhe përsëri, nuk presin që ju të plotësisht kuptojnë këtë, por është e diçka për të parë. Dhe pastaj, nëse ju jeni Googling për shembuj ose ti e kupton që ju doni të bëni diçka, ajo mund të jetë e dobishme. Pra, le të, si një shembull, kështu ls, dash, l. Kështu që këtu unë shihni prodhimit i ls, dash, l. Dhe unë them, OK, unë dua të dyqan që në një skedar. E gjithë kjo prodhimit këtu, unë dua për të vënë në një dosje të veçantë. Pra, kjo pak më e madhe se simbol është ajo që ne jemi duke shkuar për të thirrur. Ne jemi duke Përcjellin prodhimit në një skedar. Le të thërrasë file blah, sepse kjo është ajo që unë gjithmonë kanë tendencë për të thirrur atë. Deri tani ne shohim ne kemi një paraqesë blah drejtë këtu. Dhe në qoftë se unë të hapur atë, unë do të shoh se është pikërisht prodhimi nga komanda se unë vetëm u zhvillua. Dhe në mënyrë të ngjashme, ju mund të - në qoftë se kjo ishte e prodhimit në një skedar, kjo është marrë të dhëna nga një skedar. Çfarë është një komandë që unë - Joseph: Unë mendoj se ju mund të përdorni pak a shumë, ndoshta. Rob: Por si për vetëm më pak blah? Nuk e di. Nëse ju vini në këtë skenar, si ka psets se kjo është e dobishme për të. JOSEPH: Ju mund të tub atë në jehonë. Pipe dosjen në jehonë për të parë atë. Rob: Kjo është tub. JOSEPH: Na vjen keq. Rob: Në rregull. Pra, kjo është e prodhimit në një skedar. Kjo është marrë tekstin nga skedari dhe t'ia dorëzojë atë për të programit. Dhe ju do të shihni këtë djalë. Pra, kjo është lloj i bërë të dy në të njëjtën kohë. Dhe në të vërtetë, unë do të prezantoj dy të reja urdhëron vetëm për të bërë përdorimin e tij. Historia është një urdhër i dobishëm që është vetëm do të shtypura nga një listë e ndonjë gjë që unë kam drejtuar ndonjëherë një linjë komande. Kështu që ne shohim këtu çdo gjë që unë kam qenë në drejtimin tërë këtë kohë. Shumë e LS-së. Dhe një tjetër komandë e dobishme është që grep qëllimi i tij është për të kërkuar mbi tekst duke kërkuar për modele, mirë, kërkoni për çfarëdo ty duan që ajo të shikoni për. Dhe kështu një përdorim të dobishëm këtu është, të themi ne duam të rrëmbyer historinë. Dhe unë dua të shikoni për komandat ku unë - çfarë është një e dobishme për të kërkuar? JOSEPH: [padëgjueshme]? Rob: Ose le të vetëm shikoni për të gjithë prek, për çfarëdo arsye. Pra, kjo është ajo që do të duket si. Dhe ju nuk keni për të krejtësisht të kuptojnë se. Por ideja është këtu, historia është duke i dhënë të njëjtën prodhimit siç bëri këtu ku është e shtypjes nga tërësia Historia e çdo gjë që unë kam drejtuar ndonjëherë. Ne jemi duke kaluar më pas se - kështu që në vend të botimit të saj në ekran, ne duam të ndodhë që të grep komanda e cila është në kërkim të të gjitha rastet e fjalës kontakt. Dhe kështu duke përdorur këtë kombinim të mjete historia dhe grep, unë mund të shoh, OK, këtu është e gjitha nga komandat unë kam ndonjëherë drejtuar, dhe këtu është një njeri disi të përbashkët. Ne jemi në fund. Dhe kjo është gjithashtu duke i dhënë me komandën Unë vetëm u që e kishte touch fjalë në të. Por tub është një gjë shumë e dobishme për kombinimin programeve shumëfishta. Dhe në fakt, kjo është një rrugë e shkurtër për le mua historia prodhimit të paraqesin blah, dhe let me grep duke përdorur fotografi blah si ajo që unë dua të hedh një sy. Pra, tub është vetëm një shkurtore për ata dy komandave. Po. Kryetari 4: [padëgjueshme]? Rob: Po. Çfarë është - Oh. Le provë. Pra, mace, qen, peshk. Kështu që unë dua të grep. Dash, r, përsëri, do të jetë Recursively, kështu që unë dua të zbres poshtë të gjitha directories. Unë dua të Recursively grep për të gjithë - dhe më lejoni të marrë përkohësisht kjo nga rruga. Ignore mua. OK. Kështu që unë dua të grep përkohësisht për të gjitha rastet e peshkut fjalës. Dhe kështu që këtu ajo që unë jam duke bërë është grepping Recursively për peshkun fjalë. Dhe yll do të thotë mbi të gjitha këto fotografi në këtë directory. Dhe kështu që ajo më dha një Ndalohet hyrja, për shkak se ajo nuk është e lejuar për të lexuar se file të veçantë. Por ajo gjeti peshk në fotografi, provë. Unë mund të them, në mënyrë të veçantë, unë vetëm dëshironi të shikoni në fotografi blah, në cilin rast nuk do të gjeni asgjë. Unë vetëm dua të shikoni në fotografi, provë. Ajo do të gjeni peshk. Kjo është një komandë shumë e dobishme të dini në përgjithësi. Ka disa alternativa për të grep të cilat janë menduar të jenë më të programues miqësore, por unë priren për të ende të bien përsëri në grep. Pyetje? OK. A ka komandat e tjera? Oh. Vetëm një një-off që unë gjithmonë të gjeni të jetë kënaqësi është Cal. Pra, vini re, kur unë jam në këtë lovely mënyrë të plotë ekran, unë nuk kam asnjë të tillë të lartë toolbar apo ndonjë gjë. Pra politike vetëm më jep pak bukur Kalendari kjo është e drejtë tani prerë, unë të marrë. Por komanda e bukur pak. JOSEPH: Kjo është [e padëgjueshme]. Komandat e tjera që ju mund të keni shihet përfshijnë tingulli dhe të bëjë. Ne do të shkoj për ta në më shumë detaje më vonë. Por në qoftë se ju keni qenë duke punuar në PSET, ju duhet të jetë njohur me ato. Rob: Në rregull. Pyetjet për të linjës komanduese gjëra? Dakord. Pra, le të lëvizin për disa C sende të lidhura. Variablat matematikë. OK. Pra, ashtu si kishim matematikë në Scratch, ju gjithashtu mund të përdorni matematikë në C. Para se të marrim për atë tërësisht, kështu variablave. Mos harroni se sa herë që ju të deklarojë një variabël si int x apo y noton, ju duhet të jepni të tipit më parë emrin e ndryshueshme. Pra lloje ne kemi parë deri më tani janë të int, noton, të dyfishtë, të gjatë e gjatë, të cilën unë nuk në të vërtetë nuk e di nëse ne kemi shihet se deri më tani. Ka disa ato të tjera. Ne kemi shohim char. Ka të shkurtër, e cila është si ajo e kundërta e gjatë e gjatë, ku është e vogla se një numër të plotë. Ne kemi parë gjithashtu string. Pra, çfarë ka të veçantë vargut? Pse duhet ta them se është jo krejt si int? Kryetari 4: Kjo nuk ka të vërtetë ekziston. Rob: Po. Pra, e vetmja arsye ne kemi varg është për shkak se kur ju bëni hash, përfshijnë cs50.h. Dhe ne do të shohim shembuj të kësaj më vonë - oh, kjo nuk do të trajtojë se mirë - ku cs50.h është duke bërë diçka përgjatë vijave të tipit def, yll char, string. Dhe kështu kjo është thënë se ne nuk bëjmë edhe e di se çfarë një yll char është ende. Por kjo është e thënë se ne duam string. Çdo vend që ju keni qenë duke përdorur varg, ju mund të ketë qenë duke përdorur yll char, e cila në të vërtetë është një lloj që ekziston në gjuhën C. Por ne do të merrni për këtë. Oh, dhe ajo shkon drejtë mbrapa. I zoti. Pra, të njëjtën gjë me bool ku të vërteta dhe të rreme. Kjo nuk është me të vërtetë një ndërtuar në lloj në C. Në vend të kësaj, kjo është vetëm, ka kjo zero vlera? Pastaj ne do të konsiderojmë vetëm që ajo të jetë e rreme. A ka kjo të ketë vlerën - mirë, e bën këtë kanë ndonjë vlerë që nuk është zero? Pastaj ne do të konsiderojnë atë të jetë e vërtetë. Pra, është e vërtetë, dy është e vërtetë, çdo gjë nonzero është e vërtetë. Pra ato janë ato. Pyetjet për variablave që deklarojnë dhe llojet e ndryshueshme dhe të gjitha që? Po. Kryetari 4: Për të gjatë e gjatë, në libër, ajo tha se duhej të ishte int e gjatë e gjatë. Por do të punojë vetëm kohë të gjatë? Rob: Pra, këto modifiers lloji. Pra int x. Pra, ne mund të themi unsigned int x. Ne mund të themi int x shkurtër. Ne mund të themi kohë e gjatë int x. Por shumë e shumë të ndonjë nga ato gjëra unë vetëm tha, int unsigned, int shkurtër, kohë të gjatë int, ju mund të shpëtoj prej int dhe vetëm ajo do të marrë që do të thotë int. X Pra panënshkruara, të cilat vetëm do të thotë - ju e dini se si zakonisht me një int, ju mund të thonë se x është e barabartë negativ 3? Me një int unsigned, ju nuk mund. JOSEPH: Dhe përsëri, për kamera, Pyetja ishte, çfarë është dallimi mes int të gjatë të gjatë dhe vetëm kohë të gjatë? Rob: Po. Kështu që unë do të pothuajse kurrë shkruar gjatë int të gjatë. Unë do të shkruaj gjatë e gjatë. JOSEPH: Çdo pyetje? Rob: OK. Kujtesë Pra pa kuptim pak e kjo është se si ne të deklarojë një ndryshore dhe nisja ndryshueshme dhe të deklarojë një tjetër ndryshueshme dhe nisja të gjitha në një hap. Pra, deklarata e variablit dhe variabli initialization nuk kanë por që mund të jenë të njëjtë linjë. Pra, ne kemi operatorët standarde matematikë që ju jeni duke përdorur për të - plus, minus, ndarje, herë. Ka gjithashtu modulo, të cilat ne do të shohim. Nuk ka, të paktën në C, një ndërtuar në pushtet Operatori caret exponentiation. E pra, nuk është një operator caret, por kjo nuk është pushtet. JOSEPH: Por kjo nuk është exponentiation, po. Rob: Mos përdorni caret të supozohet se kjo do të thotë si squared apo çfarëdo. Pra disa gjëra për të mbajtur në mendje në lidhje me ndarjen. Unë do të qëndrojë. Kështu deklaroi përgjigje nisja. Pra, ne jemi duke thënë përgjigje noton është e barabartë me 1 të ndarë me 10. Print përgjigje në dy numra pas presjes dhjetore. Dhe kjo është gjë e tillë që unë do njeri printf të kuptoj se Çfarë dreq ka%, dot, 2f të thotë? Dhe kjo thjesht do të thotë, mirë, injoruar 0.2. Dhe%, f është ajo që ne përdorim për të shkruar për të noton. 0.2 është duke thënë, se print noton në dy numra pas presjes dhjetore. Pra, ky program ka një bug, dhe ju mund të kanë parë këtë më parë në disa para kurs CS. Por ajo që është se bug? Gjuha 5: Zero. Rob: Po. Pra, kur themi, përgjigja është e barabartë me 1 ndahet nga 10, ne duam përgjigjen të jetë 0.1. Por të ndara nga 1 ne 10, 1 eshte nje integer, 10 është një numër i plotë. Dhe kështu kur ne bëjmë një numër të plotë të ndarë me një numër i plotë, ne jemi duke shkuar për të marrë përsëri një numër të plotë. Pra, 1 i ndarë nga 10 është 0.1. Që nga ajo ka nevojë për të na dhënë një numër të plotë, ajo vetëm do të hedhin larg se Vendi dhjetor dhe thonë se përgjigja është 0. Dhe kështu që kur kemi shkruar përgjigjen këtu, ajo do të shtypura 0.00. JOSEPH: Dhe vetëm si një shënim, ai në fakt hedh larg se çfarë është pas presjes dhjetore. Pra, nëse ju në vend që kishte 6 ndahet nga 10, ju mund të mendoni se kjo do të ju jap 0.6 dhe pastaj ju do të mbledh në 1. Por në fakt, çfarë ndodh kur shkruani Detyrat ajo është se ai bie ajo që është pas presjes dhjetore. Pra, 0.6 do të bëhet 0. Rob: Po. Dhe ne do të themi shkurtoj për këtë. Pra, sa herë që ju hedhin në një int, decimal është e cunguar. Pra, fix për këtë - nuk ka në të vërtetë dy. Dhe unë jam duke shkuar për të bërë atë të dytë, për shkak se kjo është një gjendje e vështirë shumë më e lehtë. Pra, një gjendje e vështirë është të përdorin gjithandej në ndarjen. Dhe me të vërtetë, ju vetëm duhet të të bëjë një prej tyre një noton. Por është disi më e qartë vetëm për të bërë dy prej tyre gjithandej. Pra 1.0 ndarë nga 10.0 është duke e ndarë dy gjithandej. Pra, përgjigja do të përfundojë si një noton, dhe kështu ju do të saktë të shtypura 0.10 këtu. Diçka që nuk punon aq mirë lidhje që është, mirë, i sigurt, ajo ishte e lehtë të mjaftueshme për të kthyer 1 për një noton duke e bërë atë 1.0. Por, çfarë nëse në vend të kësaj kemi pasur dy numra të plotë si int x është e barabartë me 1 dhe int y është e barabartë me 10, dhe pastaj kemi dashur për të mos ndahet nga x y? Pra, nuk është e lehtë për të vetëm të bëjë x.0 apo diçka. Pra, fix për të që po hedh. Pra, hedh është një mënyrë për të kthyer në C nga një lloj të ndryshueshme në një tjetër. Kështu here, 1 eshte nje numer i plote. Dhe, duke vënë këtë noton në para të kjo, ne jemi të hedh në 1 me një noton. Dhe kështu kjo do të konvertohet 1 në 1.0. Dhe kjo do të konvertohet 10 në 10.0. Dhe pastaj gjërat të sillen në mënyrë të ngjashme për të Versioni i mëparshëm ne vetëm tregoi ku, siç pritet, të marrim 0.10 dhe ajo do të shtypura atë. Dhe ne mund të bëjmë këtë me variablave, too. Pra, ne mund të themi, float x ndahet nga y noton. JOSEPH: Çdo pyetje? Rob: Pra, ashtu si në matematikë të rregullt, ne kemi përparësi operatorit. Pra, në klasën e matematikës, ju jeni më shumë të ngjarë për të thirrur atë mënyrë të operacioneve. Këtu, termi zyrtar është përparësi operator. Por përparësi operatori, ose më operatorët, është si ju do të presin. Pra, ashtu si në matematikë, 2 herë 10 është do të grupohen më nga afër se kjo 10 ndahet nga 2 dhe pastaj 2. Urdhri i operacioneve, ajo do të bëjë 2 10 here, 10 ndarë nga 2, dhe pastaj ajo do të bëjë 20 plus 5 plus 2. Pra, kjo është siç pritet, dhe ju mund të përdorni kllapa për të shprehjeve të grupit. Ju nuk mund të përdorni kllapa katrore të shprehjeve të grupit. Po? Gjuha 5: A mund të vërtetë thjesht shkoni prapa një të dytë? A mund të hedhin një int për një varg? Rob: Pra në C, ju mund të hedhin ndonjë gjë ju doni të ndonjë gjë që ju dëshironi. Kjo nuk do të thotë se është një gjë e mirë për të bërë. Pra, kur ju hedhin një int të një varg, që do të thotë - dhe ne do të merrni në këtë shumë më tepër tërësisht - JOSEPH: Shumë më vonë. Rob: Unë nuk dua të them shumë më vonë, kështu që unë u përpoq të ndryshojë dënimin tim. Ne do të marrë në të shumë më hollësisht më vonë ku me të vërtetë, kur ju keni një string ndryshueshme - kështu një varg mund të jetë në mënyrë arbitrare e gjatë, e drejtë? Dhe ne kemi qenë duke thënë se një int është katër bytes dhe kohë të gjatë është tetë bytes dhe një noton është katër bytes. Pra, një varg, ashtu si një int, ka vetëm një numër i caktuar i bytes për të. Dhe kjo do të jetë katër bytes. Por një varg mund të jetë shumë e në mënyrë arbitrare të gjatë, e drejtë? Pra hello world tashmë, nëse kjo është 10 karaktere apo çfarëdo, kjo është tashmë do të jetë mbi 4 bytes Unë mund të përshtaten në një varg. Dhe kështu se si vargjet me të vërtetë punojnë është se ata janë ku në kujtim që string është duke u mbajtur. Dhe kështu këtu, kur them string x barabartë botë Hello, brenda x është vetëm duke thënë, oh, përshëndetje bota është ruajtur në këtë vend të veçantë në kujtesën. Pra, nëse ne të përpiqemi për të hedhur një numër të plotë të një string, atëherë ne jemi duke u përpjekur për të interpretuar një pjesë e rastësishme e kujtesës si një varg. Dhe kjo pothuajse gjithmonë thyen gjëra. JOSEPH: Por në qoftë se ngatërrojnë ju, ne do të mbulojnë atë më në thellësi më vonë. Rob: Po. Kjo është ajo ku ju do të jeni për të marrë në pointers. Dhe kjo është një copë e rëndësishme e dy javë të këtij kursi. Kryetari 6: A funksionon si objekte në gjuhë të tjera apo jo të vërtetë? Rob: Pra, në gjuhë të tjera, objekte do të përfaqësohen duke përdorur pointers. Kjo nuk është e njëjta gjë, edhe pse. Çdo mendime? JOSEPH: Jo. Nuk ka mendimet. Rob: OK. JOSEPH: Next. Rob: Vetëm vazhdo me atë. Dakord. Pra modulo. Ashtu si ne kemi plus, minus, ndajnë, dhe të shumohen. Pra modulo është një që ju mund të nuk e kanë parë më parë. Dhe kjo vetëm thotë, të japë me pjesën e mbetur të. Pra 55% 10. Pjesa e mbetur e bërë 55 e ndarë me 10 do të jetë 5. Pra 55% 10 është 5. Dhe 3% 5 do të jetë 3. 8% 8 do të jetë 0. 16% 15 do të jetë 1. JOSEPH: Një gjë të përmendet me këtë, gjithashtu, është ajo mund të mos punojnë siç pritet në qoftë se ju përdorni një numër negativ. Pra negative 5% 4, disa njerëz mund të mendojnë se është - çfarë do të mendoni negative 5% 4 do të jetë? Gjuha 5: Një. JOSEPH: Pra, disa njerëz thonë se një, disa njerëz thonë se një të tillë negativ. Por ajo - Rob: Unë nuk do të ketë edhe tha një nga ata. JOSEPH: Dy, sorry. Disa njerëz thonë - Rob: Tre. JOSEPH: Tre? Rob: Negativ - çfarë ishte - negative pesë - JOSEPH: Tre, tre, tre. Më vjen keq. Sepse modulo, në përgjithësi, kur ju keni parë atë diku tjetër, kjo zakonisht do të thotë të kthejë një numër pozitiv, apo jo? Rob: Pra, kur themi në matematikë, 10% e, ata kanë tendencë të duan të ju jap - nëse ne mod me 10, atëherë ne presim që të të marrë një numër midis 0 dhe 9. Në këtu, se nuk është rasti që ju do të merrni numrat negativ kthyer. JOSEPH: Pra negative 5% 4 do të ishte negative 1. Rob: Por është e rrallë që ju jeni mod-ing numrat negativ për të filluar me. Kalo këtë. Joseph: Po. Rob: Meh. OK. Pra, një gjë e fundit për të nxjerrë në pah në lidhje me gjithandej është kjo është një sjellje e rrezikshme, por gjithandej nuk janë një e saktë përfaqësim. Pra, kthim në bytes përsëri, mos harroni se një int është gjithmonë katër bytes dhe një noton është gjithmonë katër bytes. Pra shembull Lucas-së është shumë e mirë. Pra, mendoj se e 1 pjestuar me 3. Pra ,3333333. Nëse unë vetëm 32 bit, se si mund të I ruajtur 0,33333 saktësisht? Dhe ndoshta, për çfarëdo arsye, ju thoni, të gjithë të drejtë, të mirë, le të them vetëm që kjo të veçantë 1011001, le të them vetëm që duhet të jetë 0,333333. E pra, ju keni vetëm një numër i caktuar i ato copa, kështu që është e pamundur të përfaqësojnë çdo pikë të vetme luhatjes Vlera e dhënë vetëm 32 bit. E pra, është e pamundur për të përfaqësuar ndonjë vlera pikë lundrues dhënë pafund - mirë, duke pasur parasysh ndonjë numër i caktuar i bit. Pra, çështja këtu është, mirë, kur kemi përdorur për të shkruar në dy numra pas presjes dhjetore, ne e saktë të merrni përgjigje 0.10. Por nën kapuç, është e vërtetë duke u ruajtur sa më pranë të jetë e mundur për të 0.10 si ato bit mund të përfaqësojnë. A është kjo në rrëshqitje e ardhshme? Apo nuk është ajo? Joseph: Po, është se. Rob: Blegh, blegh. JOSEPH: Po, ju mund vetëm të tërheq shënimet deri pak. Rob: Unë jam vetëm do të zoom në më të fundit në këtë. Oh Zot, kjo është [e padëgjueshme]. Kështu që numri. Kjo është ajo që do të jenë të shtypura nëse kemi drejtuar këtë program. Dhe vini re se nuk është me të vërtetë një punë e madhe në qoftë se ne jemi vetëm kujdeset për si 02:58 vende dhjetore. Ashtu si ne vetëm në fillim të shtypura 0.10, dhe kjo është arsyeja pse kemi parë asnjë të keqe. Por sapo të filloni të keni në saktë, numri i saktë se është e përfaqësojnë, ne shohim se kjo nuk mund të pikërisht përfaqësojnë 0.1. Dhe pjesë e problemit është si këtu, të gjithë të drejtë, kjo është në rregull, por, edhe, së pari, ajo që në qoftë se ne u përpoq për të bërë, Përgjigja është e barabartë është e barabartë me 0.1? Është se do të kthehet e vërtetë apo e rreme? Dhe kështu që është e vështirë për të thënë. Unë mendoj se ai në fakt mund të kthehet e vërtetë. A do ajo të parë - Nuk e di. Përgjigja është një herë ju filloni që kanë të bëjnë me vlera pikë lundrues, ju shumë e shumë nuk duhet të jetë duke përdorur barazinë për shkak të këtij pasaktësisë. Dhe për të gjithë ju e dini, kjo është e qindta Vendi decimal se pikë lundrues nuk ishte në gjendje për të trajtuar si duhet. Dhe kështu barazinë vetëm do të dështojnë edhe pse numri - në qoftë se ju kishte qenë duke përdorur numrat e saktë, numrat duhet kanë qenë të njëjtë. Është e gjatë si 50 llogaritje duke përdorur këto lundrues Vlerat pikë, gabimi mund të ndërtojë lart e lart e lart, dhe gjëra të vetëm të merrni të gabuar. JOSEPH: Dhe nuk kanë qenë me të vërtetë shembuj të famshëm të kësaj ndodh. Ashtu si inxhinierët e NASA-s kanë marrë këtë gabuar, duke shkaktuar raketa të shpërthejnë në ajrit, pasi ata kanë qenë të nisur. Dhe shumë çështje si kjo. Pra, vërtet. Kryetari 6: Kur thoni 0.3 f, e bën atë të shkurtoj pjesën tjetër? Ose e bën atë të rrumbullakosë më lart ose poshtë? Rob: A do printf raundin atë? Joseph: Unë mendoj truncates printf. Rob: OK. Pra, ne mund të shkojnë në mënyrë të ngjashme në të kundërtën Drejtimi i kësaj ka ku, në këtë rast, më e afërt ajo mund të përfaqësojë 0.1 ishte me këtë numër. Më e afërt mund të jetë në gjendje të përfaqësojnë 0,2 është në të kundërt drejtim, 0,199999996356 apo diçka. Pra, nëse kemi shkuar në atë drejtim të gjërat, atëherë printf 0.3 f do të kthehen 1.99 në vend të 2.00. JOSEPH: Dhe unë nuk jam plotësisht i i sigurt në këtë. Ju mund të dëshironi të shkruani një të vogël, pak program të vetëm të kontrolluar atë. Rob: Edhe pse, ajo që ne jemi të sigurt se është e nëse jeni përpjekur për të hedhur atë në një int, dhe hedh në një int do të bëj që të shkurtoj decimal të, në qoftë se ju përpiqeni të hedhur 1.9999999 në një int, ju do të merrni 1. Dhe kështu që ju duhet të përdorni në përgjithësi funksion rrumbullakët në bibliotekë matematikë. Pyetje? OK. JOSEPH: Pra, të lëvizin për në kushtet e dhe shprehjet Boolean. Pra, ju keni parë këto para. Dhe në fakt, më lejoni të sigurt tim kompjuteri është në formatin e duhur këtu. Hapësirë. Na vjen keq, ne do të duhet të merren një pak me ndërprerje në skajet. Por, vërtet, ju djema keni parë këtë më parë në Scratch. Pra, kjo e drejtë këtu është një shprehje cili përdoret në një deklaratë e kushtëzuar. Pra, përgjigjen më të madhe se zero vullnetit ju them vërtetë apo e rreme. Dhe këto janë të vërtetë e rëndësishme, sepse ata na lejojë të prezantuar logjikë në kodin tonë. Kështu për shembull, ky është një program shkruar në Scratch që kërkon përdoruesin për një numër të plotë dhe u tregon atyre se a numër i plotë që ata ju dha ishte një numër pozitiv apo negativ. Dhe konvertimit mbi këtu për të parë është ju së pari të shtypura nga deklaratë, më jepni një numër të plotë. Dhe pastaj ju pyet ata për një numër të plotë. Dhe pastaj ju përdorni logjikën e kushtëzuar mbi këtu për të kontrolluar nëse ai numër ishte në fakt më i madh se zero ose jo. Pra, këtu ne kemi një shprehje Boolean brenda një kushtëzuar Nëse deklaratë. A ka ndonjë pyetje? A ka ndonjë pyetje në lidhje me këtë? OK. Pra, nuk ka më shumë se vetëm më e madhe se, natyrisht. Ju mund të ndërtojnë shprehje boolean duke përdorur shumicën e llojet e gjërave që ju do të mendojnë për në matematikë. Kaq e madhe se. Kjo duhet të jetë një më pak se. Më vjen keq. Dhe ndarje. Rob: Zoti na ruajt ju lënë atë. Joseph: Në rregull. Kaq e madhe se, më pak se, madhe se, ose te barabarte, më pak se, ose e barabarte me. Ne përdorim të dyfishtë është e barabartë për të kontrolluar për barazia, sepse vetëm e barabartë me mjete detyrë, e drejtë? Po. Dhe atëherë ne mund gjithashtu nuk është e barabartë me duke përdorur pikëçuditëse, është e barabartë. Dhe ky simbol pikëçuditëse mund gjithashtu të zgjatet në mënyrë që në qoftë se ju doni për të kthyer çdo lloj Boolean shprehje, ju mund ta bëni këtë. Pra, kjo do të vlerësojë të vërtetë vetëm nëse përgjigja është më pak se ose e barabarte me zero. Çdo pyetje mbi këtë? OK. Kështu që ju mund të kombinohen këto Shprehjet duke përdorur logjike dhe dhe Ose logjike. Pra, kjo është vetëm simbol Dhe, e cila duhet të jetë Shift, 7. Dhe kjo eshte simbol tub, e cila është jo një rast më të ulët L. Kjo është një kjo është e drejtë mbi tastin Enter tuaj. Kështu që ju përdorni dy nga këto për të simbolizoj logjike dhe logjike Ose. Pra, kjo vetëm do të kthehet e vërtetë në qoftë se përgjigja është një, dy, tre, ose katër. Dhe kjo vetëm do të kthehet e vërtetë në qoftë se përgjigja është përtej se në të dyja anët. Kështu që nuk është një, dy, tre, ose katër. Dhe mënyra që ju do të përdorni që në shprehje - ROB: ose një zero ose një në pesë. JOSEPH: Zero ose një pesë. Më vjen keq. Po, po, po. OK. Dhe këtu tani, në të njëjtën mënyrë ju do të përdorin këtë shprehje dhe një më të vogël anë shprehje e një Nëse kushtëzuar deklaratë, ju do të përdorë gjithashtu edhe atë njëjtën mënyrë nga vetëm vënë atë në brendësi të të kllapat e deklaratës Nëse është. Pra, kjo printf do të zjarrit vetëm nëse përgjigja është një, dy, tre, ose katër. Çdo pyetje në kombinimin e Shprehjet? Pra, ka një tjetër të kushtëzuar të ndërtuar që ne e quajmë një rast / Tjetër. Pra, në thelb, kjo tani do të thotë, OK, qoftë diçka që kam kërkuar për të kontrolluar nuk ishte e vërtetë, atëherë shkoni në tjetër dhe kryejë atë veprim tjetër. Pra, në këtë rast të veçantë, e pyeta përdoruesit për një numër të plotë. Është numër i plotë më i madh se zero? Po? E pra, atëherë ata kap një numër pozitiv. Nëse jo, atëherë ajo duhet të ketë qenë negative ose zero. Kështu që ju kap një numër negativ ose një zero në këtë rast. Po. Ose një zero. Dhe atëherë ne gjithashtu kemi rast / Tjetër, Nëse dhe tjetër. Pra, kjo na lejon të ekzekutojë një rend të gjërat vetëm në qoftë se të parët dështojnë. Pra, në këtë rast, tani ne jemi duke e bërë e fundit ju të vini zero. Pra, në qoftë se ata as zgjedhur një pozitiv as një numër negativ, atëherë ata duhet të kanë zgjedhur zero. Pra, vetëm ajo shkon poshtë zinxhir si kjo. Pra, një shembull se si një Nëse është e ndryshme nga - Nëse një / tjetër është i ndryshëm nga vetëm një sekuencë e Ifs. Dhe kjo është një pyetje e zakonshme që njerëzit pyesin është, mirë, në qoftë se ju merrni si një 95 në CS50, çfarë do të këtë Programi ju them? Gjuha 5: Ju mori një A. Joseph: Po. Ju mori çdo të vetme një nga ata të drejtë. Ju mori një Një, ju mori një B, ju mori një C dhe një D, e drejtë? Pra, të gjitha këto merrni vlerësuar me qëllim. Kështu duke a 95 është më i madh se 90, që është edhe më i madh se 80, është gjithashtu madh se 70, dhe është e edhe më të madh se 60. Kështu që ju mori të gjithë ata notave. Dhe unë të marrë ju do vetëm duan A. Mënyra për të rregulluar që është për të zëvendësuar ata me Else / Nëse 's. Pra, në këtë skenar, ai sheh se 95 është madh se 90, dhe më pas kjo nuk nuk e vlerësojnë pjesën tjetër e deklaratave. Ndonjë pyetje në lidhje me këtë? Pra, ka një tjetër lloj kusht e strukturë që ne kemi këtu të cilat ne thirrur një deklaratë të kaloni. Pra, kjo ju lejon të shikoni në thelb çfarë vlera e një numri të vendosni në deklaratë lundrimi është. Pra, në këtë skenar, ne jemi kalimi on n, dhe ne jemi duke thënë, oh, nëse n është një, pastaj të shtypura atë deklaratë. Dhe pastaj të thyer, që do të thotë dalje nga deklaratës lundrimi. Në qoftë se kjo nuk ishte një, atëherë, mirë, vetëm përfundimisht të kontrolluar të gjitha ato raste. Dhe kështu që kontrollon nëse është e një ose dy ose tre, dhe ajo kopje në përputhje me rrethanat. Dhe ajo që ky fjalen parazgjedhur këtu do të thotë është në qoftë se ata nuk hynë asnjë e atyre, atëherë thonë e pavlefshme. Pra, le të thonë se unë të kërkojë n dhe përdoruesi më jep katër. E pra, ajo ndeshje asnjë nga ato raste, kështu ajo do të shtypura nga çfarë është në Seksioni default. Po, pyetje? Gjuha 5: Mund të përdorni Boolean shprehje në vend të një, dy, ose tre? JOSEPH: Pra, pyetja është e mund të përdorni Shprehje Boolean në vend të njërit, dy dhe tre? Dhe në C, unë besoj se ju nuk mund ta bëjë këtë. Por në gjuhë të tjera, të cilat ju mund hasni në fund të Semestri si JavaScript, ju mund. E pra, ju do të duhet për të llogaritur parë që vlera dhe pastaj e përdorin atë në kaloni deklaratë. Po? Rob: Pra, pjesë e të mirën e kaloni Deklaratat po mendojnë për nëse ju e bëri këtë si një rast / Tjetër, kështu që si në qoftë se është e barabartë me n është e barabartë me një ose çfarëdo. Else / Nëse n është e barabartë me dy është e barabartë, çfarëdo. Else / Nëse n është e barabartë e barabartë me tre. Pra, mënyra se programi do të kandidojë është ajo do të shkojë sequentially poshtë atë listë dhe kontrolloni, është n një të tillë? Jo. N është dy? Jo. N është tre? Po. E bëjnë këtë. Ndërsa me kaloni deklarata, është e në të vërtetë në gjendje të hartojë që ajo të jetë të vërtetë të shpejtë. Dhe, sa më shpejt që ajo thotë kaloni, ajo thotë, të gjithë të drejtë, n është dy, unë jam menjëherë do të hidhen për të ku Unë jam duke menduar për të filluar ekzekutimin. Unë nuk jam duke shkuar për të parë të kontrolluar, n është një, është n dy? Ajo menjëherë mund të fillojnë të bëjnë ajo që është menduar për të bërë. Dhe për shkak të kësaj, ajo nuk mund të të marrë kushtet boolean. Apo tjetër ajo do të duhet të bëjë vijues, si, të gjithë të drejtë, është n madh se zero? Tjetër është n madhe se 10 ose çfarëdo. Joseph: Në këtë rast, në qoftë se keni përdorur Në qoftë / tjetër, qoftë së, atëherë do të kaloni drejtuar rreth tri herë më shpejt se në qoftë se / Por në rast se. Ne mund të organizojë kaloni në të tilla një mënyrë që ne nuk do të thyejnë pas secilit nga raste. Pra, në këtë rast, unë jam ndarjen Numrat që kemi zgjedhur në një dhe dy duke qenë jo numrat e larta dhe tre të qenë një numër i lartë. Kështu në këtë rast, nese n eshte nje ose dy, ajo do të goditur rastin dhe pastaj ajo do të dështoj, sepse nuk ka pushim. Dhe kjo do të përfundojë këtu. Pra, në qoftë se ne të vini një të tillë, ajo do të bëjë printf dhe pastaj të thyer kështu se asnjë nga kjo është ekzekutuar. Dhe sigurisht, në qoftë se ata hyjnë në tre apo diçka tjetër, atëherë ajo do të kaloni ata dhe të mos shkojnë atje, dhe kjo do të zbatoj në vend linjë korresponduese. A ka ndonjë pyetje në lidhje me këtë? Po? Kryetari 4: A do të merrni një gabim, nëse ju kishte një pushim pas një rast, por ajo nuk kanë diçka për të për të bërë? JOSEPH: Pra, pyetja është e do të merrni një gabim në qoftë se ju keni një pushim pas rast një, por nuk ka asgjë për të bërë? Dhe përgjigja është jo. Ju nuk do të ketë në fakt një gabim. Po, mm hmm. Pra, si lloj i një ndryshim pak këtu, Unë jam duke shkuar për të vënë një printf këtu. Uh. Pra, çfarë do të këtë të shtypura nëse I vënë një në si input? Po. Kjo do të ju them se nuk ka marrë një numër i lartë dy herë, e drejtë? Për shkak se ajo do të goditur atë rastin e parë, ajo nuk do të thyer, dhe ajo do të bie deri në rastin e dytë. Ndonjë pyetje në lidhje me këtë? Rob: A keni një pyetje tjetër? JOSEPH: OK, ftohtë. Dakord. Pra, nuk është diçka tjetër që ne e quajmë një Operatori tresh e cila është në thelb një Sintaksa alternative për të bërë Nëse dhe pastaj tjetër. Dhe kjo ju lejon të bëni të gjitha në një rresht. Pra, në këtë program të veçantë, Unë jam duke i kërkuar përdoruesit për n. Dhe nëse n është më i madh se 100, unë them ata kanë zgjedhur një numër të lartë. Tjetër unë them atyre se ata zgjedhur një numër të ulët. Pra, ne mund të përdorni këtë sintaksë të vërtetë të gjatë, varg, S, dhe pastaj kontrolluar nëse n është më e madhe se 100 dhe të caktojë ajo në përputhje me rrethanat. Por ne mund të bëjë këtë shumë më konciz duke përdorur këtë sintaksë tresh operatorit e cila përfshin një pyetje shenjë dhe një zorrë e trashë. Pra pikëpyetje është në thelb duke i kërkuar një pyetje, apo jo? Rob: Ndoshta zoom në atë. Joseph: Po. Pikë e mirë. Pra, kjo është operatori tresh. I pari shtrohet pyetja, n është më e madhe se 100? Nëse është, atëherë do të zbatoj parë Pjesa e para të zorrës së trashë. Nëse nuk është, atëherë do të zbatoj Pjesa e dytë pas dy pika. Kështu nese n eshte me e madhe se 100, pastaj ai zgjedh të lartë dhe vë që në string s. Nëse n është më pak se 100, ajo mbledh ulët dhe pastaj e vë atë në varg s. Kështu që do të trash këtë copë të madhe poshtë në vetëm atë një rresht. Gjuha 5: A është e popullarizuar? Joseph: Po, ajo është mjaft e njohur për gjëra ku në thelb ju doni të e një detyrë në bazë të një lloj gjendje. Dhe në këtë rast, ne kemi qenë duke u përpjekur të caktojë një vlerë të string s. Kjo nuk është aq - I guess Unë vërtetë nuk e preferojnë kjo në raste të tjera. Por kjo është veçanërisht e dobishme për këtë detyrë. Rob: Kjo është një model shumë e zakonshme ku ju keni disa ndryshore që ju jeni do të thotë, nëse diçka, të vendosur kjo variabël në një vlerë, tjetër, të vendosur kjo variabël në një tjetër vlerë. Dhe kjo është skenari ku përdorin një tresh. JOSEPH: Dhe ju jeni të shpëtuar shumë e linjave, e drejtë? Dhe vetëm ajo e bën kodin tuaj në mënyrë të diskutueshme pak më shumë i lexueshëm. Po, pyetje? Kryetari 6: Për një numerimit, mund të ju shkoni, String s barabartë s, pikëpyetje? Dhe pastaj ju mund të keni, të themi, pesë opsione të ndryshme. Dhe në varësi të asaj numri i N u, do të ju zgjidhni një nga ata? JOSEPH: Pra, pyetja është, a ka një lloj sintaksës ku ju mund të bëni varg s është e barabartë n, dhe pastaj të ketë më shumë se dy Opsionet pas asaj pikëpyetje? Dhe një përgjigje e thjeshtë është jo, nuk ka me të vërtetë një mënyrë e mirë për të bërë se nëse nuk ju doni të folesë numerimit me të shumëfishtë Operatorët brenda tjetrën. Ju mund të bëni si n më të madh se 100, pikëpyetje, dhe pastaj një tjetër operatori tresh, n të madh se 50, pikëpyetje, dhe fole atë në këtë mënyrë. Por në këtë skenar, kodi juaj është duke marrë lloj i paqartë dhe të çrregullt, dhe kjo mund të jetë më mirë për të thjesht shkoni te një deklaratë qoftë / tjetër në atë pikë. Rob: Dhe gjithashtu, si një shënim anë, PHP gabimisht zbaton tresh operatori i tillë që ternaries mbivendosur nuk punojnë ashtu si duhet. Joseph: Po. Pra, ajo merr pak konfuze, sidomos kur ju shkoni në gjuhë të ndryshme. Rob: Është mjaft konfuze që Gjuhët janë të gabuara në lidhje me të. JOSEPH: Pra në fakt, vetëm për të sqaruar, ka të gjithë e dinë se çka do të % S bën këtu? Ndonjë pyetje në lidhje me këtë? Unë mendoj vetëm për kamera,% s në thelb na lejon të vendosni një placeholder për një varg. Dhe pastaj në fund, ne të specifikojë se ndryshueshme ne duam të vënë në këtë mbajtës vend është s. Kështu që në thelb merr s dhe kjo e vë atë në këtu. Dhe atëherë ajo do të shtypura jashtë, ju kap një të lartë ose ju kap një numër të ulët. OK. Pra sythe të ju lejojnë për të kryer gjëra të në mocionet rrethore, e drejtë? Ju mund të keni hasur këtë në Scratch në formën e Gjithmone sythe ose Përsëriteni Deri ose Përsëriteni një të veçantë disa herë. Pra, pse është kjo e mirë për ne? E pra, në C, le të thonë se ne e kemi këtë song zbatuar në Scratch që këndon, kjo është këngë që kurrë nuk përfundon. Ajo vetëm vazhdon dhe me radhë dhe përgjithmonë dhe përgjithmonë. E pra, ju nuk mund të bëjë një program të që ka një numër të pafund të printf deklaratat në atë, e drejtë? Pra, në këtë skenar të veçantë, një mënyrë që ju të mund të bëjë këtë punë dhe për ta bërë atë të shtypur përgjithmonë është që të në vend që të përdorni një lak, ndërsa. Kështu që një lak Ndërsa do të zbatoj atë që është në trupin e dy kllapa që takon të bazuar në atë që gjendja është. Pra, në këtë shembull të veçantë para, në qoftë se ne duam të shkruar këtë përgjithmonë, çfarë mund të bëjmë? E pra, i sigurt, apo jo? Pra, ky lloj i kombinon idenë e disa shprehjes Boolean së bashku me një lak. Dhe kemi mësuar në lidhje me Boolean Shprehjet më parë. Pra, sa herë që gjendja brenda Ndërsa që mbetet e vërtetë, kjo loop do të zbatoj mbi dhe mbi dhe. Dhe në këtë rast, nëse ne vetëm të ofrojë atë me të vërtetë, kjo shkakton një pafund loop e cila printon këngën mbi dhe mbi dhe ne si kemi dëshiruar më parë pa të paturit e një program që ka një pafund Numri i deklaratave printf, e cila është nuk është e mundur. Pra më imponuese, edhe pse, ju mund të përdorni këtë me një ndryshueshme dhe një kusht. Pra, le të thonë se ne duam të përsërisim fraza, tërësisht i çmendur, 10 herë. Pra, çfarë mund të bëni me një lak, ndërsa është ju mund të parë të iniciojnë një kundër jashtë variable e Ndërsa lak në 10. Dhe pastaj në thelb, çdo herë që shkoni përmes lak kohë, ju të shtypura nga Deklarata dhe pastaj ju ulet kundër variable deri në fund, në një pikë, pasi ne zbres I mjaftueshme herë, 1 nga Unë mjaft kohë - dhe vetëm për të sqaruar, minus I Minus Unë do të thotë unë e barabartë me minus 1. Kjo në thelb do të sjellë I deri në Pika ku dikur kam goditur zero, kjo gjendja nuk është më e vërtetë dhe kështu që del nga lak. Pra krejtësisht të çmendur vetëm printon 10 herë. Çdo pyetje në lidhje me një lak, ndërsa? OK. Pra, ka një mënyrë që ne mund të bëjmë atë që ne vetëm e bëri në një mënyrë më të ngjeshur me ajo që ne e quajmë një për lak. Pra, një lak Për përbëhet nga një initialization, një kusht, dhe një azhornimi i, ashtu si kishim më parë në këtë lak kohë. Pra, le të marrin një sy. Në këtë lak kohë, kemi pasur një initialization, atëherë kemi pasur një kusht që ne të kontrolluar. Dhe pastaj kemi pasur një update hap në krye. Me një lak Për, kjo në thelb merr këto tre gjëra dhe kondensohen atë poshtë në një linjë. Pra, gjëja e parë që ajo ka në Për lak është initialization. Dhe pastaj ju bëni një pikëpresje, dhe pastaj ju bëni gjendjen, i cili është i më i madh se zero shkon atje, dhe pastaj Hapi freskimin. Pra, kjo merr kryhet në shumë fundi i trupit lak. Pra, këto dy programe janë në thelb ekuivalente. Ndonjë pyetje? Pra, çfarë është një ndryshim i në mes të këtyre dy? A mund dikush të nxjerr atë? Kjo mund të jetë pak delikate. Është vetëm një dallim shumë i vogël. Po? Gjuha 5: Ju nuk do të jetë në gjendje të përdorin I ndryshueshme jashtë Për lak [Padëgjueshme]? JOSEPH: Pikërisht. Pra, kjo është diçka që ne do të merrni për të quajtur më vonë Shtrirja e ndryshueshme. Por në thelb, ky i int jetën jashtë këtij lak kohë. Pra, një herë kjo loop Ndërsa është bërë ekzekutimin, unë do të jetë në gjendje të përdorin I vonë në në program. Ndërsa me këtë Për lak, kjo int I është scoped brenda kësaj Për loop. Dhe për shkak se ajo është në brendësi të kësaj pjese e lak Për, që fillon në kllapa dhe përfundon me mbajtëse kaçurrel atje. Çdo gjë që është deklaruar brenda këtu nuk mund të përdoren jashtë. Pra, në qoftë se unë të përpiqet për të përdorur unë jashtë, ajo do të më thoni, simbol padeklaruar. Dhe në thelb, unë nuk do të jenë në gjendje të përdorin atë. Rob: E mirë, 10 vjet më parë, në fjalë për fjalë të gjitha rastet, formatimin e teksteve kaçurrel janë atë që keni përdorur për të përcaktuar Shtrirja e një variable. Pra në atje, int I barabartë me 10 është deklaruar brenda kësaj vendosur të formatimin e teksteve kaçurrel. Dhe kështu më pas për aq kohë sa ju përpiqeni të përdorni I para kësaj Brace kaçurrel, kjo është në rregull. Ju mund të shihni kur ju shkruani bëni, ju shih dash, dash, std, e barabartë, c99. Kështu që është një version i mëvonshëm i C që GCC ka zbatuar që gjithashtu jep këtë shkurtore. Pra, kjo përdoret për të mos të lejohet në C. Dhe ju mund të shihni se pse, sepse kjo int I është jashtë këtij Brace kaçurrel por është ende konsiderohet të jetë në Shtrirja e këtyre formatimin e teksteve kaçurrel. Por kjo është një gjë shumë i përshtatshëm, dhe kështu që është një zgjatje e mirë. JOSEPH: Çdo pyetje? OK. Pra, çfarë është më e dobishme është se ndonjëherë ju doni lloj dinamizmi në loop tuaj, apo jo? Ju nuk doni të vetëm të domosdoshmërisht të shtypur tërësisht i çmendur gjithë kohës, ju duan të poshtë numërimin nga 10 ose diçka. Dhe kështu që ju mund të përdorni kundër variablin brenda atij lak si. Dhe në këtë rast, ky program vetëm akuza deri nga 10 të gjithë rrugën poshtë. Dhe çfarë nuk të shtypura? Ajo nuk ka shkruar zero, drejtë, sepse kur - Po, ajo gjithashtu nuk ka shkruar 11. Pra, kjo nuk do të shtypura zero, sepse kur I është zero, mos harroni, ai vlerëson kusht para se ajo shkon në për të ekzekutuar trupin loop. Dhe kur është zero, kjo është e rreme, kështu që kjo nuk do të shtypura nga numërimi poshtë zero, ajo vetëm printime nga numëruar poshtë 10 gjatë gjithë rrugës deri në 1. Në qoftë se ne të vërtetë të kërkuar atë për të shtypur zero, atëherë ne do të vënë një shenjë të barabartë pas kësaj më e madhe se shenjë. OK. Pra, një mënyrë për të bërë input validation, e cila është kur ju të kërkojë nga shfrytëzuesi për të bërë diçka, ju doni të bëni të sigurtë që ata ndiqni udhëzimet tuaja, është që të përdorin Ndërsa loop, e drejtë? Pra, në këtë rast të veçantë, unë jam duke kërkuar për një numër pozitiv dhe atëherë unë jam i duke pritur për të dhëna. Dhe pastaj I kontrolluar Ndërsa input është më pak se zero, mbajtur i pyetur ata. Pra, sa kohë që ata të më jepni një numër që nuk është pozitive, mbani duke i kërkuar, mbani duke i kërkuar, mbani duke i kërkuar. Por ajo që është lloj i pazakontë në lidhje me këtë? Ose ajo nuk duket optimale për kjo strukturë të drejtë këtu? Çdokush? Po? Kryetari 6: Ju jeni duke përsëritur udhëzim dy herë. JOSEPH: E drejta. Pra, ne kemi dy deklarata printf këtu, apo jo? Pra, ka një mënyrë që ne mund të merrni këtë vetëm poshtë për një që do ta bënte tonë Kodi më të lehtë për të lexuar dhe të një pak më të pastër. Dhe atëherë ne nuk do të duhet të kanë marrë në dy herë më të mirë. Dhe një mënyrë ju mund ta bëni këtë është duke përdorur një lak Do-kohë. Dhe një loop Do-Ndërsa në thelb është një formë tjetër e një lak, ndërsa kur çdo gjë që është brenda formatimin e teksteve kaçurrel merr ekzekutuar të paktën një herë. Kështu që këtu, unë deklaroj, int input, jashtë së pari. Dhe atëherë unë them vetëm, e bëjnë këtë udhëzim ndërsa input është më pak se zero. Pra, ajo hits të bëjë të parë. Ajo gjithmonë do të ekzekutojë këtë të paktën një herë, kështu që gjithmonë do të kërkojë nga shfrytëzuesi për të dhëna të paktën një herë. Dhe atëherë ajo vlerëson se prurjet, dhe kjo vazhdon në një rreth. Po, pyetje? Kryetari 6: A ka ndonjë mënyrë për të bërë atë [Padëgjueshme] llojet, si në qoftë se ju thoni, GetString, dhe dikush [padëgjueshme] a ka një mënyrë për të [padëgjueshme] JOSEPH: Pra, pyetja është, a ka një mënyrë për të bërë input validation në qoftë se përdoruesi nuk e vënë në të drejtën Lloji i ndryshore? Pra, nëse ne i kërkojmë për një int dhe ata na japin një varg në vend. Dhe në funksionet që zbatojnë për ju, GetInt, getString në të gjitha ato funksione, ata në fakt tashmë bëjë atë lloj input bazë tipit validation nën kapuç. Pra, nëse ju jeni duke përdorur funksionet që ne ju dha, ju vërtetë nuk kanë për të. Por në qoftë se ju doni të shikoni më shumë në si në të vërtetë ju mund të bëni që, ju mund të shikoni nën kapuç në dosjen I/O-- nuk paraqesin, standarde funksionet I / O si një lexim nga të dhëna standarde dhe prodhimit standarde. Dhe ju mund të merrni një kuptim më të mirë se si ju mund të bëni këtë. Rob: Një çështje, megjithatë, është në mënyrë specifike me shembull ju tha, ju presin një varg dhe unë të hyjë një int. Si do të ju tregoni dallimin mes qëllimisht dashur string 123 kundrejt duan të int 123? Pra string, kjo është shumë e shumë nuk ka validation, kjo është vetëm çdo gjë që ata hyrë ju do të interpretojë si një varg. Int është më e lehtë, sepse pa marrë parasysh input keni marrë nga përdoruesit, ju jeni gjithmonë duke marrë një varg. Dhe në mënyrë që ju mund të string pastaj kontrolluar, janë të gjitha këto shifrat në të vërtetë numerike? JOSEPH: OK. Çdo pyetje në lidhje me një lak Do-kohë? Rob: Oh, dhe kjo është gjithashtu - kthim në fushëveprimin, një disi të përbashkët gabim është duke u përpjekur për të përdorur disa lokale ndryshueshme nga brenda këtij A-While lak brenda e kësaj gjendje. Dhe në të vërtetë, në qoftë se ne vetëm mori shpëtoj këtë dhe tha, të dhëna int është e barabartë me GetInt, atëherë përpiluesit do të çirrem në ne, sepse të dhëna nuk ekziston jashtë fushëveprimit të Këto formatimin e teksteve kaçurrel. JOSEPH: Dhe kjo është arsyeja pse ne nevojë për këtë formacion këtu. OK. Kështu që ju mund të thyer nga një lak në fillim në qoftë se ju doni të. Pra, kjo është një mënyrë e ndryshme e zbatimin e asaj që ne vetëm zbatuar. Dhe në vend të përdorimit të gjendjes brenda kllapa, ne jemi duke përdorur një Nëse deklarata brenda trupit e lak Do-kohë. Dhe në thelb, kur input është në fund më i madh se zero, ne do të pushim nga lak. Dhe kështu që ne do të shkojmë të gjithë shumë më poshtë këtu. Dhe ju mund të shihni se kjo do të ndoshta të preferuar në këtë skenar, sepse kjo është pak bit të pastër dhe pak pak më e lehtë për të lexuar. Ndërsa këtë, ju lloj kanë linja shtesë në të. Kjo është vetëm pak shëmtuar, I guess, në një kuptim. Po, pyetje? Kryetari 4: A do të thyer vetëm të marrë ju nga një sërë formatimin e teksteve? JOSEPH: E drejta. Pra, pyetja është vetëm do të thyejnë të merrni ju nga një lak? Dhe përgjigja është po. Pra, nëse ju keni mbivendosur për sythe, për shembull, në qoftë se unë kam për int unë është e barabartë me 0 deri në 10 dhe pastaj për int J është e barabartë me 0 deri 10, në qoftë se unë të thyer nga e brendshme loop, unë ende do të shkoj me lak jashtme. Pra, kjo do të mbaj kryerjen operacionet në pjesën e jashtme. Ndonjë pyetje në lidhje me këtë? Po? Gjuha 5: Por të thyer vetëm funksione për formatimin e teksteve kaçurrel, jo për të tjera Deklaratat? [Padëgjueshme] JOSEPH: Pra, pyetja është e do të thyejnë Funksioni i vetëm për sythe në krahasim me Deklaratat e tjera si nëse? Dhe po, se është rasti, për shkak se ju jeni të thyer nga një lak, e drejtë, në një kuptim. Rob: Në shumicën dërrmuese të rasteve, është e kjo është lloj nëse diçka, pastaj pushim. Pra, ju nuk keni për të thyer për të aplikuar për Në qoftë se është duke përfunduar rreth tij. Dhe gjithashtu, kjo nuk është shumë e një lak, por mos harroni se switches janë gjithashtu thyer nga nga pushimet. Ne pamë prishet duke u përdorur me çelsin e para. JOSEPH: Dhe ju gjithashtu mund të përdorin ato në sythe kohë dhe për sythe. Ndonjë pyetje? OK. Pra, deri tjetër është funksione. Kështu që ju mund të keni përdorur një nga këto BYOB blloqe në projektin tuaj Scratch. Dhe kjo në thelb lejon ju për të përcaktuar një sërë udhëzime që duhet të ndiqen. Dhe ajo që dua të them se është, le të mendojmë përsëri në matematikë, e drejtë, algjebër. Ju keni atë që ne e quajmë një funksion i x, disa të ndryshueshme, dhe le të thonë se kjo funksion është f të x është e barabartë me x plus 5. Kështu që ju mund të mendoni për f të x pasi kjo e zezë kuti që merr në 15 dhe më pas prodhon 20. Pra, në përgjithësi, një funksion është diçka që merr disa inpute dhe pastaj prodhon disa rezultate. Dhe pse janë funksione të mira? Ata janë të mirë për një numër arsyesh. Pra ka dikush dëshiron të marrë një goditje me thikë në atë organizatë do të thotë? Në kushtet e pse funksioneve janë të dobishme? Po? Kryetari 4: Kjo e bën tuaj Kodi më i lexueshëm. JOSEPH: E drejta. Pra, një nga gjërat është ai bën Kodi juaj më i lexueshëm, e drejtë? Në vend të që si int x është e barabartë me x herë herë x x, unë mund të ketë kubike të x, i cili është më i lexueshëm dhe më shumë kuptueshme për një lexues. Organizata është gjithashtu në drejtim të ndarjen up kodin tuaj në dëgjueshëm pjesë, në mënyrë që në vend të duke u përpjekur për të zbatuar këtë të gjitha në një seksion të gjatë në kryesore, ju lloj i mund të ndarë atë në si, OK, le të shkruajë një funksion për të kubike diçka, le të shkruajë një funksionojnë në shesh diçka. Në këtë mënyrë ju mund të ndarë atë në të vogël, pjesë të vogla që ju mund të trajtojë në krahasim me duke u përpjekur për të trajtuar një problem i madh të gjitha menjëherë. Rob: Ose madje edhe të vogël, pjesë të vogla që ju dhe një partner mund të trajtojë. Joseph: Po. Rob: Pra, në vend të dy të jeni duke u përpjekur për të implant një të tillë funksionojnë në të njëjtën kohë. JOSEPH: Thjeshtimi. Çdokush duan të marrin me mend? Po? Gjuha 5: More përsëritje. JOSEPH: E drejta. Pra, një gjë që ju mund të bëni me thjeshtësim është se kjo është lloj i të të njëjtat linja si ri-përdorshmërisë është se një herë kam shkruar një funksion kubike, unë mund vetëm përdorni atë mbi dhe mbi dhe mbi përsëri në programin tim në vend të shtypni x kohët x x herë mbi dhe pa pushim. Dhe thjeshtim këtu edhe vetëm do të thotë se e bën lloj tuaj kodin e më të lehtë të korrigjoj një herë ju ndarë kjo e deri në funksionet. Sepse atëherë ju mund të lokalizoni kudo problemet tuaja lloj janë. Ndonjë pyetje? Pra, një tjetër ide është abstraksion, e drejtë? Kjo kuti e zezë. Si mund të dini se çfarë bën GetInt për të marrë të dhëna nga ana e përdoruesit? Ne nuk kemi thënë me të vërtetë ju, apo jo? Të gjithë ne kemi thënë është GetInt bën pikërisht atë që ajo thotë se ka. Pra, edhe në qoftë se ne nuk do të ju tregojnë se si ajo punon, ju ende dini. Pra, në këtë rast të veçantë, kjo është një funksion i katërfishtë i cili bën gjëra të ndryshme në një input për të prodhuar një prodhim. Dhe ju mund të katërfishohet një numër duke shumëzuar atë me katër. Ose ju mund të asaj që ne e quajmë pak ndryshim atë me dy. Dhe ne do të mbulojnë këtë pak më vonë. Dhe nuk ka nevojë të dini se si kjo funksion në të vërtetë punon për aq kohë sa ajo punon siç është e cekur. Pra nën kapuç, unë mund të jetë si, kthimi herë input tetë e ndarë nga dy. Dhe ju nuk do të dinë, e drejtë? Të gjithë ju duhet të dini është kjo e bën atë që thotë. Pra, kjo është gjë e dobishme rreth abstraksionit. Dhe një tjetër gjë është lloj i kjo ide i lokalizimin kodin tuaj në një seksion të veçantë. Pra, nëse ju keni një problem, ju nuk e bëni kanë për të shkuar në të gjithë kodin tuaj duke u përpjekur për të rregulluar ku problemi ishte. Pra, në këtë rast, unë zbatuar kubike gabuar. Mendova kubike u shumëzuar nga tre. Pra, në këtë rast, ky është një program që sapo ka shumëzuar me tre kudo. Dhe ka një tjetër program që ka kubike faktorë jashtë në një funksion. Dhe kështu që tani, nëse unë dua të rregulluar gabimin tim këtu, unë kam për të rregulluar çdo linjë të vetme e kodit në këtë program. Ndërsa nga ana tjetër, në qoftë se unë e përdorin funksion, vetëm kam nevojë për të ndryshuar çfarë ishte e gabuar në një vend. Pra, në shkenca kompjuterike, ne telefononi inputet dhe rezultatet. Inputet quhen parametra apo argumentet, dhe rezultatet janë quajtur kthehet vlera. Dhe ne do të shohim se si kjo na ndihmon lloj të përcaktojë një funksion në një të dytë. Pra, ky është një përkufizim funksion për cubing. Pra, ajo merr një kontribut, dhe më pas ajo kthehet herë që numri vetvete tre herë. Pra, le të thyer këtë poshtë. Pra, ne kemi një header funksion, i cili në thelb përbëhet nga tre gjëra. Pra, ne kemi parametrat, të cilat janë, siç kam thënë më parë, të dhënat në këtë funksion. Dhe pastaj ne japim funksionin një emër. Në këtë rast, ajo që quhet kubike. Dhe pastaj ne të specifikojë se çfarë llojin nga vlera e kthyer është. Pra, në këtë rast, funksioni im kubike merr në një numër të plotë dhe ai gjithashtu kthen një numër të plotë. Pra, nëse unë të kalojë në dy, dy është një numër të plotë, ajo kthehet tetë për mua, të cilat është një numër i plotë. Pra, të kthehet parametrat lloji emrin. Pyetje në lidhje me se? Dhe atëherë vlera e kthyer është në të vërtetë specifikuar në fund duke thënë se kthim dhe pastaj të kthehen çdo gjë përmban vlerën e kthimit. Pra, në këtë rast, në qoftë se ne kemi vënë atë të gjithë bashku, nje funksion merr në Parametrat, është quajtur diçka, dhe ajo kthehet diçka që është lloji se ne themi se do të ishte. Ndonjë pyetje? Deri sa nuk kemi përdorim një funksion? E pra, e kemi shkruar një funksion dhe më pas ne e përdorin atë në programin tonë, apo jo? Kështu që unë e quajti atë kubike, dhe atëherë unë mund të përdorni kubike. Por ajo që është e rëndësishme të theksohet është se çështjet e rendit. Nëse unë kam kubike poshtë kryesor, është e do të kandidojë në kubike. Dhe në këtë pikë, nuk ka asgjë quajtur kubike në program, dhe është e vetëm do të jetë si, unë kam nuk ka ide se çfarë është kubike. Pra, kjo do të ju them, i nënkuptuar Deklarata e funksionit. Kjo është gabim që tregon deri. Dhe kështu në këtë rast, kubike është më poshtë kryesore, kështu që nuk do të dinë për të. Gjuha 5: Pra kryesor është zakonisht funksioni i fundit i përcaktuar? JOSEPH: Pra, pyetja është, është kryesore zakonisht e fundit gjë që ju do të përcaktojë? Dhe nuk ka. Kjo është sepse ne zakonisht e pëlqen kryesore për të qenë në krye, e drejtë? Sepse kjo është gjëja e parë që ju doni programues hapjes Programi për të parë. Dhe kështu si nuk kemi zgjidhur këtë çështje e ne duan kryesore të jetë në krye, por Funksionet që ne duam, ne duam t'i të jetë nën kryesore ende të jetë në gjendje të përdorin ata brenda kryesore? E pra, ne e përdorim atë që ne e quajmë një prototip funksion. Pra, atë që një prototip funksion në thelb është po ajo së pari e merr atë nënshkrimi ose header funksioni e asaj që ne duam të zbatojë poshtë këtu, dhe ne kemi vënë atë në në krye të një programi. Pra, në këtë rast, ne themi se, mirë, më vonë në programin tonë, ne jemi duke shkuar për të bërë një premtim për të zbatuar këtë Funksioni i quajtur int kubike, i cili merr një input numër i plotë. Deri tani, sepse kjo është më lart kryesore, kryesor, ajo do të të thënë, oh, edhe, më vonë në program, që do të jetë atje kështu që unë mund të referohet në të, kështu që unë do të vetëm le të kalojnë nëpër tani për tani. Dhe pastaj në fund, ne zbatimin e kubike. Dhe pastaj kryesore do të them vetëm, mirë, ajo do lloj i lidhjes këto dy simbole së bashku. Dhe ne do të mbulojnë atë që do të thotë më vonë. Dhe kështu do të dini se kjo është Funksioni kubike se ajo duhet të përdorin. Rob: [padëgjueshme] në lidhje me dashur kryesor në fund ose top, unë kam parë të dy. Ka gjëra që vetëm donte për të vënë kryesor në pjesën e poshtme. Por sapo një projekt merr veçanërisht madhe, zakonisht kryesor është në një paraqesë të gjitha e saj. Dhe në këtë pikë, si int linjë kubike do të - brenda stdio.h janë një bandë e linjave ashtu si atë int Linja input kubike int. Dhe kështu këto prototipa janë gjëra që ju kanë tendencë për të vënë në kokë fotografi, në të cilat pikë, kjo nuk ka rëndësi. E pra, kjo nuk ka rëndësi. Ata gjithmonë shkojnë në krye. Dhe në qoftë kryesor nuk është një file i të gjitha e saj, ju nuk duhet të shqetësohen për vënien prototypes funksion individuale në dosjen. JOSEPH: Dhe ne do të merrni për të se një pak Pak më vonë, kur Rob fillon duke folur për hartimin. Dhe kështu që nuk ka edhe një ndryshim mes parametër dhe argumentit. Dhe parametër është vetëm ajo që ne e quajmë këto inpute kur ne saktësimit të funksionit. Dhe ne e quajmë atë një argument kur ne në fakt kalojnë atë në funksion. Pra, në këtë rast, kjo është një parametër, siç kemi thënë më parë. Dhe kur ne fakt përdorin atë atje, kubike të x, atëherë x në vetvete është ajo që ne e quajmë një argument në kubike funksion. Rob: Pra, argumentet parametër janë - ekziston ky dallim, shumë hutuar të këmbyeshme. Në këtë pikë, për mua, është si një nga ato fjalë që kur unë shoh atë në egra, unë nuk mund të ndihmojnë por menjëherë Pyetja nëse ata janë duke e përdorur atë në konteksti i saktë, për shkak se Dallimi është delikate e mjaftueshme që vetëm të gjithë tenton - Unë pothuajse gjithmonë them argumentin pa marrë parasysh se çfarë dua të them. Joseph: Dhe funksionet janë gjithashtu të dobishme për atë që ne e quajmë efekte anësore. Pra, një funksion mund të marrë asnjë inputeve, dhe ajo gjithashtu mund të prodhojë asnjë rezultate. Pra, në këtë rast të veçantë, unë jam përcaktimin e një subroutine që nuk ka vlerë të kthehen. Dhe në mënyrë që të përcaktojë se, ne përdorim ajo që ne e quajmë një zbrazëti gjatë këtu. Dhe kështu efekt anësor i këtij funksioni është se ajo vetëm shtyp sende jashtë në faqen. Ajo nuk ka të vërtetë të marrë ndonjë inputeve, dhe kjo nuk ka në fakt prodhojnë ndonjë rezultate. Por kjo mund të jetë e dobishme në kuptimin në qoftë se ju doni të, për shembull, debug diçka në programin tuaj, në qoftë se ju doni për të shkruar një subroutine pak se printime nga, le të themi, përmbajtja e kujtesës ose diçka. Dhe kështu që këto efekte të padëshiruara janë nganjëherë dobishme jashtë kontekstit e ashtu si inputet dhe rezultatet. Ndonjë pyetje? Dhe për t'i dhënë fund këtë segment të caktuar, çfarë e bën këtë program të bëni? Unë do të ju jap djema një çift të sekonda për të lexuar nëpërmjet saj. Në një nivel shumë bazë, ajo që ne duam të them është se ai këmbime x dhe y, e drejtë? Pra, si shumë prej jush në fakt mendoj kjo do të bie në ujdi x dhe y? Ngritja dorën tuaj. Askush. OK. Kush mendon se do të nuk bie në ujdi x dhe y? Dhe shuma e që është jo të gjithë dhomë. Pra, disa njerëz nuk janë të sigurt. OK. Kjo është e arsyeshme. Pra, le të kalojnë nëpër çfarë ndodh kur ju në të vërtetë të telefononi funksionet e parë në mënyrë që të t'iu përgjigjur kësaj pyetjeje. Pra, kjo është ajo që e kujtesës lloj i duket si. Kjo është lloj si një model të thjeshtuar e asaj kujtesës duket si kur ju drejtuar një program. Pra, ka diçka që quhet rafte poshtë këtu dhe diçka e quajtur grumbull. Këta rriten në drejtim të mes të kujtesës. Pra, në këtë rast të veçantë, kur ju e quani një funksion, ai merr vënë në rafte. Dhe pastaj çdo gjë që gjendet në atë funksion qëndron në atë që ne e quajmë se kornizë funksionit rafte. Dhe kështu për të marrë një vizualizimi bukur kjo, let's - për shembull, kemi pasur Programi kryesor më parë. Dhe brenda kryesore, ne i quajtur kubike. Pra kryesor parë do të shkojë në rafte kornizë, sepse është funksioni i parë që është quajtur. Dhe pastaj kur kubike është quajtur në brendësi të kryesor, ajo merr të vënë në krye të kryesore brenda kujtesës. Pra, ajo që ju do të vini re këtu është se kubike ka parametrat e saj dhe e saj vet vendasit. Pra, kur ju të vërtetë të kalojë diçka për të një funksion, parametrat që ajo merr janë kopje e asaj që ishte kaluar në nga kryesore. Dhe për lloj të shpjeguar këtë, le të ecin nëpër një programi. Pra, ne kemi rafte dhe kjo është vetëm pjesa rafte. Dhe ajo që ne bëjmë është që ne së pari nisja x dhe y të parë dhe të dytë. Pra, ne kemi këto kuti pak. Ata janë ulur në oxhaku kryesor të kornizë në rafte. Ato përmbajnë një dhe dy. Tani ne e quajmë swap. Ajo që ndodh është që ne të kalojë x dhe y në swap, dhe swap krijon kopje e veta e atyre variablave të përdorur brenda e kuadrit të saj rafte. Deri tani atje, ne kemi një, e cila përmban vlerën që kishte x dhe b, cila përmban vlerën që y kishte. Pra një, dy. Dhe ju do të vini re se kjo është e veçantë nga x dhe y brenda prej kryesore. Pra, ne tani të krijojë një të përkohshme variable të përmbajnë a. Ne kemi vendosur një të barabartë për të b, kështu që Ndryshimet 1-2. Dhe pastaj ne kemi vendosur b barabartë në temp, e cila është një. Dhe pastaj tani ne dalje jashtë e këtij funksioni. Kur ju të dalë jashtë funksionit, kornizë rafte merr popped off rafte. Ne e quajmë atë shtytje. Ju shtyjnë një kornizë rafte mbi rafte dhe në qoftë se ju pop off rafte. Dhe kështu që ajo që ndodh është çdo gjë që ishte në atë pirg kuadër lloj të vetëm shkon deri në flakë. Dhe kështu që nuk ekziston më. Por çfarë do të vërejmë? Ne kurrë nuk ndryshoi në të vërtetë vlerat e x dhe y, apo jo? Kështu ata qëndruan lokale për të kryesore. Dhe duke kaluar gjërat në swap, ne në të vërtetë kurrë nuk ndryshoi këto vlera. Dhe çfarë ne e quajmë këtë? Ne e quajmë këtë kalimin nga vlera. Pra në C, kur ju të kalojë gjërat në funksionet, ai kalon ato me vlerë dhe bën një kopje të tyre për funksion për të përdorur. Dhe ne do të mësojnë në lidhje me diçka të quajtur kaluar duke iu referuar më vonë, por kjo është një mënyrë ju mund të zgjidhin këtë problem. Por ne nuk do të shqetësohen për që deri më vonë. Rob: Dhe në fakt, ky term, kalimi duke iu referuar, në mënyrë C nuk ka as duke kaluar nga referenca. C ekskluzivisht ka kaluar nga vlera. Pa marrë parasysh atë që ju bëni, ju jeni gjithmonë të duke kaluar një kopje të diçka. Është vetëm se, si unë lloj i përmendur se para se me pointers dhe se një string është në të vërtetë vetëm katër bytes duke treguar diku në kujtesë. E pra, në qoftë se unë kam këtë varg dhe është e thënë mua se është vendi ku string - mirë, në qoftë se unë kam këtë tregues për këtë vendin në kujtesë, atëherë unë mund të kalojë një kopje të atij tregues për një funksion, dhe se funksioni ende e di se ku në kujtesës është. Pra, të dyja këto pointers janë vënë në në të njëjtin vend në memorjes, dhe kjo është se si ne do të jetë në gjendje për të ndryshuar gjërat përtej kornizë aktuale rafte. JOSEPH: A doni të bëni hartimin? Rob: Jo, kjo është 05:30. JOSEPH: OK. Ajo është 05:30. OK. Pra, ne do të mbulojë përpilimin I guess në Seksioni tjetër, ose seksioni juaj Udhëheqësi do të në atë pikë. Dhe - Rob: Çdo pyetje? JOSEPH: Çdo pyetje? Po? Gjuha 5: Duke përdorur vargjet nga CS50, çdo funksionet që dëshironi të përdorni për ata, që do të jetë si C funksioneve. CS50 nuk ka shkuar në dhe bërë ndonjë shtesë. Rob: Correct. Çdo i C si [e padëgjueshme], ju do të përdorin ato në vargjet tona. JOSEPH: Dhe një gjë e fundit që unë dua të përmendur është se ne kemi një udhëzues stil për këtë klasë. Rob: Oh, po. JOSEPH: Pra, nëse ju keni ardhur nga një programimit sfond para, ju mund të ketë konventa të caktuara kur jeni të shkruar kodin e vënë si tirantat në të njëjtin drejtim të veçantë ose mënyrat e indenting ose emërtimin e variablave tuaj. Në këtë klasë, ne duam të ndjekim një udhëzues specifik stil vetëm për shkak se, mirë, në qoftë se ju shkoni jashtë dhe të punojnë në industri, ju do të jeni të pritet për të ndjekur udhëzues stilin e Kompania në të cilën ju të shkoni për të. Ashtu si për shembull, Facebook mendoj ka një lloj të veçantë të emërtimit konventë. Dhe nuk ka dallime në mes deve Variablat zorrë dhe ashtu si i ndarë ato me underscore. Dhe gjithashtu, unë mendoj se më e rëndësishmja, si për shembull, gjurmë, apo jo? Ne do të formatimin e teksteve kaçurrel fillojnë ku gjendja është, dhe ato janë në linjë tjetër. Dhe ne gjithashtu vënë formatimin e teksteve kaçurrel në edhe nëse është vetëm një linjë. Dhe shumë herë, ka mënyra për ta bërë ajo ku ju mund të lënë këto formatimin e teksteve në qoftë se kjo është vetëm një linjë në bazë të deklaratës Nëse është. Por në këtë klasë, ne duam të ndjekim një udhëzues specifik stil vetëm në mënyrë që ju të merrni përdorur për atë gjë e tillë. Rob: Po, dhe Style 50 do të zbatuar këtë udhëzues stil, dhe ne jemi do të përdorin Style 50 për klasën kodin tuaj. Pra, kjo e bën gjërat më të lehtë për ne dhe shpresojmë se nuk duhet të bëjë gjëra që shumë më keq për ju dhënë Stili i standardizuar nuk duhet të jetë që joreale. JOSEPH: Dhe së fundi, për të gjetur stilin Guide, shkoni në manual.cs50.net/style. Dhe vërtet. Kryetari 4: A do të zbatojë çdo karaktere për rresht? Rob: Po. JOSEPH: Na vjen keq, djema. Rob: Kjo është si një nga të vetmit. Në këtë pikë, unë jam në rregull me 120. Unë jam në rregull me të duke thënë: 120 karaktere për rresht. Unë e kuptoj ka qenë disa kufi. Unë mendoj se 80 është aq i vogël, por ne jemi duke zbatuar atë. JOSEPH: Personalisht, unë mendoj se me C, 80 karaktere është shumë në rregull. Pasi ju filloni të keni të tjera gjuhë si JavaScript dhe PHP, nuk në mënyrë të arsyeshme për të vetëm të kufizuar ajo të 80 karaktere. OK. E pra, kjo ishte pjesa super. A ka dikush doni karamele? Kryetari 4: Po.