Rob: Lahat ng karapatan. Maligayang pagdating sa unang seksyon. Ako Rob. Joseph: Ako Joseph. Rob: Kaya makikita sumisid namin karapatan in Unang bagay na pag-uusapan ay ang Appliance. Kaya sana ay karamihan sa mga mayroon kang download nito. Ngunit maaari mong tingnan ang mga tagubilin sa cs50.net/appliance. Oh diyos, ngayon ako mahiyain. Pa rin marinig ko ito. Joseph: Wow, ito tunog tulad ng ito ay disoriented. Rob: Kaya ang ilang mga tao ay na-pagkakaroon mga isyu sa ito, kaya huwag maghintay hanggang sa huling minuto ng problema nakatakda sa subukan at malutas ang Appliance at paghahanap ng mga out na ito ay hindi gumagana. Joseph: At kung ang isang bagay ay hindi gumagana at kailangan mo ng tulong, maaari kang pumunta sa cs50.net/discussion kung saan kami magkaroon ng isang forum kung saan mo maaaring mag-post ang iyong mga tanong. At susuriin namin ang mga ito sa kalaunan. Rob: Lahat ng karapatan. Kaya ito ay kung ano ang Appliance kamukha. Muli, ito lamang ay isang ganap na nakahiwalay tumakbo ang operating system sa loob kahit anong operating system mo ay tumatakbo sa iyong laptop. At ang mga pangunahing bagay na makakakuha ka gumagamit ay gedit. Kaya sana ito ay may mga naka- maging isang pamilyar na site. Ang terminal. At maaari ka ring magpatakbo ng Chrome sa loob ng Appliance. Nagkaroon ng isang pares ng mga tao sino na ang pag-internet hindi gumana sa Appliance. At ilan sa kanila ay ipinapalagay lamang na doon ay hindi dapat maging internet sa Appliance. Ngunit oo, doon ay dapat upang maging sa internet. Kukunin ko ito sinasabi sa ngayon, ngunit hindi talaga ang ibig sabihin ng kahit ano. Kung ang internet ay hindi gumagana, ito ay kung ano ay may posibilidad mong kailangan upang tumakbo upang ayusin ito. Kung ikaw ay nakakaranas ng mga isyu sa internet, gawin ang hindi tandaan ito, mag-post lang ito sa Talakayin, at kami sabihin, patakbuhin iyon. Subalit ang internet ay dapat na gumagana. Kaya ang tanging iba pang mga bagay - oo, walang iba ay talagang may-katuturan. Pero gusto ko lang ituro na - makita sa ilalim na kanang sulok. Kaya bawat isa sa iyong Kasangkapan dapat magkaroon ng isang IP address. At sa paglaon ng semestre, ito IP address ay magiging mas may-katuturan kapag nagtatrabaho ka sa web p-set, dahil magagawa mong i-access ang website nagtatrabaho ka sa mula sa iyong lokal Chrome sa pamamagitan ng paggamit na ito IP address. Ngunit kung ano ang gusto kong gamitin ang IP address para sa - at hindi mo na kailangang gawin ito, ako nais lamang upang ituro ito out - ay dito. Kaya ito ay isang terminal na window sa aking Mac, ito ay wala sa Appliance sa lahat. At maaari kang tumingin up ano command na ito gumagana. Ngunit ako direktang pagpunta sa SSH sa aking Appliance. Hindi ko alam kung ano ang IP ay. Joseph: 168 - 168.224.1.0. Rob: Kaya minsan ako tapos na may ito, mag-log-in Ngayon, isa lamang, ito ay kapareho ng isang terminal na window sa loob ng aking Appliance. Kaya ako halos hindi kailanman aktwal na nagtrabaho mula sa loob ng Appliance mismo. Ako palaging lamang itong tumatakbo sa background nai-minimize at SSHed ito. Ang isyu sa ito ay hindi pupunta ka sa sa na madaling gamitin gedit direkta mula sa ito. Ngunit kung nais mong maging isang tunay na cool na Hacker, pagkatapos ay dapat kumuha ng gamit na sa isang command line text editor pa rin. Kaya Vim at Emacs at Nano, ang lahat ng mga naiiba ang mga kahalili. Nano may gawi na maging ang pinakamadaling. At sa tingin ko wala itong mga syntax-highlight. Oh, walang, ito lahat-lahat gumagana. Kaya maaari mong gamitin ang Nano, dahil na ang isa ay medyo madali. Ang makikita mo ang lahat ng mga utos sa ibaba. Ito maliit na simbolo karot. Kung hindi mo pa nakita ito bago, makakakuha ka marahil makita ito ng maraming ngayon. Ito karaniwan ay nangangahulugan na ang control karot, tulad ng ibabang kaliwa ng iyong keyboard kontrol ng character. Kaya dito ito ay nagsasabi sa akin pababa dito - oh, hindi ito maputol kung mag-zoom in ako Kaya Control, ang X ay paano Pupunta ako upang lumabas. At sinasabi nito ang maaari kong pindutin ang Y para sa Oo, para sa pag-save, N para sa Hindi. Kaya na Nano. Vim at Emacs ay may posibilidad na maging bahagyang higit pa kumplikado at napakalaki. Ngunit maaari kang makakuha ng gamit na dito, at pagkatapos ay magugustuhan mo ito. Kaya na lang iyon. Joseph: Hindi mo na kailangang gawin iyon. Rob: Oo. Ikaw ay malayang gamitin gedit para sa natitira sa semestre. Kaya ang anumang mga katanungan na kaugnay appliance-? O ang mayroon kang anumang saloobin sa ano pa Kailangang ma-pasalitang tungkol tungkol sa ang appliance? Oo. Tagapagsalita 1: Kapag SSHed ka sa iyong bagay, ay ang Crimson password? Rob: Oo. Ang password para sa halos lahat ng bagay sa Appliance ay pagpunta upang maging Crimson. Tagapagsalita 2: I-install tulad ng isang real IDE sa appliance, ito gumagana? Rob: isipin ko mayroon Eclipse ang isang Fedora bersyon, kung saan, oo, maaari mong gawin iyon. Ito ay marahil hindi talaga sulit. Tagapagsalita 2: OK. Kaya marahil ito ay mas madali kung Nais kong gamitin Eclipse, gamitin lamang ang native na at pagkatapos ay i-upload sa - Rob: Oh, iyon ay marahil mas madali rin. Ngunit maaari kang makakuha ng ito gumagana sa loob ng Appliance. Joseph: At para sa mga camera, ang tanong ay, maaari mong i-install ng isa pang IDE sa loob ng Appliance? Rob: Eclipse sa pagiging isang Halimbawa ng isang IDE. Anumang iba pang mga katanungan Appliance? Ayos lang. Kaya ay lilipat kami ngayon sa sa command line mga bagay na may kaugnayan interface, kaya CLI. At muli, ako lamang ang pagpunta upang gumana sa dito, dahil ito ay kapareho ng nagtatrabaho sa loob ng isang terminal na window sa loob ng Appliance. Paano ay naghahanap ng font na? Sapat na malaki ba iyon? Ayos lang. Kaya may mga ng maraming mga command na makakapagsimula ka dapat medyo ginamit upang sa buong semestre. Ang dalawang malaki para sa pag-navigate ay ls, listahan ang mga file sa direktoryong ito; at cd, kaya palitan direktoryo. Kaya ang maaari kong baguhin sa desktop at pagkatapos ay isang napaka-karaniwang mga pattern ay cd sa isang direktoryo at agad ls ano sa direktoryo. Mga Tao din minsan ay hindi mapagtanto na pagkumpleto ng Tab ay isang bagay. Kaya tulad ng cd, vh, at pagkatapos ay pindutin ang Tab ko. Ako halos hindi kailanman type out ang buong bagay. At pagkatapos ay kung panatilihin ko ang pagpindot ng Tab muli, awtomatiko itong idedetalye magsimula ng listahan para sa akin. Kaya maaari kong cd vhosts, lokal host. At na lamang ang pagpunta sa - kung sakaling hindi mo pa naririnig ang term bago, na direktoryo ay isa lamang salita para sa folder. Kaya ngayon kung makita mo - ni dalhin na sa tuktok ipaalam. Kaya ngayon kung nakikita mo sa mga panaklong, mo tingnan ang maliit na bantas, slash, vhost, iwa, lokal host. Kaya ang bantas, na tumutukoy sa aking home directory. Ito ay isang direktoryo ikaw ay in kapag SSH mo in Ito ay ang direktoryo ikaw ay nasa kapag buksan up ka ng isang terminal. Ito ay kung saan nagsimula ka. At kaya ako sa loob ng aking home directory, at ako ay nasa loob ng vhost direktoryo sa loob ng aking home directory. At pagkatapos ay ako sa loob ng lokal na mag-host na direktoryo sa loob ng iyon. Kaya ilang iba pang mga kapaki-pakinabang na bagay sa cd - o well, sa pangkalahatan, kaya dot lagi ay tumutukoy sa kasalukuyang direktoryo. Cd, tuldok ay isang medyo walang kapararakan command. Ngunit na pagbabago sa kasalukuyang direktoryo. Ang isang mas kapaki-pakinabang ang isa sa mga tuntunin ng cd ay tuldok, tuldok, na pumunta up ng isa direktoryo lamang. At tandaan na ang mga - Gusto kong sabihin mga alias, ngunit ang mga mga simbolo, tuldok, at tuldok, tuldok, mga trabaho para sa halos anumang utos ikaw ay pagpunta sa maisip ng pagtakbo. Kaya tulad ng cd Marahil kung saan ay gamit ang pinaka, ngunit ang mga ito ay hindi bagay na naiintindihan ng cd lamang. Ito ay halos isang bagay ang iyong buong Naiintindihan ng linya ng command. Ang isang pulutong ng mga programa maunawaan tuldok at tuldok, dot. Kaya ang iba pang mga kapaki-pakinabang na mga bago - cd, gitling. Kaya na ay pagpunta upang dalhin ako sa huling directory na iyon ako ay in Kaya minsan kukunin ko na gawin ang isang bagay tulad ng, oh, ako nagtatrabaho sa dito. At nakikita ko ang ilang mga error sa isang bagay, at Makikita pumunta ako siyasatin ito sa pamamagitan ng pagpunta sa ang ilang mga random na direktoryo sa isang lugar. At hindi ko alam kung idedetalye ito ipaalam sa akin sa doon. Nasain Ito. Kaya pagkatapos ay gagawin ko ang kahit anong gusto kong sa direktoryong ito. Blah, blah, blah, blah, blah. At ako ay tulad ng, ang lahat ng karapatan, gusto kong upang bumalik sa kung saan ako ay. cd, gitling, at pinagsasama-ito sa akin kanan pabalik. Kaya ako pupunta upang ihagis ng maraming ng mga sa iyo ngayon. Hindi ko inaasahan mong kabisaduhin lahat ng mga ito. Uri ng Ito ay kilala lamang na sila umiiral. At pagkatapos ay mamaya sa kapag ikaw ay tulad, Hmm, gusto kong bumalik sa ang directory na iyon ako ay isa lamang sa, oh, maghintay, ang isang bagay tulad na umiiral na. Hindi mo na kailangang i-type lamang sa muli ang buong direktoryo. Joseph: At sa huli habilin mo lamang gamitin nang paulit-ulit sa kanila, at Makikita itong maging kalamnan memorya. Rob: Oo. Kaya paano ko sinabi bago, na bantas ay ang iyong home directory. Kaya maaari kong cd, bantas. Ngunit hindi ko kahit na mayroon sa gawin na kung ko lang - Kukunin ko bumalik sa direktoryo upang hindi ito isang walang tinutungo halimbawa. Ngunit kung lang gagawin ko cd, na rin ang katulad ng, pumunta sa aking home directory. Gagawin ko Command, K. Joseph: Maaari mo ring i-type ang malinaw, ang salita, at dapat itong i-clear ito. Rob: At sa tingin din ako Control, Gagawin nito sa din L. Kaya maraming iba't ibang paraan. Sa tingin ko mayroong ilang mga pagkakaiba sa kung saan malinaw at Control, L habilin lamang itulak talaga ito sa tuktok at Maaari pa rin ba akong mag-scroll pabalik. Command, literal destroys K ang lahat ng bagay, at ikaw Hindi maaaring mag-scroll back up. Sa pinakadulo hindi bababa sa, na kung paano ito gumagana sa iTerm2. Hindi ko alam kung paano iba pang mga bagay - oh. Sa SSHing, kaya kung ikaw ay sa Windows, ka pagpunta sa may upang i-download magmasilya upang SSH dahil Windows ay hindi mayroon tulad ng isang tool built-in SSH. Mula sa mga Mac, maaari mo lamang SSH direkta mula sa isang terminal na window. OK. Mga Katanungan? Sa ls, kaya ng isang bagay upang masanay sa karamihan ng mga utos ay - mahusay, mangyari lamang na makikita kong gawin isa. Ls, gitling, l. Kaya gitling, l ay kung ano kami ay pagpunta upang tawagan ang isang flag sa ls. At marami sa mga ito ang mga utos ay may flags na maaari mong pumasa sa kanila. Kaya sa kasong ito, gitling, l ay isang flag na nagsasabi ito upang bigyan ako ng isang buong listahan ng lahat ng mga impormasyon ng mga file na ito. Kaya makikita natin dito na desktop ay baguhin sa Hulyo 30 sa 00:54. Downloads ay nabago sa Septiyembre 6. Ito ang mga kasalukuyang laki at byte ng mga direktoryo. Wala kang upang maunawaan lahat ng ito. Bagay-bagay na ito sa kaliwa, mga drwx ni, na ay magiging magkano ang mas may-katuturang mamaya kapag mayroon kang humarap sa - na may gagawin sa kung sino ang may mga pahintulot upang tumingin sa mga file na ito. At kaya kung ikaw ay hindi lamang ang gumagamit sa computer na ito, gusto mong ma- sabihin nating, OK, ang dapat kong maging ang isa lamang pinapayagan upang tumingin sa ang file na ito o ako ay pagpunta upang payagan ang lahat upang tumingin sa ang file na ito. Kaya ibang tao sa aking computer Maaari tumingin sa ang file na ito. Hindi ko kahit na alam kung ano ito - ano ang ginagawa ito? Joseph: Hindi ako masyadong sigurado, talaga. Rob: Walang ideya. Joseph: Ngunit kung hindi mo alam, may isang kapaki-pakinabang na command na maaari mong gamitin upang sabihin sa iyo kung ano ang ibig sabihin ng output. At kung nagta-type ka sa tao bago ang command - kaya M-A-N. Rob: Man. Kaya ang tao ay isa pa ito ay isang kapaki-pakinabang. At ang tao, ls. Kaya ang mga pahina ng tao, mayroon silang parehong utos na kayo ay pagpunta sa gumagamit sa command line, at magkaroon din sila mga function na magiging may-katuturang may C. Kaya maaari mong tao - at binabalewala ko 3. Ngunit tao 3 printf ay pagpunta sa magdala up ang C bersyon ng printf. Ngunit kung lang gagawin ko tao printf, ito ay pagpunta upang ilabas ang command printf na nagaganap sa sa linya ng command. Kaya ang tao, ls. Ang mga pahina ng tao ay maaaring maging kaakit-akit napakalaki. Dito, bagaman, makikita mo ang listahan na ito ng lahat ng mga flag na ls naiintindihan. Kaya kung tayo pupunta Dash, l, at - Lamang ako ng pagpunta upang ihagis ito sa iyo. Ngunit upang maghanap, gusto mo sa unang pindutin ang pinag-uusapan mark o pindutan ng slash. Kaya iwa. At pagkatapos ay maaari kong maghanap para sa kahit anong gusto ko. Kaya Pupunta ako sa iwa para gitling, l. At doon iyon. Kaya gamitin ang isang mahaba format listahan. Hindi iyan makakatulong sa akin malaman kung anong na partikular na hanay nilalayong, ngunit ko ipinapalagay sa isang lugar sa dito Gusto ito ipaliwanag iyon. Kaya gamitin ang mga pahina tao para sa anumang utos na hindi mo agad maintindihan. Ako ay medyo sigurado maaari kang kahit na ang tao, ang tao. Ang isang interface sa online reference manual. Oh, ang huling isa na siguro nang bahagya katuturan ay kung ls, gitling, isang. Kaya kung mapansin lang gagawin ko ls, Nakukuha ko mga limang mga file. Kung gagawin ko ls, gitling, isang, ako nakakakuha ng maraming higit pang mga file. Kaya ang bagay sa mga karaniwang sa pagitan ng lahat ng mga mga bagong file ay ang tuldok sa simula pa. Kaya ang convention ay na ang isang file na ay nagsisimula sa isang tuldok ay nakatago. Kaya hindi mo nais na makita ang file na iyon, mo ayaw na mayroon itong gulo may ang iyong listahan ng direktoryo. Ito ay lamang kapag tahasan mong itanong, lahat ng karapatan, ls, gitling, isang, ipakita ninyo sa akin. Ang isang stand para sa lahat ng mga file, kabilang ang mga nakatagong mga bago. Kaya sa ilang ibang mga utos. Oh, mga tanong sa puntong iyon? Oo. Tagapagsalita 3: Kapag ginawa mo ls, a, kung ano ang mga tuldok, tuldok? Rob: Oh. Kaya ito ay kung ano ang pinag-uusapan ng ako tungkol sa. Ito ay ang parehong bagay kung saan Maaari ko ng cd, tuldok, tuldok. Kaya technically, tuldok at tuldok, tuldok ay mga file na mayroon sa bawat solong direktoryo kung saan ang tuldok na file ay tumutukoy sa kasalukuyang direktoryo. Kaya kung cd ko, tuldok, lang ako pupunta upang manatili sa direktoryo. At tuldok, tuldok palaging ay tumutukoy sa nakaraang direktoryo ng isang level up. Kaya kung pumunta ako sa logs at ls, gitling, al, Kukunin ko makita ang tuldok, tuldok. cd sa dot, dot Dinadala sa akin sa nakaraang direktoryo. Oo. OK. Kaya isa pang medyo mahalaga utos ay rm. Kaya ang ginagawa namin sa pagpunta gamitin upang alisin. At ipaalam sa akin aktwal na gawin ang isa pang utos muna. Kaya mkdir. Mkdir ay kung paano maaari mong lumikha ng mga direktoryo. At kukunin ko na lumikha ng pansamantalang direktoryo at pumunta sa na pansamantalang direktoryo. At tulad ng inaasahan, ito ay walang laman. Ngunit kung ako ls, gitling, isang, mayroon pa rin ba akong tuldok at tuldok, tuldok, dahil tuldok ay tumutukoy sa ang kasalukuyang direktoryo. At tuldok, tuldok ay tumutukoy sa nakaraang direktoryo. At iyon ay palaging umiiral ang hindi mahalaga sa direktoryo ikaw ay in At ito ay isang ganap na hindi kinakailangang utos, ngunit ugnay. Lang ako sa paggamit nito, dahil ito ay isang madaling paraan upang lumikha ng mga file. Kaya pindutin a, b pindutin, pindutin c lamang pagpunta sa lumikha ng tatlong mga file na tinatawag na, b, at c na ganap na walang laman. Kaya ang punto ng akin paglikha ng mga nasa unang lugar ay kaya lang na rm ay kung paano namin maaaring alisin ang mga ito. Kaya rm, isang. Ito ay pagpunta sa hilingin sa akin, alisin regular na walang laman ang isang file? At pagkatapos ay Sasabihin kong Oo. Kaya kung alam ko para sigurado na gusto kong burahin ang file na iyon nang hindi na kinakailangang maging sinenyasan, alisin regular na file na walang laman?, pagkatapos rm, gitling, f ay magiging ang bandila na nagsasabing, puwersahin ang pag-alis nang walang kahit pagdikta sa akin, oh, ikaw ay bang gusto mong tanggalin ang file? Oo, ako sigurado. Kaya rm, gitling, fb habilin lamang gawin ito nang walang pagtatanong. Kaya hayaan ang gumawa ng ilang higit pang mga directory. mkdir, tmp2, cd, tmp2, pindutin a, b-ugnay. OK. Kaya ngayon gusto kong alisin tmp2 bilang isang direktoryo. Kaya rm tmp2. Hindi mo maaalis tmp2, ito ay isang directory. Kaya ang isyu dito ay ang rm hindi agad gumana sa mga direktoryo. Ito ay nilalayong lamang para sa mga file tulad ng hindi-directory ng mga file. At kaya kung ano ang maaari naming gawin dito ay rm, gitling, r. Iyon ang ibig sabihin ay recursively, na maaari hindi nangangahulugan na ang anumang bagay sa iyo pa. Ngunit kapag nakarating ka na sa recursion, Makikita ito ibig sabihin ng higit pa. Kaya rm, gitling, r, tmp2 ay pagpunta sa recursively pumunta sa directory na iyon. Kaya bumaba sa direktoryo tmp2? Oo, ni pumunta sa na ipaalam. Gusto naming alisin ang tmp2 / a? Oo. Gusto naming alisin ang tmp2 / b? Oo. Ngayon nais naming alisin ang tmp2 direktoryo? Oo. At kaya ngayon sa direktoryo at lahat ng bagay sa loob ng ito ay inalis. May technically isang command rmdir na maaari mong gamitin upang alisin mga direktoryo, ngunit gawa lamang ito sa gayon pa man laman ang directory. At upang makita na, sabihin lamang gawin muli mkdir, tmp2. Tmp2, pindutin ang isang. OK. Kaya't kung sinusubukan kong alisin dirtmp2, ipapakita ito sabihin, hindi walang laman na direktoryo. Kaya ako halos hindi kailanman gamitin ang pag-alis dir utos pa rin, dahil rm, gitling, r gagana sa walang laman na mga direktoryo at di-walang laman ang mga directory. At din, kung hindi ko nais na magkaroon sa pumunta sa pamamagitan ng na ang buong proseso ng pababang papunta sa direktoryo at pag-aalis ng bawat indibidwal na file, rm, gitling, rf, tmp2. At ngayon ito ay nawala. Isang bagay upang maging maingat tungkol ay rm, gitling, rf. At ito scares sa akin na kahit na i-type ito, dahil kung ako sinasadyang pindutin ang Enter o isang bagay. Kaya rm, gitling, rf, bantas gagawin, nang walang pagdikta sa akin, ang f ay hindi prompt ng sa akin, awtomatiko itong alisin sa lahat nang aking home directory at ang lahat ng bagay sa loob nito. Kaya maaari mong isipin na isang bobo na gawin. At na rin, ito ay. Ngunit maaari itong mangyari sa lalong madaling sa pamamagitan ng aksidente kung, sabihin nating, Nais kong alisin aking slash, direktoryo ng vhost. At lamang sa mabilis mag-type, Ko sinasadyang gawin ito. Iyon ay mag-aalis recursively parehong aking home directory at ang direktoryo vhost sa ganitong partikular na direktoryo na lang ang mangyayari sa mga hindi umiiral ngayon. Ngunit ito pa rin alisin sa lahat nang aking home directory. Hindi bababa sa pamamagitan ng hindi pagkakaroon ng isang f, Gusto ito unang-prompt sa akin. At gusto ko na tulad ng, oh, hindi, ako ayaw upang gawin iyon. Ngunit ang mga tao, iwa, kabilang ang sa akin ay may posibilidad na makakuha ng papunta sa ugali ng laging rf-ING. Kahit regular na file na maaari ko lang ang rm, c, may posibilidad na rm lamang, gitling, rf, c ko. Lamang mag-ingat kapag ikaw ay rf-ING. Tagapagsalita 4: Ano ang ibig C gawin? Rob: C ay ako ng pakikipag-usap tungkol sa na C file sa direktoryong ito, na rm, c. Joseph: At higit dangerously, kung gumagamit ka ng isang bituin, ito ay tumutukoy sa lahat ng bagay sa direktoryo. Kaya kung ano ang karaniwang ko ay may posibilidad na gawin ay habilin ko pumunta sa isang direktoryo at gusto kong alisin ang lahat ng mga file sa doon. Kaya rm, gitling, rf, bituin. Rob: Oo. Rm, gitling, rf, bituin. Joseph: At kung ikaw ay hindi maingat ano direktoryo ikaw ay nasa - Ako ay wala sa Temp, ngunit ako ay aksidenteng sa aking home directory, pagkatapos ay kukunin ko na alisin ang lahat ng bagay sa aking home directory. At talagang ako tapos na bago, at Sa tingin ko nagawa mo na ito bago o Jay ay tapos na bago. Rob: aksidenteng ko na inalis - kaya huwag pansinin utos na para sa isang bit. Joseph: Hindi masaya. Rob: Kaya sa slash bin direktoryo ay isang tungkos ng mga binary file kung saan may idedetalye maging pamilyar na mga bago tulad ng kumalatong. Well, kumalatong at talaga lahat ng mga bagay na ako nagpapatakbo sa utos linya ay nasa ito slash bin direktoryo. Joseph: Tulad ng ls ay nasa dito. Rob: Kaya dot, iwa, ls gusto ilista ang direktoryong ito. Joseph: Rm ay nasa direktoryong ito rin. Rob: aksidenteng ko rm, rf-ed bin, kung saan inalis ang anumang utos ng dati ko marahil kailanman nais na. Aling pagkatapos ay muling i-install ko lamang ng isang bagong Appliance sa puntong iyon. Joseph: Kaya maging maingat kapag mong gamitin ang command na ito. Madla: [hindi marinig]? Rob: Oo. Iyon ay din ng isang masamang ugali upang makakuha ng sa. Kung napansin mo, ako ngayon - well, hindi ka maaaring mapansin, ngunit ang aking mga pag-zoom-in siguro maaari. Kaya ako ngayon na root @ appliance. Kaya jharvard ay ang user na gusto namin mong palaging ginagamit. Root ay ang user na may pahintulot gawin talagang kahit ano. Kaya't mapapansin kapag ako jharvard, kung sinusubukan kong cd - kung ano ang isang direktoryo na? Oh, ugat ay isang magandang halimbawa. Kaya cd, ugat. Pagpapahintulot ay hindi pinayagan. Dahil kung tinitingnan namin ang listahan na ito - at muli, hindi mo kailangang i- ganap na maunawaan ito. Ngunit ang tatlong gitling ang sinasabi ng na hindi hayaan ang anumang iba pang gumagamit sa direktoryong ito. At ang mga direktoryo ang mangyayari sa pag-aari ng ugat ng user. Kaya ang katunayan na ako jharvard at walang isa sino ay hindi ugat ang pinapayagan sa direktoryong ito, na nangangahulugan na ako pagpunta upang makakuha ng tinanggihan ng pahintulot kapag ako subukan upang cd ito. Kaya kapag ako ay ugat, mayroon akong pahintulot na i- gawin walang pasubali anumang bagay, kabilang ang tanggalin ang mahahalagang mga file sa Appliance at sirain ang buong bagay. Kaya ito ay isang masamang ugali upang makakuha ng sa lamang gala iyong operating system bilang root. Ito gagawin ko pa rin. Mga Katanungan? At kukunin ko na lumabas ugat, manatili bilang jharvard. OK. Higit pang may-katuturang mga utos. Kaya pagpunta pabalik sa aming Temp, ang mv command na ang ibig sabihin ay ilipat. Maaari mong ilipat ang isang. Ngayon gusto naming tumawag ito b, kaya ngayon ang tawag dito b. O siguro ay gusto naming ilipat b up ng isa direktoryo. Kaya ngayon walang laman na direktoryo na ito. Kukunin ko bumalik sa aking home directory, at nakita namin na b ay in dito, dahil ang home directory ay isa sa direktoryo up mula sa ang direktoryo na b naging in Mayroon ding CP. Kaya CP ay kopyahin sobrang seksyon, tuldok, teksto. Maaari ko ba itong tumawag s, tuldok, teksto. Ngayon kami ay may parehong super seksyon, tuldok, teksto; at s, tuldok, teksto. Gumagana rin ito sa mga direktoryo. Rf-ed ko isang solong file. Kaya CP - well, sabihin muna subukan ng CP, tmp, tmp2. Kaya omitting direktoryo tmp. Kaya katulad ng rm, ang default na pag-uugali ay upang hindi gumagana sa mga direktoryo. At muli, katulad ng rm, ang default pag-uugali - well, nakakakuha ito upang gumana may mga direktoryo ay isang, gitling-r ang layo. Kaya kopyahin recursively ang Temp direktoryo sa tmp2. At kaya ngayon ay mayroon kaming parehong tmp at tmp2, at iyon ay hindi na kapaki-pakinabang dahil tmp ay walang laman sa unang lugar. Tmp2. Ngayon ay kopyahin tmp sa tmp2 ipaalam. At nakita namin na tmp2 ay mayroon ding mga file a, dahil sa direktoryo at ang lahat ng bagay sa loob ng na direktoryo ay nakopya. At na maaaring maging kapaki-pakinabang na medyo kung, sabihin nating nagtatrabaho ka sa problema na magtakda ng isang - o talaga, mamaya sets problema ay mas mahalagang, dahil doon Magiging ang maramihang ng mga file at mga bagay. Pero gusto mong lang, para sa isang split pangalawa, ikaw ay tulad, lahat ng karapatan, ako pagpunta sa subukan ang isang bagay na naiiba. Hayaan kopyahin akin lamang aking buong pset1 direktoryo sa pset1 backup upang kung Tapusin ko up screwing bagay up, maaari ko bumalik sa aking mga backup na direktoryo. Mayroong higit naaangkop na mga paraan ng pag-bersyon ng pag-back up ang iyong code, ngunit ito ay palaging isang mabilis na paraan upang magsagawa lamang Tiyaking mayroon kang isang kopya ng isang bagay na ikaw ay tungkol sa upang baguhin. Kaya echo ding command na isa-off na uri ng sillily ay lamang i-print sa command line kung ano mismo ang na gusto mo sa Echo. Kaya echo hi. Susubukan naming lamang i-print hi. Echo kumusta mundo. Susubukan naming i-print kumusta mundo. Iyon ay sa paggamit kapag nag- simulan ang pagsasama-sama ng mga utos. At muli, hindi inaasahan mong ganap maunawaan ito pa, subalit ito ay isang bagay upang makita. At pagkatapos ay kung ikaw ay Googling para sa mga halimbawa o natanto gusto mong gawin isang bagay, maaari itong maging kapaki-pakinabang. Kaya sabihin, bilang halimbawa, kaya ls, gitling, l. Kaya dito nakikita ko ang output ng ls, gitling, l. At sinasabi ko, OK, gusto kong mag-imbak na sa isang file. Ang lahat ng ito output dito, gusto ko upang ilagay sa isang hiwalay na file. Kaya ito maliit na mas malaki kaysa sa simbolo ay kung ano ang pagpunta namin tawagan. Kami ay nagre-redirect ang output sa isang file. Tawagan ng mga file blah Hayaan, dahil iyon ang kung ano ako ay may posibilidad na palaging tumawag ito. Kaya ngayon makita namin na mayroon kami ng isang maghain blah dito mismo. At kung buksan up ko ito, kukunin ko na makita ito eksakto ang output mula sa command na na ako lang ang bumangga. At katulad, maaari mong - kung ito ay output sa isang file, ito ay makakuha ng input mula sa isang file. Ano ang isang command na ako - Joseph: tingin ko maaari mong gamitin ang mas mababa o higit pa, marahil. Rob: Ngunit paano tungkol lang mas blah? Hindi ko alam. Kung dumating ka sa sitwasyong ito, tulad ng mayroong psets na ito ay kapaki-pakinabang para sa. Joseph: maaari mong pipe ito sa echo. Pipe ang file papunta sa echo upang makita ito. Rob: Ito ay pipe. Joseph: Paumanhin. Rob: Lahat ng karapatan. Kaya ito ay ang output sa isang file. Ito ay makuha ang teksto mula sa file at ipasa ito sa ibabaw ng mga programa. At makikita mo rin ang tao na ito. Kaya ito ay uri ng paggawa ng parehong nang sabay-sabay. At talagang, makikita ba kitang ipakilala dalawang bagong command upang tiyakin lamang na paggamit nito. Kasaysayan ay isang madaling-gamiting utos na lamang pagpunta sa i-print ang isang listahan ng mga kahit ano kailanman ko na magpatakbo ng isang linya ng command. Kaya makikita natin dito ang lahat ng bagay na mayroon akong tumatakbo ang buong oras. Maraming ls ni. At isa pang kapaki-pakinabang na command ay grep na layunin nito ay upang maghanap sa text naghahanap ng mga pattern, mahusay, naghahanap ng kahit ano sa iyo Gusto ito upang tumingin para sa. At kaya isang madaling gamitin na paggamit dito ay, sabihin nating gusto naming grab ang kasaysayan. At gusto kong hanapin ang mga utos kung saan ko - kung ano ang isang kapaki-pakinabang ng isa upang hanapin? Joseph: [hindi marinig]? Rob: tingnan lamang para sa lahat ng O ipaalam touch, para sa anumang kadahilanan. Kaya ito ay kung ano ito ay ganito ang hitsura. At wala kang ganap na maunawaan na. Ngunit ang ideya ay dito, kasaysayan ay nagbibigay sa ang parehong output ito ginawa dito kung saan ito sa pagpi-print out ang buong kasaysayan ng lahat ng bagay kailanman ko na tumakbo. Ay pagkatapos ng pagpasa namin na - kaya sa halip na pag-print nito sa screen, gusto naming pumasa na sa utos grep na kung saan ay naghahanap para sa lahat ng mga pagkakataon ng mga salita ugnay. At kaya gamit ang kumbinasyon ng mga kasaysayan ng mga tool at grep, ang maaari kong makita, OK, narito ang lahat ng mga utos na iyong kailanman ko patakbuhin, at narito ang isang medyo karaniwang isa. Kami ay sa ibaba. At ito ay nagbibigay sa din sa akin ang command Lamang ang bumangga ko na nagkaroon ng salita ugnay sa ito. Ngunit ang pipe ay isang medyo kapaki-pakinabang na bagay para sa pagsasama-sama ng maramihang mga programa. At talagang, ito ay isang shortcut para sa let sa akin kasaysayan output sa blah-file, at hayaan mo akong grep gamit ang file blah ng kung anong gusto kong tingnan. Kaya ang pipe ay isang shortcut lamang para sa mga dalawang utos. Oo. Tagapagsalita 4: [hindi marinig]? Rob: Oo. Ano ang - Oh. Ni subukan Hayaan. Kaya pusa, aso, isda. Kaya gusto kong grep. Dash, r, muli, ay magiging recursively, kaya gusto kong bumaba pababa lahat ng mga direktoryo. Gusto kong recursively grep para sa lahat - at hayaan mo akong makakuha ng pansamantalang ito sa labas ng paraan. Huwag pansinin ang akin. OK. Kaya gusto ko upang pansamantalang grep para sa lahat ng mga pagkakataon ng salitang isda. At gayon dito kung ano ako paggawa ay grepping recursively para sa mga salita isda. At bituin ay nangangahulugan na sa paglipas ng lahat ng mga mga file sa direktoryong ito. At kaya ito ay nagbigay sa akin ng Pahintulot Tinanggihan, dahil ito ay hindi pinapahintulutan upang basahin na partikular na file. Ngunit natagpuan ito isda sa file, pagsubok. Maaari ko rin sabihin, partikular, ako lamang nais na tingnan ang mga file blah, sa Kung saan hindi ito mahanap ang anumang bagay. Gusto ko lamang tumingin sa file, pagsubok. Ito ay makahanap ng isda. Iyon ay isang magandang kapaki-pakinabang na command malaman sa pangkalahatan. Mayroong ilang mga alternatibo sa grep na dapat na maging mas programmer friendly, ngunit may posibilidad ko upang pa rin umasa sa grep. Mga Katanungan? OK. Mayroon pa bang ibang mga utos? Oh. Lamang sa isang one-off isa na ako palagi mahanap upang maging masaya ay Cal. Kaya't mapapansin kapag ako ay sa ito kaibig-ibig full-screen mode, wala akong mga katulad tuktok toolbar o kahit ano. Kaya Cal ay nagbibigay lamang ako ng magandang kaunti kalendaryo na tama ngayon cut off, ipagpalagay ko. Ngunit maganda ang maliit na command. Joseph: Ito ay [hindi marinig]. Iba pang mga utos na maaaring mayroon ka Nakita isama kumalatong at gumawa. Susubukan naming pumunta sa ibabaw ng mga ito sa mas detalyado sa ibang pagkakataon. Ngunit kung ikaw ay nagtatrabaho sa ang PSET, dapat ay pamilyar sa mga. Rob: Lahat ng karapatan. Mga Tanong sa command line mga bagay? Ayos lang. Kaya sabihin lumipat sa ilang mga C kaugnay na-bagay-bagay. Variable matematika. OK. Tulad ng Kaya lamang nagkaroon kami matematika sa simula, Maaari mo ring gamitin ang matematika sa C. Bago kami makarating sa na ganap, kaya variable. Tandaan na sa tuwing pinahahayag isang variable na tulad ng int x o float y, mo mayroon upang bigyan ito type bago ang pangalan ng variable. Kaya mga uri ng nasaksihan namin sa ngayon ay int, float, i-double, mahaba ang haba, na ako hindi talaga alam kung hindi namin nakikita na sa ngayon. Mayroong ilang mga iba pang bago. Makita namin ang pansamantalang trabaho. Mayroong maikli, na kung saan ay tulad ng ito ay ang sa tapat ng mahabang mahaba kung saan ito ay mas maliit kaysa sa isang integer. Kami nakakita din string. Kaya kung ano ang mga espesyal na tungkol sa string? Bakit Gusto ko sabihin ito ay hindi masyadong tulad ng int? Tagapagsalita 4: Ito ay hindi talaga umiiral. Rob: Oo. Kaya ang tanging dahilan mayroon kaming string ay dahil kapag ginawa mo hash, isama cs50.h. At ipapakita namin makita ang mga halimbawa ng mga ito sa ibang pagkakataon - oh, na hindi mahawakan na rin - kung saan cs50.h ay paggawa ng isang bagay kasama ang mga linya ng uri def, pansamantalang trabaho bituin, string. At kaya na nagsasabi na hindi namin kahit na malaman kung ano pa ang isang pansamantalang trabaho bituin ay. Ngunit ito ay sinasabi ng nais naming string. Anumang mga lugar na ginagamit mo string, mo sana gamit pansamantalang trabaho bituin, kung saan talagang ay isang uri na umiiral sa wika C. Ngunit susuriin namin iyon. Oh, at ito ay tumatakbo nang pakanan pabalik. Kapong baka. Kaya parehong bagay sa bool kung saan totoo at hindi totoo. Iyon ay hindi talaga isang built-in na uri sa C. Sa halip, ito ay, ay mayroon ito lamang ang halaga ng zero? Pagkatapos ay magpapadala kami lamang isaalang-alang ito upang maging hindi totoo. Mayroon ba nito ang halaga - na rin, ang mga ito ay mayroong anumang mga halaga na hindi zero? Pagkatapos ay magpapadala kami isaalang-alang ito upang maging totoo. Kaya isa ay totoo, dalawang ay totoo, kahit ano nonzero ay totoo. Kaya mga ay ang mga. Mga Tanong sa deklarasyon variable at variable na uri at ang lahat ng iyon? Oo. Tagapagsalita 4: Para sa mga mahaba ang haba, sa aklat, Sinabi ito ito ay nagkaroon na maging mahaba mahaba int. Ngunit ay lamang mahaba mahaba gumagana? Rob: Kaya mga modifier uri. Kaya int x. Kaya maaari rin naming sabihin unsigned int x. Maaari naming sabihin maikling int x. Maaari naming sabihin mahaba mahaba int x. Pero halos anuman sa mga bagay na ako Sinabi lang, unsigned int, maikling int, mahaba mahaba int, maaari mong mapupuksa ang ang int at ito ay ipinapalagay lamang na sinadya mo int. Kaya unsigned x, na kung saan ay nangangahulugan lamang - alam mo kung paano normal na may isang int, maaari mong sabihin x ay katumbas ng negatibong 3? Gamit ang isang wala pang kontratang int, hindi mo magagawa. Joseph: At muli, para sa mga camera, ang tanong ay, kung ano ang mga pagkakaiba sa sa pagitan ng mahabang mahaba int at lamang mahaba katagal? Rob: Oo. Kaya pamanahan ako halos hindi kailanman sumulat mahaba mahaba int. Gagawa ako sumulat mahaba ang haba. Joseph: Anumang mga katanungan? Rob: OK. Kaya ulok maliit na paalala ng na kung paano Ipinahahayag namin sa isang variable at initialize ang variable at ipinapahayag ng isa pang variable at initialize nito ang lahat sa isang hakbang. Kaya ang deklarasyon ng variable at Pinasimulan ang variable na walang upang ngunit maaaring maging sa parehong linya. Kaya mayroon kaming ang standard na operator matematika na nakasanayan mo - plus, minus, paghati-hatiin, ulit. Mayroon ding modulo, na gagamitin namin makita. Mayroong hindi, hindi bababa sa C, ang isang built-in na kapangyarihan exponentiation kareta operator. Well, mayroong isang kareta operator, pero hindi kapangyarihan. Joseph: Ngunit ito ay hindi exponentiation, Oo. Rob: Huwag gamitin ang kareta upang ipalagay na ito ay nangangahulugan na tulad squared o kahit anong. Kaya ang ilang mga bagay na dapat bale tungkol sa division. Magtatagal ako tumayo. Kaya ipinahayag initialize sagot. Kaya sinasabi na kami ng float sagot ay katumbas ng 1 hinati sa 10. I-print kasagutan sa dalawang decimal place. At ito ay ang uri ng mga bagay na ako Gusto tao printf upang malaman na kung ano ang ano ba ang ibig%, tuldok, ibig sabihin 2F? At na lamang ang ibig sabihin, mahusay, pagbalewala sa 0.2. At%, f ay kung ano ang ginagamit namin mag-print ng float. Ang 0.2 ay nagsasabi, naka-print na float sa dalawang decimal place. Kaya ang program na ito ay isang bug, at puwede mong nakita na ito bago sa ilang mga bago ang CS course. Ngunit ano ay ang bug? Tagapagsalita 5: Zero. Rob: Oo. Kaya kapag sinabi namin, ay katumbas ng sagot 1 hinati sa 10, gusto naming ang sagutin na maging 0.1. Ngunit 1 hinati sa 10, 1 ay isang integer, 10 ay isang integer. At kaya kapag ginagawa namin isang integer na hinati sa pamamagitan ng isang integer, kami ay pagpunta upang makabalik isang integer. Kaya 1 hinati sa 10 ay 0.1. Dahil kailangan nito upang bigyan kami ng isang integer, lamang ito ng pagpunta sa itapon na decimal na lugar at sabihin na ang sagot ay 0. At kaya kapag i-print namin sagutin dito, ito ay pagpunta sa i-print ang 0.00. Joseph: At bilang lamang ng isang tala, ito talaga throws ang layo kung ano ang pagkatapos ng decimal point. Kaya't kung ikaw sa halip ay may 6 na hinati sa 10, maaari mong isipin ang hitsura nito ay magbibigay sa iyo ng 0.6 at pagkatapos ay nais mong isalin sa 1. Pero sa totoo, ano ang mangyayari kapag ito nagta-type mga gawain nito ay tumutulong ito ay bumaba ng kung ano ang pagkatapos ng decimal point. Kaya 0.6 ay maging 0. Rob: Oo. At muli naming sabihin pungusan para iyon. Kaya sa tuwing nag-cast sa isang int, ang decimal ay pinutol. Kaya ang fix para sa na - mayroong talagang dalawang. At ako pagpunta sa gawin iyon pangalawa, dahil ang isang ito ay isang lubhang mas madaling remedyo. Kaya isa-ayos ay gamitin sa kamay sa division. At talagang, mayroon na lamang sa gumawa ng isa sa kanila ng float. Ngunit ito ay medyo mas malinaw lamang upang gumawa ng parehong sa mga ito sa kamay. Kaya 1.0 na hinati sa pamamagitan ng 10.0 ay paghahati ng dalawang kamay. Kaya ang sagot ay nagtatapos up pagiging isang float, at sa gayon habilin mo tama i-print ang 0.10 dito. Isang bagay na hindi gumana nang mahusay tungkol iyon ay, well, sigurado, ito ay madaling sapat upang i-convert 1 sa isang float sa pamamagitan ng pagpapadali 1.0. Ngunit paano kung sa halip nagkaroon kami ng dalawang integer tulad ng int x ay katumbas ng 1 at int y ay katumbas ng 10, at pagkatapos ay gusto naming upang huwag x hinati sa y? Kaya ito ay hindi madaling upang lamang gawin x.0 o isang bagay. Kaya ang fix sa na paghahagis. Kaya paghahagis ay isang paraan sa C upang i-convert mula sa isang variable na uri sa isa pang. Kaya dito, ang 1 ay isang integer. At sa pamamagitan ng paglagay ng float sa harap ng ito, paghahagis namin ay 1 sa isang float. At kaya ito ay nagko-convert ang 1 sa isang 1.0. At ito ay nagko-convert ang 10 sa isang 10.0. At pagkatapos ng mga bagay kumilos nang katulad sa nakaraang bersyon namin ipinakita lamang kung saan, tulad ng inaasahan, makakakuha tayo ng 0.10 at makikita ito i-print na. At maaari naming gawin ito gamit ang variable, masyadong. Kaya maaari naming sabihin, float x hinati sa pamamagitan ng float y. Joseph: Anumang mga katanungan? Rob: Kaya tulad ng sa regular na matematika, mayroon kaming operator mangunguna. Kaya sa matematika klase, ikaw ay mas malamang pangalanan ito pagkakasunud-sunod ng mga operasyon. Dito, ang opisyal na termino ay operator mangunguna. Ngunit sa operator mangingibabaw, o pinaka- operator, ay tulad ng iyong inaasahan. Kaya tulad ng sa matematika, 2 beses ang 10 pagpunta sa-grupo sa mas malapit kaysa ito 10 na hinati sa 2 at pagkatapos ay 2. Ang pagkakasunud-sunod ng mga operasyon, ito gawin 2 beses 10, 10 na hinati sa 2, at pagkatapos ay Makikita ito gawin 20 plus 5 plus 2. Kaya ito ay tulad ng inaasahan, at maaari mong gamitin ang panaklong sa pangkat na expression. Hindi mo maaaring gamitin ang mga square bracket sa pangkat na expression. Oo? Tagapagsalita 5: Maaari mo bang talaga pumunta lamang pabalik isang segundo? Maaari mo nagsumite ng isang int sa isang string? Rob: Kaya sa C, maaari mong nagsumite ng anumang bagay gusto mong anumang nais mo. Iyon ay hindi nangangahulugan na ito ay isang mabuting bagay na gawin. Kaya kapag nagsumite ka ng isang int sa isang string, ibig sabihin nito ay - at kami makakuha ng sa na ito mas mabuti - Joseph: Karamihan sa ibang pagkakataon. Rob: Hindi ko nais na sabihin magkano sa ibang pagkakataon, kaya sinubukan kong baguhin ang aking pangungusap. Susubukan naming makuha sa mas higit lubusan kung saan mamaya talaga kapag mayroon kang isang string variable - kaya isang string ay maaaring maging nagkataon ang haba, tama? At kami ay sinasabi na ang isang int ay apat na bytes at mahaba mahaba ay walong bytes at isang float ay apat na bytes. Kaya isang string, tulad ng isang int, tanging ang may isang tiyak na bilang ng mga byte dito. At iyon ay magiging apat na bytes. Ngunit isang string ay maaaring maging kaakit-akit nagkataon mahaba, tama? Kaya kumusta mundo na, kung na 10 character o kahit ano, na nang pagpunta sa maging sa ibabaw ng 4 bytes Maaari kong magkasya sa isang string. At kaya kung paano talaga gumagana ang mga string ay na ang mga ito ay kung saan sa memorya na string ay pinananatiling. At kaya sa paglipas dito, kapag sinabi ko string x ay katumbas ng halo mundo, sa loob ng x ay sinasabi lang, oh, kumusta mundo ay naka-imbak sa ang partikular na lugar sa memorya. Kaya't kung sinusubukan naming nagsumite ng isang integer sa isang string, pagkatapos sinusubukan naming bigyang-kahulugan ang ilang mga random na bahagi ng memorya bilang isang string. At na halos palaging Pinaghihiwa-bagay. Joseph: Ngunit kung na nalilito sa iyo, mag-i-sumasaklaw namin ito mas malalalim mamaya. Rob: Oo. Ito ay kung saan ka pupunta upang makapunta sa mga payo. At iyon ay isang makabuluhang tipak ng dalawang linggo ng kursong ito. Speaker 6: Gumagana ba ito tulad ng mga bagay sa ibang mga wika o hindi talaga? Rob: Kaya sa iba pang mga wika, mga bagay Gusto katawanin gamit na pointer. Ito ay hindi ang parehong bagay, bagaman. Anumang mga saloobin? Joseph: Hindi. Walang mga saloobin. Rob: OK. Joseph: Susunod. Rob: Pumunta lamang sa na. Ayos lang. Kaya modulo. Tulad lamang mayroon kaming plus, minus, hatiin, at multiply. Kaya modulo ay isa maaari mong hindi nakita bago. At ito lamang ang sinasabi, bigyan sa akin ang natitira sa. Kaya 55% 10. Ang natitira sa paggawa 55 na hinati sa pamamagitan ng 10 ay magiging 5. Kaya 55% 10 5. At 3% 5 ay magiging 3. 8% 8 ay 0. 16% ng 15 ay magiging 1. Joseph: Ang isang bagay na dapat tandaan na may mga ito, Masyadong, ito ay maaaring hindi gumana tulad ng inaasahan kung gumamit ka ng isang negatibong numero. Kaya negatibong 5% 4, ang ilang mga tao Maaaring sa tingin na ay - kung ano ang sa tingin mo ang mga negatibong 5% 4 ay magiging? Tagapagsalita 5: One. Joseph: Kaya ang ilang mga tao sabihin isa, ang ilang mga tao sabihin negatibong isa. Ngunit ano - Rob: hindi ko gusto kahit na mayroon Sinabi ni isa sa mga iyon. Joseph: Dalawang, paumanhin. Ang ilang mga tao sabihin - Rob: Three. Joseph: Tatlong? Rob: Negatibong - kung ano ang naging - negatibong limang - Joseph: Tatlong, tatlo, tatlo. Sorry. Dahil modulo, sa pangkalahatan, kapag ikaw ay Nakita ito sa ibang lugar, ito ay kadalasang nangangahulugan bumalik isang positibong numero, tama? Rob: Kaya kapag sinabi namin sa matematika,% 10 na, sila ay may posibilidad na nais na magbigay sa iyo - kung kami mod sa pamamagitan ng 10, pagkatapos ay inaasahan naming makakuha ng isang numero sa pagitan ng 0 at 9. Sa dito, na hindi ito ang kaso na sa iyo Makakakuha ng negatibong numero ibinalik. Joseph: Kaya negatibong 5% 4 ay magiging negatibo 1. Rob: Ngunit ito ay bihirang na ikaw ay mod-ING negatibong numero upang magsimula sa. Laktawan ito. Joseph: Oo. Rob: Meh. OK. Kaya isa huling bagay upang ituro ang tungkol sa sa kamay ay ito ay isang mapanganib na pag-uugali, ngunit sa kamay ay hindi isang eksaktong pagkatawan. Kaya pagpunta pabalik sa bytes muli, alalahanin na isang int ay laging apat na bytes at isang float ay laging apat na bytes. Kaya halimbawa Lucas ay medyo mabuti. Kaya sa tingin ng 1 hinati sa 3. Kaya 0.3333333. Kung mayroon lamang akong 32 bits, paano maaari Mag-imbak ako 0.33333 eksakto? At marahil, para sa anumang kadahilanan, sabihin mo, lahat ng karapatan, mahusay, sabihin nating lamang na ito partikular na 1011001, sabihin lamang sabihin na dapat maging 0.333333. Well, mayroon na lamang isang may hangganan bilang ng mga mga bits, kaya imposibleng kumakatawan sa bawat solong lumulutang point ibinigay na mga piraso 32 lang halaga. Well, imposibleng upang kumatawan sa anumang halaga lumulutang na tuldok ibinigay na walang hanggan - well, given anumang may hangganan bilang ng mga bits. Kaya ang isyu dito ay, na rin, kapag ginamit namin upang mag-print sa dalawang decimal place, tama kami nakakuha ang kasagutan 0.10. Ngunit sa ilalim ng hood, ito ay talagang ini na naka-imbak bilang malapit hangga't maaari sa 0.10 bilang mga bits ay maaaring kumatawan. Ito ba ay sa susunod na slide? O kaya naman ay hindi ito? Joseph: Oo, ito ay na iyon. Rob: Blegh, blegh. Joseph: Oo, maaari mo lamang hilahin ang mga tala up ng isang bit. Rob: lamang Pupunta ako upang mag-zoom sa sa huling sa na. Oh aking sus, na [hindi marinig]. Kaya ang numerong iyon. Iyon ay kung ano ang ipi-print kung patatakbuhin namin ang programang iyon. At mapansin na hindi talaga isang malaking deal kung kami ay lamang aalaga tungkol sa tulad ng 2:58 decimal place. Tulad ng orihinal na lamang ang aming naka-print na 0.10, at iyon ang dahilan kung bakit nakita namin walang mali. Ngunit sa sandaling sinimulan namin ang pagkuha sa eksakto, eksaktong numero na ito na kumakatawan, nakita namin na hindi ito maaari eksakto kumakatawan sa 0.1. At bahagi ng problema dito ay tulad, lahat ng karapatan, na masarap, ngunit, mahusay, una, paano kung sinubukan naming gawin, ay katumbas ng sagot ay katumbas ng 0.1? Iyan ba ang pagpunta sa bumalik totoo o hindi? At kaya mahirap na sabihin. Sa tingin ko talaga ay maaaring ibalik totoo. Gagana ito muna - Hindi ko alam. Ang sagot ay sa sandaling sinimulan mo pakikitungo may halaga lumulutang na tuldok, maganda ka magkano hindi dapat gamit ang pagkakapantay-pantay dahil sa ito imprecision. At para sa lahat ng alam mo na, ito ang pang-isang daan lugar ng decimal na ang lumulutang na tuldok ay hindi magagawang upang tamang pangasiwaan. At kaya pagkakapantay-pantay ay mabibigo lamang kahit na bagaman ang numero na - kung ito ay hindi naging gamit ang eksaktong numero, ang mga numero ay dapat na naging eksaktong kapareho. Ito ay sa kabuuan ng tulad ng 50 mga pagkalkula gamit ang mga lumulutang mga halaga ng punto, maaari bumuo ng mga error up at up at up, at bagay lamang makakuha ng maling. Joseph: At nagkaroon talaga sikat na halimbawa ng ito nangyayari. Tulad ng NASA inhinyero na makakakuha ito mali, na nagiging sanhi Rockets upang sumabog sa ang mga naka matapos nilang ma-inilunsad. At maraming mga isyu tulad na. Kaya oo. Speaker 6: Kapag sinabi mong 0.3 f, ay ito pungusan ang natitira? O kaya ay ito paglilikom o pababa? Rob: Ay printf-ikot ito? Joseph: tingin ko printf truncates. Rob: OK. Kaya maaari nang katulad namin pumunta sa tapat ng direksyon ng ito kung saan, sa kasong ito, ang pinakamalapit na maaaring kumatawan 0.1 ay may numerong ito. Ang pinakamalapit na maaaring maging ito magagawang kumakatawan sa 0.2 ay nasa tapat direksyon, .199999996356 o isang bagay. Kaya kung nagpunta kami sa na direksyon ng bagay, at pagkatapos ay printf 0.3 f ay magbabalik 1.99 sa halip ng 2.00. Joseph: At ako ay hindi ganap na sigurado sa na. Baka gusto mong magsulat ng isang maliit, kaunti programa upang tingnan lamang iyon. Rob: Kahit na, kung ano kami ay bang ng ay na kung sinubukan mong mag-cast na sa isang int, at paghahagis sa isang int ay pagpunta sa maging sanhi ito upang pungusan ang decimal, kung mong subukan sa cast 1.9999999 papunta sa isang int, makakakuha ka ng 1. At gayon dapat mong gamitin sa pangkalahatan ang mga pag-ikot ng function sa matematika library. Mga Katanungan? OK. Joseph: Kaya gumagalaw sa upang kundisyon at Boolean expression. Kaya na nakita mo ang mga bago. At talagang, hayaan mo akong tiyakin ang aking computer na nasa kanan format dito. Space. Paumanhin, kami ay pagpunta sa may haharapin ang isang Medyo may cutoff sa mga gilid. Ngunit oo, mo guys na nakita ito bago sa simula. Kaya ito karapatan dito ay isang expression na ginagamit sa isang kondisyon statement. Kaya sagutin mas mataas sa zero kalooban sabihin mo totoo o hindi. At ang mga ito ay talagang mahalaga, dahil pinapayagan nila sa amin upang ipakilala logic sa aming code. Kaya halimbawa, ito ay isang programa nakasulat sa scratch na nagtatanong sa gumagamit para sa isang integer at nagsasabi sa kanila kung ang integer na binigyan ka nila ng positibo o negatibong numero. At ang mga conversion sa paglipas dito upang makita ang mo munang i-print ang pahayag, bigyan ako ng integer. At pagkatapos ay hilingin mo ang mga ito para sa isang integer. At pagkatapos ay gamitin mo kondisyon logic sa ibabaw dito upang suriin kung ang numero na ay talagang mas mataas sa zero o hindi. Kaya dito mayroon kaming isang Boolean expression sa loob ng isang kondisyon Kung statement. Mayroon bang anumang mga katanungan? Mayroon bang anumang mga tanong tungkol sa na? OK. Kaya mayroong higit pa sa mas malaki kaysa sa, siyempre. Maaari kang bumuo ng Boolean expression gamit ang karamihan sa mga uri ng mga bagay sa iyo Gusto isipin sa matematika. Kaya mas malaki kaysa sa. Iyon ay dapat na isang mas mababa. Sorry. At ang mga puwang. Rob: huwag sana iwan mo ito. Joseph: Lahat ng karapatan. Kaya mas malaki kaysa sa, mas mababa, mas malaki kaysa sa, o patas sa, mas mababa kaysa sa, o patas sa. Gumagamit kami ng double Kapantay upang tingnan ang mga pagkakapantay-pantay, dahil solong ay katumbas ng paraan pagtatalaga, tama? Oo. At pagkatapos namin ay maaari ring hindi katumbas ng gamit ang tandang pananong, katumbas. At ito simbolo tandang pananong maaari din patagalin upang kung nais mong upang Baliktarin ang anumang uri ng Boolean expression, maaari mong gawin iyon. Kaya ito ay magtatasa sa true lamang kung ang sagot ay mas mababa mababa sa o katumbas ng zero. Ang anumang mga katanungan sa iyon? OK. Kaya maaari mo ring pagsamahin ang mga expression gamit ang lohikal na At at lohikal O kaya. Kaya ito ay lamang ang simbolong At, na dapat ay Shift, 7. At ito ang simbolong pipe, na Hindi isang mas mababang kaso L. Ito ang isa na akma sa itaas ng iyong Enter key. Kaya gumamit ka ng dalawang sa mga ito upang sumagisag lohikal At ang mga lohikal O kaya. Kaya ito ay magbabalik lamang totoo kung sagot ay isa, dalawa, tatlo, o apat. At ito ay magbabalik lamang totoo kung sagot ay lampas na sa magkabilang panig. Kaya ito ay hindi isa, dalawa, tatlo, o apat. At ang paraan na gusto mong gamitin na sa isang expression - Rob: O isang zero o isang limang. Joseph: Zero o isang limang. Sorry. Oo, oo, oo. OK. At sa paglipas dito ngayon, sa parehong paraan sa iyo maaaring gamitin na expression, isang mas maliit expression bahagi ng isang Kung may pasubali statement, gusto mo din ito ang gamitin parehong paraan sa pamamagitan ng paglalagay lamang ito sa loob ng ang mga panaklong ng Kung statement. Kaya ay apoy na ito printf lamang kung sagot ay isa, dalawa, tatlo, o apat. Ang anumang mga katanungan sa pagsasama-sama expression? Kaya mayroong isa pang kondisyon bumuo ng tinatawag naming Kung / Iba Pa. Kaya talaga, ito ay nangangahulugan na ngayon, OK, Kung isang bagay Nais kong suriin ay hindi totoo, pagkatapos ay pumunta sa Iba Pa at gumanap na pang aksyon. Kaya sa partikular na kasong ito, tinanong ko ang gumagamit para sa isang integer. Ay ang integer na higit sa zero? Oo? Well, pagkatapos sila kinuha isang positibong numero. Kung hindi, pagkatapos ay dapat na magkaroon ito naging negatibo o isang zero. Kaya pinili mo ang isang negatibong numero o isang zero na sa kasong ito. Oo. O isang zero. At pagkatapos ay mayroon din namin Kung / Iba Pa, Kung at Iba Pa. Kaya ito ay nagbibigay-daan sa amin magsagawa ng isang pagkakasunod-sunod ng bagay lamang kung mabigo ang unang bago. Kaya sa kasong ito, ngayon ginagawa namin ang huli pumili ka ng zero. Kaya kung sila alinma'y hindi kinuha ng isang positibong ni isang negatibong numero, pagkatapos ay dapat sila pumili zero. Kaya mangyaring hindi lamang ito pababa ang chain na katulad nito. Kaya isang halimbawa kung paano ang isang Kung ay naiiba mula sa - Kung ang isang / Iba Pa ay naiiba mula sa isang pagkakasunod-sunod lamang ng Ifs. At ito ay isang pangkaraniwang tanong na hilingin sa mga tao ay, well, kung hindi ka tulad ng isang 95 sa CS50, ano nasain ito programa sabihin sa iyo? Tagapagsalita 5: Nakakuha ka ng isang A. Joseph: Oo. Nakakuha ka bawat solong isa sa mga karapatan. Nakakuha ka ng A, na nakuha ng isang B, mo Naging isang C at isang D, tama? Kaya lahat ng mga ito makakuha ng nasuri sa pagkakasunud-sunod. Kaya habang 95 ay mas malaki sa 90, ito ay mas mataas din sa 80, ito ay din mas mataas sa 70, at ito ay din mas malaki sa 60. Kaya nakuha mo ang lahat ng mga grado. At ipagpalagay ko ng ginagawa mo nais lamang ang A. Ang paraan upang ayusin na ay upang palitan ang mga may Iba Pa / Kung 's. Kaya sa sitwasyong ito, makakakita nito na 95 ay mas mataas sa 90, at pagkatapos ay ginagawa nito hindi nag-evaluate ang natitira sa mga pahayag. Ang anumang mga katanungan tungkol sa na? Kaya mayroong isa pang kondisyon uri ng istraktura na mayroon kami dito na kami tumawag sa isang switch statement. Kaya ito ay nagbibigay-daan isa lamang na tingnan mo kung ano ang halaga ng isang numero inilagay mo papunta sa switch statement. Kaya sa sitwasyong ito, kami ay lumilipat sa n, at sinasabi na namin, oh, kung n ay isa, pagkatapos ay i-print ang pahayag na iyon. At pagkatapos ay masira, na nangangahulugan na exit sa labas ng switch statement. Kung ito ay isang hindi isa, pagkatapos, well, lamang Sa kalaunan suriin ang lahat ng mga kasong iyon. At kaya sumusuri ito kung ito ay isa o dalawa o tatlo, at ito ng mga Kopya nang naaayon. At kung ano down na dito ang default na keyword paraan ay kung sila ay hindi naglagay ng anumang ng mga, pagkatapos ay sabihin Di-wastong. Kaya sabihin nating magtanong ako para sa n at ay nagbibigay sa gumagamit ng akin apat. Well, ito ay tumutugma wala sa mga kasong iyon, kaya ito ay i-print out kung ano ang sa default na seksyon. Oo, tanong? Tagapagsalita 5: Maaari mong gamitin ang Boolean sa halip na expression isa, dalawa, o tatlong? Joseph: Kaya ang tanong ay maaari mong gamitin ang Boolean expression sa halip na ang isa, dalawa, at tatlong? At sa C, Naniniwala ako sa iyo Hindi maaaring gawin iyon. Ngunit sa ibang mga wika, na kung saan maaari mong makaharap sa dulo ng semestre tulad ng JavaScript, magagawa mo na. Well, magkakaroon ka ng sa unang compute halaga na iyon at pagkatapos ay gamitin ito sa lumipat statement. Oo? Rob: Kaya bahagi ng benepisyo ng paglipat pahayag ay mag-isip ng kung ginawa mo ito bilang isang Kung / Iba Pa, kaya tulad ng kung n ay katumbas ng ay katumbas ng isa o kahit ano. Iba Pa / Kung n katumbas ay katumbas ng dalawa, kahit anong. Iba Pa / Kung n katumbas ay katumbas ng tatlo. Kaya ang paraan ng programa ay tumakbo ito Gusto pumunta nang sunud-sunod down na listahan na at suriin, ay n isa? Nope. Ay n dalawa? Nope. Ay n tatlong? Oo. Gawin ito. Sapagkat may switch pahayag, ito ay talaga makakapag-compile ito upang maging talagang mabilis. At sa lalong madaling ang nakasulat sa paglipat, ito sabi, lahat ng karapatan, n ay dalawang, ako agad ng pagpunta sa tumalon sa kung saan Ako dapat na magsimula e-execute. Hindi ako pupunta sa unang suriin, ay n isa, ay N dalawa? Maaaring agad na itong magsimula ng paggawa ano ang dapat gawin. At dahil doon, hindi ito maaari tumagal ng Boolean kundisyon. O kaya ito ay mayroon na gawin ang sequential, tulad ng, ang lahat ng karapatan, ay n mas mataas sa zero? Iba Pa ay n mas mataas sa 10 o kahit ano. Joseph: Sa kasong ito, kung iyong ginamit Kung / Iba Pa, Kung, pagkatapos ng paglipat ng ginagawa magpatakbo ng humigit-kumulang tatlong beses mas mabilis kaysa sa Kung / Iba Pa, Kung. Maaari naming ayusin ang paglipat sa tulad isang paraan na hindi namin masira pagkatapos ng bawat isa sa mga kaso. Kaya sa kasong ito, ako partitioning ang mga numero na naming pumili sa isa at dalawang pagiging hindi matataas na numero at tatlong pagiging isang mataas na bilang. Kaya sa kasong ito, kung n ay isa o dalawa, ito ay pindutin ang kaso at pagkatapos ang ito mabigo, dahil walang pahinga. At ito ay nagtatapos up dito. Kaya kung pumili kami ng isa, ito ay gawin ang printf at pagkatapos ay hatiin sa gayon ay wala sa ito ay pinaandar. At siyempre, kung ipasok sila sa tatlong o ibang bagay, pagkatapos ay laktawan ito mga at hindi pumunta doon, at ito ay maisagawa sa halip ang nakaayon linya. Mayroon bang anumang mga tanong tungkol sa na? Oo? Tagapagsalita 4: Gusto kumuha ka ng isang error kung ikaw Nagkaroon ng pahinga pagkatapos kaso isa ngunit ito ay hindi magkaroon ng isang bagay para ito gawin? Joseph: Kaya ang tanong ay nais kumuha ka ng isang error kung mayroon kang magpahinga pagkatapos ng case isa ngunit may walang kinalaman sa kung? At ang sagot ay hindi. Hindi mo talaga ay nakakakuha ng error. Oo, mm Hmm. Kaya bilang uri ng isang maliit na pagbabago dito, Pupunta ako upang ilagay ang isang printf dito. Oops. Kaya kung ano ang i-print ito kung Naglagay ako ng isa sa bilang ng pag-input? Oo. Ito sabihin mo hindi ito tumagal isang mataas na bilang dalawang beses, tama? Dahil ito ay pindutin ang unang kaso, ito ay hindi masira, at nais ito mahulog sa pamamagitan ng pangalawang kaso. Ang anumang mga katanungan tungkol sa na? Rob: Mayroon ka ba ng isa pang tanong? Joseph: OK, palamig. Ayos lang. Kaya mayroong ibang bagay tinatawag naming isang tatluhan operator kung saan ay isa lamang ng isang kahaliling syntax sa paggawa Kung at pagkatapos Iba Pa. At ito ay nagbibigay-daan gawin mo ang lahat ng ito sa isang linya. Kaya sa ang partikular na programa, Ako na nagtatanong sa gumagamit para n. At kung n ay mas malaki kaysa sa 100, sabihin ko kinuha sila na nila ang isang mataas na bilang. Iba Pa Sinasabi ko sa kanila sila kinuha ang isang mababang numero. Kaya maaari naming gamitin ito talaga mahaba ang syntax, string, S, at pagkatapos ay tingnan kung n ay mas malaki sa 100 at magtalaga ito nang naaayon. Ngunit maaari naming gawin ang mas maigsi subalit malaman sa pamamagitan ng paggamit na ito tatluhan operator syntax na kung saan ay nagsasangkot ng isang katanungan mark at ng tutuldok. Kaya ng tandang pananong ay mahalagang nagtatanong ng tanong, tama? Rob: Siguro mag-zoom in sa na. Joseph: Oo. Magandang punto. Kaya ito ay ang tatlong bagay operator. Ako muna tanungin ang tanong, ay n mas mataas sa 100? Kung ito ay, pagkatapos ay i-execute ko ang unang bahagi bago ang tutuldok. Kung ito ay hindi, pagkatapos ay i-execute ko ang ikalawang bahagi pagkatapos ng colon. Kaya kung n ay mas malaki kaysa sa 100, pagkatapos ito Pick mataas at naglalagay na sa string s. Kung n Mababa sa 100, ito Pick mababa at pagkatapos ay naglalagay na sa string s. Kaya na paikliin ito malaki tigkal down sa lamang na isang linya. Tagapagsalita 5: sikat na ba iyon? Joseph: Oo, ito ay masyadong sikat para sa mga bagay na kung saan lubos na gusto mong huwag isang pagtatalaga batay sa isang uri ng kondisyon. At sa kasong ito, ay namin sinusubukan upang magtalaga ng halaga sa mga string s. Hindi kaya - Hulaan ko hindi talaga Mas gusto ko ito sa ibang mga kaso. Ngunit ito ay lalong kapaki-pakinabang para sa pagtatalaga. Rob: Iyon ay isang magandang karaniwang mga pattern kung saan mayroon kang ilang mga variable na ka pagpunta sa sabihin, kung ang isang bagay, itinakda ito variable sa isang halaga; iba, itakda ito variable sa isa pang halaga. At iyon ay ang sitwasyong kung saan gumamit ng tatlong bagay. Joseph: At iyong sine-save maraming mga linya, tama? At ito lamang ang gumagawa ng iyong code arguably Medyo mas nababasa. Oo, tanong? Speaker 6: Para sa isang tatlong bagay, maaari kang pumunta, Kapantay string s s, tandang pananong? At pagkatapos ay maaari kang magkaroon ng, sabihin nating, limang iba't ibang mga pagpipilian. At depende sa kung ano ang bilang ng mga n ay, ay pumili ka ng isa sa mga? Joseph: Kaya ang tanong ay, ay mayroong isang uri ng syntax kung saan maaari mong gawin string s ay katumbas n, at pagkatapos ay magkaroon ng higit sa dalawang mga pagpipilian matapos na tandang pananong? At isang simpleng sagot ay hindi, wala talagang isang mahusay na paraan upang gawin iyon maliban kung gusto mong ma-nest ang maramihang tatluhan operator sa loob ng bawat isa. Maaari mong gawin tulad n mas malaki kaysa sa 100, tandang pananong, at pagkatapos ay isa pang tatluhan operator, n mas mataas sa 50, tandang pananong, at pugad ito na paraan. Ngunit sa sitwasyong iyon, ang iyong code ay pagkuha ng uri ng hindi nababasa at maraming kalat, at maaaring maging mas mahusay na ito upang pumunta lamang sa Kung ang isang / Iba Pa pahayag sa puntong iyon. Rob: At din, bilang isang bahagi tala, PHP mali ang ipinapatupad ang tatlong bagay operator tulad na Nested ternaries huwag kahit na gumagana ayon sa nararapat. Joseph: Oo. Kaya ito ay nakakakuha Medyo nakakalito, lalo na kapag pumunta sa iyo sa iba't ibang mga wika. Rob: Ito ay nakalilito sapat na wika ay mali tungkol dito. Joseph: Kaya talaga, lamang na linawin, ang lahat ng tao alam kung ano na % S gumagana sa paglipas dito? Ang anumang mga katanungan tungkol sa na? Hulaan ko lang para sa mga camera, ang% s talaga ay nagbibigay-daan sa amin maglagay ng placeholder para sa isang string. At pagkatapos ay sa dulo, tukuyin namin na ang variable na gusto naming ilagay sa ito may-ari ng lugar ay s. Kaya na isa lamang tumatagal s at ito ay nilalagay ito sa dito. At pagkatapos ay i-print ito, na iyong pinili ang isang mataas o mo kinuha ang isang mababang numero. OK. Kaya mga loop-daan sa iyo upang maisagawa ang mga bagay sa pabilog na galaw, tama? Maaaring nakatagpo ka ito sa Scratch sa anyo ng mga loop sa Habang Panahon o Ulitin Hanggang sa o Ulitin ang isang partikular na bilang ng beses. Kaya bakit mabuti para sa amin na ito ay? Well, sa C, sabihin nating mayroon kaming ito kanta na ipinapatupad sa scratch na SINGS, ito ang kanta na hindi kailanman nagtatapos. Ito napupunta lamang sa at sa at sa magpakailanman at magpakailanman. Well, maaari mong hindi talaga makagawa ng isang programa na may isang walang-katapusang bilang ng mga printf mga pahayag sa loob nito, tama? Kaya sa partikular na sitwasyon, isang paraan na maaari kang magsagawa sa trabahong ito at upang gawin itong i-print ang magpakailanman ay upang sa halip ay gamitin ang isang Habang loop. Kaya isang Habang loop ay isakatuparan kung ano ang sa katawan ng dalawang tirante na Nabibilang dito batay sa kung ano ang kundisyon ay. Kaya sa partikular na halimbawa bago, kung gusto naming i-print ito magpakailanman, kung ano maaari naming gawin? Well, sigurado, tama? Kaya uri ng pinagsasama ito sa ideya ng ilang mga Boolean expression kasama ang isang loop. At natutunan namin tungkol sa Boolean mas maaga expression. Kaya sa tuwing ang kundisyon sa loob ng na Habang nananatiling totoo, ito loop ay maisagawa sa at sa at sa. At sa kasong ito, kung ibibigay namin ito lamang may totoo, ito nagiging sanhi ng isang walang-katapusang loop na mga Kopya ng kanta sa at sa at sa bilang namin ninanais na bago nang walang pagkakaroon ng isang program na may isang walang-katapusang bilang ng mga printf pahayag, na kung saan ay hindi maaari. Kaya nang higit pa compellingly, bagaman, Maaari mo itong gamitin ng may variable at kundisyon. Kaya sabihin nating nais naming ulitin ang parirala, lahat-lahat pasilo, 10 beses. Kaya kung ano ang maaari mong gawin sa isang Habang loop ay Maaari mo muna initialize ng sagot variable sa labas ng Habang loop sa 10. At pagkatapos ay talaga, sa bawat oras na pumunta ka sa pamamagitan ng Habang loop, i-print out ka nito ang pahayag at pagkatapos ay bawasan mo ang counter variable hanggang sa dulo, sa isang punto, sa sandaling ibawas namin ako sapat beses, 1 mula ako ng sapat na beses - at lamang na linawin, ako minus minus Ang ibig sabihin ay katumbas ng ko ko minus 1. Iyon ay isa lamang dalhin ako pababa sa punto kung saan sa sandaling pindutin ko zero, ito kondisyon ay hindi na totoo at kaya lumabas ito sa labas ng loop. Kaya lubos pasilo ng mga Kopya lamang 10 beses. Ang anumang mga katanungan tungkol sa isang Habang loop? OK. Kaya doon ay isang paraan na maaari naming gawin kung ano ang aming lamang ginawa sa isang mas madaling maintindihan sa paraang may ang tinatawag naming isang Para sa loop. Kaya isang Para sa loop ay binubuo ng isang Pinasimulan, kundisyon, at isang pag-update, tulad lamang namin ay may bago sa ganitong Habang loop. Kaya ipaalam sa tumagal ng isang hitsura. Sa ganitong Habang loop, nagkaroon kami ng isang Pinasimulan, pagkatapos ay nagkaroon kami ng isang kondisyon na kami naka-check. At pagkatapos ay nagkaroon kami ng isang update hakbang sa itaas. Sa pamamagitan ng isang Para sa loop, isa lamang tumatagal ito mga tatlong bagay at condenses ito down sa isang linya. Kaya ang unang bagay na ginagawa nito sa Para sa loop ay ang Pinasimulan. At pagkatapos mong gawin ang isang tuldok-kuwit, at pagkatapos ay gawin mo ang kundisyon, na kung saan ay ako mas mataas sa zero napupunta banda roon, at pagkatapos ay ang hakbang sa pag-update. Kaya ito ay makakakuha ginanap sa pinakadulo ng katawan loop. Kaya ang dalawang programa ang lubos na katumbas. Ang anumang mga katanungan? Kaya kung ano ay isa pagkakaiba sa pagitan ng dalawang? Maaari ituro ito ng kahit sino sa labas? Maaaring maging isang bit mapaglalang. Ito ay lamang ng isang napakaliit na pagkakaiba. Oo? Tagapagsalita 5: mong hindi magagawang gamitin ang ako variable sa labas ng Para sa loop [Hindi marinig]? Joseph: Mismong. Kaya ito ay isang bagay na susuriin namin mamaya na tinatawag na variable na saklaw. Ngunit mahalagang, ito int kong buhay sa labas ng ito Habang loop. Kaya sa sandaling ito Habang loop ay tapos na e-execute, magagawa ko magagawang gamitin ko mamaya sa sa programa. Sapagkat may ganitong Para sa loop, ito int ako ay scoped sa loob ng ito Para sa loop. At dahil ito ay nasa loob ng ang bahaging ito ng Para sa loop, na magsisimula sa mga panaklong at mga dulo na may ang kulot suhay banda roon. Anumang bagay na ipinahayag sa loob ng dito ay hindi maaaring gamitin sa labas. Kaya't kung sinusubukan kong gamitin ko sa labas, ipapakita ito sabihin sa akin, hindi nagbigay-alam simbolo. At tunay, kong gagawin hindi magagawang gamitin ito. Rob: At na rin, 10 taon na ang nakakaraan, sa Literal na lahat ng mga kaso, kulot tirante ay kung ano ang iyong ginamit upang matukoy ang ang nasasakupan ng isang variable. Kaya sa doon, int katumbas ko 10 ay ipinahayag sa loob ng ito set ng kulot tirante. At kaya pagkatapos hangga't subukan mong gumamit ako bago ito kulot suhay, ito ay pinong. Maaari mong makita kapag nagta-type ka gumawa, mo tingnan gitling, gitling, std, katumbas, c99. Kaya na ay isang mamaya bersyon ng C na GCC ay ipinatupad na nagbibigay din ito shortcut. Kaya ginamit ito upang hindi papayagan sa C. At maaari mong makita kung bakit, dahil ito int Ay nasa labas ng ito kulot suhay ako pero ito ay itinuturing pa rin na nasa saklaw ng mga kulot tirante. Ngunit ito ay isang napaka-maginhawang bagay, at kaya ito ay isang mahusay na extension. Joseph: Anumang mga katanungan? OK. Kaya kung ano ang mas kapaki-pakinabang ay na kung minsan gusto mo uri ng dynamism sa ang iyong mga loop, tama? Hindi mo nais na kinakailangang i-print lamang lahat-lahat pasilo sa lahat ng oras, mo nais upang mabilang pababa mula sa 10 o isang bagay. At gayon maaari mong gamitin ang counter variable sa loob ng loop na rin. At sa kasong ito, ang program na ito lamang Binibilang pababa mula sa 10 sa lahat ng mga paraan pababa. At kung ano ang hindi ito i-print? Hindi ito i-print zero, karapatan, dahil kapag - Oo, ito rin ay hindi-print 11. Kaya ito ay hindi mag-print ng zero, dahil kapag Ako ay zero, tandaan, ito sinusuri ang kondisyon bago ito napupunta sa upang isakatuparan ang katawan loop. At kapag ako ay zero, ito ay hindi totoo, kaya hindi ito i-print ang pagbibilang pababa zero, prints lang ito out nadaragdagan pa down na 10 ang lahat ng mga paraan pababa sa 1. Kung namin Nais talaga ito upang i-print zero, pagkatapos ay nais naming ilagay ng patas na pag-sign matapos ito na mas malaki kaysa sa pag-sign. OK. Kaya isang paraan upang gawin ang pagpapatotoo ng input, na ay kapag tanungin mo ang user na gawin isang bagay, nais mong tiyakin na sila sundin ang iyong mga tagubilin, ay ang gamitin ang Habang loop, tama? Kaya sa partikular na kasong ito, ako nagtatanong para sa isang positibong numero at pagkatapos ay ako naghihintay ng pag-input. At pagkatapos ay naka-check ko Habang ang input ay mas mababa sa zero, panatilihin ang pagtatanong sa kanila. Kaya't hangga't mabigyan nila ako ng isang numero na hindi positibo, panatilihin ang pagtatanong, panatilihin pagtatanong, panatilihin ang pagtatanong. Ngunit kung ano ang uri ng kakaiba tungkol dito? O kung ano tila hindi optimal tungkol sa ito istraktura dito mismo? Sinuman? Oo? Speaker 6: ka paulit-ulit na ang pagtuturo nang dalawang beses. Joseph: Mag-right. Kaya mayroon kaming dalawang printf pahayag dito, tama? Kaya doon ay isang paraan na maaari kaming makakuha ng mga ito lamang pababa sa isa na gagawing ang aming code mas madaling basahin at isang Medyo nang higit pa malinis. At pagkatapos ay hindi namin ay magkakaroon upang Na Kumuha sa dalawang beses pati na rin. At isang paraan na maaari mong gawin ito ay sa pamamagitan ng paggamit ng isang Do-Habang loop. At isang Do-Habang loop ay isa lamang ibang paraan ng isang Habang loop kung saan ano naman ay nasa loob ng kulot tirante ay makakakuha ng pinaandar ng hindi bababa sa isang beses. Kaya sa dito, Ipinahahayag ko, int input, sa labas muna. At pagkatapos ko lang sabihin, gawin ito pagtuturo habang input Mas mababa sa zero. Kaya ito ay pinindot niya muna ang Do. Ito ay palaging isakatuparan ito ng hindi bababa sa isang beses, sa gayon ito ay palaging tanungin ang user para magpasok ng hindi bababa sa isang beses. At pagkatapos ay sinusuri ito ng pag-input na, at ito napupunta sa sa isang lupon. Oo, tanong? Speaker 6: Mayroon bang paraan upang gawin ito [Hindi marinig] uri, tulad ng kung sinasabi mo, GetString, at isang tao [hindi marinig] ay Mayroon bang paraan upang [hindi marinig] Joseph: Kaya ang tanong ay, ay mayroong isang paraan upang gawin ang pagpapatotoo ng input kung ang gumagamit Hindi ilalagay sa kanan uri ng variable? Kaya kung hinihiling namin para sa isang int at sila bigyan kami ng isang string sa halip. At sa mga pag-andar na ipapatupad namin para sa iyo, GetInt, GetString sa lahat ng mga pag-andar, na aktwal na gawin na uri ng mga pangunahing input uri pagpapatunay sa ilalim ng hood. Kaya kung gumagamit ka ng mga pag-andar na namin Binigyan mo, wala ka talagang kailangang. Ngunit kung gusto mong upang tumingin nang higit pa sa kung paano maaari mong talagang gawin iyon, maaari kang tumingin sa ilalim ng hood sa file I/O-- hindi mag-file, ang karaniwang pag-andar ng I / O tulad ng isang pagbabasa mula sa standard input at standard na output. At maaari kang makakuha ng isang mas mahusay na pakiramdam ng kung paano maaari mong gawin na. Rob: Isa isyu, bagaman, ay partikular na may mga halimbawa mo sinabi, asahan mo ang isang string at ipasok ako sa isang int. Paano mo sabihin ang pagkakaiba sa sa pagitan ng sadyang kinakapos ang string 123 kumpara kinakapos ang int 123? Kaya string, ito ay halos walang pagpapatunay, ito ay kahit anong lang nila ipinasok ay kang bigyang-kahulugan bilang isang string. Int ay mas madali, dahil hindi mahalaga ang input magdadala sa iyo mula sa gumagamit, ikaw ay laging kumukuha ng string. At kaya pagkatapos na string maaari kang suriin, ang lahat ng mga talaga numeric digit? Joseph: OK. Ang anumang mga katanungan tungkol sa isang Do-Habang loop? Rob: Oh, at ito ay din - pagpunta pabalik sa saklaw, isang medyo mga karaniwang pagkakamali ay sinusubukan upang gamitin ang ilang mga lokal na variable mula sa loob ng Do-Habang loop sa loob ng kondisyon na ito. At talagang, kung namin Naging mapupuksa ang ito at sinabi, int input ay katumbas ng GetInt, pagkatapos ay ang tagatala ay sumigaw sa amin, dahil input ay hindi umiiral sa labas ng saklaw ng mga kulot tirante. Joseph: At na ang dahilan kung bakit namin kailangan ito lineup dito. OK. Kaya maaari ka ring magsimula ng isang loop maaga kung nais mong. Kaya ito ay isang iba't ibang mga paraan ng pagpapatupad ng kung ano ipinatupad namin lamang. At sa halip na gamitin ang kundisyon sa loob ng panaklong, na aming ginagamit ng Kung statement sa loob ng katawan ng Do-Habang loop. At isa lamang, kapag ang input ay sa wakas mas mataas sa zero, kami ay masira labas ng loop. At kaya tayo pupunta lahat ang daan pababa dito. At maaari mong makita na gagawin ito marahil ay ginustong sa ito Ang sitwasyong, dahil ito ay isang maliit na bit mas malinis at isang maliit na bit mas madaling basahin. Sapagkat ito, uri ka ng may karagdagang mga linya sa loob nito. Ito ay lamang ng isang maliit na bit na hindi maganda, Ako hulaan, sa isang kahulugan. Oo, tanong? Tagapagsalita 4: Makakaapekto ba masira lamang makakuha ng ka na ng isang hanay ng mga tirante? Joseph: Mag-right. Kaya ang tanong ay ay masira lamang mawalan ng isang loop sa iyo? At ang sagot ay oo. Kaya kung nag-nested Para sa mga loop, para sa Halimbawa, kung mayroon akong Para sa int ko ay katumbas ng 0 hanggang 10 at pagkatapos ay Para sa int J ay katumbas ng 0 hanggang sa 10, kung masira ko out ng panloob na loop, ay pupunta pa rin ako upang ang mga panlabas na loop. Kaya magkakaroon ito panatilihin gumaganap ang mga pagpapatakbo sa labas. Ang anumang mga katanungan tungkol sa na? Oo? Tagapagsalita 5: Ngunit masira mga pag-andar lamang para sa kulot tirante, hindi para sa iba pang pahayag? [Hindi marinig] Joseph: Kaya ang tanong ay ay masira lamang-andar para sa mga loop na taliwas sa iba pang mga pahayag tulad Kung? At oo, iyon ang kaso, dahil naka-breaking out sa isang loop, kanan, sa isang katuturan. Rob: Sa karamihan ng mga kaso, ito ay ito ay ang uri ng mga Kung may isang bagay, pagkatapos masira. Kaya hindi mo na kailangang masira upang ilapat sa Kung ang na pambalot sa paligid nito. At din, ito ay hindi magkano ng isang loop, ngunit tandaan na switch din inisa-isa ng sa pamamagitan ng break. Nakita namin break ginagamit may switch bago. Joseph: At maaari ka ring gamitin ang mga ito Habang sa loop at Para sa mga loop. Ang anumang mga katanungan? OK. Kaya susunod na up ay function. Kaya maaaring na ginamit mo ang isa sa mga BYOB bloke sa iyong proyekto sa simula. At nagbibigay-daan ito talaga sa iyo upang tukuyin ang isang hanay ng mga na sinundan mga tagubilin. At ano ang ibig sabihin ko sa pamamagitan ng na ay ni tingin ipaalam pabalik sa matematika, kanan, algebra. Mayroon kang ang tinatawag naming isang function ng x, ilang mga variable, at sabihin nating ito function ay f ng x ay katumbas ng x plus 5. Kaya maaari mong isipin f ng x bilang na ito itim kahon na 15 tumatagal sa at pagkatapos ay naglalabas 20. Kaya mas pangkalahatang paraan, ang isang function ay isang bagay na tumatagal ng ilang mga input at pagkatapos ay gumagawa ng ilang mga output. At bakit mahusay ang mga pag-andar? Ang mga ito ay mabuti para sa isang ilang mga kadahilanan. Kaya ang isang tao na nais na kumuha ng isang pag-iwa sa anong organisasyon ay nangangahulugan? Sa mga tuntunin ng kung bakit function ay kapaki-pakinabang? Oo? Tagapagsalita 4: Ito ay gumagawa ng iyong code mas nababasa. Joseph: Mag-right. Kaya isa sa mga bagay na ito ay ginagawang mas nababasa ang iyong code, i-right? Sa halip ng pagkakaroon ng tulad ng int x ay katumbas x beses x beses x, maaari akong magkaroon kubo ng x, na kung saan ay mas nababasa at higit pa naiintindihan sa isang reader. Samahan ding sa mga tuntunin ng paghahati up ang iyong code sa pamahalaang mga bahagi, upang sa halip na sinusubukang i- ipatupad ang lahat sa isang mahaba seksyon sa main, maaari mong uri ng maghiwalay ito sa gaya, OK, sumulat ng isang function hayaan sa Cube ng isang bagay, ay sumulat hayaan ang isang gumana sa parisukat ng isang bagay. Sa ganoong paraan maaari mo itong maghiwalay sa napakaliit, maliit na bahagi na maaari mong pagharap sa isang bagay na taliwas sa sinusubukang i-pansing isang malaking problema ang lahat nang sabay-sabay. Rob: O kaya kahit na maliit na maliit, maliit na bahagi na maaari mong at isang kasosyo sa pagharap sa isang bagay. Joseph: Oo. Rob: Kaya sa halip na ang parehong Sinusubukan mo upang itanim isa gumana sa parehong oras. Joseph: Pagpapasimple. Sinuman na nais na kumuha ng isang hula? Oo? Tagapagsalita 5: Higit pang mga pag-uulit. Joseph: Mag-right. Kaya ang isang bagay na maaari mong gawin sa pagpapagaan ay na ito ay isang uri ng sa ang parehong linya bilang re-usability ay na isang beses sumulat ako ng isang kubo function, maaari ko gamitin na lamang na paulit-ulit muli sa aking mga programa sa halip na i-type x beses x beses x sa ibabaw at nang paulit-ulit. At pagpapagaan dito rin lang ang ibig sabihin nito ay gumagawa ang iyong code uri ng mas madali upang i-debug sa sandaling hatiin mo ito hanggang sa pag-andar. Dahil pagkatapos ay maaari mong i-localize kung saan ang iyong mga problema uri ng mga. Ang anumang mga katanungan? Kaya isa pang ideya ay abstraction, tama? Ito itim na kahon. Tulad ng alam mo kung ano ang ginagawa GetInt upang makatanggap ng input mula sa user? Hindi pa kami talaga sinabi mo, tama? Ang lahat ng mga na-Sinabi namin sa iyo ay GetInt gumagana eksakto kung ano ang sinasabi nito ginagawa nito. Kaya kahit na hindi namin sabihin sa iyo kung paano ito gumagana, alam mo pa rin. Kaya sa partikular na kasong ito, ito ay isang may apat na bahagi ng function na gagawin iba't ibang bagay na isang input upang makabuo ng isang output. At maaari ka nang apat na beses ang isang numero sa pamamagitan ng pag-multiply ito sa pamamagitan ng apat. O maaari kang ang tinatawag naming shift ito bit sa pamamagitan ng dalawang. At tatalakayin namin ito Medyo mamaya. At hindi na kailangang malaman kung paano ito function na talagang gumagana hangga't ito Gumagana tulad ng ipinahayag. Kaya sa ilalim ng hood, kaya kong maging parang, bumalik ulit input walong hinati sa dalawa. At hindi mo alam, i-right? Lahat ng kailangan mong malaman ay ginagawa nito kung ano ang sinasabi nito. Kaya iyon ang kapaki-pakinabang na bagay tungkol sa abstraction. At isa pang bagay ay ang uri ng mga ideyang ito ng localizing ang iyong code sa isa partikular na seksyon. Kaya kung mayroon kang problema, hindi mo gusto Mayroon upang pumunta sa lahat ng dako ang iyong code sinusubukan upang maayos kung saan ang problema ay. Kaya sa kasong ito, naipatupad ko Cube mali. Naisip kong kubo ay multiply sa pamamagitan ng tatlo. Kaya sa kasong ito, ito ay isa sa programa na lamang ay multiply sa pamamagitan ng tatlong sa lahat ng dako. At doon ay isa pang programa na may isinasali kubo out sa isang function. At kaya ngayon kung gusto ko upang ayusin ang aking mga pagkakamali dito, mayroon akong upang ayusin ang bawat solong linya ng code sa programang ito. Sapagkat sa kabilang banda, kung gagamitin ko ang function, kailangan ko lang upang baguhin kung ano ang mali sa isang lugar. Kaya sa computer science, namin tumawag input at output. Input ay tinatawag na mga parameter o argumento, at output ay tinatawag na bumalik halaga. At kami ay makita kung paano ito ay tumutulong sa amin uri ng tukuyin ang isang function sa isang segundo. Kaya ito ay isang kahulugan ng function para sa cubing. Kaya ito ay tumatagal ng isang input, at pagkatapos ay ito ay nagbabalik na beses numero mismo ng tatlong beses. Kaya hayaan masira ni ito pababa. Kaya mayroon kaming isang header ng function, na talaga ay binubuo ng tatlong bagay. Kaya mayroon kaming ang mga parameter, na ay, tulad ng sinabi ko dati, ang input sa function na ito. At pagkatapos ay bigyan kami ang pag-andar ng isang pangalan. Sa kasong ito, ito ay tinatawag na kubo. At pagkatapos ay tukuyin natin kung ano ang uri ng halaga return ay. Kaya sa kasong ito, ang aking kubo ng function tumatagal sa isang integer at ito rin nagbalik isang integer. Kaya kung pumasa ako sa dalawang, dalawang ay isang integer, nagbalik ito walong sa akin, na ay isang integer. Kaya bumalik pangalan ng uri ng parameter. Mga tanong tungkol sa na? At pagkatapos ay ang halaga ng pagbabalik ay ang tunay tinukoy sa dulo ng sinasabi ng pagbalik at pagkatapos ay bumabalik kahit anong Naglalaman ang halaga return. Kaya sa kasong ito, kung ilalagay namin ang lahat ng ito magkasama, isang function tumatagal sa mga parameter, ito ay tinatawag na isang bagay, at nagbalik ito ng isang bagay na ay ang uri na sabihin namin ito ay pagpunta sa maging. Ang anumang mga katanungan? Kaya paano ko gagamitin namin ang isang function? Well, sumulat kami ng isang function at pagkatapos ay ginagamit namin ito sa aming programa, tama? Kaya tinatawag ko itong kubo, at Pagkatapos ay maaari ko bang gamitin ang kubo. Ngunit kung ano ang mahalaga na tandaan ay ang mga bagay na order. Kung mayroon akong kubo sa ibaba pangunahing, ito ay pagpunta upang tumakbo sa kubo. At sa puntong ito, walang ay tinatawag na kubo sa programa, at ito ay lamang ng pagpunta sa maging tulad ng, mayroon akong walang ideya kung ano kubo ay. Kaya ito ay magsasabi sa iyo, implicit deklarasyon ng function. Iyan ang error na nagpapakita up. At kaya sa kasong ito, kubo ay sa ibaba pangunahing, kaya hindi pagpunta upang malaman ang tungkol dito. Tagapagsalita 5: Kaya pangunahing ay karaniwang tinukoy sa huling pag-andar? Joseph: Kaya ang tanong ay, ay pangunahing karaniwang ang huling bagay na nais mong tukuyin? At hindi. Ito ay dahil karaniwan naming i pangunahing upang maging sa tuktok, i-right? Dahil iyon ang unang bagay na sa iyo gusto pagbubukas ng programmer ang programa upang makita. At kaya paano ko malutas namin ang isyung ito ng namin Gusto pangunahing upang maging sa tuktok, ngunit ang mga function na gusto namin, gusto namin sa kanila upang maging pangunahing ibaba pa magagawang magamit ang mga ito sa loob ng main? Well, ginagamit namin ang tinatawag naming isang function prototype. Kaya kung ano ang isang function ng prototype mahalagang ay ay unang ito ay tumatagal ng kung ano ang lagda o header ng function ng kung ano ang gusto naming ipatupad pababa dito, at ilalagay namin ito sa ang tuktok ng isang programa. Kaya sa kasong ito, sinasabi namin na, mahusay, mamaya sa sa aming programa, kami ay pagpunta upang gumawa ng pangako na ipapatupad ito function na tinatawag na int kubo, na tumatagal isang integer input. Kaya ngayon, dahil iyon ay sa itaas main, pangunahing, ito ay pagpunta sa sabihin, oh, mahusay, mamaya sa programa, na magiging may kaya ang maaari kong sumangguni sa ito, kaya idedetalye ko ipaalam lamang ito pumunta sa pamamagitan ng para sa ngayon. At pagkatapos ay sa ibaba, ipatupad naming kubo. At pagkatapos ay pangunahing ay lamang sabihin, well, ito uri-uriin ng link ang dalawang mga simbolo magkasama. At tatalakayin namin kung ano na Ibig sabihin sa susunod. At kaya magkakaroon ito ng malaman na ito ay ang kubo ng function na dapat ito gamitin. Rob: Ang [hindi marinig] tungkol sa kinakapos pangunahing sa ibaba o tuktok, nakita ko na pareho. May mga bagay na gusto lamang upang ilagay ang pangunahing sa ibaba. Ngunit minsan ay makakakuha ng isang proyekto lalo malaki, kadalasan pangunahing ay nasa isang maghain lahat ng sarili nitong. At sa puntong iyon, tulad ng int kubo linya ng ginagawa - sa loob ng stdio.h ay isang bungkos ng mga linya tulad lamang na int kubo int linya ng pag-input. At gayon mga modelo ikaw ay bagay ay may posibilidad na ilagay sa header ng file, sa na punto, hindi mahalaga. Well, hindi mahalaga. Yaong laging pumunta sa tuktok. At kung ang pangunahing ay hindi isang file sa lahat ng sarili nitong, hindi mo kailangang mag-alala tungkol sa paglalagay indibidwal na function ng modelo sa file. Joseph: At susuriin namin na ang isang maliit na bit mamaya kapag Rob ay nagsisimula pakikipag-usap tungkol sa kino-compile. At kaya mayroon ding isang pagkakaiba sa pagitan ng mga parameter at argumento. At parameter ay lamang kung ano tinatawag naming mga input kapag tinutukoy namin ang function. At tinatawag namin itong isang argumento kung kailan namin talaga pumasa ito sa function. Kaya sa kasong ito, ito ay isang parameter, tulad ng sinabi namin bago. At kapag talaga naming gamitin ito banda roon, kubo ng x, pagkatapos ay x mismo ay kung ano ang tinatawag naming argumento sa pagpapaandar na kubo. Rob: Kaya argumento parameter ay - may pagtatangi ito, napaka lito ng salitan. Sa puntong ito, sa akin, ito ay tulad ng isa sa mga mga salitang iyon na kapag nakikita ko ito sa ang ligaw, hindi ko maaaring makatulong ngunit agad tanong kung ginagamit nila ito sa ang tamang konteksto, dahil ang pagkakaiba ay sapat na banayad na lamang lahat ng tao ay may gawi - Halos palagi kong sabihin argumento walang kinalaman sa kung ano ang ibig sabihin ko. Joseph: At function ay kapaki-pakinabang din para sa kung ano ang tinatawag naming side effect. Kaya maaaring tumagal ng isang function walang input, at ito rin ay makagawa ng walang output. Kaya sa partikular na kasong ito, Ako pagtukoy sa isang subroutine na ay walang bumalik halaga. At upang tukuyin na, ginagamit namin ang tinatawag naming isang walang bisa sa paglipas dito. At kaya ang epekto ng pag-andar na ito ay na prints lang ito bagay-bagay out sa pahina. Ito ay hindi tunay na gumawa ng anumang input, at hindi talaga makagawa ng anumang output. Ngunit maaaring ito ay kapaki-pakinabang sa kamalayan kung gusto mong, halimbawa, mag-debug isang bagay sa iyong programa, kung nais mong magsulat ng isang maliit na subroutine na Pini-print out, sabihin nating, ang mga nilalaman ng memory o ng isang bagay. At kaya ang mga side effect ay minsan kapaki-pakinabang sa labas ng konteksto ng gusto lamang input at output. Ang anumang mga katanungan? At upang wakasan ang partikular na segment, kung ano ang ginagawa ng programang ito? Bibigyan kita ng guys ng dalawang segundo upang basahin sa pamamagitan nito. Sa isang napaka-basic na antas, kung ano ang gusto naming sabihin ay tumutulong ito sa swaps x at y, tama? Kaya kung gaano karaming ng iyong aktwal na sa tingin ito ay magpalit x at y? Itaas ang iyong kamay. Walang isa. OK. Sino sa palagay na habilin ito hindi magpalit x at y? At ang kabuuan ng na noon ay hindi ang buong kuwarto. Kaya ang ilang mga tao ay hindi sigurado. OK. Iyon ay makatwirang. Kaya sabihin pumunta sa pamamagitan ng kung ano ang mangyayari kapag talaga kang tumawag muna function sa Upang sagutin ang tanong. Kaya ito ay kung ano ang memorya uri ng kamukha. Ito ay uri ng tulad ng isang pinasimple na modelo ng kung ano ang hitsura ng memorya tulad ng kapag patakbuhin mo ang isang programa. Kaya mayroong isang bagay na tinatawag na ang stack down na dito at isang bagay na tinatawag na ang magbunton. At ang mga lumaki patungo sa sa gitna ng memorya. Kaya sa partikular na kasong ito, kapag mong tawagan ang isang function, ito ay makakakuha ng ilagay sa stack. At pagkatapos ay ang anumang nakapaloob sa na function na ay mananatili sa kung ano ang tinatawag naming na stack frame function na ni. At kaya upang makakuha ng isang maganda ang visualization ng ito, let's - halimbawa, nagkaroon kami ng pangunahing programa ng mas maaga. At sa loob ng main, na tinatawag naming kubo. Kaya pangunahing nais pumunta muna sa stack i-frame, dahil ito ay ang unang pagpapaandar na tinatawag. At pagkatapos ay kapag kubo ay tinatawag na sa loob ng pangunahing, maipo ilagay sa tuktok ng pangunahing sa loob ng memorya. Kaya kung ano ang mapapansin mo dito ay na kubo May sariling mga parameter at nito sariling lokal. Kaya kapag aktwal mong pumasa sa isang bagay sa isang function, ang mga parameter na ito ay makakakuha ng mga kopya ng kung ano ang pumasa sa mga in mula sa pangunahing. At sa uri ng ipaliwanag ito, sabihin maglakad sa pamamagitan ng isang programa. Kaya mayroon kami ng stack; ito ay lamang ang bahaging stack. At ano ang ginagawa namin ay muna namin ang pagsisimula ng pag- x at y sa isa at dalawa. Kaya mayroon kaming mga maliit na mga kahon. Sila ay naka-upo sa stack pangunahing ni i-frame sa stack. Naglalaman ang mga ito ng isa at dalawa. Ngayon tinatawag naming magpalitan. Ano ang mangyayari ay pumasa namin x at y sa magpalitan, at magpalitan lumilikha ng sarili nitong mga kopya ng mga variable na gamitin ang loob ng stack na frame nito. Kaya ngayon banda roon, mayroon kaming, na Naglalaman ang halaga na x nagkaroon; at b, na naglalaman ng halaga na y nagkaroon. Kaya isa, dalawa. At mapapansin mo na ito ay hiwalay mula sa x at y sa loob ng main. Kaya't lumikha kami ngayon ng pansamantalang variable upang maglaman ng isang. Itinakda namin ang isang katumbas ng b, kaya ito pagbabago 1-2. At pagkatapos ay itakda kami b kapantay sa Temp, na kung saan ay isa. At pagkatapos ngayon lumabas out namin ng ito function. Kapag lumabas ka na ng mga pag-andar, ang stack frame ay makakakuha ng pop-off ang stack. Tinatawag namin itong itulak. Itulak ka ng isang stack frame papunta sa stack at mga pop mo kung off ang stack. At kaya kung ano ang mangyayari ay lahat ng bagay na ay nasa stack na frame uri ng lamang napupunta up sa apoy. At nang sa gayon ay hindi na umiiral. Ngunit ano ang napansin namin? Hindi namin talaga nagbago ang mga halaga ng x at y, tama? Kaya mga nagtutulog lokal sa main. At sa pamamagitan ng pagpasa ng mga bagay sa swap, namin talagang hindi kailanman nagbago mga halaga iyon. At ano ang tinatawag naming ito? Tinatawag namin itong nagdaraan sa pamamagitan ng halaga. Kaya sa C, kapag kayo na ipasa ang mga bagay sa mga function, ito ay ipinapasa sa kanila sa pamamagitan ng halaga at gumagawa ng isang kopya ng mga ito para sa ang pag-andar gamitin. At ipapakita namin malaman ang tungkol sa isang bagay na tinatawag na ang pagpasa sa pamamagitan ng reference sa ibang pagkakataon, ngunit iyan ay isang paraan na maaari mong malutas ang problemang ito. Ngunit hindi namin mag-alala tungkol sa na hanggang mamaya. Rob: At talagang, ang term na iyon, nagdaraan sa pamamagitan ng reference, kaya C hindi kahit na mayroon ang ang pagpasa sa pamamagitan ng na tumutukoy sa. C eksklusibo ay ang pagpasa sa pamamagitan ng halaga. Anuman ang gagawin mo, ikaw ay palaging pagpasa ng isang kopya ng isang bagay. Ito ay lamang na, tulad ko maisasa-ayos ng nabanggit na bago na may mga payo at na ang isang string ay talagang lamang apat Bytes na tumuturo sa isang lugar na naa sa memorya. Well, kung mayroon akong ang string na ito at ito ay na nagsasabi sa akin na kung saan ang string - well, kung mayroon akong ito pointer upang ito ilagay sa memory, pagkatapos ay maaari ba akong magpasa ng isang kopya ng na pointer sa isang function, at alam pa rin na function na kung saan sa memory ito ay. Kaya pareho sa mga payo ay tumuturo sa parehong lugar sa memorya, at na kung paano kami ay pagpunta sa magagawang na baguhin ang mga bagay na higit sa kasalukuyang stack frame. Joseph: Huwag gusto mong gawin kino-compile? Rob: Hindi, ito ay 05:30. Joseph: OK. Ito ay 05:30. OK. Kaya magkakaroon kami masakop ang kino-compile ang hulaan ako sa ang susunod na seksyon, o ang iyong seksyon lider habilin sa puntong iyon. At - Rob: Anumang mga katanungan? Joseph: Anumang mga katanungan? Oo? Tagapagsalita 5: Ang paggamit ng mga string mula sa CS50, anumang mga pag-andar na gusto naming gamitin para sa mga, na makikita na tulad ng C function. CS50 ay hindi nawala sa at gumawa ng anumang karagdagang. Rob: Tamang. Anuman sa mga C tulad ng [hindi marinig], mo ang maaaring gamitin ng mga nasa aming mga string. Joseph: At isa huling bagay na gusto kong pagbanggit ay mayroon kaming isang gabay sa istilo para sa class na ito. Rob: Oh, oo. Joseph: Kaya kung nag-ay nagmula sa isang mga programa ng background bago, mo maaaring mayroon ilang mga convention kapag sumusulat ka ng code tulad ng paglalagay ng tirante sa parehong linya o partikular na paraan ng pag-indent o pagbibigay ng pangalan sa iyong mga variable. Sa klase na ito, gusto naming sundin ang isang tiyak na gabay sa estilo dahil lamang, well, kung pumunta out at magtrabaho sa industriya, ikaw ay pagpunta sa inaasahang upang sundin ang mga estilo gabay ng kumpanya kung saan pumunta ka sa. Tulad halimbawa, Facebook palagay ko May isang partikular na uri ng pagbibigay ng pangalan convention. At mayroong mga pagkakaiba sa pagitan ng kamelyo mga variable ng casing at tulad lamang naghihiwalay sa kanila na may mga underscore. At din, sa tingin ko pinaka-mahalaga, tulad ng halimbawa, indentation, tama? Namin simulan ang kulot tirante kung saan ang kundisyon ay, at sila ay sa susunod na linya. At naming ilagay din kulot tirante sa kahit na ito ay lamang ng isang linya. At ng maraming beses, may mga paraan upang magawa nito kung saan maaari mong iwanan ang mga tirante off kung ito ay lamang ng isang linya sa ilalim ng Kung statement. Ngunit sa class na ito, gusto naming sundin ang isang tiyak na gabay sa estilo lamang kaya makakakuha ka ng ginagamit upang na uri ng bagay. Rob: Oo, at Estilo 50 ay pagpunta sa ipatupad ang gabay na ito ng estilo, at kami ay pagpunta sa gumamit ng Estilo 50 sa grado ang iyong code. Kaya ginagawang mas madali ang mga bagay para sa atin at sana ay hindi dapat gumawa ng mga bagay na magkano ang mas masahol pa para sa iyo na nabigyan ng style Standardized hindi dapat na hindi makatotohanang. Joseph: At sa wakas, upang mahanap ang estilo Gabay, pumunta sa manual.cs50.net/style. At oo. Tagapagsalita 4: Sigurado ka ng pagpunta sa ipatupad anumang mga character sa bawat linya? Rob: Oo. Joseph: Paumanhin, guys. Rob: Iyan ay tulad ng isa sa mga lamang bago. Sa puntong ito, ako ay OK na may 120. Ako OK may sinasabi 120 mga character sa bawat linya. Nauunawaan ko doon sa pagiging ilang mga limitasyon. Sa tingin ko 80 ay kaya maliit, ngunit kami ay pagpapatupad nito. Joseph: na personal, sa tingin ko ang C, 80 character ay mas OK. Sa sandaling simulan mo ang pagkuha sa iba pang mga mga wika tulad ng JavaScript at PHP, hindi kaya makatwirang upang limitahan lamang ito sa 80 character. OK. Well, na noon ay ang sukdulang seksyon. Gusto kendi ba? Tagapagsalita 4: Oo.