[MUSIC nagpe-play] Jason HIRSCHHORN: OK, sa lahat. Maligayang pagdating sa Section. Ito ay CS50, ang aming napaka unang super section. Bilang mo ang lahat ng alam, sa susunod na linggo regular na mga seksyon ay magsisimula, ngunit ito linggo ay ang lahat ng sama-sama namin. May sarili ko. Ang pangalan ko ay Jason. Ako lecturer in Computer Science. Mayroon kaming Andi, kung sino ang mga ulo TA ng CS50. At Scaz, Propesor Brian Scassellati, siya ay isang propesor sa Computer Science. Kami ang CS50 ulo sa Yale. Maaari mong palaging i-email amin heads@cs50.yale.edu. Kami ay magiging sa aralin. Babalik kami sa oras ng opisina. Kung may kailanman ang anumang bagay na aming makakaya gawin para sa iyo, kahit ano ang kailangan mo, huwag mag-atubiling makipag-ugnay sa amin. Kaya ano pa ang gagawin natin ngayon? O bago at pagkatapos ay, kung ano ang pagdating up sa linggong ito? Kaya mga oras ng opisina ay Lunes, Martes, Miyerkules, at Huwebes, 8:00-11:00. May isang iskedyul sa website. Seksyon, tulad ng nabanggit ko, ay nagsisimula sa susunod na linggo. At makikita mo malaman kung this week kung ano oras ang iyong mga seksyon ay, kung ano ang araw na ito ay, at kung sino ang iyong TA ay. Dahil sa Huwebes sa Problema Set 1 ay tanghali, Biyernes sa tanghali sa isang huli-araw. Oo, mayroon kang siyam late araw. At mayroong siyam na hanay ng problema. At maaari lamang gumamit ng isang late araw per set problema. Oo, sa katunayan, ang lahat ng problema set ay dahil Biyernes sa tanghali. Yun lang. Lahat na mga detalye ay sa syllabus. Tuwing Biyernes, kami ay may tanghalian. Gusto naming gawin ito ng malaking Siyempre pakiramdam ng isang bit mas maliit. Kaya ikaw ay malugod na tinatanggap na mag-RSVP. Libreng lunch sa kapwa kaklase at staff. cs50.yale.edu/rsvp. Lahat ng mga bagay na Mayroon akong sa screen, at higit pa, maaari mong mahanap ang cs50.yale.edu o cs50.harvard.edu, kung pumunta ka sa Harvard at ang mga nanonood na ito online. Gayundin sa mga website na iyon, may isang tonelada ng mga mapagkukunan para sa iyo. Tuwing lecture hindi lamang ay ang video ng panayam, ngunit din ang mga tala. Isang tao ay panoorin ang magbigay ng panayam at kumuha ng mga tala para sa iyo. Kaya maaari mo lamang magbayad pansin sa panahon ng mga aralin, o maaari mong gamitin ang kanilang mga tala / aming mga tala para madagdagan ang iyong sariling mga tala. May mga slides online. Ang source code-- lahat ng bagay David napupunta sa ibabaw sa panayam, o Scaz napupunta sa paglipas ng panayam, na source code ay magagamit sa online pati na rin, tulad ng gusto ko, nabanggit na video. Seksyon, gayon din naman, ang lahat ay kinukunan. Ang lahat ng mga slide ay magagamit. Ang lahat ng na code ay maging available para sa iyo. May mga shorts sa website na kung saan ang Gastusin miyembro ng kawani CS50 lima hanggang 10 minuto ang pagpunta sa pamamagitan na mga paksa para sa iyo. Ang ilan sa mga na sa iyo na Nakatagpo sa hanay ng problema. Office oras, tulad ng nabanggit ko, Lunes sa pamamagitan ng Huwebes, 8:00-11:00. CS50 Study ay isang hindi kapani-paniwala mapagkukunan. May mga problema sa pagsasanay, sample ng mga slide, mga kilalang bug na mga mag-aaral ay nais na tumakbo sa, para sa mahalagang bawat naming topic sasaklawan sa kursong ito. At sa wakas, sa slide na ito hindi bababa sa, Reference50 na kung saan ay nagbibigay sa iyo ng impormasyon sa lahat ng mga function C maaari mong kailanman marahil asa gamitin at marami, marami pa. Muli, na tuldok tuldok tuldok sa sa ibaba ng screen ay upang ipahiwatig na mayroong kahit mas maraming mga mapagkukunan sa mga dalawang mga website: cs50.yale.edu, cs50.harvard.edu. Kaya, kung ano ang ginagawa namin ngayon? Well, unang pupuntahan ko upang bigyan pagtingin mo ang mga resources. Ginagamit mo na ginawa na ang isa. Hanapin sa amin. Ngayon, kami ay pagpunta sa pumunta sa paglipas ng uri ng data at mga operator sa C. Pagkatapos Andi ay lumapit dito at pumunta sa aklatan sa C, Printf (), isang function na kung saan ikaw ay pamilyar o ay mabilis na naging napaka pamilyar. At makikita mo ring pumunta sa paglipas ng conditionals at mga loop. At pagkatapos ay sa wakas, Scaz ay pumunta sa ibabaw ng CS50 ID. Kung hindi mo pa kalapati in mayroon na sa Problema Set 1, pati na rin ang kung paano gamitin ang terminal at kapaki-pakinabang na command at pagkatapos ay magbigay sa iyo ng ilang mga demo at practice coding sa CS50 ID. Bago ako sumali na ito nilalaman sa dakong ito, ay kahit sino ay may anumang mga katanungan sa ngayon? Great. SIGE. Ang pagpapalit ng gears. [Pagbabago ng Gears] Iyon ay sa akin paglilipat gears sa isang manu-manong sasakyan. Uri ng data sa C, maaari mong hindi lamang magkaroon ng So isang variable x at mayroon itong on line 10, isang integer, marahil ang number 1, on 20 linya, isang decimal na numero 10.5, at pagkatapos ng ilang mga linya mamaya isang string, pag-ibig ko CS50. Sa C, variable ay maaari lamang maging isang bagay, at isang bagay lamang. At kaya kailangan mong bigyan ang mga ito ng mga uri. At sa board na ito, kami magkaroon ng isang listahan ng mga uri. May mga karakter, na kung saan tumayo para sa character. Kaya na isang titik A, B, C, D. Iyon ay maaari ding maging isang puwang, o na maaari ring maging ng isang bagong linya ng character. May mga integer, na kung saan ay lamang numero, buong Numbers o integer rather-- ngunit walang decimal. Para sa mga desimal, kami ay lumulutang point numero. Lumulutang numero point mga numero sa decimal. Pagkatapos ay may mga longs, na kung saan ay mahalagang na integer. Mapapansin mo na ang isang mahabang ay 8 kung saan ang isang int ay 4. Magagawa ko na sa na sa isang segundo. Ito ay dahil maaaring tindahan kahit longs higit pang integers kaysa sa isang int maaaring tindahan. Double ay isang matagal na float. At sa wakas, kami ay string, na kung saan ay isang uri na iyong ginagamit marahil bago. Kung nagsama ka ng hashtag # includeCS50.h sa iyong source file, pagkatapos ay maaari mong gamitin ang isang uri ng string. Ito ay hindi tunay na binuo sa C. May ilang iba pang mga uri rin. Ngunit ang mga ito ay ang punong-guro ang mga may na gagamitin mo at makatagpo. C bilang, muli ng nabanggit ko, bawat variable-- ito maaari lamang maging isang uri at isang uri lamang. Ito ay dahil C ay isang statically nag-type sa wika, bilang kabaligtaran sa dynamic na-type na wika kung saan kung lumikha ka ng isang variable maaari mong baguhin kung ano ang naka-imbak sa ito bilang ka pumunta sa sa iyong programa. Sa paglipas dito sa kanang kamay side, ako ang iba't ibang mga laki ng mga uri ng data sa bytes. Kaya ang isang karakter ay 1 byte. Iyan ay 8 bits. At nangangahulugan na dahil 8 bits may walong 0s at 1s. Nakita namin ang mga demo sa unang linggo na may na binary na mga bombilya. Sa 8 bits o 1 byte, maaari naming kumakatawan numero mula 0 hanggang 255. Right. Kung ang lahat ng 8 bits ay 0 na 0. Kung ang unang bit ay 1, na ang mga numero ng isa, at iba pa, ang lahat ng mga paraan ng hanggang sa 255. At iyon ang dahilan kung bakit para sa mga character na maaari mong may mahalagang hanggang sa 255 sa mga ito, ngunit iyan ay maraming upang masakop ang lahat ng ang mga character na kailangan namin upang gamitin. Para integer, maaari kang magkaroon ng 0 at pagkatapos ay mayroon kang 2 sa 32 minus 1. Ang mga ay kung gaano karaming mga opsyon mayroon kayo para sa integer. Para sa isang mahaba, mayroon kang 0 sa 2 sa 64 minus 1. Kaya ikaw ay may maraming, maraming, higit pang mga pagpipilian para sa longs. String, na ang isang tandang pananong dahil iyon ang isang cliffhanger para mamaya. Oo. Maaari ko bang sabihin sa lahat ng tao ay sa gilid ng kanilang mga upuan, tulad ng kung ano ang na question mark? Ito ay isang cliffhanger. Kami ay huli masakop ang laki ng string at makipag-usap nang higit pa tungkol string. Dahil string ay talagang ang isa sa mga gulong ng pagsasanay inilalagay namin sa sa kurso sa simula at pagkatapos ay mag-alis sa ibang pagkakataon on, dahil string sa C mga tunay na mga payo na karakter array. Subalit muli, na ang isang cliffhanger para mamaya. Bago ako lumipat sa anumang mga katanungan, Tingnan ang mga komento, mga alalahanin tungkol sa mga ito slide? SIGE. Ako dapat ay isang hindi kapani-paniwala explainer. Gayundin kapag ikaw ay programming, ikaw ay pagpunta sa gamitin ang mga operator. Talagang simpleng mga palatandaan na maaaring gawin simple operasyon, na kung saan ikaw ay malamang na tunay na pamilyar. Halimbawa, sa kanan hand side, nakita namin idagdag. Upang magdagdag, gawin mo lamang ng isang sign Plus. At kaya maaaring ikaw ay dalawang variable x at y. Maaari mong gawin x + y sa iyong code. Siguro gusto mo to-- sinasabi mo may number 7 and 3, nais mong iimbak na sa kabuuan ng isang variable na tinatawag na. Maaari mong gawin int para sa uri, space sum, ang pangalan ng variable, = 7 + 3; Ano ang gusto na tindahan sa kabuuan? Kahit sino? Kung ako sa sum = 7 + 3. Ano ay naka-imbak sa sum? Maaari mong i-shout lang ito. Madla: 10. Jason HIRSCHHORN: 10! Iyon ang akmang-akma. Ano ang tungkol sa sum = 7 - 3, Gamitin ko na lang na mag-sign dash. Ano ang pagpunta sa ay naka-imbak? Madla: 4. Jason HIRSCHHORN: 4. Sum ay marahil sa maling pangalan para sa variable na iyon, ngunit 4 ay naka-imbak. Upang i-multiply sa C, gamitin ang maliit na Star character, hindi ka gumagamit ng isang x. Upang hatiin, gumamit ng isang Ipasa Slash hindi ang simbolo ng dibisyon. At upang modulo, gamitin ang simbolo Porsyento. Kaya sabihin natin na gusto kong makita int z = 7% 3, ano ang naka-imbak sa z? Kaya, na mahalagang nagtatanong kung ano ang modulo gawin? Ay kahit sino malaman kung ano ang ginagawa modulo? Oo. y 4. Tagapagsalita 1: Ito ay ang mga natitira. Jason HIRSCHHORN: Ito ay ang mga natira kapag hatiin mo. Kaya 7 hinati sa 3 ay 2 natitira 1. Kaya 1 ay naka-imbak. Ginawa mo ang pagbabawas, ngunit na kung paano ito gumagana. Iyon ay kung ano ang ginagawa ng modulo operator. Ito ay tumatagal ng isang bilang naghihiwalay ito sa pamamagitan ng isa pang numero at babalik sa iyo ang natitira. Kaya muli, 7% 3 ay nagbibigay sa iyo ng 1, dahil 7 hinati sa 3 ay 2 natitira 1, at nagbalik ang natitira. Ano ang tungkol sabihin bumalik up isang hakbang sa na mag-sign division. Kung ako 7 / hinati sa 3 ay kahit sino malaman kung ano na nais bumalik? Tagapagsalita 2: 2. Jason HIRSCHHORN: Bakit 2 at hindi 2.333? Tagapagsalita 2: Sa tingin ko ito ay mapuputol off pagkatapos ng whole number. Jason HIRSCHHORN: So na akmang-akma. Sa C, kung wala ka dibisyon ng dalawang integer 7 hinahati sa pamamagitan ng 3, ito ay makakakuha ng mga sagot na sa kasong ito 2.3333 magpakailanman at nahahanap nito na decimal point at chops off ang lahat pagkatapos ng decimal at nagbalik ka ito lamang 2. Kaya kung ako ay 8 na hinati sa pamamagitan ng 3. Na talaga, alam namin na upang bumalik 2.666, ngunit chops ito ang lahat ng bagay off sa decimal, truncates lahat ng ito, at nagbabalik lamang sa iyo 2. So 6 na hinati sa 3, 7 hinati sa pamamagitan ng 3, 8 na hinati sa 3, ay lahat ng pagpunta upang bumalik sa iyo 2. Alam ba ng sinuman, o magkaroon ng isang hulaan, bilang sa kung paano maaari ko talagang makakuha ng ang buong sagot kung gusto ko na decimal? Oo. Sige lang. Tagapagsalita 3: Gumamit ng float? Jason HIRSCHHORN: Anong ibig mong sabihin? Tagapagsalita 3: Dahil sinabi mo ang float ay para sa mga numero ng [hindi marinig] Jason HIRSCHHORN: Karapatan. Kaya, na akmang-akma. 7 ay isang integer. Ngunit kung nais kong i-na sa isang lumulutang point numero, Gusto ko bang mag-imbak na bilang 7.0 dahil ang computer ay talagang stupid-- nakita natin na sa PB at J example-- ito ay gagawin lamang kung ano sabihin mo ito. Kaya't kung ikaw ay sumulat ng 7, ito isipin na ang isang integer. Kung isulat mo 7.0, kahit kami malaman ang mga bagay na ito ay katumbas, itinuturing ng mga ito na tulad ng isang lumulutang point numero. Kaya kung ginawa mo 7.0 hinati sa pamamagitan ng 3, o hinati sa 3.0, ay ito sabihin, OK, ngayon kami ay pagharap sa kamay. Babalik ako sa iyo 2.333333 magpakailanman. Ngunit hindi talaga magpakailanman, dahil tulad ng nakita natin din sa mga panayam, mga lumulutang point numero ay hindi eksakto tumpak. Kaya kung gagawin mo nais na decimal, o isang bahagi ng na decimal, pagkatapos ay kailangan mong use-- isa sa mga ito ay maging isang lumulutang point numero at ang computer ay upang maunawaan na ito ay isang lumulutang na tuldok ikaw pagharap sa, hindi isang integer. Ang anumang mga katanungan sa table na sa kanang bahagi, sa ngayon? O iyong kaliwang bahagi, ang iyong kaliwa, ang iyong kaliwang bahagi. Oo. Tagapagsalita 4: Karapatan. Para sa gusto lamang ng isang regular integer, gusto mo write-- ay mayroon kang magsulat ng float? Jason HIRSCHHORN: Oo kaya. Well, kung nais mong lumikha ng isang variable na ang isang float, kailangan mong sabihin float z katumbas ng isang bagay. Tagapagsalita 4: OK. Jason HIRSCHHORN: Ngunit kung nais kong gawin 7 hinati sa 3 at makakuha ng na decimal, Gusto kong gawin float z = 7.0 / sa pamamagitan ng 3.0; at na bigyan ako ng lumulutang point number. Tagapagsalita 4: OK. Jason HIRSCHHORN: Kung ako isang bagay tulad ng int z = 7 / pamamagitan ng 3, na bigyan ako ng isang integer, dahil ang mga ito ay ang lahat ng mga integer. Ba na magkaroon ng kahulugan? Tagapagsalita 4: Oo. Jason HIRSCHHORN: OK. Great. Anumang iba pang mga katanungan tungkol sa table na? Talaga? Ako kaya nasasabik. SIGE. Kaya ang ilang iba pang mga bagay na iyong gagamitin, malimit sa mga kondisyon o loops, ay ang mga uri ng operators-- ang mga uri ng Boolean expression. At bilang namin natutunan, == ay kung ano ang gamitin upang suriin kung ang dalawang mga bagay ay pantay. Kaya dito ako check kung x == y, sabihin muli ipalagay na x ay 7 at y ay 3. Kaya kung sinulat ko 7 == 3, kung ano Gusto na bumalik sa akin? Tama o mali ba iyon? Madla: Mali. Jason HIRSCHHORN: OK. Pakiramdam ko ay tulad ng lahat ng tao ay maaaring makakuha ng isang ito. Kaya lahat ng tao, kung ano ang nais bumalik na? Madla: Mali. Jason HIRSCHHORN: Mali. Great. 7 ay hindi katumbas ng 3. Kaya 7 == 3 ay bumalik false. Ikaw ay walang hindi equal sign, kaya kung ako checked 7! = 3, ano ang nais ibalik iyon? Madla: True. Jason HIRSCHHORN: True. Magaling. Isang tao ay napaka-mariin sa sa likod at pinasasalamatan na. Pagkatapos ay mayroon kang mas mababa kaysa sa operator, mas mababa sa o katumbas ng operator, mas malaki kaysa sa operator, mas malaki kaysa sa o katumbas ng operator. Kaya isa pang check katinuan. Kung ako ay 7 ay mas malaki kaysa sa o patas sa 3. Ano ang gusto bumalik na? Madla: True. Jason HIRSCHHORN: True. Oo. Na bumalik room, likod na bahagi ng silid, hindi kapani-paniwala. Maaari mong pagsamahin ang mga expression kung gusto mo, pati na rin, may isang lohikal AT kung saan ay && O isang lohikal na OR na kung saan ay || ||. At kaya ngayon maaari mong subukan ang dalawang bagay together-- Ay na nakakatawa? Bakit na nakakatawa? Kaya kung nais ko, maaari kong sabihin ay 7 mas malaki kaysa sa 3 AT 2 ay mas mababa sa 4? Well, kung 7 ay mas malaki sa 3, na ang totoo. 2 ay mas mababa sa 4, na totoo. Kaya ito buong bagay ay nagbabalik ng tunay. Kung nasubukan ko 7 ay mas malaki kaysa sa 3 at- Lamang ako ng pagpili ng random na numero here-- 4 ay mas mababa sa 2, well, na hindi totoo. Kaya tunay at huwad na make false. At maaari kang pumunta sa at pagsamahin mo bilang maraming mga kondisyon sama hangga't gusto mo. Kahit sino ay may anumang mga katanungan ba, Tingnan ang mga komento, mga alalahanin sa ngayon? At nakikita ko ang ilan sa iyo pagkuha ng mga larawan sa akin sa screen, na pinasasalamatan ko. Sana, ito ay hindi Snapchat. Sana, ito ay para sa iyong mga tala. Ngunit lahat ng mga ito ay pagpunta na magagamit online. Kaya hindi mo na kailangang kumuha ng larawan ng mga ito. Tulad ng aking nabanggit, ang lahat ng bagay Magiging available online para sa iyo. SIGE. Ako ay tungkol sa upang makakuha ng offstage, sa gayon ay kahit sino nais na sabihin ang anumang bagay bago nangyari iyon? Mga tanong? [INTERPOSING tinig] Jason HIRSCHHORN: Oh, itigil. Ikaw guys ay masyadong nice. SIGE. Pupunta ako sa tag out. Halina't. ANDI PENG: Kami ay pagpunta sa gawin isang mahirap na mic pagbabago ngayon. Jason HIRSCHHORN Ako pagpunta sa gawin ito off. ANDI PENG: Pinahahalagahan ang suporta, guys. Naririnig mo ba ako? Mabuti ba iyon? Perpekto. Maganda. Hayaan singitan lang sa akin na sa. SIGE. Kaya, ako ay tungkol sa gawin tulad ng isang higanteng impormasyon tambakan ng basura sa iyo guys ngayon. At huwag mag-alala kung ano pa man kung ikaw ay hindi sumusunod sa bawat maliit na linya ng kung ano Ako ay tungkol sa upang ipakita sa iyo. Tulad ng sinabi Jason, ang lahat ng bagay ay ganap na online. Basta kami ay pagpunta sa subukan na ipakilala lahat ng tao sa mga konsepto sakop sa ilan sa mga slide. Kaya sundin lamang ang kasama. Huwag mag-alala kung hindi mo maintindihan lahat ng bagay; gayunpaman, kung sa anumang punto sa tingin mo ay nawala, taasan ang iyong kamay, ititigil namin, walang alalahanin. Cool. Kaya sa tingin ko ng isang bagay na David ay may na uri ng nabanggit sa panayam at Jason ay may uri ng alluded sa araw na ito ay kung ano ang isang library ay. Kaya sa programming, kami ay mga bagay na ito na tinatawag na mga aklatan. Saan, mahalagang, ang lahat ng mga ang mga ito ay ay lamang ng isang set ng pag-andar, na mahalagang lamang code na nai-nakasulat sa pamamagitan ng may ibang tao na maaari naming ang lahat gamitin sa loob ng aming programa. Kaya kung paano gumagana ang isang normal na trabaho library, di ba? Ipasok mo ang pinto ng library. Mayroon kang lahat ng mga mga libro na maaari mong pull out at maaari mong ma-access ang impormasyon ng sa loob ng mga libro. Parehong bagay sa programming. Mayroon kang isang library na iyon ay nakasulat sa pamamagitan ng ibang mga tao. At ang paraan na maaari mong, bilang programmer o isang estudyante, maaaring makakuha ng access sa na library ay sa pamamagitan ng hashtag na #include. Halimbawa, sa C namin may tatlong C-- ang pinaka karaniwang ginagamit sa tatlong C standard mga aklatan ang input / output library, ang string library, at ang matematika library. Kaya sa loob ng iyong unang Nagtatakda ang problemang mag-asawa, mga ito ay ang tatlong na lalo na iyong ginagamit. Kaya bilang David na ipinaliwanag sa panayam, ang standard I / O library, o ang standard input / output library ay eksakto na. Ito ay nagpapahintulot sa iyo, sa iyong code, i-input kahit ano mula sa mga gumagamit at output na sa screen, mahalagang pag-print ito sa screen. At kaya anumang oras mong gamitin ang anumang mga pag-andar, halimbawa ang function printf () na kami ay pagpunta upang pumunta sa susunod na slide, siguraduhin na isama ang standard I / O library o iba hindi ka pagpunta sa maaaring gamitin ang function na printf (). Dahil sa iyo, bilang programmer hindi tunay na nagsulat na function, lamang ikaw ay gumagamit ng isang tao code ng iba pa sa loob ng iyong sariling code. Ba na magkaroon ng kahulugan sa lahat ng tao? Cool. At pagkatapos ay namin mahalagang makuha papunta ang string.h library at ang math.h library, h lang nagpahayag library, iba pang mga library na makikita mo sa huli maging ang paggamit sa loob ng iyong code. Gayunpaman, para sa mga layunin ng library, kami din have-- ng class-- ito kami ay mayroon ding ano ang tinatawag na CS50 library, cs50.h, na kung saan namin, para sa iyong pagbasa ay may ginawa maraming mahalaga at kapaki-pakinabang na pag-andar. Kaya ikaw bilang isang programmer maaaring piggyback off kung ano ang aming na nakasulat na upang ang mga function na ito ay magagamit sa iyo para sa iyong paggamit. Kukunin ko ay sumasaklaw ng isang pares ng mga ang mga function karaniwang ginagamit, ngunit alam na ang mga ito ay lahat googleable online. Huwag mag-atubiling, hilahin pataas ang CS50 library at pagkatapos ay mayroon ka ng lahat ng mga function doon. Oo. Tagapagsalita 5: Kaya kung ikaw ay hindi gamit ang software na ay ibinigay sa amin sa pamamagitan ng klase, ginagawa na ibig sabihin gusto naming magkaroon upang i-download at hanapin header na ito maghain ng ating sarili at sabihin sa ang computer kung saan ito? ANDI PENG: Great tanong. Mismong. Kaya ito ay tulad ng kung ikaw ay hindi pisikal na naroroon sa isang library, walang paraan para sa iyo upang talagang pumunta at ma-access ito. Kaya ang parehong bagay sa programming sa C, mo may upang matiyak na ikaw ay gumagamit ng aming appliance dahil ang library ay naka ay nakasama sa mga ito. At pagkatapos nang hashtag sa iyo #include, ang library ni doon. Oo. Magandang tanong. Ang bawat mabuti? Cool. Lahat tama. Kaya kami ay pagpunta sa hit, mahalagang, kung ano ang ang unang function na Bilang namin programmers ay pagpunta sa gumagamit sa loob ng aming code. Ito ay tinatawag na ang function printf (). Kaya, printf () function, gaya ng hindi ko na na sinabi sa huling slide, Kasama sa standard I / O, standard input / output, library. Kaya't tiyakin na ang anumang ka using-- oh, hayaan mo akong mang-agaw ng laser pointer-- tuwing ginagamit mo ang ang printf () function, kailangan mong isama ang standard I / O library o ibang tao, kapag ikaw ay sumulat ng libro, ikaw ay pagpunta upang makakuha ng isang error dahil ang computer ay tulad ng, oh hindi ko alam kung saan printf () ay, Hindi sinasabi mo sa akin kung saan printf () ay. Well printf () ay kasama sa standard I / O, kaya kapag gumamit ka ng printf (), tiyakin na magkaroon ng na line sa itaas ng iyong code. Kaya halimbawa, printf () dito ay isang function. Lahat ng ito ay i-print out ang isang bagay sa loob ng panaklong sa user. Gusto kahit sino ay nais na kumuha ng isang ulos sa kung ano ang linya ng code ng karapatan dito ay pagpunta upang i-print out? Samakatuwid, ang sagot ay sa screen. Kahit sino? VERDI: Ang ibaba. ANDI PENG: Verdi, bakit hindi ka pumunta maaga at sabihin ang buong statement? VERDI: Hello, ang pangalan ko ay Andi, at ako ay 20 years old. ANDI PENG: Ah, lovely. Kaya sa linya na kami ng pagpunta sa i-print out, Hello, ang aking pangalan ay Andi, at ako ay 20 years old, na ay sa katunayan isang tunay na pahayag. Syntax. Kaya ilang syntactic isyu na ka guys nais na tiyakin na alam mo. Quote. Sabihin sa Double quotes ang computer na ang lahat ng bagay sa loob ay pagpunta sa ipi-print. Lahat sa loob lata lamang maging eksakto kung paano type mo ito, maliban sa karaniwang sa dulo, kami ay pagpunta sa nais na isama isang hash-- oh sorry-- ng gitling n. Kaya ang isang dash n. Nais ba ng sinuman na kumuha ng isang hulaan sa kung ano na ang ginagawa sa aming mga code? Oo. Tagapagsalita 6: Naglalagay ito sa isang bagong linya. ANDI PENG: Eksakto. Kaya lahat ng ito ay ay payagan kahit anong mangyayari pagkatapos nito, matapos ang pahayag na ito, na ipi-print sa isang bagong linya. Kaya na kapag ikaw ay sumusulat ng iyong code hindi mo sapalarang magkaroon ng mga bagay tacked sa sa dulo na hindi mo gusto. Makakakuha ng lahat ng bagay na maayos na naka-print sa isang linya at pagkatapos ay simulan natin sa sumusunod na linya. Sinuman tandaan kung ano na ang semicolon ginagawa kapag kami ay coding? Oo. Tagapagsalita 7: Statement. ANDI PENG: Sorry? Tagapagsalita 7: end ba ito ang statement? ANDI PENG: Oo. Kaya sa C, o anumang programming wika, ang semicolon Tinutukoy ang katapusan ng isang programming line. Kaya halimbawa, sa Ingles na ginagamit namin na panahon sabihin, oh ito na ang katapusan ng isang pangungusap. Sa programa, parehong bagay, kami ay may isang semicolon upang mangahulugan sa dulo ng isang linya. Madalas, kapag ikaw ay simula sa programa, makikita mo mapagtanto mo kalimutan na magdagdag ng isang tuldok-kuwit at pagkatapos mong subukan na patakbuhin ang iyong mga code at ito ay hindi gumagana. At ikaw ay tulad, Ah, hindi ako kung bakit, ito ay dapat na gumagana. Pagkakataon na ikaw ay malamang na nakalimutan ng isang semicolon o isang bracket o isang bagay pang lugar. Kaya, na mahalagang tandaan. Cool. Lahat ng karapatan, ipakita ng mga kamay, kung paano maraming mga tao dito ay may kailanman kinuha AP Computer Science o program sa Java bago, kailanman? SIGE. Kaibig-ibig. Iyon ay hindi naaangkop pagkatapos, ngunit sa Java, ikaw magkaroon ng isang bagay na tinatawag na System.out.println na kung saan ay hindi umiiral sa C. Kaya sa C, kahit kailan mo gustong idagdag sa mga variable sa anumang nais mo upang i-print out, may isang tiyak na syntax kami ay pagpunta sa gamitin. Iyon ang tinatawag na placeholding-- mahalagang idagdag namin ang mga placeholder sa lugar ng integer o ang variable na gusto naming i-print. Sa gayon ay maaari makita ka guys Nagsama kami sa isang bagong header library file dito. Ang CS50 library. At nilalaman sa loob na CS50 library ay isang pangkaraniwang function na kami ay gumagamit ng sa aming kurso na tinatawag na GetInt (). Nais ba ng kahit sino na kumuha ng isang ulos sa ano GetInt () ay maaaring posibleng ginagawa. Madla: [hindi marinig] ANDI PENG: Sorry. Hindi marinig mo. Maddie, kahit sino. Maddie: Oh, ito prompt mo para sa isang integer. ANDI PENG: Eksakto. Kaya ang function na ito, ang isa pang function na na na nakasulat sa pamamagitan ng ibang tao na maaari naming tumawag ka sa ngayon. Lahat ng ito ay ay prompt ang sa iyo, ang mga gumagamit, i-input ang anumang nais mo na ang code ay tumatakbo at ito iimbak whatever-- sa kasong ito hindi namin GetInt () - ing, gayon ay nangangahulugan na hindi namin pagkuha ng isang integer. At kami ay pagpunta sa mga tindahan ng na sa ibang integer na lang ginawa naming tinatawag na edad. Na magkaroon ng kahulugan sa lahat ng tao? Cool. Kaya ngayon na naka-imbak na namin ang integer, na na-prompt namin mula sa mga user, sa ganitong variable, na namin nilikha ng uri int tinatawag edad, maaari naming sige at lugar na sa ating printf () function. Kaya ang syntax ay kadalasang para sa printf () ay na kung saan man sa iyong mga aktwal na pisikal na line na nais mong isama na integer, gawin mo simbolo na may karapatan, ang simbolo porsiyento, na may uri ng variable na gusto mo. Kaya sa kasong ito edad ay isang integer. Kaya ikaw ay pagpunta upang isama % i dahil sa ito ay isang integer. At pagkatapos ay pagkatapos ng iyong pahayag, ikaw ay pagpunta gawin kuwit at ang pangalan ng variable. Kaya dito, kami ay pagpunta upang i-print out, Hello, ang aking pangalan ay Andi, at ako ay blangko taong gulang. Hashta-- o, sorry--, edad sa kahit anong ako input. Kaya kung ako ay upang input 20 para sa aking GetInt () dito, ito ay i-print out ang parehong bagay. Subalit, kung nais kong i-input ng isang bagay iba pa, tulad marahil ng 40 o 45, pagkatapos ay makikita mo na makikita naaayon sa code. Kaya ito ay isang halimbawa ng isang bagay na kung saan ang ito mga print out at hitsura upang sa iyo bilang kung ito ay ang parehong bagay, ngunit sa ilalim ng hood ng ang computer may tunay ibang-bagay na nangyayari. Cool. Lahat tama. Ano kaya kung gusto natin ng maramihang mga variable? Medyo madali. Parehas na bagay. Kami rin ay may isang bagong function dito na tinatawag GetString (), din kasama sa loob ng CS50 library, na ang lahat ng ginagawa nito ay prompt ang user para sa isang string, na kung saan ay lamang ng isang set ng mga character, kaya tulad ng isang pangungusap o tulad ng isang pangalan. Kaya sa kasong ito, gusto naming magkaroon ng dalawang placeholder% s para sa string at i% para integer. At kami ay pagpunta sa sundin na sa pamamagitan ng dalawang variable gusto naming kasama, sa pagkakasunud-sunod na lumilitaw ang mga ito sa pangungusap. Kaya halimbawa, ang pangalan ko ay blangko, gusto kong may isang pangalan, kaya ako pagpunta sa may unang pangalan. At pagkatapos ay pagkatapos, gusto kong edad, nais na magkaroon ng pangalawang edad. At kaya kung nais ko na input, Hello, sa aking pangalan Andi, at ako ay 20 years old. Kung inputted ko Andi at 20, ang eksaktong parehong bagay ay i-print; gayunpaman, na ngayon namin nakuha ng dalawang naka-imbak variable ng pangalan pati na rin ang int. Oo. Tagapagsalita 8: Gusto ito ay mapapatakbo sa kung ka lumipat pangalan at edad sa dulo ng mga iyon? ANDI PENG: Oo. Iyan ay talagang mahusay na tanong. Kaya mahaba kuwento maikli, hindi. Dahil pangalan at age-- ano uri ng variable ay pangalan? Tagapagsalita 8: String. ANDI PENG: At ano uri ng variable ay ang edad? Tagapagsalita 8: Integer. ANDI PENG: Kaya dito kami ay may isang placeholder para sa string at integer, di ba? Kaya't kung ikaw ay lumipat sa mga ito, hindi pagpunta sa mga computer upang malaman. Ito ay pagpunta upang suriin para sa isang string, at kung susubukan mo upang bigyan ito ng isang int, ito ay magiging tulad ng maghintay ako nalilito, ikaw Sinabi sa akin ang dapat kong maging allotting memory para sa isang int. At dito mismo, kapag Inaasahan itong isang integer at mong bigyan ito ng isang pangalan at ang isang string sa halip, ito ay din ng pagpunta sa maging lubhang nakalilito, ito Hindi tatakbo ang eksaktong paraan na kailangan mo ito. Kaya dito, pagbibigay ng pangalan at syntax ay napakahalaga para sa pagpapatakbo ng code. Ang bawat mabuti? Oo. Maddie. Maddie: dito, alam ko na tumingin kami sa halimbawa sa klase, kung saan sila ay magtatanong kung ano ang iyong edad, kung ano ang iyong pangalan. Dito, nais na maging ito doesn't-- kung kami ay upang patakbuhin ang code na ito, hindi ito ay humingi na? Ngunit nais mo lamang input dalawang numero at pagkatapos ito ay tumakbo na gusto? ANDI PENG: Oo, eksakto. Kaya kung nais mo para sa mga ito sa display, mangyaring ipasok ang iyong edad, maaari mo lamang idagdag ang isang function printf () na nagsasabing, Pakipasok ang iyong edad, sa itaas nito. Iyon ay isang mahusay na tanong. Oo. Tagapagsalita 9: Kaya, nais na maging kasama sa GetInt () [hindi marinig]. ANDI PENG: Hindi, ang tunay na ito ay hindi. Kaya lahat ng ito ay ay lamang senyales ng isang walang laman na screen sa mga gumagamit na input ng isang bagay. Kung gusto mo ito, kung nais mo ito upang i-print ang isang bagay na nagsasabi sa user ang gusto, mangyaring magbigay sa akin ang iyong edad, at pagkatapos mo sana sa printf () na ang iyong sarili. Dahil ito ay gumagamit ng lahat ng tao pag-andar para sa iba't ibang mga bagay, Maaaring ikaw ay pag-iimbak ng edad, Maaaring ikaw ay pag-iimbak ng address, Maaaring ikaw ay pag-iimbak ng mga numero ng telepono. At sa gayon ito ay talagang hanggang sa iyong guys 'indibidwal na mga paggamit para sa kung ano ang nais mo itong sasabihin. Oo. Tagapagsalita 10: Kaya, lamang na linawin, kung saan gawin mo input ang pangalan at edad upang ito ay nagpapakita up sa lugar ng% s? ANDI PENG: Tulad ng sa mga gumagamit? Tagapagsalita 10: Oo, tulad ng kung paano ang gagawin ko gumawa it-- kung saan ko ilalagay Andi, at kung saan ko ilalagay ang 20? ANDI PENG: Oo. Kaya kung ikaw ay upang talaga tumakbo ang code na ito, Hindi ko na aktwal na tumatakbo ang code, ito ay lamang dito ngayon. Kung ako ay upang patakbuhin ang code, Gusto ko itala ang code, gumawa ng file, patakbuhin ang code, at pagkatapos ay gagawin doon maging lamang ng dalawang mga puwang para sa akin na input ito. Oo. Makikita mo guys makita kung kailan mo i-play sa paligid sa iyong sarili ang mga code. Lahat ng mga karapatan namin ang pagpunta sa ilipat sa susunod na seksyon ng kung ano ang makikita ay sumasaklaw namin ngayon. Kami ay pagpunta sa pumunta sa kung ano kondisyon na pahayag ay. Kaya't kung ikaw guys tandaan at pagpapabalik mula sa panayam, kondisyon na pahayag, lahat sila ay isang hanay ng mga tagubilin sa computer in na kung ang isang tiyak na kalagayan ay totoo, execute mo ang code sa loob ng kondisyong iyon. Kaya sa Scratch-- mahalagang ang malaking tema mula sa araw na ito ay na kayo guys may na ang lahat nakita ang logic sa likod ng lahat ng bagay na kami ay sumasaklaw. At ang lahat ng aming ginagawa ay pagsasalin ng isang bagay na ay napaka-intuitive in Sa simula, at mahirap coding ito sa syntax kami ay gumagamit ng para sa mga klase na kung saan ay C. Kaya lohikal na, ang lahat ng mga bloke na ito ay ay na piraso ng code doon. Oo. SIGE. Kami ay din makuha sa isang kung ... ibang tao statement kung saan ay lamang ng isang idinagdag na layer ng pagiging kumplikado sa kung ang pahayag kung saan tumatagal ng isang pagtingin sa ito ang computer at nakikita, kung ang kondisyon na ito ay totoo, gawin ano man ang nasa loob ng mga dalawang bracket, else-- kaya ang uri ng tulad ng mga default na kung ito ay hindi nakakatugon sa mga condition-- gawin ito. Ito ay tulad ng isang tinidor sa kalye. Kung ito ay umulan sa labas, Naglagay ako sa isang rain jacket, iba kahit ano ibang tao na hindi ko ilagay sa isang rain jacket. Ba na logic magkaroon ng kahulugan sa lahat ng tao? Cool. Lahat tama. Kaya tulad ng isang hard halimbawa ng ito na kami ay makikita sa C ay kung nais kong lumikha ng isang variable na tinatawag na oras homework. At kung homework oras ay mas mababa sa limang, sinasabi ko Life ay mahusay. Ito ay kahanga-hanga. Gayunpaman, sinasabi pakikibaka ay real-- na kung saan ay kung ano ang namin ang lahat ng ito sa Lunes afternoon up Science Hill ay marahil paggawa ng tama now-- Madla: [tumatawa] ANDI PENG: Sila paraan namin Gusto, salamat sa iyo para sa na. Ang paraan namin ay hardcode ito sa C ay if-- Ipagpalagay nating pabayaan kami ay mayroon ng isang variable ng uri int tinatawag homework oras dito mismo. Kung homework oras ay mas mababa kaysa limang printf (), Life is great. Tandaan panatilihin / n dahil nais mo ang isang bagong linya matapos. Iba Pa print, pakikibaka ay tunay. Ba ang lahat maunawaan kung paano Lumipat ako mula sa block na ito sa block na ito ng mga code? Cool. Lahat tama. Kaya ngayon kami ay pagpunta sa tingnan ang maramihang Kung pahayag kabuuan. Kaya sabihin ipagpalagay na ang mga layunin ng programang ito ay prompt namin ang mga user para sa isang grado. Udyukan namin ang paggamit ng GetInt () para sa isang grado, at sila input isang halaga, at gusto mong ipakita kung anong uri ng grade nila nakuha. Kaya kung ako ay upang mag-disenyo ng isang programa, ako ibig sabihin ng karaniwang sa lahat ng aming mga mata, 90-100 ay isang A, 80-90 ay isang B, at iba pa at iba pa. Ano ang mali sa mga ito piraso ng code na ito ay hindi paggawa ng kung ano ang gusto ko itong gawin. Oo. Tagapagsalita 11: Mayroon silang mas mababang mga limitasyon, ngunit hindi sila magkaroon ng mas mataas na limitasyon. ANDI PENG: Eksakto. Alam ng lahat ng tao marinig kung ano ang kanyang sinabi? May pupuntahan maging upper limitasyon, ngunit walang mga mas mababang mga limitasyon. Paumanhin, iba pang mga paraan sa paligid, mas mababang mga limitasyon, walang mas mataas na limitasyon. Kaya nais mong kumuha ng isang ulos sa sinasabi kung ano ang nais na ipi-print sa mga ito screen kung ako ay upang patakbuhin ang code na ito. Tagapagsalita 11: Naganap ang isang? ANDI PENG: Naganap ang isang? Mahusay na hulaan, hindi masyadong tama. Magkaroon ng isa pang ulos Kahit sino ba? Oo, Aaron. AARON: Kung ikaw ay ilagay sa isang bagay na mas malaki kaysa sa 90, ito ay nagpapakita ng lahat ng mga marka ang nakukuha mo. Ito ay magpapakita sa iyo ay nakuha ng isang A, Nakakuha ka ng B, nakakuha ka ng C. ANDI PENG: Oo. Iyon ang akmang-akma. Kaya, na nais maging kahanga-hanga. Gayunpaman, ang mga ito ay kapwa eksklusibo, sa tingin ko. Kung ako ay upang patakbuhin ito piraso ng code. At pagkatapos ay sabihin lamang sabihin, ako inputted ang grado ng 95. Kaya 95 ay naka-imbak na ngayon sa ang int na tinatawag na grade. At kaya C ay isang wika na nagpapatakbo ng hanggang sa itaas hanggang sa ibaba, kaya ito ay pagpunta sa palaging tumakbo hanggang sa ibaba. Kaya ito ay pagpunta sa dumating dito, basahin kung grade ay mas malaki kaysa sa o katumbas ng 90, printf () na ba kayong isang A. Great, ako may isang 95, na mas malaki kaysa sa 90. Ito ay pagpunta sa i-print, Nakatanggap ako ng isang A. Ito ay pagpunta upang tingnan ang mga ito kung, ito ay pagpunta sabihin, well 95 ay mas malaki kaysa sa 80, ito ay pagpunta sa i-print ang nakuha mo din ang isang got isang B exclamation mark, at iba pa at iba balik. Sa gayon ay maaari naming makita ang lahat, ito ay isang karaniwang bug na maaaring mangyari kapag hindi namin pagsulat ng code na antabayanan. Kahit sino, anumang mga katanungan sa bakit na nangyayari? Great. SIGE. Kaya paano namin ayusin ito, ay malinaw naman ang mga lohikal na susunod na tanong. Well, kami ay may mga magagandang mga bagay-bagay na tinatawag na kung tao kung tao kung ibang mga pahayag. Kaya maaari mong makita, kung nais mong upang baguhin ang problema, mo nais na gumawa ng bawat isa sa mga kondisyon pare-pareho eksklusibo, Gusto mong idagdag ang isang ibang tao ... kung statement. At ang mga ito ng course-- tingin sa kanila bilang hagdanan, o tulad ng mga baitang sa ladder-- Maaari kang magdagdag ng maraming bilang ng mga ito sa iyo gusto para sa bilang ng maraming mga kondisyon sa gusto mo. Kaya dito, kung inputted ko grade na 95. Kung grade ay mas malaki sa 95, printf (), Nakatanggap ako ng isang A. Great. Ito ay pagpunta upang makita ang isang ibang tao ... kung at ito ay pagpunta upang malaman, Ay naku, Mayroon na pinaandar ang unang bagay. Know-- ko o ang unang if-- alam ko na Hindi ko na kailangang tingnan ang anuman sa mga dahil ang isa sa mga ito ang nai-totoo. Kaya ito ay pagpunta upang tumakbo mula itaas pababa. Sa sandali na ang unang isa ay totoo, at pagkatapos ito ay pagpunta upang laktawan ang higit sa lahat ang natitira ng ibang tao ... ifs. Ba na magkaroon ng kahulugan? Kaya, sa ganitong paraan ikaw ay may iba't ibang mga antas ng checking at sa lalong madaling isa sa mga ito ay hindi totoo, ang pahinga din, ang mga ito ay hindi kahit na i-check. Cool. Lahat tama. Kaya ito ay isang halimbawa ng isang iba't ibang mga uri ng kondisyon na pahayag naming makita mas madalas, ngunit kami ay makita ang mga ito at gamitin ang mga ito. At ang mga ito ay madalas na higit pa mabisa para sa ilang mga kaso. Kaya kami ay may kung ano ang tinatawag isang lumipat statement. Kaya bago namin sakop kung ano ang isang ibang tao statement, isang kung ... ibang pahayag. Dito, mayroon kaming kung ano ang mga tinatawag switch pahayag. Kaya kapag ginagamit namin ang switch pahayag ay ang susi? Kaya sa isang pahayag na lumipat, ikaw kadalasan, kadalasan, ang tunay na ikaw Maaari lamang input integer para sa iyong variable na naka-check. Kaya kung nais kong suriin upang makita kung ang isang tiyak number-- halimbawa isang grado, kung nakakuha ako ng isang 90. Gusto ko ito upang makita kung na isang A, B, o C. maaari ba akong magkaroon dito ng isang kaso. Gayunpaman, ang kaso ay upang maging isa pang pare-pareho. Kaya sa puntong ito, ang lumipat na pahayag ay maaari lamang suriin para sa pagkakapantay-pantay ng dalawang numero. Hindi ito i-check para sa anumang bagay. Kaya na ang isang bagay na maging napaka maingat kapag gumagamit ka ng mga ito. Kaya dito, kung nais kong suriin upang makita kung ang aking grade 90 ay katumbas ng 90 o 80 o 70 o 60, at pagkatapos ay i-print ang katumbas na grado, Gusto ko ma-isulat na sa isang lumipat statement. Kaya ito ay pagpunta sa dumating dito, check ay ito integer katumbas ito pare-pareho? Kung hindi, ito ay pagpunta upang laktawan. Ito ba ay katumbas ng pare-pareho dalawa, at iba pa at iba pa, hanggang maabot mo ang default, kung wala sa mga ito ay pantay-pantay. Sa sandali na ang isa sa kanila ay nakatakda upang maging pantay-pantay, ito ay pagpunta sa gawin ito linya ng code at break. Na nangangahulugan na ito ay pagpunta sa hit na tumakbo, masira, at lamang ganap na laktawan sa ibaba ng code. Kaya sa kamalayan ang mga uri ng mga pag-andar tulad ng isang kung tao kung iba kung statement. Kaya narito ang isang kongkretong halimbawa para sa iyo guys. Kaya sabihin ipagpalagay na nais kong lumikha ng isang variable na tinatawag na taon itinatag. At gusto ko upang i-prompt ang user sa input taon na ang kanilang paaralan ay itinatag. Kaya ang maaari kong lumikha ng isang pahayag na lumipat dito. At sabihin lamang sabihin, ako input 1636. Ang code na ito dito ay pagpunta upang makita ang switch taon itinatag na katumbas 1636. Ito ay pagpunta upang makita ang mga kaso 1636, oh ang mga ito ay pantay-pantay, printf () hindi mo Dapat ay sa na school up north? Dahil ipinapalagay namin hindi sila pumunta dito kung pumunta sila sa Harvard, masira at laktawan sa dulo. Kung ako ay upang input 1701, kung saan Akala ko sa ating lahat ng gagawin input, ito ay laktawan kasong ito, dumating pababa sa kaso ng dalawang na kung saan ay 1701, at i-print Maligayang pagdating sa Yale! Break, laktawan sa dulo. Else mo marahil ay ang pagkuha ng kursong ito online na case-- kahanga-hangang maligayang pagdating upang Yale-- ito ay pagpunta sa pumunta sa default print, Hello Internet! At masira. Oo. Tagapagsalita 12: Maaari mong gamitin ang ibang tao sa halip ng default doon? ANDI PENG: Hindi, dahil ang paraan na ito buong pag-andar switch ay binuo, ang syntax mo kailangan mong gamitin ang ay case case default. Ito ay tulad ng kung iba kung, ito isa ito ay case case default. Oo. Tagapagsalita 13: Ikaw siguro na sinabi ito, ngunit maaaring magkaroon ng higit sa dalawang mga kaso? ANDI PENG: Oo, maaari mong magkaroon ng maraming mga kaso na gusto mo. Isipin ito bilang tulad lamang walang katapusan ang pagdaragdag ng sa. Tagapagsalita 14: Kung ikaw nakabukas 1701 sa 1636, ito ay hindi talagang gumawa isang pagkakaiba right? Lamang Ito ay pagpunta sa ma-suri para sa mga ito. ANDI PENG: Iyan ay isang talagang mahusay na tanong. At kami ay usap sa ito sa ibang pagkakataon, ngunit lamang alam na ang lumipat pahayag ay infinitely-- ito ay mas mahusay kaysa sa mga ito at kung iba kung dahil ito ay nagpapairal gamit ang ibang uri ng pag-andar na ay nagbibigay-daan sa iyo, upang mahalagang, sa makatarungan tumalon tuwid sa sakaling kailangan mo upang maging sa. Oo. Tagapagsalita 14: Cool. Salamat. ANDI PENG: Oo Tagapagsalita 14: At hindi ka maaaring gawin kaso tulad at mas malaki kaysa. ANDI PENG: No. Kaya, na kung ano ang takda tungkol sa lumipat na pahayag ay na mayroon ka na magkaroon lamang, integer lamang constants. Oo. SIGE. Kaya ito ay isang bagay na iyong guys ay magkasalubong mas madalas ng, ngunit ako lamang ang nais na ipakilala ito sa kaso. Mayroon kaming dito kung ano ang tinatawag na isang tatlong bagay operator. Saan mahalagang, ang gusto ito lamang ng isang kung ang pahayag ng naipon sa isang linya. Dito, makikita ko pumunta papunta sa susunod na linya, ang susunod na pahina, dahil ito ay mas madaling makita. Kaya nakita namin ang lahat ng karapatang ito? Ito ay medyo madali upang sundin. Kung Nais kong gumawa ng isang variable na tinatawag na string na may pangalang s, kung ang isang tiyak na bilang Ibinibigay ko ito ay mas mababa sa 100, ako nais na italaga mababa sa string, ibang tao na gusto kong maglaan ng mataas. Ito dito ay ginagawa ang parehong bagay mga walong linya ng code ginagawa. Kaya dito Gusto kong lumikha isang variable string. At ito ay ang kalagayan Ako suri, kung ang isang numero ay mas mababa sa 100, pagkatapos mong italaga ang halaga ng mababa, ibang tao na italaga ang halaga ng mataas. Ang mga slide ay online, huwag mag-alala kung ka guys ay hindi makakuha ng ito pababa. Ito ay lamang ng isang mas simpleng paraan, ang isang mas mahusay na paraan ng pagsulat ng code. SIGE. Kaya ngayon kami ay pagpunta sa ipasok ang kung ano, para sa karamihan ng mga tao ay tulad ng isang tunay, tunay na nakalilito bagay na isipin ang tungkol sa unang. Ang seksyon na loop. Kaya ngayon, kami ay pagpunta sa makipag-usap tungkol sa tatlong mga uri ng mga loop. Kami ay pagpunta sa magsimula sa isang habang loop, pagkatapos ay makipag-usap tungkol sa isang gawin habang loop, at pagkatapos ay makipag-usap tungkol sa para sa loop. Kaya mahalagang, para sa mas visual-aaral out doon, mayroon kaming, mahalagang, ang isang graphical paglalarawan ng kung ano ang ginagawa ng isang habang loop. Kaya sa isang programming, nais mong simulan at ipasok ang loop sa tiyak na punto. Check mo sa isang kondisyon. At kung ang mga kondisyon ay totoo, execute mo ang code sa loob. At bumalik ka sa paligid at mong suriin. Kung ito ay totoo pa rin panatilihin kang tumatakbo ang code na ito sa paligid at sa paligid sa isang loop. Gayunman, ang ikalawang na ang kondisyon ay nagiging hindi totoo, ikaw ay pagpunta sa break at tapusin ang loop. At ito ay mahalagang ang syntax ka pagpunta sa paggamit. Habang ang isang tiyak na kalagayan ay true gawin ito, kung ito ay hindi totoo, ikaw ay pagpunta sa laktawan sa dulo at sumulong sa iyong programa. SIGE. Kahit sino ay may isang halimbawa sa kung ano ang maaaring potensyal na mangyari kung sinusubukan kong patakbuhin ito piraso ng code? Siya nga pala, SAJ-- na Scaz, Andi, Jason-- makikita naming mag-sign-off ang aming mga email, Pag-ibig, SAJ. Iyan ay sa amin. SIGE. Kahit sino ay may isang halimbawa, o may isang ideya sa kung ano ang mga ito ay i-print? Uri ng isang kahanga-hangang gawa tanong. Kaya dito, tandaan ang mga kondisyon Sinusuri namin para sa ay habang totoo. Kaya habang ito ay totoo, ito ay upang i-print, pag-ibig ko SAJ! Mayroon bang anumang punto kung saan gusto namin baguhin ito sa kahit ano man? Hindi, di ba? Kaya sa dito, mayroon kaming Nakaranas kung ano ang malamang na pagpunta sa bugging ng maraming ang iyong mga programa, ang mga walang-katapusang loop. Makikita ninyo na kung kayo tumakbo ito piraso ng code, lamang ito ay pagpunta sa panatilihin pag-print, pag-ibig ko SAJ! Habang ikinalulugod namin ang suporta, hindi namin nais ang iyong mga computer pag-crash dahil ikaw panatilihin ang pag-print mahal ko SAJ! Kaya mangyaring, mangyaring, maiwasan ang mga walang-katapusang loop dahil hindi ito ay pagpunta upang suriin sa false at hindi ka na pagpunta mag-iwan ng loop. At ikaw ay pagpunta sa sinipsip sa habang panahon. Cool. SIGE. Ang ikalawang uri ng loop kami makipag-usap tungkol sa ngayon ay ang gawin habang loop, gawin habang loop. At ito ay tinatawag na isang gawin habang loop dahil mayroon kang isang gawin at isang habang. Kaya ito ay medyo kapareho sa isang habang loop, ngunit Medyo naiiba. Narito, ikaw ay pagpunta sa gawin ano man ang nasa loob ng mga ito habang ang isang tiyak na kalagayan ay totoo. Kaya kung ako ay C at ang computer ako tumatakbo down na ito piraso ng code, Kumuha ako ng isang tumingin sa itaas. Pumunta ako sa C, sinasabi ko ang bagay na ito. At pagkatapos kong i-check, habang ito Totoo, kailangan kong ulitin ito. Ngunit habang ito ay hindi totoo, pagkatapos ay ilipat ko ang panahon at hindi ko bumalik sa na loop muli. Kahit sino ay maaaring gumawa ng isang ulos sa kung ano ang mga pagkakaiba pagitan ng loop na ito at ang isa namin lamang tumingin sa ay halos. Oo. Tagapagsalita 15: Ang kalagayan dumating pagkatapos sa halip ng bago? ANDI PENG: Eksakto. Kaya't sinabi niya sa kalagayan dumating pagkatapos, hindi bago. Sa paglaon, ang mga pagkakaiba sa pagitan ng ito at ang mga loop habang ay na lamang ka ng pagpunta sa gawin ano man ang loob na ito nang walang kinalaman sa kung o hindi ang inyong kalagayan ay totoo, at pagkatapos ay suriin ang kalagayan. Kaya sa kasong ito, ikaw ay ng lagi sa ganitong paraan, lagi ka na tiyakin ano man ang nasa loob ay tumatakbo ng hindi bababa sa isang beses bago ng pagsuri upang makita kung nais mo ito na tumakbo muli. At dito ay isang halimbawa ng kapag kami ay gamitin ito. Kaya halimbawa, kung nais kong magkaroon ng isang variable ng uri int pinangalanan edad, at gusto ko upang i-prompt ang user para sa kanilang edad, Pupunta ako sa gawin printf () Ano ang iyong edad? age = GetInt (), na ay pagdikta sa gumagamit. At ang ilang mga tao ay talagang nakakainis. At hindi mo nais na mga bug sa iyong programa ng isang tao inputting gusto, oh ako negatibong 4 na taong gulang o anuman. Sa anong kaso kung sila gawin iyon, sinusuri ito sa totoo, na nangangahulugan na ako ng pagpunta sa kailangang panatilihin ang pagpunta sa likod at sa paggawa nito. Kaya ito ay pagpunta sa panatilihin re-pagdikta sa gumagamit upang mabigyan ka ng isang tunay na number edad at ito ay pagpunta sa panatilihin ang balik at redoing ito hanggang sa bigyan mo sila ng isang tunay na edad mas malaki kaysa sa isa, o hindi zero. Kaya magparamdam, hint. Ito ang magiging tunay, tunay na kapaki-pakinabang para sa isa sa iyong problema pset. Oo. Tagapagsalita 16: Oops, sorry. ANDI PENG: Yep. Tagapagsalita 16: Mayroon bang, hindi upang maging isang asshole, but-- ANDI PENG: Huwag mag-alala. Tagapagsalita 16: --are doon iba't-ibang mga patakaran dito, o nakalimutan mo lang upang ilagay ang mga quotation? ANDI PENG: Oh Oo. Paumanhin, na lubos ang aking masama. Iyon ay talagang dapat na maging isang quotation. Magandang huli. Na sana ay hindi tatakbo. SIGE. Kaya ang huling uri ng loop kami ay makipag-usap tungkol sa at, sa huli, mga uri ng mga pinaka complex ay ang para sa loop. Huwag mag-alala kung wala ka malaman kung ano ang ibig sabihin. Ito ay medyo nakakalito sa una. Kami ay pumunta sa ibabaw ng isang halimbawa. Ang lahat na mangyayari sa isang para sa loop ay na mayroon kang tatlong mga pahayag na kayo ay pagpunta upang isama. Kaya para sa isang tiyak na bagay, ikaw ay pagpunta upang magpasimula ng isang variable. Ikaw ay pagpunta upang idagdag ang mga kondisyon sa na kung saan ito loop ay patuloy na tumatakbo. At pagkatapos, sa dulo ng loop, ikaw ay pagpunta upang i-update ito. Maaari mong i-update ang variable na nais mong subaybayan. Kaya kadalasan naming gamitin para sa mga loop para sa kapag kami nais na magpatakbo ng isang loop para sa isang tiyak na halaga ng beses at kami na malaman, Oh nais ko ito loop upang maipatupad tulad ng 10 beses, pagkatapos do-- mo kukunin ko na pumunta sa paglipas ng isang halimbawa sa susunod na pahina. Kaya dito para sa mga halimbawa, sa simula, kung ikaw Nais ng isang bagay upang ulitin ng 10 beses, lahat kayo ay sabihin ay, ulitin 10 beses pag-ibig ko SAJ! kung saan ay isang mas katanggap-tanggap ipakita ng suporta para sa amin sa halip na ang walang-katapusang loop. Narito, kung paano mo gagawin paglipat sa C at write na ay para sa int ako pagpunta sa gumawa o ipinapahayag ng isang variable ng uri int pinangalanan i. Pupunta ako upang magpasimula ito sa 0, kaya i = 0; at ito ay magiging aking kalagayan. Kaya ako ay mas mababa sa 10. At pagkatapos ay sa end-- huling statement ikaw pagpunta sa may ay ang pag-update ng kung ano ang mangyayari sa mga variable i sa dulo ng iyong para sa loop. Kaya ito ay uri ng nakalilito, dahil iba't-ibang bahagi ng linya na ito ay nangyayari sa iba't-ibang mga uri ng loop. Ngunit kukunin ko na pumunta sa loob ng isang pseudocode halimbawa ng na at marahil ipaliwanag ito lamang ng kaunti mas mahusay. Kaya dito. Iyan ang loop lang namin nakita. Mahalaga sa pseudocode, kung ano ang nangyayari sa programa na ito, ay unang Lumilikha ako i, Sinisimulan ito sa 0. Lalabas na ako upang makita kung ako ay mas mababa sa 10, kung saan sa unang pagkakataon ito ay dahil 0 ay mas mababa sa 10. Kaya ang loop ay pagpunta upang tumakbo. At pagkatapos ay ako pagpunta sa i-print ang linyang ito. At pagkatapos ay sa dulo ng linya na ito, i-right dito, ako pagpunta sa gawin paglakas i, i ++, ng lahat ng paraan na incrementing ito sa pamamagitan ng isa. Kaya ako ngayon ay 1. Dahil ito ay isang beses sa 0, kung ako dagdagan ito ay, ito ay ngayon 1. At pagkatapos ay ako pagpunta sa bumalik sa simula ng loop at check ko ang kalagayan. Totoo ba ang kalagayan pa rin? Oo, 1 ay mas mababa sa 10 pa rin. Kaya ito ay pagpunta sa i-print muli ito, pumunta at pagkatapos ay dagdag i, at tingnan ang kondisyon tuloy-tuloy, tuloy-tuloy, hanggang sa ikaw ay sa wakas makakuha ng sa punto kung saan i ay 10. Ikaw ay pagpunta upang i-print ito 10 ulit at pagkatapos ay i ay pagpunta sa pantay na 10. Ikaw ay pagpunta upang suriin ang kalagayan. Ay 10 mas mababa sa 10? Hindi, na hindi totoo. Kaya, ang loop ay hindi pagpunta na tumakbo, ito ay pagpunta sa masira, at ikaw ay pagpunta sa magpatuloy sa gamit ang iyong code. Sa gayon ay maaari makita, ito sa iyo guys ay isang talagang magandang halimbawa ng isang loop maaari mong programa sa na tumatakbo para sa isang tinukoy na tagal ng panahon. Ang bawat isa malinaw? Oo. Tagapagsalita 17: Paano ang tungkol sa paglakas exponentially, ito naiiba coding? ANDI PENG: can-- mo kami pumunta higit na ito sa susunod na slide. Magandang tanong. Ay anyone-- bago ako lumipat on-- sinuman sa lahat ng nalilito, dahil ito ay isang tunay na mahihirap na konsepto. Huwag mag-alala, kung you're-- OK. Cool. Lahat tama. Lamang ng isang pangkalahatang slide. Ito habang loop ay ang paggawa ng eksaktong parehong bagay para sa loop ay. Lamang Ito ay isinulat ng iba. Ikaw guys ay maaaring bumasang mabuti ang mga slide sa iyong kaginhawaan sa susunod. Ngunit lamang malaman na mayroong maramihang paraan ng pagsulat ng mga parehong bagay mangyari na may iba't ibang mga loop. SIGE. Kaya, ngayon na nakukuha namin sa mga tanong kung ano kung kami ay may isang loop sa loob ng isang loop. Kami ay nakakakuha sa tunay Umpisa type bagay-bagay dito. Kapag nais mong gumawa ng mga bagay ng maramihang beses sa loob ng iba pang mga bagay na gawin ang mga bagay nang maraming beses, ikaw nais kung ano ang tinatawag na isang nested para sa loop. Para sa mga mo na munang makita ito at makakuha ng masyadong nalilito, ang ginagawa namin ang lahat dito ay ang pagkakaroon ng isang para sa loop na kung saan ang kami ay may isang variable ng hilera. Ngunit sa loob ng mga ito, kami din ay may isa pang para sa loop ng column isang variable na tinatawag. At ako mataas na iminumungkahi sa inyong lahat na ay lito sa unang panatilihin track-- gumuhit this out, gumuhit ito out. Huwag subukan na lamang na dahilan sa pamamagitan nito, gumuhit ito. Sa iyong ulo, sa ito piraso ng papel, o anumang, write hilera, subaybayan kung ano ang hilera ay katumbas ng. Sumulat ng haligi, subaybayan ng kung ano ang haligi ay katumbas ng. At subaybayan kung ano ang pag-print out sa bawat pag-ulit. Bawat pag-ulit ng loop na ito, ang bawat pag-ulit ng mas malaki na loop, lamang panatilihin ang mga sumusunod na ang logic. At ginagarantiya ko sa inyo, magugustuhan mo kung ano ang iyong nakikita, dahil ito ay din tunay naaangkop para sa iyong mga hanay ng problema. Cool. Lahat tama. Kaya ang pinaka-mahalagang bagay na iyong guys ay marahil ang lahat nag-iisip tungkol sa ngayon, ang iyong mga Problema Itakda 1s, kung saan ay dahil Huwebes / Biyernes. Sa iyong water.c program, hint mo ay pagpunta sa may upang i-prompt ang user para sa isang input. Sa loob ng iyong mario.c program ikaw ay pagpunta sa may ang paggamit ng isang nested para sa loop, na kung saan ay para sa isang loop sa loob ng isang para sa loop, upang i-print ang isang bloke ng pyramid, mahalagang tulad ng kung ano Mario ay may upang tumalon sa pamamagitan ng. At pagkatapos ay sa loob ng iyong greedy-- o di kaya Paggawa ng Pagbabago, kung anuman sa iyo guys may kailanman narinig ng na- ikaw ay pagpunta sa may upang maging napaka Mag-ingat ng unang lumulutang halaga ng point. Tandaan lumulutang decimal at integer ay hindi ang mga parehong bagay. Subaybayan ng kung saan ang isa ay na. At ikaw ay pagpunta sa paggamit kondisyon na pahayag, pati na rin. Lahat ng karapatan, huling bagay. Mayroon akong ng ilang minuto ang natitira. Estilo. Kaya ito ay isang bagay na hindi talagang epekto ang kahusayan, o ang aktwal na tumatakbo ng iyong code. Gayunman, ito epekto sa atin bilang iyong graders, tulad ng iyong mga mambabasa. Ito epekto sa iyong sarili, kung ikaw ay sinusubukan upang mahanap ang isang problema. Ito ay epekto ang mabasa ng iyong code. Kaya style, tulad ng kapag sinusubukan mong estilo ng isang sanaysay para sa Ingles, kung ikaw ay hindi magkakaroon ng mga talata, mayroon kang lahat ng uri ng ginulo magkasama sa isang linya, ito ginagawang talagang mahirap para sa kahit sino na basahin ang iyong mga sanaysay, kahit na ang iyong mga puntos ay lohikal na tunog. Parehong bagay sa programming. Maaari kang magkaroon ng horribly ikukubli code na Scaz ay cover, at maaari pa rin itong tumakbo at function. Ngunit para sa amin, tulad ng iyong mga kaibig-ibig TAS, kung sino ang maging pagbabasa at pagsusuri ng iyong psets, iyan ay hindi napakabuti. Kaya mangyaring, para sa kapakanan sa atin at ang iyong sarili, kapag sinusubukan na ayusin isang problema sa iyong code, at sinusubukan mong basahin ang iyong sariling code, gumawa Siguraduhin na sundin mo ang ilang mga convention na namin ang pagpunta sa pumunta sa ibabaw. Kaya una. Bigyan ang iyong mga variable ng makabuluhang mga pangalan. Kung nais mong i-store ang isang integer tinatawag na edad, paki pangalanan ito edad. Huwag pangalanan ito taas. Kapag sinusubukan mong tindahan ng isang edad sa taas, ito ay gumagawa ng lahat ng bagay lubhang nakalilito para sa amin. Hindi namin gusto na nalilito. Hindi mo gusto na nalilito. Walang kagustuhan na nalilito. Kung ikaw ay pagpunta upang lumikha ng isang bagay, pangalanan ito ng isang bagay na makabuluhan. Gayunpaman, sa para sa loop, single variable na character ay karaniwang fine. At sa para sa loop, kung gusto mo lamang i, at j, k, mag-atubili na gawin lamang na. Pare-pareho Pinasimulan. Kaya kung ano ang ibig sabihin nito? Ito ay nangangahulugan na technically, theoretically, maaari mong simulan at lumikha maramihang mga variable sa parehong linya. Kaya halimbawa, maaari ba akong lumikha isang integer na tinatawag scaz_age, at integer na tinatawag andi_age = 20, at isang integer na tinatawag jason_age sa parehong linya. At maaari ko ring magtalaga ng isa lamang sa ang mga ito at hindi ang iba na mga halaga. Hinihiling namin sa iyo mangyaring huwag gawin iyon. Dahil dito mahalagang na iyong nilikha tatlong variable, ngunit isa lamang sa kanila talaga ay may halaga. At pagkatapos ay kapag hindi namin sinusubukan na basahin ang iyong code, o kung ikaw ay sinusubukan na ayusin isang problema sa iyong code, ito ay lubhang nakalilito upang sundan. Kaya lang para sa iyong kayang mabasa, para ang aming pagiging madaling mabasa, huwag gawin iyon. Pare-pareho curly braces. Ang ilang mga tao ay nais na ilagay ang kanilang mga curly braces sa iba't ibang mga lugar. Ito ay hindi talagang mahalaga. Tiyakin lamang na ikaw ay pare-pareho sa iyong sariling code sa kung saan mo nais na ilagay ang mga ito. Pare-pareho spacing. Kung inilagay mo ang isang puwang pagkatapos ng isang para sa loop, palaging gawin iyon. Huwag na lang gusto uri ng gawin ito sa ilang mga lugar, huwag gawin ito sa iba. Basta pare-pareho. Pangalawa, kung ang sinuman ay nais sa bumasang mabuti ang CS50 Guide Style, opisyal na kami ay may isang estilo ng gabay na ay nagsasabi sa iyo ang lahat ng mga kombensiyon, dagdagan ang nalalaman. Ito ay online. Ito ay tulad ng cs50.net/style o isang bagay tulad na. Maaari mong i-google ito. Pare-pareho ay key. Kaya huwag mag-alala kung ano ang iba pang mga tao ay ginagawa, tiyakin na ikaw ay lamang pare-pareho sa loob ng iyong sariling code. Sinuman ay may anumang mga katanungan tungkol sa na? Oo. Tagapagsalita 18: Kaya ang tamang bagay ang gagawin sa initialization ay lamang magkaroon ng mga ito ang lahat sa isang hiwalay na linya, ay ang kung ano ang iyong sinasabi? ANDI PENG: Kaya ako bihira na ito mangyari. Ngunit kung nais mong, kung nais mong na maging tulad ng pag-save ng puwang sa iyong code, o ano pa man, maaari mong gawin ito. Hinihiling namin na ikaw lamang ang hindi magpasimula isang bagay at hindi ang iba. Kaya kung nais mong gawin int scaz_age, int andi_age, int jason_age, na multa. Basta hindi magpasimula isa at hindi ang iba ay para sa lahat. Mga tanong? Lahat tama. Pupunta ako sa maganap ang mikropono, at ang laser pointer, at ang baton sa Scaz sa puntong ito. Ito ay mahirap. Heto na. BRIAN SCASSELLATI: Salamat. Paano na para sa tunog? Sound ay mabuti? . Magaling. SIGE. So, hi sa lahat. Pupunta ako sa subukan na magtrabaho sa pamamagitan ng isang praktikal na halimbawa sa iyo. At kami ay pagpunta upang gamitin ang CS50 unlad na kapaligiran, kung ano ang tinatawag Integrated Development Environment. At iyong nakita na ito nagpakita sa panayam. At sa Problema Set 1, ikaw ay pagpunta na magkaroon ng pagkakataon gamitin ito, at i-play sa paligid na may ito, at makakuha ng bihasa sa mga ito, dahil kami ay pagpunta upang gamitin ito sa pamamagitan ng pahinga ng semester. Kaya sa IDE, mayroon ka kung ano ang hitsura tulad ng isang napaka-tradisyonal na file browser sa ibabaw sa isang gilid. Nakuha mo na ang isang bahagi up top kung saan ka pupunta upang makita ang iyong source code, ang iyong Cfile, ang code na sumulat. At pababa sa ibaba, makikita mo magkaroon ng isang terminal na window na kung saan ikaw ay gumagamit ng sa parehong itala ang iyong programa at upang patakbuhin o magsagawa ng iyong programa. SIGE. Kaya lang na magbigay sa amin ng isang maliit na piraso ng pundasyon, sa na terminal na window, ikaw ay pagpunta sa maging ang paggamit ng isang set ng mga command na standard utos sa buong karamihan ng mga sistema ng Unix o Linux. At kaya kung na ba kayo na ginagamit anumang anyo ng Unix, Ubuntu, o alinman sa iba pang flavors, ang mga ito ay pagpunta sa hitsura pamilyar. Kung mayroon kang hindi, huwag mag-alala. May walang kumplikado tungkol sa kanila ay. Sila ay hindi lamang ang paggamit ng ibang syntax, ng ibang pagpapangalan convention kaysa kailanman na iyong nakita bago. Kaya sa listahan ang mga file sa loob ng isang partikular na direktoryo, sila ay pagpunta sa gumamit ng isang command na tinatawag ls, o listahan. Kung nais mong makita ang lahat ng bagay kasama ang lahat ng mga detalye, kakailanganin mong gamitin ang isang command line argument sa ls-l. At makikita na ipakita sa iyo ang lahat ng bagay sa mas maraming mga detalye, kabilang ang ang mga pahintulot para sa isang file. Upang baguhin ang direktoryo, kakailanganin mong gamitin ang command na cd. At makikita mo na baguhin ang direktoryo parehong upang pumunta sa iyong home directory. Iyan na lamang ang cd lahat sa pamamagitan ng mismo, cd na may dalawang mga tuldok ay babalik up ka ng isa antas sa iyong nakaraang direktoryo. At maaari mong cd sa isang ring subdirectory sa pamamagitan ng pag-type sa cd at ang pangalan ng na subdirectory. Maaari ka ring lumikha ng mga bagong directory. At kami ay pagpunta sa paglalakad sa pamamagitan na ito sa isang minuto lamang. Ngunit lamang na ilagay ang ang lahat ng bagay sa screen. Sa gayon ay maaari mong makita ang mga ito. Magkakaroon ka rin ng kakayahang upang manipulahin ang mga file nang direkta mula sa linya ng command. Magagawa mong upang kopyahin ang mga ito, upang ilipat ang mga ito, o upang alisin ang mga ito, iyon ay, mabisa, upang tanggalin ang mga ito. Ang CS50 IDE ay nagbibigay sa iyo ng ganap na kapangyarihan ng mga argumento command line. At ibig sabihin maaari mo ring gawin lubhang mapanganib na mga bagay. SIGE. Halimbawa, maaari mong alisin, o ng nasa delete, isang file nang hindi humihingi para sa isang confirmation. At maaari ka ring mag-alis recursively-- na ang dash r flag-- isang buong subdirectory at ang lahat ng mga nilalaman nito. SIGE. Ang mga ito ay nakalista sa red dahil ikaw dapat isipin "Panganib" sa bawat oras nakita mo ang mga bagay-bagay. SIGE. Lahat tama. Ngayon sa wakas, ang mga bagay na magiging talagang mahalaga sa iyo, ay may ilang mga mahusay na tricks malaman bilang naka-navigate sa pamamagitan na ito terminal na window. Una, maaari mong i-clear ang screen sa anumang oras sa pamamagitan lamang ng pag-type sa malinaw. At ikaw ay pagpunta upang makita ang ko sa akin na lubos na madalas. Maaari mo ring ipakita lamang ang teksto ng isang file sa pamamagitan ng pag-type ng higit pa at pagkatapos ay ang pangalan ng file. Ikaw ngayon ay maaaring mag-scroll sa likod at balik sa na may lamang ang spacebar at arrow key. Kung mayroon kang, tulad ng ginawa namin ngayon sa panayam, isang programa na ay patuloy na tumatakbo sa walang-katapusang loop, ikaw maaaring itigil programa na mula sa Isinasagawa sa pamamagitan ng pag-type sa control, na humahawak down Control-C. At maaaring kailangan mong gawin ito ng maraming beses. Makakakuha Ang computer malayo maagang ng iyo. At minsan kailangan mong bigyan ito ng isang pares ng mga sumusubok bago ito aktwal na dumating sa pamamagitan ng. Makikita mo rin magagawang sa Iyo uri sa pamamagitan ng mga utos na iyong na-type lamang gamit ang up key, arrow key, at pagkatapos ay ang down arrow key. At kung ano ang pinaka-kapaki-pakinabang ay sa halip ng pag-type ang haba ng mga pangalan ng file, Makikita mo na ang Tab na paggamit sa autocomplete ang ilang mga tagubilin. Ngayon kami ay pagpunta upang ipakita lahat ng mga nasa loob lamang ng pangalawang. Kaya kung hindi mo naaalala ang mga ito, huwag mag-alala. Ito ang mga bagay na makikita mo kunin at gamitin bilang namin pumunta kasama. SIGE. Kaya sa C-- hindi katulad sa Scratch-- C ay isang naipon wika. Ito ay nangangahulugan na kami ay pagpunta sa tumagal ng isang pinagmulan file-- iyon ang text na sinulat mo, ang mga utos na sinulat mo, ang printf () pahayag, ang mga loop, else-- lahat ng bagay at kami ay pagpunta upang kumuha ng file na iyon at ibigay ito off sa isang programa na tinatawag na tagatala. Ang tagatala ay abutin na text na iyong isinulat at itong isalin sa ang binary mga tagubilin na ang iyong computer ay tunay na pagpunta sa paggamit. Iyan ay tinatawag na ang bagay o sa mga maipapatupad na file. Kung tumingin ka sa ang file na ito, ikaw ay pagpunta upang makita ang code na iyong isinulat. Kung tumingin ka sa ang file na ito, ikaw ay pagpunta upang makita ang isang random na pagkakasunod-sunod ng mga character na walang kahulugan kung ano pa man. Iyon ay dahil ito ay ang binary. Ito ay hindi sinadya para sa iyo na ang pagbabasa. Subalit, ang anumang oras na nais mong magpatakbo ng isang bagay, ano ang iyong pagpunta upang patakbuhin ito object file. Kaya kapag nakikipagtulungan kami sa mga file, makikita namin magsulat ng isang file sa C. Magpapadala kami pagkatapos itala ito, gamit ang isang utos tulad ng make na tumawag sa diyos ang tagatala clang para sa mga wika C. At iyon ay gumawa ng isang bagay file, tulad ng isang out, o sa kasong ito, ang pangalan, ang aking mga file, na ko na ilagay sa. Lahat tama. Kaya sabihin aktwal na subukan ito. Kaya ako ay nagmula sa isang halimbawa ng kung ano ang nais kong subukan. At isa sa mga bagay na fascinates sa akin ay animation. Kaya kami ay pagpunta upang subukang gawin isang maliit na piraso ng animation gamit ASCII na character lamang. Mga character na maaari naming i-print out madali na ngayon. Kaya dito ay ang aking pinakamahusay na pagtatangka sa paglikha para sa iyo ang animation ng isang kuneho tumatakbo sa pamamagitan ng matataas na damo. May siya ay. SIGE. Kaya siya ay hindi pa tumatakbo, ngunit siya ay nakatayo doon sa matangkad damo. Ngayon kung ako ay isang animator, sa old school bersyon ng animation, ano ang aking Gusto ko ay nais kong gumawa isang larawan ng ito kuneho sa damo. At pagkatapos ay ako gumawa ibang ang larawang isa pang tinatawag nilang cell-- na ay ang mga kuneho lamang bahagyang inilipat. At pagkatapos ay isang ikatlong isa na siyang may inilipat nang kaunti pa bunny. At gusto ko makabuo ng isang buong pagkakasunod-sunod ng mga cell na ito. Ang ilang kung saan ang mga kuneho ay higit sa papunta sa kaliwang bahagi. At pagkatapos ay gumagalaw ng dahan-dahan, isa sa pamamagitan ng isa patungo sa gitna. At pagkatapos ay mula sa gitna sa ibabaw sa kanan. At kung ako ay pagkatapos, talagang mapalad, maaari ko bang ilagay ito magkasama at ako ay maaaring bigyang-buhay ang mga ito. At doon ang aking bunny tumatakbo sa pamamagitan ng damo. Iyon ang aking dakilang PowerPoint linlangin para sa araw. SIGE. Kaya ito ay bilang mabuting bilang ito nakukuha. SIGE. Kaya, narito ang isa pang panahon, narito ang aming kuneho tumatakbo sa pamamagitan ng damo. Tagapagsalita 19: Muli. BRIAN SCASSELLATI: Isa mas maraming oras, ang lahat ng karapatan. Mayroong ang iyong kuneho. SIGE. Kaya ngayon kung ano ang namin ang pagpunta gawin ay kami ay pagpunta subukan na i-automate ang proseso ng paggawa ng mga cell na ito. Hindi namin lubos ay hindi makakakuha sa punto ng kawalan ng kakayahang ilagay ang mga ito sa lahat ng sama-sama. Subalit, kami ay pagpunta sa subukan na i-automate ang mga proseso ng pagbuo ng sequence na ito. At ito ay marami ng kung ano animation ngayon ay gusto. Iyon ay, hindi mo na gawin ang mga bagay kinakailangang sa pamamagitan ng pagguhit ng lahat ng bagay sa pamamagitan ng kamay. Ginagamit namin ang isang computer upang i-automate bahagi ng prosesong iyon. SIGE. Kaya hayaan mo akong lumipat sa ngayon sa aming CS50 IDE. At ako ay nilikha para sa us-- at hayaan akong mag-zoom in dito ang isang maliit na bit-- na ko nilikha para sa amin ng isang panimulang punto. Sa bawat oras na hinihiling namin sa iyo na umupo at isulat ang isang piraso ng code, kung ano ang talagang hinihingi namin sa iyo na gawin ay hinihingi namin upang malutas ang isang problema. At ang paraan na dapat mong isipin ang tungkol sa paggawa na ay sa pamamagitan ng pagsisimula sa ilang mga simple bahagi ng solusyon. At pagkatapos ay bumuo out mula sa na bahagi. At na kung ano ang kami ay pagpunta sa gawin ngayon. Kaya sa halip na sinusubukan ang lahat nang sabay-sabay sa isulat ang buong bungkos ng code na pagpunta upang makabuo ng mga 10 mga cell animation, kami ay pagpunta sa simulan sa halip may isang piraso na gumagana. At pagkatapos ay gagamitin namin bumuo ng isang maliit na piraso sa paligid na at isang maliit na higit pa at ng kaunti pa. Ngayon ang magandang bagay tungkol sa paglutas ng mga problema sa paraang ito ay na ito ay magbibigay-daan sa iyo upang simulan ang palaging may isang bagay na alam mo gumagana at ipakilala ang isa unti-unting pagbabago. At iyon ay isang mahusay na paraan upang malaman kung paano code, dahil ang bawat panahon na kayo ay gumawa ng isang pagbabago, makikita mo kung ano ang epekto ito ay may. SIGE. Kaya narito ang aming panimulang punto. SIGE. Kaya sa simula ng aking mga file, Na ko hash #included stdio.h. Iyan ay sa gayon ay maaari ko bang makuha ang printf () function upang gumana. Pagkatapos ko ang aking pangunahing pag-andar ko. At ito pa rin hitsura ng isang maliit na arcane o nakatago sa ilan sa inyo. Iyon ang OK. Lahat ng sinasabi nito ay na ang pangunahing function na tumatagal walang arguments-- void paraan wala sa C. At ito nagbabalik sa pamamagitan ng convention isang integer. Laging nagbabalik Main isang integer, karaniwan ay isang code na sinasabi ng mga bagay nagpunta na rin o hindi pumunta ng mabuti. SIGE. Ngunit pangunahing ay upang magkaroon ng na Pormularyo para sa atin ngayon. Pagkatapos ko na ilagay sa tatlong linya ng code. At kasama ang bawat linya ng code, Naglagay ako ng komento. Ngayon ay isa sa mga bagay na kami ay igiit na ang ginawa mo, at ito ay tulad ng isang mahalagang programming kasanayan, ay upang laging magkomento sa iyong code. Laging isulat sa isang English bagay comment na sa tingin mo ang code ay dapat na gawin. Sa ganoong paraan, sa susunod kapag bumalik ka sa ito, maaari mong tingnan ang mga ito at maaari mong sabihin, oh, natatandaan ko kung ano ako ay sinusubukan na gawin na ito. O kapag naupo isang TA sa inyo upang subukan upang makatulong sa iyo sa oras ng opisina, sila ay maaaring tingnan ang mga ito at pumunta, ako makita kung ano ang iyong sinusubukang gawin, ngunit sa halip na ito ay kung ano talaga ang nangyayari. SIGE. Kaya Mayroon akong tatlong bahagi sa aking code, Pupunta ako sa una sa lahat print ang ilang mga tuldok sa simula. Pagkatapos ay makikipag-print out ko ang aking lubhang magarbong kuneho. At pagkatapos ng ilang piraso ng tuldok sa dulo. At ang tatlong print pahayag ay dapat na mukhang pamilyar sa iyo sa puntong ito. Lahat na ako ng paggawa sa bawat isa sa kanila ay hindi ako imprenta ang isang pagkakasunod-sunod ng mga character. Walang mga variable na kasangkot. Lahat ay lamang flat. SIGE. Kaya kung bababa ako ngayon sa aking terminal-- Tayo'y makita kung ako makakakuha ng ito pabalik ipaalam out-- at ako pagpunta sa uri ng malinaw muli. Tagapagsalita 20: Gumagamit kami ng double slash sa puna? BRIAN SCASSELLATI: Maari gamitin ang double-- yes. Mayroong maraming paraan upang iwan ng mga komento sa C. Isa paraan ay ang paggamit ng double slash. Ang iba pang ay ang paggamit ng isang slash at isang bituin at pagkatapos isara ng isang bituin at isang slash. Lahat tama. Una sa lahat, ako ng pagpunta sa magsimulang mag-navigate sa paligid dito. Kaya kung pumunta ako sa aking home directory, Binago ko na directories doon, Pupunta ako sa hitsura at makita kung ano ang sa directory na iyon, ls, ilista out. Pupunta ako upang makita na hindi ko na kayong dalawang subdirectory. Ni gawin ito ng isang maliit na mas malaki Ipaalam dito sa gayon ay maaari naming ang lahat ng makita ito. Maaari ko bang makita na ko kayong dalawang subdirectory. Kukunin ko na baguhin directory upang pumunta sa workspace. At ako pagpunta sa lamang-type out bahagi ng mga ito, at pagkatapos ay pindutin lamang ang Tab. At makikita ito makumpleto ang natitira para sa akin. Fancy. Kukunin ko tumingin at makita sa workspace. At ngayon, ako ay nagtatrabaho sa SuperSection na namin ang pagtuturo sa ngayon. Kaya kailangan ko pumunta sa directory na iyon. At sa wakas, tumingin at makita. At nakuha ko na ang file bunny.c. Lahat ng mga karapatan upang ipaalam sa akin malinaw na beses pa. At ako pagpunta sa now-- muli ako matigas pa rin sa directory na iyon at ito ay nagsasabi sa akin ako sa na direktoryo SuperSection. Pupunta ako sa sige at gumawa ng aking bunny program. At ang utos na iyon, gumawa ng kuneho, habang tunog ng kaunti kakaiba, invokes din ang kumalatong tagatala. At ito ay ginawa para sa sa akin ng isang output na isang executable funny-- isang executable file na tinatawag na bunny. SIGE. Pagkatapos ay maaari ko, at ito tunog kahit na mas masahol, execute kuneho. SIGE. At makita kung ano ang ginagawa nito ipaalam. SIGE. Iyan ay isang maliit na piraso ng kung ano ang inaasahan ko. Mayroon akong aking bunny larawan sa doon, ngunit ako uri ng gusto ang lahat ng ito sa pamamagitan ng mismo. Ano ang hanap ko? Tagapagsalita 21: slash l o slash n. BRIAN SCASSELLATI: slash n. SIGE. Kaya sabihin bumalik dito. At kukunin ko na lumabas na. At kukunin ko na bumalik sa isang ito. At tumagal ng isang tumingin ngayon hayaan mula sa aking mga pangunahing pag-andar dito. Kaya kung ano ang dapat kong gawin? Gusto ko upang tapusin ang linya. Kaya makikita ko bang ilagay sa isang komento. Kailangan ko bang ilagay sa isang printf (). At kung ano ang kailangan kong ilagay sa? / n. SIGE. Ano ang kailangan kong tapusin ito sa? Tuldok-kuwit. Lahat tama. Ngayon, isa sa mga tunay mahalagang bagay ay tiyakin sa bawat oras na gumawa ng isang pagbabago sa iyong code, na i-save mo ito. Kung hindi mo pa nai-save ang iyong code, ikaw ay pagpunta sa paunawa ng isang maliit na bituin up doon. At star na nagsasabing ikaw may hindi nai-save ang code na ito. Kung ako sumulat ng libro ito sa ngayon, ito ay hindi pagpunta upang ipakita ang anumang mga pagbabago, dahil mukhang ang compiler sa file na sa disk, hindi ang file na buksan sa iyong editor. Lahat tama. Kaya sabihin i-save natin ito at pagkatapos namin pumunta karapatan sa down dito, lumabas ka pabalik. Bumaba sa aking terminal. At i-clear muli ang space ipaalam. At maaari naming magpatuloy at isa pa oras na gumawa ng aming bunny program. At magsagawa ng mga kuneho. Na hindi gumana ang alinman. Maling slash. Kaya kung titingnan mo sa kung ano ang mayroon ako, nilagyan ko ng / n sa doon, ngunit ako ay nagkaroon ng maling slash. Lahat ng bagay na iyong computer ay ay napaka malinaw. SIGE? Isang maliit na pagkakamali ng bantas, at biglang hindi mo makuha ang gusto mo. Lahat tama. Kaya ni-zoom out muli muli ipaalam. Susubukan naming bumalik. Well gumawa ng tunay na mabilis na pagkumpuni. Susubukan naming ilagay ang karapatan slash in. Susubukan naming i-save ito. Susubukan naming mag-zoom in muli. Para sa ilang mga dahilan, hindi iyon pagiging masaya, ngunit sabihin sige at kami ay bumalik sa terminal dito. I-clear up ito. Susubukan naming mag-zoom in. At isa pang beses, kami ay gumawa ng kuneho. At ngayon sigurado sapat, ito gumagana. Yehey. SIGE. Kaya sabihin subukan upang gumawa ng mga ito hayaan mas pangkalahatang ng kaunti. Tingnan natin kung sa halip na lamang pag-print ng isang partikular na frame, sabihin makita kung maaari naming gawin ito upang maaari naming makuha ang lahat ng 10 ng mga animated na mga frame na gusto naming magkaroon. Kaya muli, sabihin ito ng isang hakbang sa isang pagkakataon. Unang masaklaw ito, hindi Ipaalam sa gayon ay gagawin ko ang lahat ng mga frame, ngunit upang gawin ko ang isa sa anumang frame na baka gusto ko. Kaya ano ang mga pagkakaiba sa pagitan ng mga frame? Ay ang bunny ang parehong? Madla: Oo. BRIAN SCASSELLATI: Oo. Ano ang pinagkaiba? Madla: Posisyon. BRIAN SCASSELLATI: Ang posisyon nito, di ba? At kung paano ko makokontrol ang posisyon nito? Gaano karaming mga tuldok Ako paglagay sa simula at kung gaano karaming mga tuldok Ako paglagay sa dulo. Kaya ako ay limang sa simula at limang sa dulo. Ni palitan na limang may para sa loop Hayaan. SIGE. At ako pagpunta upang lumikha ng isang para sa loop ngayon na ang pagpunta sa sabihin, Pupunta ako sa i-print ang ilang mga numero ng tuldok sa simula. Pupunta ako sa paggamit ng isang variable. Sabihin natin, kung paano tungkol sa i bilang ang counter sa aking loop. At ako pagpunta na idedeklara ito up top. At pagkatapos ay sa para sa loop Kailangan kong gawin ang tatlong bagay. Ang unang bagay na kailangan kong gawin ay kailangan ko upang magpasimula i. Ano ang dapat kong magpasimula ito upang simulan upang maging? 0. SIGE. Pagkatapos ay kailangan kong sabihin, kung ano ang ang pagtatapos kondisyon? Kailan ko dapat itigil? Well kung gaano karaming mga tuldok gawin mo nais na i-print sa isang ito? Madla: Five. BRIAN SCASSELLATI: Limang ulit? Gawin ang isang bagay tungkol sa kung paano ipaalam ibang-iba, ginawa namin lima. Ni ipakita na iba ito Hayaan. Tagapagsalita 22: Dalawang. BRIAN SCASSELLATI: Two. SIGE. Kaya kung nais ko ng dalawang tuldok, ano ang dapat kong ilagay dito? Madla: Three. BRIAN SCASSELLATI: Three. SIGE. Ilang beses na pagpunta sa pumunta sa pamamagitan ng? Iyan ay pagpunta sa pumunta sa pamamagitan ng tatlong beses, 0, 1, at 2, Right? Sige, bumalik pababa sa dalawang ipaalam. Ngayon kami makakuha ng dalawang tuldok. At kung ano ang gusto kong gawin sa bawat oras na pumunta ako sa pamamagitan ng loop? Ano ay upang baguhin sa bawat oras na pumunta ako sa pamamagitan ng? Tagapagsalita 23: Magdagdag ng isang tuldok. BRIAN SCASSELLATI: Kailangan ko bang panatilihin ang pagpunta. Pupunta ako upang magdagdag ng isang tuldok. Pupunta ako upang mag-print ng isang tuldok, sa bawat oras sa pamamagitan ng mga loop. Ngunit kung paano ako nag-iingat subaybayan ng kung paano Ilang beses ko pa sa pamamagitan ng mga loop? Gumagamit ako ng i, na variable, na counter. Kaya sa bawat oras sa pamamagitan ng, pupuntahan ko upang dagdagan ang sagot sa pamamagitan ng isa. Ngayon, na ang parehong para sa sa akin bilang sinasabi i = i + 1. Iyon ang OK. Maaari ko ba itong gawin na- gusto ko ang shorthand, kaya ako pagpunta sa sabihin i ++. SIGE. Ni gawin ang parehong bagay Ipaalam down dito sa ibaba. Tanging ako uri ng ginawa ang isa. Pupunta ako upang ipaalam sa iyo guys gawin ang isang ito nang tuluyan. Lahat tama. Kaya kung ano ang dapat kong isulat dito? Ito ang aking para sa loop. Pupunta ako upang gawin ang isang printf () at pupuntahan ko upang gawin ito upang i-print ko lamang ng isang tuldok on na ilalim. Ano ang dapat kong isulat sa loob ito para sa loop ngayon? Well, una sa lahat kung ano ang variable dapat kong gamitin? Tagapagsalita 24: j. BRIAN SCASSELLATI: maaari ko bang gamitin j. Maaari ko bang gamitin ang parehong isa? Maaari ko bang gamitin muli i? Oo. Iyon ay OK, dahil ang Is na gumagamit ako ng hanggang dito, Hindi ko na kailangan muli kapag ang mga ito Makakuha ng pababa ako sa puntong ito. Kaya kung ano ang dapat kong magpasimula i upang? Tagapagsalita 25: 10. BRIAN SCASSELLATI: 0. Ano ang dapat kong tingnan? Gaano karaming mga tuldok ang kailangan ko ngayon sa dulo kung Mayroon akong dalawang mga tuldok sa simula? Kailangan ko ng walong sa dulo, kaya kung ano dapat kong tingnan, i mas mababa than-- Madla: Pitong, walong, siyam. BRIAN SCASSELLATI: Narinig ko pito. Narinig ko ang alas-otso. At narinig ko ang siyam. SIGE. Kaya hindi namin ang lahat sa tamang ball-- Jason sabi 10. SIGE. Kung kailangan ko ng dalawang tuldok para sa ang unang isa, kung gaano karaming gawin I-- at kailangan ko ng walong mga tuldok para sa huling one-- nilagyan ko ng dalawang up sa itaas, ano ang dapat kong ilagay sa ibaba? Madla: Eight. BRIAN SCASSELLATI: Eight. Dahil na pupuntahan bilangin zero sa pamamagitan ng pitong. At na walong beses sa pamamagitan ng mga loop. SIGE. At kung ano ang kailangan kong gawin sa dulo? Madla: i ++. BRIAN SCASSELLATI: i ++. Lahat tama. Kaya na naghahanap ng pretty mabuti doon. Tayo'y subukan ito at tingnan natin kung ano ang ginagawa nito. SIGE. Kaya kami ay pagpunta upang i-save ito. Nice at nai-save. Susubukan naming mag-zoom back out. Susubukan naming dito sa terminal. Susubukan naming mag-zoom in. Oops. Kami ay makikita, isa pang beses, gumawa ng aming bunny program. At sige, at maglalapat ng kuneho. At doon ito ay. Kaya mayroong aming kuneho. Kung saan ito ay may dalawang tuldok sa simula at walong tuldok out sa dulo. Lahat ng tao pa rin sa akin? SIGE. Kaya binuo namin ito up. Binuo namin ang isang kuneho, ng isang partikular na frame. Ngayon ko na nagawa naming upang ipahayag nang masaklaw na bumuo ng higit pa, iba't ibang uri ng mga frames. Ngayon sabihin sige, at magkaroon ng ito ay bumuo ng hindi lamang isa frame, ngunit ni makabuo ng 10 ipaalam mga frame, na kung saan kami ay dahan-dahan gumawa ng mga kuneho ilipat ang lahat ng mga paraan sa buong field. Lahat tama. Bumalik tayo. At susubukan naming ngayon. Kaya kung ano ang tunay na kailangan kong baguhin dito? Ano ang kailangan kong baguhin? Tagapagsalita 26: Kailangan mo munang baguhin ang mga bilang ng mga tuldok maximum sa simula. Dahil kung kami ay gumagawa ng 10 mga tuldok, ito ay pagpunta sa kailangan upang up sa scale. BRIAN SCASSELLATI: Oo. Kaya ngayon mayroon akong ito ang uri ng mga hardwired na laging gawin ng dalawang tuldok sa simula at laging gawin ang walong mga tuldok sa dulo. Gusto kong bumuo ng isa pang loop, di ba? Dahil hindi ko nais na bumuo lamang ng isa bunny litrato, Gusto kong bumuo ng 10 bunny larawan. Kaya kailangan ko upang bumuo ng isa pang loop, at bilang pumunta ako sa pamamagitan ng na loop, Gusto kong baguhin kung gaano karaming tuldok ko i-print sa simula at kung gaano karaming mga tuldok ko i-print sa dulo, batay sa kung saan cycle sa pamamagitan ng loop Kasali ako. Lahat tama. Kaya sabihin makakuha ng isa pang counter. Isang tao ay bago sinabi j, kaya kami ay gumawa ng isa pang j. At ngayon, kami ay pagpunta sa bumuo ng isa pang para sa loop. Ano ang napupunta sa loob na loop? Ang bagay na ito ay upang pumunta sa loob ng loop, di ba? Ba ang kuneho upang pumunta sa loob ng loop? Kailangan ko ng bunny sa ba bawat isa sa mga 10 mga frame? Madla: A-ha. BRIAN SCASSELLATI: Oo. Gusto ko ng isang kuneho sa bawat ng 10 mga frame, di ba? Paano ang tungkol sa mga tuldok sa Sa katapusan, kailangan ko na? SIGE. Kaya ako pagpunta upang ipasok ang lahat ng mga ito. Pupunta ako upang i-highlight ang lahat ng na ito, at ako pagpunta sa hit Tab. At na ang pagpunta sa itulak ang mga ito sa lahat ng dako nang kaunti, kaya na ito ay madali para sa akin upang makita kung ano ang sa loop. At pagkatapos ay makikita ko tapusin ito. Sabihin nating. SIGE? Ngayon, sa loop na ito na Ako building-- Oops, gumawa na makita mo see-- Mayroon akong aking counter j. Kukunin ko na ito na nagsimula sa 0. Gaano karaming beses ang gusto ko pumunta sa pamamagitan ng loop? Madla: 10 ulit. BRIAN SCASSELLATI: 10 ulit. Kaya kung ano ang numero ang dapat kong ilagay dito? Madla: 9, 10. BRIAN SCASSELLATI: 9, 10, ang isang tao ay nakuha na sabihin 11, di ba? Nais ko ng dalawang tuldok bago at ilagay ang mga i mas mababa sa 2. Nais kong walong mga tuldok, Ako ilagay i mas mababa sa 8. Ngayon, gusto kong pumunta sa pamamagitan ng 10 beses, kaya ko bang ilagay j mas mababa than-- Madla: 10. BRIAN SCASSELLATI: 10. Mayroon kaming pumunta. At kung ano ang gagawin ko sa katapusan sa j? ++, Dinagdagan ito. SIGE. Ngayon, narito ang mapaglalang bahagi, kung ano ang pagpunta sa mangyayari sa ngayon kung gagawin ko ito? Ako ba ay pagpunta upang i-print sa 10 mga frame? Tagapagsalita 27: Sa tingin ko ang mga ito ay ang lahat ay ang parehong. BRIAN SCASSELLATI: Sila idedetalye lahat ang parehong, karapatan? Dahil ang lahat ng mga ito ay pumunta pa rin maglagay ng dalawang tuldok sa simula. Ngunit hindi ito ang lahat ko nais na may dalawang tuldok sa simula. Gaano karaming mga tuldok ang gagawin ko gusto sa simula? Madla: Ang pagbabago. BRIAN SCASSELLATI: I nais ito upang baguhin, di ba? Kaya kung ano ang mayroon ako para na pagbabago bawat oras na ang loop napupunta sa pamamagitan ng? Madla: Bilang ng mga tuldok, j. BRIAN SCASSELLATI: j, ang bilang ng mga tuldok. Kaya ang maaari kong baguhin ito upang maging j. Ang unang pagkakataon sa pamamagitan ng mga loop, ano ang na magiging? Ano ang gagawin ko set j na sa unang? Madla: 0. BRIAN SCASSELLATI: Kaya kung gaano karaming ulit ako pagpunta sa gawin ito? 0. Ang ikalawang oras sa pamamagitan ng loop, j magiging 1 dahil dinagdagan ko ito. Gaano karaming mga tuldok ako pagpunta sa i-print? 1. Ang pangatlong beses sa pamamagitan ng mga loop, kung gaano karaming mga tuldok ako pagpunta sa i-print? Madla: Three. BRIAN SCASSELLATI: j ay magiging 3. Gaano karaming mga tuldok ako pagpunta sa i-print? Oh, sorry, j ay magiging 2. Gaano karaming mga tuldok ako pagpunta sa i-print? Madla: 2. BRIAN SCASSELLATI: 2. OK, kaya ako pagpunta sa panatilihin incrementing na bilang namin pumunta kasama. Paano ang tungkol sa down sa ibaba? Ano ang napupunta down dito? Hindi ko nais 8 palagi sa dulo anymore? Tagapagsalita 28: 10. BRIAN SCASSELLATI: Gusto ko ng 10 na tuldok? Gusto ko ito upang baguhin, masyadong. Kaya paano mo gusto ko ito upang baguhin? Madla: [hindi marinig]. BRIAN SCASSELLATI: Well, kung ako may limang tuldok sa simula, kung gaano karaming mga tuldok ni ako makakakuha ng sa dulo? Madla: Five. BRIAN SCASSELLATI: Kapag mayroon akong anim na tuldok sa simula, kung gaano karaming ako makakakuha ng sa dulo? Madla: Four. BRIAN SCASSELLATI: Kung Nakatanggap ako pitong mga tuldok sa simula, kung gaano karaming ako makakakuha ng sa dulo? Madla: Three. BRIAN SCASSELLATI: Kung hindi ko na Nakakuha j tuldok sa simula, kung gaano karaming ako makakakuha ng sa dulo? 10-j. SIGE. Kaya sabihin subukan na out. Kaya ako pagpunta sa i-save ang aming mga kuneho program. Muli kami mag-zoom out. Makikita bumaba kami sa aming mga terminal. Susubukan naming i-clear ang mga ito. At mag-zoom in. Gagawin namin ang aming mga kuneho program, muli. At kami ay isakatuparan ang mga ito. Naku. Hold on, ni-zoom out ipaalam. Tama ba ko 10 mga frame? Well, kung gaano karaming mga bunnies ako nakakakita up doon? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Nakakuha ako ng 10 frames. Sila ay ang lahat sa parehong? Madla: Oo. Hindi. BRIAN SCASSELLATI: No. Na unang isa, ang bunny ay malayo sa kaliwa. At higit dito, ang mga kuneho ay malayo sa Tagapagsalita 29: Karapatan. BRIAN SCASSELLATI: Kaya, ano ang nakalimutan kong gawin? Tagapagsalita 30: Magsimula ng isang bagong linya. BRIAN SCASSELLATI: Nakalimutan ko upang simulan ang isang bagong linya, muli. Parehong pagkakamali na ginawa ko dati. Lahat ng karapatan, pumunta ayusin na ipaalam. Ngayon, ako pa rin got ang code sa may upang gumawa ng isang bagong linya. Bakit hindi ito gumagana? Tagapagsalita 31: Ito ay hindi sa loob ng loop. BRIAN SCASSELLATI: Oh, ito ay hindi sa loob ng loop. Tama iyan. Ito ay nakaupo sa labas dito. At ang para sa loop ay lahat ng bagay na ang nasa loob ng text na iyon. Kaya ako pagpunta sa ilipat ito sa loob ng para sa loop. At makikita ko ang Tab sa harap nito upang ipakita na ito ay nasa tamang lugar. At ngayon, makikita naming i-save ito muli. Makikita zoom namin out. Susubukan naming lumipat sa aming terminal. Palakihin. Susubukan naming gawing muli ang aming mga kuneho program. At ngayon, ngayon namin nakuha ang aming 10 frames. [Clapping] BRIAN SCASSELLATI: OK. So. Narito ang aming nested para sa mga loop. Nagawa naming bumuo sa inner loop kung gaano karaming mga tuldok Nais ko upang i-print sa simula, sa dulo. At ang mga panlabas na loop kinokontrol kung gaano karaming mga frames ako ay gusali. Nagsimula kami sa isang maliit na kernel ng problema, at built out namin mula sa puntong iyon. Lahat tama. Gawin ang isa pang hakbang Hayaan. Handa ka na? May isang bagay sa dito kung saan na tunay na uri ng nakuha namin mas kumplikado kaysa sa kailangan namin. Tignan natin. Kaya sa aming bunny program, kung ako mag-zoom out dito, Ko talagang gawin ang ilan sa mga parehong bagay nang paulit-ulit. Ano ang gagawin ko na ang uri ng ang parehong bagay na paulit-ulit ng dalawang beses? Tagapagsalita 32: I-print ang mga tuldok. BRIAN SCASSELLATI: Oo Print ko ang mga tuldok nang dalawang beses. Talagang huwag akong magkaroon ng ang puna na ito pababa dito. I-print ko ang ilang mga tuldok sa simula, i-right up dito. At pagkatapos kong i-print ang ilang mga tuldok sa dulo. At ako ang uri ng eksakto ang parehong bagay. Ano kami ay pagpunta sa simulan nagtatrabaho sa sa susunod na ilang linggo ay kawalan ng kakayahang gumawa ng mga bloke ng mga code na ginagamit namin nang paulit-ulit, at sa pamamagitan ng isang proseso tinatawag abstraction, kami ay pagpunta sa pull ang mga ito sa labas at isulat ang mga ito ng isang beses sa gayon ay pagkatapos ng aming makakaya muli ang mga ito nang paulit-ulit. Kaya sabihin subukan iyon. Ready? Kami ay pagpunta sa gawin ang bloke ng code. At ako pagpunta sa tumagal ito ng doon. At ako pagpunta sa define-- down sa ibaba, Pupunta ako sa magsulat ng isang bagong function. Ito ay hindi pagpunta upang bumalik sa anumang bagay. At ako pagpunta sa tawag na ito printDots. Ito ay pagpunta sa tumagal ng isa argument, na isang integer na sabi howManyDots ang dapat kong i-print. At ngayon sa halip ng pag-print ng j tuldok, kukunin ko i-print ang magsasabi howManyDots ang dapat kong i-print. At may isang maliit na problema dito. Kahit sino malaman kung ano ito? Ano ang kailangan kong na nakalista in dito na hindi tinukoy? Madla: [hindi marinig] BRIAN SCASSELLATI: Well kung paano maraming mga tuldok ay tinukoy karapatan up dito, ngunit ako gamit na variable i. Kaya ako pagpunta sa tumagal ng variable na i at ako pagpunta upang tukuyin ito pababa sa dito sa halip. Kaya ngayon ito ay pagpunta sa stay-- Oops, Nakakuha ang caps lock on somehow-- Ako pagpunta sa panatilihin down i in dito. Kaya ngayon dito ay ang aking maliit na function na o sub-gawain, at sinasabi nito, kung gaano karaming mga tuldok ako pagpunta sa i-print? At makikita ito pumunta sa pamamagitan ng loop at i-print ang mga ito nang paulit-ulit. Maaari ko bang pagkatapos ay baguhin ang aking programa up dito. At ano ang tawag ko na function? printDots. Kaya Tatawag ako printDots. Gaano karaming mga tuldok ang gusto kong i-print sa unang pagkakataon sa harap ng mga kuneho? Madla: j. BRIAN SCASSELLATI: j. Gaano karaming mga tuldok ang gusto kong i-print sa dulo, pagkatapos ng kuneho? 10-j. At may isang bagay na ako nawawala. Bilang na nakita mo sa lecture ngayon, kami ay pagpunta na idedeklara printDots hanggang sa itaas upang bigyan ang mga prototype. SIGE. Kaya kung ano ang nagawa ko ay sinubukan ko na ihiwalay na gamiting muli bahagi ng code na nagawa ko nang paulit-ulit. At ko na sinubukan upang bunutin ang mga ito upang ang lahat ng iyon ay nakapaloob sa isang lugar. Sa ganoong paraan, kung mayroon akong isang pagkakamali sa isang lugar, Mayroon akong lamang upang ayusin ito sa isang lugar. Lahat tama. Kaya sabihin i-save ni ito. At ni tiyakin na ito gumagana. Kaya sabihin pumunta out. Kami ay pumunta muli sa aming terminal. Susubukan naming mag-zoom in. Gagawin namin na ang prosesong kuneho. Oh. At ito ay nagbigay sa akin ng isang babala. Ano ito sinasabi sa akin? Well sa alinman sa mga ulit, palaging gusto mong upang mag-scroll hanggang sa ang pinakaunang error-- ngayon sa isang ito, lamang ang nakuha ko ang isa. Ito ay nagsasabi sa akin sa bunny.c, on line 8, column 9, mayroong isang problema. Sinasabi nito, na iyong ipinahayag na ito variable i at hindi mo pa ito ginamit. Ngayon normal, na ang hindi ang pinakamasama error. Iyan ay isang madaling isa upang ayusin. At sa katunayan, maaari naming bumalik sa. Maaari naming bumalik sa kuneho. At sa kasong ito, ang lahat ng namin may sa gawin ay mapupuksa i, dahil hindi kami gumagamit i loob pangunahing anymore. Lang namin ginagamit ito sa loob ng aming mga sub-gawain. Kaya sabihin i-save na. Susubukan naming bumalik. At mag-zoom in. Ipapakita namin ng isa pang oras gumawa ng kuneho. At doon muli ay ang aming 10 frames. SIGE. Anumang oras na ikaw ay bibigyan ng isang procedure-- Oo. Tagapagsalita 33: Mayroon akong a-- ako nalilito. Maaari kang bumalik sa mga code? BRIAN SCASSELLATI: Yep. Tagapagsalita 33: Kaya, kapag nagsulat ka iyong prototype, ang argumento mo ay ito na may pangalang ay tinawag howmany? Ngunit, below-- BRIAN SCASSELLATI: Oh oo. Tagapagsalita 33: --called sila ng isang bagay iba, hindi ko maintindihan. BRIAN SCASSELLATI: Bakit ang mga ito ay naiiba. Kaya na ang isang mahusay na tanong. Kaya ang tanong ay, up dito, sinulat ko howmany, at pababa sa ibaba, sinulat ko howManyDots. Ang dahilan ay ang up sa iyong tularan, ito ay talagang hindi pagbibigay pansin sa mga pangalan na naglalagay ka ng in. Lahat ng ito ay talagang nagmamalasakit tungkol sa ay na ito ay isang integer. Ito ay nagnanais na malaman ang mga form na ng kung ano ang iyong paglagay sa. Ngayon stylistically-- oops-- ano ang dapat kong huwag, ay gusto ko upang gumawa ng mga tugma. SIGE. Dahil na makikita ay panatilihin ito mas madali para sa akin upang matandaan. Ngunit iyon ay ang aking mga pagkakamali Oo. Tagapagsalita 34: At kaya para sa mga prototype sa trabaho, lamang pagsulat na linya, pagsulat ang prototype, ay nagbibigay-daan na ang function na nanggagaling kanan sa ibaba nito upang pumunta sa dulo at makuha kung ano ang ibig sabihin nito? BRIAN SCASSELLATI: Ano ang ibig sabihin nito ay kapag napupunta sa pamamagitan ng tagatala, ito napupunta mula sa tuktok ng ang iyong code sa ibaba. At kung ano ang prototype ay, ay ito ay isa lamang isang pangako. Sinasabi nito, may pagpunta sa maging tinukoy sa tabi-tabi ng isang function. Ito ay magiging tinatawag printDots. At ito ay pagpunta sa tumagal ng isang argument na ang pagpunta sa maging isang integer at ito ay pagpunta upang bumalik wala, walang bisa type. SIGE. Pangako ko sa iyo na ito ay magiging tinukoy lugar down ang kalye. Ngunit sa anumang oras na makita mo na, bilang ikaw ay pupunta pababa sa pamamagitan ng mga natitirang bahagi ng aking pangunahing pag-andar, gusto ko mo na ituturing na bilang isang function na magdadala sa isa integer input. At kaya kapag naging down ang tagatala sa pamamagitan na ito, ito ay nakikita na pangako. At kapag ito ay makakakuha ng pababa, mapigil ang pagpunta, mapigil ang pagpunta, nahahanap nito sa unang pagkakataon printDots ay nabanggit. At sinasabi nito, Oh, ikaw ay nagbibigay ng sa akin ang mga j. j ay isang integer. Well mo sa akin ipinangako na maging isang integer at na tama. Iyon ang OK. At pagkatapos ay sa wakas, pababa sa pinakadulo ibaba, bago ako makakuha ng sa dulo ng aking file, gumawa ako ng mabuti sa aking pangako at tukuyin ko ito. SIGE? Tagapagsalita 35: Kaya, saves-- ito ang programa ay i-save blangko ang puwang na nito ay babalik at pumupuno sa dulo? BRIAN SCASSELLATI: Ito ay hindi tungkol sa paglalaan ng memorya. Ito ay tungkol lamang kung ano ang tunay type ang mga expecting na makita. Dapat ang bagay na ito ay may isa argument, o limang argumento? Dapat magkaroon ito integer na ibinigay sa mga ito, o mga string? Iyan na ang lahat ito ay naghahanap gawin ay upang suriin, ikaw sa akin ang nagbibigay sa tamang uri ng argumento. SIGE? Lahat tama. Hayaan akong umalis sa iyo isang iba pang mga bit na tingnan. ASCII art ay hindi ang magandang modelo ng animation na ito ay ngayon. Ngunit ang ilang mga tao kumuha ng kurso ng mga bagay-bagay at itulak ito sa kanilang magpakalabis. Ito ay, gaya ng David nagpakita sa panayam, ang isang piraso ng code na dapat ay sa ilalim ng walang pangyayari subukan sa dobleng inyong sarili. Dahil ito ay napakahirap stylistically. Sa katunayan, ito ay dinisenyo upang maging kasing mahirap hangga't maaari upang basahin. SIGE. Kaya, upang gawin muli, ni-zoom in dito. Pupunta ako sa pumunta ngayon, palitan ang directory. Pupunta ako upang pumunta up ng isa antas, bumalik sa aking workspace. Kukunin ko pagkatapos ay baguhin ang direktoryo na ito sa iba pang mga direktoryo na aking nilikha. At ito ay ang International Obfuscated C Programming Contest. Obfuscated paraan bilang mahirap hangga't maaari upang maunawaan. Kaya mangyaring, huwag matakot kung titingnan mo sa ito at pumunta, hindi ko mabasa iyon. Iyon ang punto ng mga ito. SIGE? Ngunit, mayroon kaming ito kahanga-hangang programa na Ako pagpunta sa pagtingin sa pamamagitan ng pag-type ng higit pa. At makita kung maaari kong i-zoom out ipaalam lamang ng isang piraso, kaya maaari mong makita ito At ito ay ang programa. Ito ay pinangalanan endo.c. At mukhang ito bucket na may uri ng mga titik F-L-U-I-D sa loob nito. Ito ay talagang isang program. Ito ay nakasulat sa mga pinaka-nakatago paraan na ang mga may-akda ay maaaring posibleng isulat mo. Ngunit ito ay isang kahanga-hangang maliit na piraso na bumubuo ng isang modelo ng fluid dynamics. At kaya kami ay pagpunta sa magbibigay na model ng isang input na ganito ang hitsura nito, ng isang staired set ng mga lalagyan kasama ang ilang mga likido, ang ilang mga likido, hanggang sa tuktok. At kami ay may ito gayahin kung ano ang nangyayari sa mga ito. Kaya Tatawag ako na function, endo. At kukunin ko na bigyan ito na input file na nagkaroon ako. At doon ay aming ehemplo ng ASCII art. Ang isang buong fluid dynamic simulator tumatakbo sa loob lamang ng ilang linya ng code. Ngayon kung ano ang tunay na tunay amazing tungkol sa maliit na program ay na gusto ko upang itigil ito ngayon, kaya ako pagpunta upang gamitin kung ano ang utos? Madla: Control-C. BRIAN SCASSELLATI: Control-C. SIGE. Kaya makikita ko bang gamitin ang Control-C. C Na kailangan ihinto ito. Kukunin ko i-clear muli. At ngayon ako pagpunta sa tumawag sa diyos ang program, execute ang mga programa, gamit ang sarili nito bilang input. At kami na makita ang mga likido dynamic simulation ng mga ito natutunaw. SIGE. Mangyaring huwag ipaalam sa programa na maging ang mga bagay na nalilito ka. Ito ay upang lamang na maaari naming magtapos sa isang bagay na cool na at kawili-wili. SIGE. Best of luck sa iyong mga hanay ng problema. Ikalulugod naming upang sagutin mga katanungan pagkatapos ng klase. Salamat ng marami, guys.