ROB: Olgu. Tere tulemast esimene lõik. Olen Rob. JOSEPH: ma olen Joseph. ROB: Nii me sukelduda õigus sisse Esimene asi, mida rääkida Kas seade. Loodetavasti enamik teist on alla laadinud juba. Aga näed juhiseid kell cs50.net/appliance. Oh jumal, nüüd ma olen uje. Ma ikka kuulda. JOSEPH: Wow, see kõlab see on segaduses. ROB: Nii mõned inimesed on, kellel probleeme, seega ärge oodake viimase hetke probleemi seatud üritada lahendada seadme ja teada saada, et see ei tööta. JOSEPH: Ja kui midagi ei tööta ja vajate abi, siis võib minna cs50.net/discussion kus me foorumit, kus te saata oma küsimused. Ja me jõuame neid lõpuks. ROB: Olgu. Nii et see on see, mis Appliance välja näeb. Jällegi, see on lihtsalt täiesti eraldi operatsioonisüsteem töötab jooksul olenemata operatsioonisüsteemist töötab sülearvuti. Ja peamine, mida on kasuta on gedit. Loodetavasti see on juba saada tuttav kohas. Terminal. Ja saab ka käivitada Chrome jooksul Appliance. On olnud paar inimest kes on teatanud Interneti ei tööta Appliance. Ja mõned neist on lihtsalt eeldada, et seal ei peaks olema internet seadmesse. Aga jah, seal peaks olema internet. Ma ütlen seda praegu, aga see ei tegelikult tähendavad midagi. Kui internet ei tööta, see on see, mida sa tavaliselt vaja jooksma, et seda parandada. Kui sul on internet küsimusi, ärge mäletan seda, just postitada selle Arutle ja me öelda, kestab see. Aga internet peaks töötama. Nii et ainus asi - jah, midagi muidu on tõesti oluline. Aga ma lihtsalt tahtsin rõhutada, et: - vt selle paremas nurgas. Nii iga teie seadmed tuleks olema IP-aadress. Ja hiljem semester, see IP aadress muutub asjakohane, kui te töötate web p-set, sest Teil on võimalik pääseda veebilehel te töötate oma kohaliku Chrome kasutades seda IP-aadress. Aga mida ma tahaksin kasutada IP aadress eest - ja sa ei pea seda tegema, ma tahan rõhutada seda - on siin. Nii et see on terminal aknas mu Mac, see ei ole Seadme üldse. Ja saate otsida mida See käsk. Aga ma lähen SSH otse minu Appliance. Ma ei tea, mis on uurimisperioodil. JOSEPH: 168 - 168.224.1.0. ROB: Nii et kui ma olen teinud Selle logige sisse Nüüd, põhimõtteliselt see on identne terminal aken mu Appliance. Nii et ma päris palju kunagi tegelikult töötatud seestpoolt seade ise. Ma alati on see töötab Taustal minimeeritud ja SSHed ta. Küsimus on selles, mida te ei kavatse et oleks võimalik kasutada gedit kergesti otse selle. Aga kui sa tahad olla tõeline cool häkker, siis peaks harjuma käsurea tekstiredaktor niikuinii. Nii Vim ja Emacs ja Nano, kõik need On erinevaid alternatiive. Nano kipub olema lihtsam. Ja ma arvan, et see ei ole süntaksi esiletõstmine. Oh, ei, see täiesti ei. Nii saab kasutada Nano, kuna et üks on üsna lihtne. Näete kõik need käsud allosas. See väike porgand sümbol. Kui te pole seda näinud enne, siis saad ilmselt näha palju nüüd. See tähendab üldiselt kontrolli porgand, nagu alt vasakult klaviatuuri kontrolli iseloomu. Nii et siin see on mulle siin - Oh, see ei lõigata, kui ma suumida Nii kontroll on X kuidas Ma lähen, et väljuda. Ja ta ütleb, et ma ei tabanud Y Jah, säästmine, N Ei Nii et Nano. Vim ja Emacs kipuvad olema veidi rohkem keeruline ja suur. Aga sa saad sellega harjunud, ja siis sa armastad seda. Nii et see on. JOSEPH: ei ole vaja teha. ROB: Jah. Te võite vabalt kasutada gedit'it Ülejäänud semester. Nii tahes seade seotud küsimusi? Või kas teil on mingeid mõtteid mida veel tuleb juttu umbes seadet? Jah. SPEAKER 1: Kui SSHed oma asi oli parool Crimson? ROB: Jah. Parool päris palju kõike seadmesse läheb olema Crimson. SPEAKER 2: Installi nagu tõeline IDE Seadme, kas see toimib? ROB: Ma kujutan ette, Eclipse ei ole Fedora versiooni, millisel juhul, jah, saate seda teha. See ilmselt ei ole tõesti seda väärt. SPEAKER 2: OK. Nii et see on ilmselt lihtsam kui ma tahtsin kasutada Eclipse, lihtsalt kasutada native ja laadige - ROB: Oh, see on ka ilmselt lihtsam. Aga sa saad selle töö jooksul Appliance. JOSEPH: Ja kaamera küsimus oli, kas sa paigaldada veel IDE seadme sisemust? ROB: Eclipse on näiteks IDE. Muid Appliance küsimusi? Hea küll. Nii me nüüd edasi liikuda käsurea interface seotud asju, nii CLI. Ja veel, ma lihtsalt lähen tööle siin, sest see on identne tööpäeva jooksul terminal window jooksul Appliance. Kuidas see font otsite? Kas see on piisavalt suur? Hea küll. Nii on palju käske, sa peaksid päris harjunud kogu semestri. Big kaks navigeerimiseks on ls, nimekiri failid sellesse kataloogi ja CD, nii et muuta kataloogi. Ma võin muuta töölaua ja siis väga levinud muster on cd kataloog ja kohe ls Mis on kataloog. Inimesed mõnikord ei saa aru et Tab lõpetamine on asi. Nii nagu cd, vh ja siis lõin Tab. Ma peaaegu kunagi tüüp välja kogu asi. Ja siis, kui ma saan pihta Tab uuesti, siis see automaatselt alustada loetletakse minu jaoks. Et ma saaks cd vhosts, kohalik host. Ja see lihtsalt läheb - juhul kui te ei ole kuulnud sõna enne, kataloog on lihtsalt üks sõna jaoks kausta. Nüüd, kui sa näed - toome selle üles. Nüüd, kui näed sulgudes, siis vaata vähe tilde, slash, vhost, kärpida, kohalik host. Nii tilde, mis viitab minu kodukataloogi. See on kataloog oled aastal, kui sa SSH sisse See on kataloog oled kui kui avada terminal. See on koht, kus hakkate. Ja nii ma olen sees minu kodu kataloogi, ja ma olen sees vhost Kataloog sees minu kodu kataloog. Ja siis ma olen sees kohaliku võõrustada kataloog sees, et. Nii mõned muud kasulikud asjad koos cd - või ka üldiselt nii dot alati viitab praegune kataloog. Cd, dot on päris mõttetu käsk. Aga see, kes lähevad üle jooksvasse kataloogi. Kasulikum üks poolest CD dot, dot, mis on lihtsalt minema üks kataloog. Ja pange tähele, et need - Ma tahan öelda, varjunimed, kuid need sümbolid, dot, ja dot, dot, nende töö päris palju tahes käsu sa oled kavatse mõelda töötab. Nii nagu CD on ilmselt kus sa oled kasutades kõige, kuid need ei ole asju, mis lihtsalt cd mõistab. See on päris palju midagi oma kogu käsurea mõistab. Palju programme aru dot ja punkt punkt. Niisiis muud kasulikku ones - cd, kriips. Nii et läheb toob mind viimane kataloog, et ma olin sisse Nii et mõnikord ma teen midagi, oh, ma töötan siin. Ja ma näen, mõned viga midagi, ja Ma lähen seda uurida minnes mingi suvaline kataloog kuhugi. Ja ma ei tea, kas see saab lase mind sinna. See. Nii ma siis teha, mida ma tahan, selles kataloogis. Blah, blah, blah, blah, blah. Ja ma olin nagu, eks, ma tahan minna tagasi sinna, kus ma olin. cd, kriips, ja see toob mulle kohe tagasi. Nii et ma viskan palju Nende sind täna. Ma ei arvanud, et sa meelde neid kõiki. See on omamoodi lihtsalt tean, et nad on olemas. Ja siis hiljem, kui sa oled nagu, hmm, ma tahan minna tagasi kataloog, et ma olin just, oh, oota, midagi sellist, mis on olemas. Sa ei pea lihtsalt kirjuta Kogu kataloog uuesti. JOSEPH: Ja lõpuks sa lihtsalt neid kasutada ikka ja jälle, ja siis see muutub lihase mälu. ROB: Jah. Niisiis, kuidas ma enne ütlesin, et tilde on oma kodukataloogi. Et ma saaks cd, tilde. Aga ma ei pea isegi seda teha, kui ma lihtsalt - Ma lähen tagasi kataloogi nii see ei ole mõttetu näide. Aga kui ma lihtsalt teha cd, mis on ka sama, minge oma kodukataloogi. Ma käsin, K. JOSEPH: Võite ka tippida selge, sõna, ja see peaks selge see. ROB: Ja ma arvan, et ka kontroll, L ka teeb seda. Nii palju erinevaid viise. Ma arvan, et on mõningaid erinevusi, kui selge ja Tõrje Ma lihtsalt tõesti lükake see üles ja Ma ei saa ikka tagasi kerima. Command, K sõnalt hävitab kõike, ja sa ei saa kerida varundada. Vähemalt on, see on kuidas see toimib iTerm2. Ma ei tea, kuidas teised asjad - oh. Mis SSHing, nii et kui sul on Windows, sa lähed on alla PuTTY et SSH sest Windows ei on nagu sisseehitatud SSH abil. Alates Mac saate lihtsalt SSH otse terminali aknas. OK. Küsimused? LS, seega midagi harjuda enamik neist käsud on - Noh, ma lihtsalt teha üks. Ls, kriips, l. Nii kriips, l, mida me helistada lipu ls. Ja palju need käsud on lipud mis saab edasi neile. Nii et sel juhul kriips, l on lipp , mis ütleb, et see annab mulle täieliku loetletud kõik andmed neid faile. Nii et me näeme siin, et desktop oli muudetud 30. juulil kell 00:54. Downloads muudeti juures 6. september. Need on praeguse suuruse ja baiti nende katalooge. Sa ei pea aru kõik see. See värk vasakul need drwx on, mis muutub palju asjakohasem hiljem, kui sa pead tegelema - mis on pistmist, kellel on õigusi vaadata neid faile. Ja kui sa ei ole ainus kasutaja see arvuti, siis oleks võimalik ütleme, OK, ma peaks olema ainult üks lubatud vaadata faili või ma olen kavatse lubada igaüks vaadata seda pilti. Nii et keegi teine ​​minu arvutis võite vaadata seda pilti. Ma isegi ei tea, mida see - Mida see teeb? JOSEPH: Ma ei ole päris kindel, tegelikult. ROB: Pole aimugi. JOSEPH: Aga kui sa ei tea, on kasulik käsk, mida saab kasutada öelda, mida väljund tähendab. Ja kui sa kirjutad mees Enne käsu - nii M-N. ROB: Man. Nii mees on veel üks mis on väga kasulik. Ja mees, ls. Nii mees lehti nad on nii käske, et sa kavatsed kasutada käsurida, ja neil on ka funktsioone, mis on asjakohased koos C. Nii saab inimesele - ja ma ignoreerida 3. Aga mees 3 printf läheb toob kuni C versiooni printf. Aga kui ma seda meest printf, see on läheb avab käsk printf mis juhtub käsureal. Nii mees, ls. Man-lehekülgi võib olla päris suur. Siin aga näete selle oksjoni Kõigi nende lipud, et LS mõistab. Nii et kui me läheme kriips, l, ja - Ma lihtsalt viskan selle sulle. Aga selleks, et leida, mida soovite kõigepealt tabas küsimus kaubamärgi või kaldkriipsuga nuppu. Nii kärpida. Ja siis ma saan otsida eest, mida tahan. Ma lähen kärpida eest kriips, l. Ja seal see oli. Nii et kasutage pikk loetelu vormis. See ei aita mul aru saada, mis et eriti veerg tähendas, aga ma endale kuskil siin oleks seletada. Nii et kasutage mees lehekülge käsu et sa ei ole kohe aru. Ma olen päris kindel, et sa ei saa isegi inimene, mees. Liides online käsiraamatud. Oh, üks viimane, mis on võib-olla pisut Oluline on ls, kriips. Nii teate, kas ma just seda ls, Ma saan need viis faile. Kui ma ls, kriips, ma saada palju rohkem faile. Nii ühine joon nende vahel uusi faile on dot varem. Nii tava on, et faili algab dot on peidetud. Nii et sa ei taha näha, et fail, ei taha olla see jama oma kataloogis. See on ainult siis, kui sa konkreetselt küsida, Olgu, ls, sidekriips, näita mulle. Tähistab kõiki faile, sealhulgas peidetud ones. Nii mõned teised käsud. Oh, küsimusi sel hetkel? Jah. SPEAKER 3: Kui sa ls, , mis dot, dot? ROB: Oh. Nii et see on see, mida ma räägin. See on sama asi, kui Ma ei meeldi cd, dot, dot. Nii tehniliselt, dot ja punkt punkt on failid, mis on olemas iga kataloog, kus dot failis praeguse kataloogi. Nii et kui ma cd, dot, ma lihtsalt viibida kataloog. Ja punkt punkt viitab alati eelmine kataloog ühe taseme võrra üles. Nii et kui ma minema palke ja LS-kriips-al, Ma vaatan, dot, dot. cd dot, dot jõuan eelmise kataloog. Jah. OK. Nii teine ​​päris oluline käsk rm. Nii see on, mida me kasutada eemaldada. Ja las ma tegelikult teha teises käsk esimene. Nii mkdir. Mkdir on, kuidas saab luua katalooge. Ja ma luua ajutine kataloog ja minna, et ajutine kataloog. Ja nagu oodatud, see on tühi. Aga kui ma ls, kriips, mul on veel dot ja dot, dot, sest dot viitab jooksva kataloogi. Ja punkt punkt viitab eelmine kataloog. Ja need on alati olemas ükskõik Kataloog olete sisse Ja see on täiesti tarbetu käsk, kuid touch. Ma lihtsalt seda kasutada, sest see on lihtne viis luua faile. Nii puudutada, katsuda b puudutage c on lihtsalt kavatse luua kolm faili nimega, b ja c, mis on täiesti tühi. Seega punkt mind luues neile, esiteks on lihtsalt nii, et RM on kuidas saame eemaldada. Nii rm,. Seda küsin mina, eemaldage regulaarne tühja faili? Ja siis ma ütlen jah. Nii et kui ma tean kindlalt, et ma tahan kustuta see fail, ilma et oleks küsitakse, eemaldada regulaarselt tühi fail?, siis rm, kriips, f hakkab olema lipp, mis ütleb, sundida eemaldada ilma isegi sunnib mind, oh, sa oled kindel, et soovid kustutada faili? Jah, ma olen kindel. Nii rm, kriips, fb tekitavad lihtsalt seda teha ilma küsimata. Seega teeme veel mõned kataloogid. mkdir, tmp2, cd, tmp2, puudutada, katsuda b. OK. Nüüd ma tahan, et eemaldada tmp2 kui kataloog. Nii rm tmp2. Sa ei saa kustutada tmp2, see on kataloog. Seega küsimus on selles, et rm ei kohe tööle katalooge. See on mõeldud ainult faile nagu mitte-kataloogi faile. Ja mida me saame teha siin on rm, kriips, r. See tähistab rekursiivselt, mis võib ei tähenda sulle midagi veel. Aga kui sa saad rekursioon, see loeb rohkem. Nii rm, kriips, r, tmp2 läheb rekursiivselt laskuda, et kataloogis. Nii laskutakse kataloog tmp2? Jah, lähme sinna. Kas me tahame, et eemaldada tmp2 /? Jah. Kas me tahame, et eemaldada tmp2 / b? Jah. Nüüd me tahame, et eemaldada Kataloog tmp2? Jah. Ja nüüd kataloogist ja kõik sees see on eemaldatud. On tehniliselt käsk rmdir , mida saab kasutada, et kõrvaldada kataloogid, kuid see toimib ainult on tühi katalooge niikuinii. Ja vaata, et lähme lihtsalt teha mkdir, tmp2 uuesti. Tmp2 puudutage. OK. Nii et kui ma üritan eemaldada dirtmp2, siis see öelda, kataloog ei ole tühi. Nii et ma päris palju ei kasuta kunagi eemalda dir käsk niikuinii, sest rm, kriips, r töötab tühi katalooge ja mitte-tühjad kataloogid. Ja ka siis, kui ma ei taha olla läbi minema, et kogu protsessi laskumisel kataloog ja eemaldades iga faili, rm, kriips, RF, tmp2. Ja nüüd on see kadunud. Midagi olla ettevaatlik kohta on rm, kriips, rf. Ja see hirmutab mind isegi tippida, sest kui ma kogemata Enter või midagi. Nii rm, kriips, RF, tilde oleks ilma sunnib mind, f ei küsi mind, see automaatselt eemaldada minu kogu kataloogi ja kõik see. Nii et te võite arvata, et see loll asi, mida teha. Ja noh, see on. Kuid see võib juhtuda väga kergesti õnnetus, kui, ütleme, ma tahtsin, et eemaldada minu kaldkriipsuga vhost kataloog. Ja just kiire kirjutades, Ma kogemata seda teha. See eemaldab rekursiivselt nii minu kataloogi ja vhost kataloog selle konkreetse kataloogi, lihtsalt juhtub ole praegu. Aga see ikkagi eemaldada minu kogu kataloogi. Vähemalt mitte võttes f, see oleks kiire mul esimene. Ja ma tahaks olla nagu, oh, ei, ma ei taha seda teha. Aga inimesed, kaldkriips, sealhulgas mind pigem sattuda harjumus alati RF-dest. Isegi tavalised failid, et võin lihtsalt rm, c, ma pigem lihtsalt rm, kriips, RF, c. Ole ettevaatlik, kui sa oled rf-dest. SPEAKER 4: Mis C teha? ROB: C Ma räägin, et C fail selle kataloogi, et rm, c. JOSEPH: Ja veel ohtlikult, kui te kasutate star, see tähendab kõik kataloog. Niisiis, mida ma tavaliselt kipuvad tegema, on ma minema kataloog ja ma tahan Kustuta kõik failid sinna. Nii rm, kriips, RF, star. ROB: Jah. Rm, kriips, RF, star. JOSEPH: Ja kui sa ei ole ettevaatlik mis kataloog sul - Ma polnud temp, kuid olin kogemata minu kodu kataloogi siis ma eemaldada kõik minu kodukataloogi. Ja ma olen tegelikult seda varem teinud, ja Ma arvan, et oled seda teinud enne või Jay on seda varem teinud. ROB: Olen kogemata ära - nii ignoreerida käsk natuke. JOSEPH: ei ole lõbus. ROB: Nii kaldkriipsuga bin kataloogi hunnik binaarse faili kus muidu olema tuttav need nagu rõkkama. Noh, ripu ja põhimõtteliselt kõik need asjad, mida ma töötab käsk line on see kaldkriips bin kataloogi. JOSEPH: Asjalik Kas on siin. ROB: Nii dot, kaldkriips, ls oleks loetleda see kataloog. JOSEPH: Rm on ka selles kataloogis. ROB: olen kogemata rm, RF-ed bin, mis kõrvaldas käsk suutsin võib-olla kunagi tahad. Mis siis ma lihtsalt installida uus Appliance sel hetkel. JOSEPH: Nii peab olema väga ettevaatlik, kui sa seda käsku kasutada. Publik: [kuuldamatu]? ROB: Jah. See on ka halb harjumus sattuda. Kui märkate, ma olen nüüd - Noh, sa ei märka, kuid minu zoom-in ehk võimalik. Nii et ma olen nüüd root @ aparaat. Nii jharvard on kasutaja tahame sa alati kasutad. Root on kasutaja, kellel on luba teha absoluutselt kõike. Nii teate, kui ma olen jharvard, kui üritan cd - Mis on kataloogi? Oh, juur on hea näide. Nii cd, root. Keelati. Sest kui me vaatame seda pakkumist - ja jälle, sa ei pea täielikult aru. Aga need kolm kriipsu ütlevad mis ei lase muid kasutaja sellesse kataloogi. Ja kataloog juhtub kuuluma root. Nii, et ma olen jharvard ja ei üks, kes ei ole root on lubatud arvesse see kataloog, mis tähendab, et ma olen hakka loata keelatud, kui ma proovige cd ta. Nii et kui ma olen root, mul on luba teha absoluutselt kõike, kaasa arvatud kustutada olulisi faile seadmele ja hävitada kogu asi. Nii et see on halb harjumus sattuda lihtsalt rännates oma operatsioonisüsteemi administraatorina. Ma teen seda ikkagi. Küsimused? Ja ma väljumiseks root, viibida nii jharvard. OK. Rohkem asjakohaseid käske. Nii läheb tagasi meie temp, mv käsk seisab liikuda. Võite liikuda. Nüüd tahame seda nimetada b, Nüüd nimetatakse seda b. Või äkki me tahame liikuda b kuni üks kataloog. Nüüd see kataloog on tühi. Ma lähen tagasi oma kodukataloogi, ja me näeme, et b on siin, sest kodukataloogi oli üks kataloog üles kataloog, B oleks sisse Seal on ka AP. Nii AP kopeerida super osas dot, teksti. Ma võin nimetada seda s, dot, teksti. Nüüd on meil nii super osas dot, teksti ja s, dot, teksti. See toimib ka katalooge. I RF väljaanne ühes failis. Nii cp - Noh, esiteks proovime cp, tmp, tmp2. Niisiis, jättes kataloog tmp. Nii sarnane rm, vaikimisi on tööta katalooge. Ja jälle sarnane rm, vaikimisi käitumine - noh, saad seda teha kataloogid on, kriips-r ära. Nii kopeerida rekursiivselt temp Kataloog arvesse tmp2. Ja nüüd on meil nii tmp ja tmp2, ja mis ei ole, et kasulik, sest tmp oli tühi esiteks. Tmp2. Nüüd kopeeri tmp arvesse tmp2. Ja me näeme, et tmp2 ka fail , sest kataloogi ja kõik sees, mis kataloogi kopeerida. Ja mis võib olla mõnevõrra kasulik kui, ütleme te töötate on probleem määrata üks - või tegelikult, hiljem probleem kogumid veelgi olulisem, sest on terve hunnik faile ja asju. Aga sa lihtsalt tahad, osade kaupa Teiseks, sa oled nagu, eks ma olen kavatsen proovida midagi muud. Las ma lihtsalt kopeerida kogu mu pset1 Kataloog arvesse pset1 backup, et kui Ma lõpuks kruvimiseks asju, ma ei minna tagasi minu backup kataloogis. Seal on rohkem sobivaid võimalusi versioonimist varundusmeetodid koodi, kuid see on alati kiire viis lihtsalt et teil on koopia midagi et sa oled umbes muuta. Nii kaja on ka ühekordne käsu objekti sillily lihtsalt printida käsurea täpselt sa tahtsid kaja. Niisiis kordan hi. Me lihtsalt printida hi. Echo tere. Me printida tere. See tuleb kasutusele siis, kui hakanud ühendama käske. Ja veel, ei arvanud, et sa täiesti mõista seda veel, kuid see on midagi näha. Ja siis, kui sa oled Googling näited või sa mõistad, mida sa teha tahad midagi, see võib olla kasulik. Teeme, nagu näiteks nii LS, kriips, l. Nii et siin ma näen väljund LS-kriips-l. Ja ma ütlen, OK, ma tahan salvestada et faili. Kõik see väljund siia, ma tahan panna eraldi faili. Nii see väike suurem kui sümbol on see, mida me nimetame. Me suunates väljund faili. Kutsume fail blah, kuna see on mida ma pigem alati kutsuda. Nüüd me näeme, et meil on fail blah siin. Ja kui ma seda avatumaks, ma vaatan, et see on täpselt käsuväljundi et ma lihtsalt jooksin. Ja samamoodi, saate - kui see oli väljund faili, see on saada panust faili. Mis on käsk, et I - JOSEPH: Ma arvan, et saate vähem või rohkem, arvatavasti. ROB: Aga kuidas lihtsalt vähem blah? Ma ei tea. Kui sa tuled selle stsenaariumi, nagu seal psets et see on kasulik. JOSEPH: Võite toru see kaja. Pipe fail echo seda näha. ROB: See toru. JOSEPH: Vabandust. ROB: Olgu. Nii et see on väljund faili. Seda saad teksti faili ja selle üle, et programmi. Ja te näete ka seda meest. Nii et see on omamoodi mõlemad korraga. Ja tegelikult, ma kehtestada kaks uut käske lihtsalt seda kasutada. Ajalugu on mugav käsk, mis on just trükkimineku välja loetelu midagi ma olen kunagi käivitada käsurealt. Nii näeme siin kõik, et mul on kestnud terve see aeg. Palju LS. Ja veel üks kasulik käsk grep et tema eesmärk on otsida üle tekst otsin mustreid, noh, otsin iganes tahad seda otsima. Ja nii mugav kasutada siin on, ütleme tahame haarata ajalugu. Ja ma tahan, et otsida käske kus I - mis on kasulik üks otsida? JOSEPH: [kuuldamatu]? ROB: Või lähme lihtsalt otsida kõik puudutab, ükskõik millisel põhjusel. Nii et see on see, mida ta näeb. Ja sa ei pea täielikult aru. Aga mõte on siin, ajalugu annab sama tulemuse ta tegi siin kus see välja printida kogu ajalugu kõike olen kunagi joosta. Oleme siis möödaminnes, et - nii printimise asemel selle ekraani tahame edastada mis käsk grep mida otsid kõik juhtumid sõna võtta. Ja nii kasutavad seda kombinatsiooni tööriistad ajalugu ja grep, ma näen, OK, siin on kõik käsud, mida ma eales joosta, ja siin on mõnevõrra tavalisem. Oleme allosas. Ja see annab ka mulle käsk Ma lihtsalt jooksin, mis oli Sõna touch ta. Aga toru on päris kasulik asi kombineerimise mitmeid programme. Ja tegelikult, see on otsetee let minu väljund ajalugu faili blah, ja andke mulle grep abil faili blah kui see, mida ma tahan üle vaatama. Nii toru on lihtsalt otsetee need kaks käske. Jah. SPEAKER 4: [kuuldamatu]? ROB: Jah. Mis on - Oh. Olgem testida. Nii kass, koer, kala. Ma tahan, et grep. Dash, r, jälle saab olema rekursiivselt, nii et ma tahan, et laskuda alla kõik kataloogid. Tahan rekursiivselt grep kõigile - ja andke mulle ajutiselt saada see välja viis. Ignoreeri mind. OK. Nii et ma tahan ajutiselt grep eest kõik juhtumid sõna kala. Ja siin, mida ma teen on grep rekursiivselt sõna kala. Ja täht tähendab, et üle kõik need faile selles kataloogis. Ja nii see andis mulle Luba keelatud, sest see ei ole lubatud, et lugeda, et eriti fail. Aga ta leidis kala faili, test. Ma võiksin ka öelda, eriti, ma ainult soovite otsida faili bla sisse sellisel juhul ei leia midagi. Ma tahan ainult vaadata faili, test. Ta leiab kala. See on üsna kasulik käsk teada üldiselt. Leidub alternatiive grep mis peaksid olema rohkem programmeerija sõbralik, kuid ma pigem ikka taandub grep. Küsimused? OK. Kas on muid käske? Oh. Just ühekordne üks, et ma alati leiavad, et lõbus on Cal. Nii teate, kui ma olen selles armas täisekraani režiimis, mul ei ole nagu top tööriistariba või midagi. Nii cal lihtsalt annab mulle toreda kalender, mis on õige nüüd lõigata, ma eeldan. Aga toreda käsk. JOSEPH: On [kuuldamatu]. Muud käske, et sa võisid näinud hulka rõkkama ja teha. Me läheme üle neid üksikasjalikumalt hiljem. Aga kui te olete töötanud Erksa, siis peaks olema tuttav neile. ROB: Olgu. Küsimused käsurea asju? Hea küll. Nii liigume edasi mõnele C-seotud kraami. Muutujad matemaatikat. OK. Nii nagu meil oli matemaatika Scratch, võid kasutada ka matemaatikat C. Enne saame, et täielikult, nii muutujad. Pea meeles, et iga kord, kui te deklareerite muutuja nagu int x või float y, siis on anda talle kirjutad enne muutuja nimi. Nii liiki oleme näinud siiani on int, float, double, pikka, mida ma tegelikult ei tea, kas me oleme näha, et nii kaugele. On teisigi ones. Meil vaata char. Seal on lühike, mis on nagu see on vastand pikka kus see on väiksem täisarv. Oleme näinud ka string. Mis on eriline string? Miks ma ütlen, et see on mitte päris int? SPEAKER 4: See ei ole tegelikult olemas. ROB: Jah. Nii et ainus põhjus on meil string on see, kui sa ei hash sisaldab cs50.h. Ja me näeme näiteid sellest hiljem - oh, et ei saa hakkama, et hästi - kus cs50.h on midagi sarnaselt liik def, char star, string. Ja nii see on, et me ei ole isegi tean, mida char täht on veel. Aga see on selge, et me tahame string. Iga koht olete kasutanud string, siis oleks kasutanud char star, mis tegelikult on seda liiki, olemas C keeles. Aga me jõuame selleni. Oh, ja see läheb kohe tagasi. Puhas. Nii sama asi bool kus õige ja vale. See ei ole tõesti sisseehitatud kirjuta C. Selle asemel, see on lihtsalt, kas see on väärtus null? Siis me lihtsalt kaaluda see on vale. Kas see on väärtus - Noh, see on iga väärtus, mis pole null? Siis me pea, et olla tõsi. Nii et üks on tõsi, kaks on tõsi, midagi nullist on tõsi. Nii et need on need. Küsimused kuulutatakse muutujad ja muutuja tüüpi ja kõik, mis? Jah. SPEAKER 4: pikk pikk, raamat, ta ütles, et see pidi olema pikk pikk int. Aga lihtsalt pikka tööd? ROB: Nii et need tüüpi atribuudid. Nii int x. Nii saame ka öelda, unsigned int x. Võime öelda, lühike int x. Me ei saa öelda pikk pikk int x. Aga päris palju kõik need asjad, mida ma just ütles, unsigned int, lühike int, pikka int, saate vabaneda int ja see lihtsalt eeldada, mis sa mõtlesid int. Nii allkirjastamata x, mis tähendab lihtsalt - sa tead, kuidas tavaliselt koos int, saab öelda x võrdub negatiivne 3? Mis unsigned int, sa ei saa. JOSEPH: Ja jälle kaamera, Küsimus oli, mis vahet seal on vahel pikka int ja lihtsalt pikk pikk? ROB: Jah. Nii et ma peaaegu kunagi kirjutada pikka int. Ma kirjutan pikka. JOSEPH: Kas on küsimusi? ROB: OK. Nii rumal väike meeldetuletus, et see, kuidas deklareerime muutuja ja initsialiseerida muutuv ja tunnistada veel muutuja ja initsialiseerida see kõik üks samm. Nii deklaratsiooni muutuv ja vormindamise muutuja ei ole , aga võib olla samal joonel. Nii et meil on standard matemaatika ettevõtjad et sa oled harjunud - pluss, miinus, lõhe korda. Seal on ka moodul, mida me näeme. Seal ei ole vähemalt C, sisseehitatud energia astendamine katus operaator. Noh, seal on katus operaator, aga see ei ole võimu. JOSEPH: Aga see ei astendamine, Jah. ROB: Ärge kasutage katus eeldada, et see tähendab nagu kanditud või mis iganes. Nii mõned asjad meeles meelt rajoon. Seisan. Nii kuulutas initialize vastus. Nii me ütleme float vastus võrdub 1 jagatud 10. Trüki vastus kaks kohta pärast koma. Ja see on selline asi, et ma oleks inimesele printf nuputada, et Mida kuradit see%, dot, 2f tähendab? Ja see tähendab lihtsalt, noh, ignoreerides 0,2. Ja%, f, mida me kasutame printida hõljuda. 0.2 ütleb, print, mis kerkivad kaks kohta pärast koma. Nii, et see programm on viga, ja te võite olen näinud seda enne mõnes enne CS muidugi. Aga mis see on viga? SPEAKER 5: Zero. ROB: Jah. Nii et kui me ütleme, vastus on võrdne 1 jagatud 10, tahame vastus on 0,1. Aga 1 jagatud 10, 1 on täisarv, 10 on täisarv. Ja kui me teeme täisarv jagatud täisarv, me lähme tagasi saada täisarv. Niisiis 1 jagatud 10 on 0,1. , Kuna ta peab andma meile täisarv, see hakkab lihtsalt ära visata, et kümnendkohani ja öelda, et vastus on 0. Ja kui me printida vastata siin, see läheb trükkida 0,00. JOSEPH: Ja nagu teadmiseks, et tegelikult viskab ära mis pärast koma. Nii et kui sa selle asemel oli 6 jagatud 10, siis võiks arvata, et ta annaks sulle 0,6 ja siis oleks ümardada 1. Aga tegelikult, mis juhtub, kui see tüüp ülesanded on, et see langeb, mis on pärast koma. Nii 0,6 ei saanud 0. ROB: Jah. Ja me ütleme truncate eest. Nii et kui te enamus int, koma kärbitakse murdosa. Nii fix, et - seal on tegelikult kaks. Ja ma teen selle teise, sest see on palju lihtsam määrata. Nii et üks parandus on kasutada ujukite jagunemisel. Ja tõesti, sul on ainult teha üks neist sularahaga. Aga see on veidi selgem lihtsalt teha mõlemad ujukid. Nii 1,0 jagatud 10,0 on jagades mõlemad ujukid. Nii et vastus on lõppkokkuvõttes float, ja et sa ei õigesti printida 0,10 siin. Midagi, mis ei tööta nii hästi umbes, et, noh, muidugi, see oli lihtne piisavalt, et muuta 1 float muutes 1.0. Aga mis siis, kui selle asemel oli meil kaks täisarvu nagu int x võrdub 1 ja int y võrdub 10, siis me tahtsime et ei x jagatud y? Nii et see ei ole lihtne lihtsalt teha x.0 või midagi. Nii lahenduse, mis on valu. Nii valu on viis C teisendada ühest muutuja tüübist teise. Nii et siin, 1 on täisarv. Ja pannes seda float ees see on meil casting 1 sularahaga. Ja nii see on teisendada 1 kuni 1,0. Ja see konverteerib 10 kuni 10,0. Ja siis käituvad sarnaselt eelmise versiooni me lihtsalt näitas kus ootuspäraselt, saame 0,10 ja siis see välja printida, et. Ja me saame seda teha koos muutujaid, liiga. Nii võime öelda, float x jagatud float y. JOSEPH: Kas on küsimusi? ROB: Nii nagu ka regulaarne matemaatika, meil operaator järjestuse. Nii et matemaatika klassi, sa oled tõenäolisem seda kutsuda, et toiminguid. Siin ametlik termin on operaator järjestuse. Aga operaatori tähtsam või kõige ettevõtjatele, on, kui te ootaks. Nii nagu matemaatika, 2 korda 10 on läheb rühmitada tihedamalt kui see 10 jagatud 2 ja siis 2. Tehetejärjekord, ta teeb 2 korda 10, 10 jagatud 2 ja seejärel seda teen 20 pluss 5 pluss 2. Nii et see on nagu oodatud, ja mida saab kasutada sulge grupp väljendeid. Te ei saa kasutada nurksulud rühma väljendid. Jah? SPEAKER 5: Kas te tegelikult lihtsalt minna tagasi ühe teise? Kas te enamus int string? ROB: Nii C, saab enamus midagi tahad midagi tahad. See ei tähenda, et see on hea asi, mida teha. Nii et kui te enamus int kuni string, see tähendab - ja me jõuame sinna palju põhjalikumalt - JOSEPH: Palju hiljem. ROB: Ma ei taha öelda, palju hiljem, nii ma püüdsin muuta oma lause. Me võtame arvesse seda palju põhjalikumalt hiljem, kui tegelikult, kui teil on string muutuja - nii string võib olla suvaliselt pikk, kas pole? Ja me oleme öelnud, et int on neli baiti ja pikka kaheksa bytes ja float on neli baiti. Nii string, nagu int, vaid on teatud baitide ta. Ja mis on neli baiti. Aga string võib olla päris meelevaldselt pikk, kas pole? Nii tere juba, kui see on 10 märgid või mis iganes, see on juba läheb üle 4 baiti I mahub string. Ja nii, kui stringid tõesti toimib on see, et need, kus mälu string peetakse. Ja nii siin, kui ma ütlen, string x võrdub tere, sees x on lihtsalt öeldes, oh, tere maailm on salvestatud selles konkreetses kohas mällu. Nii et kui me püüame enamus täisarv string, siis me üritame tõlgendada mingi suvaline osa mälu kui string. Ja peaaegu alati puhkeb asju. JOSEPH: Aga kui see segadust sa saadame hõlmab see põhjalikumalt hiljem. ROB: Jah. See on koht, kus sa lähed sattuda suunanäitajaks. Ja see on suur patakas kahenädalase kursuse. SPEAKER 6: Kas see töötab nagu objektide teistes keeltes või mitte tõesti? ROB: Nii teistes keeltes, objektid oleks esindatud kasutades vihjeid. See ei ole sama asi, kuigi. Kõik mõtted? JOSEPH: Ei No mõtteid. ROB: OK. JOSEPH: Next. ROB: Lihtsalt minna sellega. Hea küll. Nii moodul. Nii nagu meil on pluss, miinus, jagada ja korrutada. Nii moodul on üks võite ei näinud enne. Ja see ütleb, anna mind ülejäänud. Nii 55% 10. Ülejäänud teed 55 jagatud 10 oleks 5. Nii 55% 10 on 5. Ja 3% 5 oleks 3. 8% 8 on 0. 16% 15 on 1. JOSEPH: Üks asi märkida seda, Ka see ei pruugi ootuspäraselt töötada kui te kasutate negatiivne number. Nii negatiivne 5% 4, mõned inimesed Võiks arvata, et on - Mis sa arvad negatiivne 5% 4 oleks? SPEAKER 5: One. JOSEPH: Nii mõned ütlevad üht, mõned inimesed ütlevad negatiivne. Aga mida - ROB: ma isegi ei pea ütles üks neist. JOSEPH Kaks vabandust. Mõned inimesed ütlevad, et - ROB: kolm. JOSEPH: Kolm? ROB: Negatiivne - Mis oli - negatiivne viis - JOSEPH: Kolm, kolm, kolm. Vabandust. Kuna moodul, tavaliselt siis, kui olete näinud mujal, see tähendab tavaliselt tagasi positiivne number, eks? ROB: Nii et kui me ütleme, matemaatika,% 10-ndatel, nad kipuvad tahan teile - kui me mod 10, siis me eeldame, et saada number vahemikus 0 kuni 9. Siin, see ei ole nii, et sa saavad negatiivsed arvud tagastata. JOSEPH: Nii negatiivne 5% 4 oleks negatiivne 1. ROB: Aga see on haruldane, et sa oled mod-dest negatiivsete numbrite alustada. Jäta see. JOSEPH: Jah. ROB: Meh. OK. Seega viimane asi meelde umbes ujukid on see ohtlik käitumine, kuid ujukite ei täpse esindatust. Nii läheb tagasi bytes taas, meenub et int on alati neli baiti ja float on alati neli baiti. Nii Lucase näide on päris hea. Nii mõtlevad 1 jagatud 3. Nii 0,3333333. Kui mul on ainult 32 bitti, kuidas saab I salvestada 0,33333 täpselt? Ja võib-olla, mingil põhjusel, sa ütled, Olgu, olgu, ütleme lihtsalt, et et see konkreetne 1011001, olgem lihtsalt öelda, et peaks olema 0,333333. Noh, sul on ainult piiratud arv need osad, nii et see on võimatu esindab iga ujukoma väärtus antud vaid 32 bitti. Noh, see on võimatu, et esindada iga Murdarv antud lõpmatu - hästi, sest iga hulga bitte. Niisiis küsimus siin on hästi, kui me kasutada printida kaks kohta pärast koma, tegime õigesti saada vastus 0.10. Aga all kapuuts, see on tõesti hoitakse nii lähedale kui võimalik 0,10 kui need bitti esindama. Kas see on järgmise slaidi? Või kas pole? JOSEPH: Jah, see on see. ROB: Blegh, blegh. JOSEPH: Jah, võid lihtsalt tõmmake lisades natuke. ROB: Ma lihtsalt suurendamiseks aasta viimasel sellel. Oh mu jumal, see on [kuuldamatu]. Nii et number. See on see, mis tuleb trükkida kui me joosta, et programm. Ja teate, et ei ole tõesti suur asi kui me vaid hooliv nagu 02:58 kümnendkohani. Nagu me ainult algselt trükitud 0,10, ja sellepärast me ei näinud midagi valesti. Aga kui me hakkame sattumist täpne, täpne arv, et see on esindavad, näeme, et see ei saa täpselt esindavad 0,1. Ja osa probleemist siin on nagu, Olgu, see on hea, aga noh, Esimene, mis siis, kui me püüdnud teha, vastus võrdub võrdub 0,1? Kas see läheb tagasi õige või vale? Ja nii see on raske öelda. Ma arvan, et tegelikult võib naasta tõsi. Kas see esimene - Ma ei tea. Vastus on, kui te alustate tegelevad koos ujukoma väärtuste, siis päris palju ei tohiks kasutades võrdõiguslikkuse sest see ebatäpsus. Ja kõik, mida tean, on see sajandik kümnendkohani, et ujukoma ei suutnud õigesti käsitseda. Ja nii võrdõiguslikkust lihtsalt ei suuda isegi kuigi number - kui teil on olnud kasutades täpset arvu, numbreid olnud täpselt sama. See jooksul nagu 50 arvutustel need ujuvad punkt väärtusi, viga võib ehitada üles ja üles ja üles, ja asjad lihtsalt saada vale. JOSEPH: Ja seal on tõesti kuulsad näited seda juhtub. Nagu NASA insenerid on saanud käesoleva untsu raketid plahvatada õhu pärast nad on käivitatud. Ja palju küsimusi niimoodi. Nii et jah. SPEAKER 6: Kui sa ütled 0,3 f, see kärpige ülejäänud? Või see ümardada suuremaks või väiksemaks? ROB: Kas printf selle ümber? JOSEPH: Ma arvan printf kärbitud. ROB: OK. Nii saame samamoodi minna vastupidises suund käesoleva kus antud juhul lähim see võiks olla 0,1 oli see number. Lähim see võiks olla võimalik esindada 0.2 on vastupidine suunas, 0,199999996356 või midagi. Nii et kui me läksime selles suunas asju, siis printf 0,3 f tagastab 1,99 asemel 2,00. JOSEPH: Ja ma ei ole päris kindel on, et. Võiksid kirjutada väike, väike programmi lihtsalt vaadata seda. ROB: Kuigi, me oleme kindlad, et kui oled proovinud enamus, et int ja casting int läheb põhjustada selle kärbi pärast, kui üritate enamus 1.9999999 int, saate 1. Ja siis tuleb üldjuhul kasutada ümmargune funktsioon matemaatika raamatukogu. Küsimused? OK. JOSEPH: Nii liigub tingimusi ja Loogiline väljendeid. Nii et sa oled näinud neid varem. Ja tegelikult, las ma teen kindlaks, minu Arvuti õiges formaadis siit. Space. Vabandust, me peame tegelema natuke koos tarneseisak kant. Aga jah, te olete näinud see enne Scratch. See siin on väljend mida kasutatakse tingimuslik avaldus. Nii vastata nullist suurem tahe öelda, õige või vale. Ja need on tõesti oluline, sest see võimaldab meil kasutusele võtta loogika meie kood. Nii näiteks on see programm kirjutatud Scratch, mis küsib kasutaja jaoks täisarv ja ütleb neile, kas täisarv, et nad annavad sulle oli positiivne või negatiivne arv. Ja tulemus on siin näha on esmalt välja printida avalduse mulle täisarv. Ja siis paluda neil täisarv. Ja siis kasutage tingimisi loogika üle siin, et kontrollida, kas see number tegelikult on nullist suurem või mitte. Nii et siin on meil Loogiline väljend sees tingimisi Kui avalduses. Kas on küsimusi? Kas on mingeid küsimusi selle kohta? OK. Nii et seal on midagi enamat kui lihtsalt suurem, muidugi. Võite ehitada Loogiline väljendeid kasutades kõige erinevaid asju te mõtlevad matemaatika. Nii üle. See peaks olema väiksem. Vabandust. Ja vahe. ROB: Jumal hoidku jätad ta. JOSEPH: Olgu. Niisiis suurem, väiksem, suurem kui või võrdne, väiksem kui või võrdne. Me kasutame topelt võrdne kontrollida võrdõiguslikkus, sest ühe võrdub vahendid loovutamine, eks? Jah. Ja siis saame ka ei võrdub poolt kasutades hüüumärk, võrdub. Ja see hüüumärk sümbol saab laiendada ka nii, et kui sa tahad vahetage mingit Loogiline väljend, mida saab teha. Nii et see hindab, et tõsi vaid juhul, kui vastus on vähem või võrdne nulliga. On küsimusi? OK. Nii saab ka ühendada need väljendeid kasutades loogiline ja ja loogiline Or. Nii et see on lihtsalt ja sümbol, mis peaks olema Shift, 7. Ja see on see toru sümbol, mis on ei väiketähti L. See on üks just nii üle oma Enter. Nii saate kasutada kahte neist sümboliseerima loogiline ja loogiline Or. Nii et see kuvatakse ainult õige, kui vastus on üks, kaks, kolm või neli. Ja see ainult tagasi true kui vastus on väljaspool, et mõlemal poolel. Nii see ei ole üks, kaks, kolm või neli. Ja kuidas sa kasutad et väljend - ROB: Või null või viis. JOSEPH: Zero või viis. Vabandust. Jah, jah, jah. OK. Ja siin nüüd, samamoodi kui kasutavad seda väljendit, väiksem väljend pool Kui tingimuslik avaldus, siis oleks seda kasutada ka samamoodi lihtsalt paneb selle sees Sulgudes on Kui avalduses. Nii et see printf ainult tulekahju, kui vastus on üks, kaks, kolm või neli. Küsimused kombineerimine väljendid? Nii et seal on veel tingimisi konstrukti kutsume Kui / Else. Ühesõnaga, see tähendab nüüd, OK, kui midagi ma tahtsin vaadata ei olnud tõsi, siis lähevad Else ja täidab teisi meetmeid. Nii et sel juhul, palusin kasutaja täisarv. Kas täisarv suurem kui null? Jah? Siis nad hakkasid positiivne number. Kui ei, siis peab see olema olnud negatiivne või null. Nii et sa hakkasid negatiivne arv või sellisel juhul null. Jah. Või null. Ja siis on meil ka Kui / Else, Kui ja mujal. Nii, et see võimaldab meil täita jada asju ainult siis, kui esimene neist ei suuda. Nii et kui nüüd me teeme viimane valite nulli. Nii et kui nad ei korjatud positiivset ega negatiivne arv, siis peavad nad valinud nulli. Nii see lihtsalt läheb alla kett niimoodi. Nii näiteks, kuidas Kui on erinev - Kui / Else erineb lihtsalt jada infovälja mahu. Ja see on üldine küsimus, mis inimesed küsivad on hästi, kui saad nagu 95 CS50 Mida siis see programm teile öelda? SPEAKER 5: Said A. JOSEPH: Jah. Sul on iga üks neist õige. Sul on sul B, siis sain C ja D, eks? Nii et kõik need saavad hinnata selleks. Niisiis, kui 95 on suurem kui 90, see Samuti on suurem kui 80, see on ka suurem kui 70, ja see Samuti on suurem kui 60. Nii et sul on kõik need klassid. Ja ma eeldan, et sa oleksid tahan ainult A. Kuidas määrata, mis on asendada kellel veel / Kui 's. Nii et see stsenaarium, ta näeb, et 95 on suurem kui 90, ja siis see ei hinnata ülejäänud avaldused. Kõik küsimused selle kohta? Nii et seal on veel tingimisi sorti struktuur, mis meil siin on, mida me kutsuvad lüliti avaldusega. Nii, et see võimaldab teil põhimõtteliselt kontrollima Mis väärtus number paned lülitisse märkuse. Nii et see stsenaarium, me üleminek n, ja me ütleme, oh, kui n on üks, siis printida et avalduses. Ja siis murda, mis tähendab, exit välja lüliti avaldusega. Kui see ei olnud üks, siis, noh, lihtsalt lõpuks vaadata kõik need juhud. Ja nii see kontrollib, kas see on üks, kaks või kolm, ja ta prindib vastavalt. Ja mida see vaikimisi märksõna siin vahend on, kui nad ei sisestanud ühtegi neist, siis ütle kehtetu. Ütleme küsin n ja kasutaja annab mulle neli. Noh, see sobib ükski neist juhtudest, nii et see prinditakse välja, millised on default osa. Jah, küsimus? SPEAKER 5: Kas te kasutate Loogiline väljendite asemel üks, kaks või kolm? JOSEPH: Nii et küsimus on, kas sa kasutad Loogiline väljendeid asemel üks, kaks, kolm? Ja C, ma usun, et teil ei saa seda teha. Aga teistes keeltes, mida võiks kogevad lõpus semester nagu JavaScript, saate. Noh, siis oleks võimalik arvutada esimese et raha ja siis seda kasutada lüliti avaldusega. Jah? ROB: Nii osa kasuks lüliti avaldused on mõelda, kui sa tegid seda kui Kui / Else, nii nagu siis, kui n on võrdne valemites üht või mis iganes. Else / Kui n on võrdne kaks, mis iganes. Else / Kui n on võrdne kolmega. Niisiis, kuidas programm käivitub see oleks järjest langema, et nimekiri ja vaadake, N on? Nope. Kas n kaks? Nope. Kas n kolm? Jah. Tehke seda. Arvestades lüliti avaldused, see on tegelikult oskab koostada seda väga kiiresti. Ja niipea, kui ta ütleb, et lüliti, see ütleb, eks, n on kaks, ma olen kohe läheb hüpata kus Ma peaks alustama täitev. Ma ei kavatse kõigepealt kontrollida, on n üks, on N kaks? See võib kohe alustada teed mida see peaks tegema. Ja sellepärast, et ta ei saa võtma Loogiline tingimused. Või muidu oleks ta pidanud tegema järjestikune, nagu kõik korras, on n nullist suurem? Else on n on suurem kui 10 või mis iganes. JOSEPH: Sel juhul, kui sa kasutada Kui / Else If, ​​siis lüliti oleks käivitada umbes kolm korda kiiremini Kui / Else If. Saame korraldada lüliti sellisel nii, et me ei riku pärast iga juhtudel. Nii et kui ma eraldamine numbrid, et me valida ühte ja kaks on mitte suurtes kogustes ja kolmega suur arv. Nii sel juhul, kui n on üks või kaks, siis tabab juhul ja siis läbi kukkuda, kuna ei ole vaheaega. Ja siis lõpuks siin. Nii et kui me valime ühe, siis tehke printf ja seejärel murda, nii et ükski see täidetakse. Ja muidugi, kui nad sisenevad kolmes või midagi muud, siis jätke need ja mine sinna, ja see täidab selle asemel vastav rida. Kas on mingeid küsimusi selle kohta? Jah? SPEAKER 4: Kas sa saad viga, kui sa oli vaheaja järel kui üks, kuid see ei ole midagi, et seda teha? JOSEPH: Nii et küsimus on kas sa saad viga, kui teil on vaheaja järel Kui üks, kuid seal on midagi teha? Ja vastus on ei. Sa tegelikult ei saa viga. Jah, mm hmm. Nii nagu omamoodi väike muutus siin, Ma panen printf siin. Ups. Mis sellest printida, kui Panin ühe sisendina? Jah. See ütleb teile, see ei võta suur arv kaks korda, eks? Sest see oleks tabanud, et esimesel juhul ta ei murra katki ja see langeks läbi teise puhul. Kõik küsimused selle kohta? ROB: Kas teil on teine ​​küsimus? JOSEPH: OK, lahe. Hea küll. Nii et on midagi muud me nimetame ternaarse operaator, mis on põhimõtteliselt asendusliikme süntaksit teed Kui ja siis teine. Ja see võimaldab teil teha kõik ühes reas. Nii et selle konkreetse programmi Ma palun kasutaja n. Ja kui n on suurem kui 100, ma ütlen neid nad hakkasid kõrge number. Else ma ütlen neile, et nad korjatakse vähe. Nii et me saame kasutada seda tõesti pikk süntaks, string, S, ja seejärel vaadata, kas n on suurem kui 100 ja määrata seda vastavalt. Aga me saame teha seda palju sisukamaid kasutades seda ternaarse operaator süntaks mis hõlmab küsimus mark ja jämesooles. Nii küsimärk on sisuliselt küsib küsimuse, kas pole? ROB: Võib-olla seda suurendada. JOSEPH: Jah. Hea mõte. Nii et see on ternaarse operaator. Ma kõigepealt küsida, on n suurem kui 100? Kui on, siis ma täitma esimese osa enne jämesooles. Kui see ei ole, siis ma täitma teine ​​osa pärast jämesooles. Seega, kui n on suurem kui 100, siis ta korjab kõrge ja seab et arvesse string s. Kui n on väiksem kui 100, siis korjab madal ja siis paneb see arvesse string s. Nii et siis kondenseerub see suur rahn ette võtta lihtsalt, et üks liin. SPEAKER 5: Kas see populaarne? JOSEPH: Jah, see on üsna populaarne asju, kus sisuliselt soovite ei loovutamine põhineb mingi tingimus. Ja sel juhul, püüdsime väärtustada string s. See ei ole nii - Ma arvan, et ma tõesti ei eelistaks muudel juhtudel. Aga see on eriti kasulik Selle ülesanne. ROB: See on üsna levinud muster kui teil on muutuja, mis sa lähed öelda, kui midagi, seada Selle muutuja üks väärtus; teine, määrata Selle muutuja teine ​​väärtus. Ja see on stsenaarium kus kasutada kolmekomponentse. JOSEPH: Ja sa kokkuhoid palju ridu, eks? Ja see lihtsalt muudab oma koodi väidetavalt natuke paremini arusaadavaks. Jah, küsimus? SPEAKER 6: For kolmekomponentse võiks minna, string s võrdsete s, küsimärk? Ja siis võib olla, ütleme, viis erinevat võimalust. Ja sõltuvalt sellest, milline arv n aastal, oleks valida üks neist? JOSEPH: Seega on küsimus selles, kas on olemas omamoodi süntaks, kus saab teha string s on n ja siis on rohkem kui kaks valikute pärast, et küsimärk? Ja lihtne vastus on ei, siis ei ole tõesti hea võimalus seda teha, välja arvatud juhul, soovite pesa mitu ternaarse operaatorite sees üksteisest. Sa võid seda teha nagu n on suurem kui 100, küsimärk, ja siis teine kolmekomponendilist operaator, n on suurem kui 50, küsimärk, ning pesa nii. Aga et stsenaarium, oma kood on saada omamoodi loetamatu ja räpane, ja see võib olla parem minge Kui / Else avaldus sel hetkel. ROB: Ja ka nagu pool tähele, PHP valesti rakendab ternaarse operaator, nii et nested ternaries isegi ei tööta nii nagu peab. JOSEPH: Jah. Nii see läheb natuke segane, eriti kui sa lähed erinevatesse keeltesse. ROB: See on segane piisavalt, et keeled on valesti midagi. JOSEPH: Nii tõesti, lihtsalt selgitada, ei kõik teame, mida see % S teeb siin? Kõik küsimused selle kohta? Ma arvan, et lihtsalt kaamera,% s Põhimõtteliselt võimaldab meil panna kohatäide jaoks string. Ja siis lõpuks, me täpsustada, et muutuja tahame panna selle koha omaniku s. Nii et põhimõtteliselt võtab s ja see paneb ta siin. Ja siis see välja printida, siis valisin kõrge või valisid madal number. OK. Nii silmuseid võimaldab teil sooritada asjad ringjate liigutustega, eks? Sul võib olla tekkinud sellest Scratch kujul Forever ring või Korda, kuni või Korda eriti arv kordi. Miks see nii on meie jaoks hea? Noh, C, oletame, meil on see laul rakendatakse Scratch et laulab, on see laul et kunagi lõpeb. See lihtsalt läheb edasi ja edasi ja igavesti ja igavesti. Noh, te ei saa tõesti teha programm millel on lõpmatu arv printf avaldusi, eks? Nii selles stsenaarium, ühesuunaline et sa võiksid teha seda tööd ja et muuta see printida igavesti on asemel kasutada samas silmus. Nii samas silmus täidab mis kehas kaks traksid, mis kuulub ta selle põhjal, mida tingimus. Nii et selles konkreetses näites enne, kui me tahame prindi see igavesti, mida võiks me siis teeme? Noh, muidugi, eks? Seega selline ühendab mõte Mõnede Boole'i ​​avaldis koos silmus. Ja saime teada Loogiline väljendeid varem. Nii et kui tingimus sees et kuigi on tõsi, see loop täidab edasi ja edasi ja edasi. Ja sellisel juhul kui me selle esitama tõsi, see paneb lõpmatu loop mis prindib laulu ja ja kui me soovitud enne ilma võttes programm, millel on lõpmatu arvu printf avaldusi, mis on ei ole võimalik. Nii enam compellingly, kuigi saate seda muutuv ja seisukorras. Ütleme tahame korrata fraas, täiesti segane, 10 korda. Niisiis, mida saate teha Kuigi silmuse saab esimene initsialiseerida counter Muutuva väljaspool Kuigi silmuse 10. Ja siis põhimõtteliselt iga kord, kui minna kaudu ajal loop välja printida avaldus ja siis väheneb counter muutuja enne lõppu, mingil hetkel, kui me lahutame ma piisavalt korda, 1-st I piisavalt korda - ja lihtsalt selgitada, ma miinus miinus tähendab, et mul on võrdne I miinus 1. See põhimõtteliselt tuua I alla kus, kui ma tabanud null, see tingimus ei ole enam õige ja nii et see väljub läbi silmuse. Seega täiesti segane ainult prindib 10 korda. Küsimusi Kuigi loop? OK. Seega on nii, et me ei tee seda, mida me tegid rohkem arusaadaval viisil koos mida me nimetame For loop. Nii For loop koosneb käivitamise, seisukorra ja uuendus, nagu meil oli enne Selles samas silmus. Võtame vaata. Sel ajal loop oli meil käivitamine, siis oli meil tingimusel, et me kontrollida. Ja siis oli meil uuendus samm ülaosas. Mis For loop, see põhimõtteliselt võtab need kolm asja ja kondenseerub see alla ühte rida. Nii et esimene asi, et ta seda teeb For loop on ettekanne. Ja siis sa semikoolon ja seejärel sa tingimus, mis on I nullist suurem läheb sinna, ja siis uuendus samm. Nii et see läheb läbi otsani loop keha. Nii et need kaks programmid on sisuliselt samaväärsed. Kas on küsimusi? Mis on üks erinevus Nende kahe? Kas keegi punkti välja? See võib olla natuke peenem. See on lihtsalt väga väike vahe. Jah? SPEAKER 5: Sa ei oleks võimalik kasutada Ma muutuja väljaspool For loop [Kuuldamatu]? JOSEPH: Täpselt. Nii et see on midagi, mida me jõuame hiljem kutsuti muutuja ulatust. Aga põhimõtteliselt on see int i elu Väljaspool seda Kuigi silmus. Nii et kui see samas silmus tehakse täidesaatev, ma saaks kasutada I hiljem in programmi. Arvestades seda For loop, see int I on rivist sees selle jaoks silmus. Ja kuna see asub käesoleva osa Euroopa For loop, mis algab juures sulgudes ja lõpeb lokkis traksidega seal. Midagi, mis on kuulutatud sees siin ei saa kasutada väljaspool. Nii et kui ma üritan kasutada I väljaspool, siis see öelge, deklareerimata sümbol. Ja põhiliselt, ma ei oleks võimalik seda kasutada. ROB: Ja noh, 10 aastat tagasi, sõna otseses mõttes igal juhul lokkis traksid on mida kasutatakse, et määrata ulatus erinev. Nii et seal, int i võrdub 10 deklareeritakse sees selle komplekt lokkis traksid. Ja nii siis nii kaua, kui sa püüad kasutada I enne seda lokkis traksidega, kõik on korras. Sa võid näha kui kirjutad teha, siis vaata kriips-kriips-std, võrdne C99. Nii et on uuem versioon C, mis GCC on rakendanud, et annab ka Selle otsetee. Nii et see, mida kasutatakse ei lubata C. Ja saate aru, miks, sest see int Ma ei kuulu käesoleva lokkis traksidega kuid see on ikka lugeda reguleerimisalasse need lokkis traksid. Aga see on väga mugav asi, ja nii see on hea laiendus. JOSEPH: Kas on küsimusi? OK. Mis on kasulikum on see, et mõnikord tahad omamoodi dünaamilisuse oma loop, eks? Sa ei taha lihtsalt pruugi printida täiesti segane kogu aeg, teil loendatavaid alla 10 või midagi. Ja nii võid kasutada counter muutuja sees, et loop samuti. Ja sel juhul see programm lihtsalt loeb ette 10 kogu tee alla. Ja mida see ei prindi? See ei prindi null, õige, sest kui - Jah, see ka ei prindi 11. Nii see ei prindi null, sest kui Mul on null, pea meeles, hindab ta seisukord enne läheb see täita silmus keha. Ja kui ma on null, see on vale, nii see ei prindi välja lugedes ette null, see lihtsalt printida loendamise alla 10 kõik viis kuni 1. Kui me tegelikult tahtsin seda trükkida null, siis me paneks võrdusmärki pärast seda üle kirjutama. OK. Nii et üks võimalus seda teha sisendi valideerimine, mis on see, kui te küsite kasutaja teha midagi, sa tahad teha kindel, et nad järgige juhiseid, on kasutada Kuigi silmus, eks? Nii et sel juhul, ma palun positiivse number ja siis ma olen ootab sisend. Ja siis ma vaatasin Kuigi sisend väiksem kui null, hoida paludes neil. Nii kaua kui nad annavad mulle arvu mis ei ole positiivne, hoida paludes, hoida küsib, hoida paludes. Aga mis on omamoodi imelik on? Või mis ei tundu optimaalne umbes Selle struktuur on siin? Keegi? Jah? SPEAKER 6: Sa korrates juhendamine kaks korda. JOSEPH: Õigus. Nii et meil on kaks printf avaldusi siin, eks? Seega on nii, et me võiksime saada selle lihtsalt alla üks, mis muudaks meie kood lihtsam lugeda ja natuke rohkem puhas. Ja siis me ei pea on saada kaks korda samuti. Ja üks viis, kuidas saate seda teha on kasutades Do-Kuigi silmus. Ja Do-Kuigi silmus on põhimõtteliselt eri kujul samas silmus kus kõik, mis looksulg saab rakenduma vähemalt üks kord. Nii et siin ma tunnistada, int sisend, väljaspool esimese. Ja siis ma lihtsalt öelda, kas see juhendamine kuigi sisend on väiksem kui null. Nii see tabab kõigepealt tegema. Ta on alati täita seda vähemalt üks kord, nii et see on alati paluda kasutajal sisend vähemalt üks kord. Ja siis ta hindab, et sisestada, ja see läheb ringi. Jah, küsimus? SPEAKER 6: Kas on võimalik seda teha [Kuuldamatu] tüübid, nagu siis, kui sa ütled, GetString ja keegi [kuuldamatu] kas on võimalik, et [kuuldamatu] JOSEPH: Seega on küsimus selles, kas on olemas kuidas teha sisendi valideerimine, kui kasutaja ei pane õiges tüüpi muutuja? Nii et kui me küsime int ja nad meile string asemel. Ja funktsioone, et me ellu teid, GetInt, getString kõigis neid ülesandeid, mida nad tegelikult juba seda sorti baasmudel sisend valideerimise kapoti alla. Nii et kui te kasutate neid funktsioone, mis me andsin sulle, sa tõesti ei pea. Aga kui soovite, et uurida täpsemalt, kuidas tegelikult võite seda teha, võite vaadata kapoti all on faili I/O-- ei esita, standard I / O funktsioone nagu lugemine standard sisend ja standardväljundisse. Ja saad parema tunde kuidas te võite seda teha. ROB: Üks küsimus on siiski konkreetselt näitega sa ütles, ootate string ja ma sisestan int. Kuidas te vahet vahel tahtlikult tahavad string 123 versus tahavad int 123? Nii string, see on päris palju seal ei ole kinnitamine, see on lihtsalt mis iganes nad Sisestatud siis tõlgendama kui string. Int on lihtsam, sest ükskõik input võtate kasutaja, siis on alati võttes string. Ja nii, et string saab siis kontrollida, on kõik need tegelikult numbriga? JOSEPH: OK. Küsimusi Do-Kuigi silmus? ROB: Oh, ja see on ka - läheb tagasi ulatus mõnevõrra levinud viga üritab kasutada mõningaid kohalikke muutuja selles Do-Kuigi loop sees seda tingimust. Ja tegelikult, kui me lihtsalt lahti seda ja ütles, int sisend võrdub GetInt, siis kompilaator karju meid, sest sisend ei eksisteeri väljaspool ulatust need lokkis traksid. JOSEPH: Ja see on põhjus, miks me seda vaja rivisse. OK. Nii saab ka välja murda loop alguses, kui soovite. Seega see on teistmoodi rakendamisel, mida me lihtsalt ellu. Ja selle asemel jääk Sulgudes, me kasutame Kui avaldus sees keha on Do-Kuigi silmus. Ja põhimõtteliselt, kui sisend on lõpuks suurem kui null, siis me murda välja silmus. Ja nii me läheme kõik siia alla. Ja te näete, et see oleks ilmselt eelistatakse käesolevas stsenaarium, sest see on natuke puhtam ja natuke natuke lihtsam lugeda. Arvestades seda, siis omamoodi on eraldi reale ta. See on natuke koledam, Ma arvan, et mõnes mõttes. Jah, küsimus? SPEAKER 4: Kas murda ainult saada sa välja ühe komplekti hambaklambreid? JOSEPH: Õigus. Seega on küsimus selles murdub vaid sulle välja ühe loop? Ja vastus on jah. Nii et kui teil on hakanud pesitsema jaoks silmuseid jaoks Näiteks kui mul on int I võrdub 0 kuni 10 ja siis int J võrdub 0 kuni 10, kui ma murda sisemine loop, siis ma veel minna Lisa välimise kontuuri. Seega hoian täitmisel operatsioonid väljaspool. Kõik küsimused selle kohta? Jah? SPEAKER 5: Aga murda ainult funktsioone lokkis traksid, mitte teiste avaldused? [Kuuldamatu] JOSEPH: Seega on küsimus selles murdub ainult funktsiooni silmuseid erinevalt muud avaldused nagu Kui? Ja jah, see on nii, sest sa murrad läbi silmuse, paremale, mõnes mõttes. ROB: Enamikul juhtudel on see see on omamoodi Kui midagi, siis murda. Nii et sa ei pea murda taotleda Kui seda ümbriste ümber. Samuti ei ole see palju tsüklina kuid pea meeles, et lülitid on ka välja murdnud puhkepause. Nägime puruneb kasutata lülitid enne. JOSEPH: Ja te võite kasutada ka neid aastal Kuigi silmad ja For silmuseid. Kas on küsimusi? OK. Nii et järgmine up on funktsioone. Nii et sa oleks võinud kasutada ühte neist BYOB plokkide oma Scratch projekti. Ja see põhimõtteliselt võimaldab teil määrata komplekt juhised, mida tuleb järgida. Ja mida ma mõtlen, et on mõtleme tagasi matemaatika, paremale, algebra. Sul on, mida me nimetame x funktsioon mõned muutuja, ja ütleme, et see funktsioon f kohal x võrdub x pluss 5. Nii et sa ei mõtle, f kohal x kui see must kast, mis võtab 15 ja seejärel toodab 20. Nii üldisemalt funktsioon midagi, mis võtab teatud sisendite ja Seejärel tekib mõned väljundid. Ja miks funktsioonid hea? Nad on hea mitmel põhjusel. Nii ei keegi taha võtta torkehaav , mida organisatsioon tähendab? Seoses miks funktsioonid on kasulik? Jah? SPEAKER 4: Ta teeb oma kood loetavamaks. JOSEPH: Õigus. Nii et üks asi, mida ei ta teeb koodi loetavamaks, eks? Selle asemel, nagu int x võrdub x korda x korda x, saan kuubik x, mis on loetav ja rohkem arusaadav lugejale. Organisatsioon on ka nende lahku oma kood juhitavaks portsjonid, nii et selle asemel, et püüda rakendada seda kõike ühes pikas jagu peamiste saate omamoodi jagada see üles sisse nagu OK, kirjutame funktsiooni kuubik midagi, kirjutame toimida ruutu midagi. Nii saate jagada see üles võetud väike, vähe osi, mida saab lahendada erinevalt üritab võidelda suur probleem korraga. ROB: Või isegi pisikesed osad, mis sina ja partner saab lahendada. JOSEPH: Jah. ROB: Selle asemel, et mõlemad sa üritad implantaadi üks funktsioneerima samaaegselt. JOSEPH lihtsustamine. Igaüks taha võtta vist? Jah? SPEAKER 5: rohkem kordusi. JOSEPH: Õigus. Nii et üks asi, mida saate teha koos lihtsustamist, et see on omamoodi edasi samamoodi nagu korduskasutatavust on see, et kui ma kirjutan kuubik funktsioon, ma ei lihtsalt kasutada seda üle ja üle ja üle jälle minu programmi kirjutamise asemel x korda x korda x üle ja ikka ja jälle. Ja lihtsustamine siin ka lihtsalt tähendab, et see muudab koodi sorti lihtsam siluda kui jagate see üles võetud ülesanded. Sest siis saab lokaliseerida, kus oma probleeme omamoodi on. Kas on küsimusi? Nii teine ​​mõte on abstraktsioon, eks? See must kast. Nagu sa tead, mida GetInt ei saada sisend kasutaja? Me ei ole tõesti sulle, eks? Kõik me oleme teile rääkinud on GetInt ei täpselt, mida ta ütleb, et ta teeb. Nii et isegi kui me ei saa öelda, kui see töötab, siis ikka tean. Nii et sel juhul on see Neljakordne funktsioon, mis teeb erinevaid asju sisend toota toodangut. Ja saab neljakordne arv korrutades neli. Või saab see, mida me nimetame natuke nihutada see kahega. Ja me katame selle natuke hiljem. Ja ei ole vaja teada, kuidas see funktsiooni tegelikult töötab nii kaua kui see töötab nagu. Nii kapoti alla, ma võiks olla nagu, tagasi sisend korda kaheksa jagatud kahte. Ja sa ei tea, eks? Kõik, mida vaja teada on, see, mida ta ütleb. Nii et kasulik asi umbes võtmiseks. Ja teine ​​asi on see omamoodi idee ning laikude oma koodi ühele eriti jagu. Nii et kui sul on probleem, siis ärge pean kogu oma koodi üritab määrata, kus probleem oli. Nii selles asjas I rakendatud kuup valesti. Ma arvasin, et kuubi korrutades kolmekordselt. Kõnealusel juhul nii, et see on üks programm et lihtsalt on korrutades kolm kõikjal. Ja on veel üks programm, mis on Faktooritava kuubik viidud funktsioon. Ja nüüd, kui ma tahan määrata minu viga siin, ma pean määrata iga rida Koodi selles programmis. Arvestades teisest küljest, kui ma kasutan funktsioon, ma ainult vaja vahetada mis viga oli ühes kohas. Nii arvuti teadust, me kutsuvad sisendid ja väljundid. Sisendid kutsutakse parameetrite või argumendid ja väljundid on nn tagasi väärtusi. Ja me näeme, kuidas see aitab meil omamoodi ning määratleda funktsiooni teise. Nii et see on funktsiooni definitsioon jaoks keeramisel. Nii et see võtab sisend ja seejärel ta naaseb, et number korda endale kolm korda. Teeme jaotada see. Nii et meil on funktsioon header, mis seisneb põhiliselt kolme asja. Nii et meil on parameetrid, mis on, nagu ma enne ütlesin, sisestavate seda funktsiooni. Ja siis anname funktsiooni nimi. Sellisel juhul nimetatakse seda kuup. Ja siis me täpsustada, mis tüüpi tagastamise väärtus on. Nii selles asjas minu kuubifunktsiooni võtab täisarv ja samuti tagastab täisarvu. Nii et kui ma läbima kaks, kaks on täisarv, tagastab kaheksa mulle, mis on täisarv. Nii tagasi tüübinime parameetrid. Küsimused, mis? Ja siis tagastatav väärtus on tegelikult määratletud lõpus öelda tagasipöördumist ning pöördub iganes sisaldab tagastatav väärtus. Nii et sel juhul, kui me paneme kõik koos funktsioon võtab parameetreid, seda nimetatakse midagi, ja tagastab midagi, mis on liigi et me ütleme, et see pidi olema. Kas on küsimusi? Niisiis, kuidas me kasutame funktsiooni? Noh, me kirjutame funktsiooni ja siis me kasutame seda meie programm, eks? Nii et ma kutsusin seda kuup, ja siis saan kasutada kuubik. Aga mis on oluline märkida, on see, et selleks küsimustes. Kui mul on kuup allpool peamine, see on jooksegi kuubikuteks. Ja selles punktis, et miski nimega kuup programmis, ja see on lihtsalt saab olema nagu, mul on ei tea, mis kuup. Nii ta ütleb sulle, kaudne deklaratsiooni funktsioon. See on viga, mis näitab üles. Ja nii sellisel juhul, kuup allpool Peamine, et ta ei kavatse midagi teada. SPEAKER 5: Nii peamine on tavaliselt Viimase ülesanne määratleda? JOSEPH: Seega on küsimus selles, on peamine tavaliselt viimane asi, mida soovite määratleda? Ja see ei ole. See on sellepärast, et me tavaliselt nagu Main et olla tipus, eks? Sest see on esimene asi, mida tahad programmeerija avamist programmi näha. Ja kuidas me selle küsimuse lahendamiseks on meil tahad peamine et olla tipus, kuid ülesandeid, mida me tahame, me tahame, et nad olema alla peamised veel võimalik kasutada neid sees peamine? Noh, mida me kasutame, mida me nimetame funktsiooni prototüüp. Mis siis funktsiooni prototüüp põhiliselt on on see esimene võtab mida allkiri või funktsiooni kaudu mida me tahame rakendada alla siin, ja me paneme seda top programmi. Nii et kui me ütleme, et, noh, hiljem meie programmi, me teha lubadus rakendada seda funktsiooni nimetatakse int kuubik, mis võtab täisarv sisend. Nüüd, kuna see on eelkõige peamine, Peamine, et see saab öelda, oh, noh, programmi hiljem, et see saab olema seal nii et ma ei maini, nii et ma lihtsalt lase tal minna läbi nüüd. Ja siis allosas, me ellu kuubik. Ja siis põhiline on lihtsalt öelda, Noh, see on mingisugune link Nende kahe sümboleid koos. Ja me katame mida see tähendab hiljem. Ja nii ta teab, et see on kuubifunktsiooni et ta peaks kasutama. ROB: [kuuldamatu] kohta, kes tahavad Peamine allosas või top, ma olen näinud nii. On asju, mida lihtsalt meeldib panna peamised allosas. Aga kui projekt muutub eriti suur, tavaliselt peamised on esitama kõik oma. Ja sel hetkel, nagu int kuubik line oleks - sees stdio.h on hunnik Ridade just niimoodi int kuubik int sisend line. Ja nii need prototüübid on asju, mida kipuvad panna header faili, kell mis hetkel, see ei ole oluline. Noh, see ei ole oluline. Need alati minna ülaosas. Ja kui peamine on mitte faili kõigi oma, sa ei pea muretsema paneb konkreetset funktsiooni prototüüpe faili. JOSEPH: Ja me jõuame selle veidi Natuke hiljem kui Rob hakkab rääkima kompileerimine. Ja seal on ka vahe vahel parameeter ja argument. Ja parameeter on just see, mida Me kutsume neid sisendeid kui me defineerime funktsiooni. Ja me kutsume seda argument, kui me tegelikult läbida see funktsioon. Nii sel juhul on see parameeter nagu me varem öelnud. Ja kui me tegelikult seda kasutada seal, kuubik x, siis x on iseenesest mida me nimetame argument Lisa funktsioon kuubik. ROB: Nii parameeter argumendid on - on seda vahet, väga segi vaheldumisi. Sel hetkel, mulle, see on nagu üks need sõnad, et kui ma seda näen läbi metsik, ma ei saa aidata, kuid kohe kas nad kasutavad seda kehtiv kontekstis, kuna Erinevus on peen piisavalt, et lihtsalt kõik kipub - Ma peaaegu alati öelda argument olenemata sellest, mida ma mõtlen. JOSEPH: ja funktsioonid on ka kasulik mida me nimetame kõrvaltoimeid. Seega funktsioon võib võtta sisendeid ja ta võib ka mingit väljundit. Nii et sel juhul, ma olen määratledes alamprogrammi et puudub tagastatav väärtus. Ja selleks, et täpsustada, et me kasutame mida me nimetame void siin. Ja nii kõrvalmõjuks see funktsioon on see, et lihtsalt trükib stuff välja saada. See ei ole tegelikult võtta sisendit, ja see ei ole tegelikult tooda väljundit. Kuid see võib olla kasulik mõttes kui soovite näiteks silumise midagi oma programmi, kui soovite kirjutada väike alamprogrammi et prindib, oletame, sisu mälu või midagi. Ja nii need kõrvaltoimed on mõnikord kasulik väljaspool konteksti lihtsalt meeldib sisendid ja väljundid. Kas on küsimusi? Ja lõpetama selle turusegmendi, Mida see programm teeb? Ma annan teile kutid paar sekundit see läbi lugeda. Kell väga algtasemel, mida me tahame öelda, et ta vahetab x ja y, eks? Niisiis, kuidas paljud teist tegelikult arvavad see vahetada x ja y? Tõsta käsi. Mitte keegi. OK. Kes arvab, et ta teeb ei vaheta x ja y? Ja summa, mis oli mitte kogu tuba. Nii mõned inimesed ei tea. OK. See on mõistlik. Lähme läbi, mis juhtub siis, kui te tegelikult Kõnefunktsioonid esimene Et sellele küsimusele vastata. Nii et see on see, mida mälu omamoodi välja näeb. See on omamoodi nagu lihtsustatud mudel mida mälu välja näeb sa jooksed programm. Nii et seal on midagi, mida nimetatakse stack alla ja midagi, mida nimetatakse hunnik. Ja need kasvada poole keset mälu. Nii et sel juhul, kui helistate funktsiooni, saab panna virna. Ja siis iganes sisalduv funktsioon jääb see, mida me nimetame seda funktsiooni freimi. Ja nii, et saada kena visualiseerimine Selle let's - näiteks oli meil Programmi peamised varem. Ja sees peamine, me kutsusime kuubik. Seega peamine kõigepealt minna korstna kujundamisse, sest see on esimene funktsioon seda nimetatakse. Ja siis kui kuubik nimetatakse sees peamine, ta saab panna peal peamised sees mälu. Niisiis, mida märkad on see, et kuubik on oma parameetrid ja selle enda kohalikega. Nii et kui te tegelikult läbida midagi Funktsiooni parameetrid, et see saab koopiad, mis oli aastal vastu võetud peamistest. Ja omamoodi seletada seda, olgem kõndida läbi programmi. Nii et meil on virnas, see on lihtsalt virna osa. Ja mida me teeme, on meie esimene initsialiseerida x ja y on üks ja kaks. Nii et meil on need kastikesed. Nad istuvad peamine on virnas raami pinu. Nad sisaldavad üks kuni kaks. Nüüd kutsume swap. Mis juhtub on see võtame x ja y sisse swap, ja swap loob oma koopiad Nende muutujate kasutada sees selle freimi. Nüüd seal oleme, mis sisaldab väärtust, mis x oli, ja b, mis sisaldab väärtust, mis y oli. Niisiis üks, kaks. Ja sa märkad, et see on eraldi alates x ja y sees peamine. Nii et me nüüd luua ajutine muutuja, mis sisaldab. Seame võrdne b'ga, nii et see muutuste üks kuni kaks. Ja siis seadsime b võrdub temp, mis on üks. Ja siis nüüd me väljuda Selle funktsiooni. Kui väljuda funktsiooni, freimi saab hüppasid välja pinu. Me nimetame seda vajutada. Surute freimi peale virna ja sa pop kui ära pinu. Ja mis juhtub, on kõik, mis oli, et freimi omamoodi lihtsalt läheb põlema. Ja nii, et ei ole enam olemas. Aga mida näeme? Me tegelikult ei muutunud väärtused x ja y, mis? Nii et need jäid kohalikud peamine. Ja lastes asju swap, me tegelikult ei muutunud need väärtused. Ja mida me nimetame seda? Me nimetame seda möödaminnes väärtusest. Nii C, kui te kaotate asju funktsioone, siis läheb neile raha ja teeb koopia neid funktsiooni kasutada. Ja me õppida midagi, mida nimetatakse kulgeb viitega hiljem, kuid see on Nii saate seda probleemi lahendada. Kuid me ei muretse et alles hiljem. ROB: Ja tegelikult, et termin, möödaminnes viidates, et C ei ole isegi mööduvaid viitamine. C eranditult on möödumas väärtus. Ükskõik, mida sa teed, sa oled alati kulgeb koopia midagi. See on lihtsalt, et nagu ma nagu mainitud et enne näidikumehhanism ja et string on tõesti ainult neli baidid osutades kuskil mälus. Noh, kui mul on see string ja see on mulle, et on koht, kus string - Noh, kui mul on see osuti sellele koht mälus, siis ma ei liigu koopia, et kursor funktsioon ja et funktsioon ikka teab, kus on Mälu on. Nii mõlemad viidad suunaga sama koht mällu ja see, kuidas me saama muuta asju kaugemale praegune freimi. JOSEPH: Kas sa tahad teha koostamisel? ROB: Ei, see on 5:30. JOSEPH: OK. See on 05:30. OK. Nii me katta koostamise vist sisse järgmises osas, või eesel müük toob sel hetkel. Ja - ROB: Kas on küsimusi? JOSEPH: Kas on küsimusi? Jah? SPEAKER 5: Kasutades strings CS50 kõik funktsioone, mida tahame kasutada need, mis oleks nagu C funktsioone. CS50 ei läinud ja tehtud täiendavaid. ROB: Õige. Kõiki C nagu [kuuldamatu], siis oleks kasutada neid meie keelt. JOSEPH: Ja viimane asi, mida ma tahan mainida, et meil on stiili juhend Selle klassi. ROB: Oh, jah. JOSEPH: Nii et kui te olete pärit programmeerimise tausta enne, siis võib olla teatud viisil siis, kui olete kirjalikult kood nagu laskmise traksid samal liinil või teatava kuidas taandamine või pange oma muutujaid. Selles klassis tahame järgida konkreetse stiilijuhend lihtsalt sellepärast, Noh, kui sa minema ja töötama tööstuse, sa lähed, et oodata järgida stiili juhend ettevõte, kus sa lähed. Nagu näiteks Facebook Arvan on eriline omamoodi nimetades konventsioon. Ja seal on erinevused kaamel korpuse muutujad ja nagu eraldades need alakriipsud. Ja ka, ma arvan, et kõige olulisem on, nagu Näiteks taandus, eks? Me looksulg alustada, kui tingimus on, ja nad on järgmisel real. Ja me ka panna lokkis traksid isegi kui see on ainult üks rida. Ja palju kordi, on võimalusi teha see, kus saate jätta need traksid välja, kui see on ainult üks rida alla Kui avalduses. Aga selles klassis, tahame järgida konkreetse stiilijuhend lihtsalt nii saad harjunud, et selline asi. ROB: Jah, ja Style 50 läheb jõustamiseks stiilijuhend ja me oleme kavatse kasutada Style 50 palgaastmele oma kood. Nii et see teeb asjad lihtsamaks meile ja loodetavasti ei peaks tegema asju, mis palju hullem sulle antud standardiseeritud stiil ei tohiks olla, et ebareaalne. JOSEPH: Ja lõpuks leida stiili juhendist, minge manual.cs50.net/style. Ja jah. SPEAKER 4: Kas sa jõustada ühtegi märki rea kohta? ROB: Jah. JOSEPH: Sorry, kutid. ROB: See on nagu üks ainsad. Sel hetkel, ma olen OK 120. Ma olen OK öeldes 120 tähemärki rea kohta. Ma saan aru, et oleks mõned piir. Ma arvan, et 80 on nii väike, kuid me jõustamiseks. JOSEPH: Isiklikult ma arvan C, 80 tähemärki on veel OK. Kui hakkate saada teiste keelte nagu JavaScript ja PHP, ei nii mõistlik lihtsalt piirata see 80 tähemärki. OK. Noh, see oli super osa. Kas keegi tahad kommi? SPEAKER 4: Jah.