[Nagpe-play ng musika] David MALAN: Lahat ng karapatan. Maligayang pagbabalik. Ito ay CS50, at ito ay Isang Linggo, ipinagpatuloy. Kaya isa sa mga dahilan na aming pagpasa sa paligid ng mga teknolohiya tulad ng Google Glass ay na ang mga ito ay may isang bagay na kilala bilang isang API, isang Application Programming Interface. At kung ano ang ibig sabihin nito ay na may mga karapatan file at sa mga tamang dokumentasyon, maaari mong aktwal na magsulat software para sa kahit na aparato tulad ng mga ito. At kaya kung ano ang mayroon kaming nasa isip patungo sa semesters dulo ay, kung ang isang proyekto kinasasangkutan ng, sabihin nating, ang Google ay maaaring Glass apela, gagamitin namin makita kung ano ang maaari naming gawin sa mga tuntunin ng hooking up ka na may ilang mga loaner hardware pati na rin ang Pampublikong-access API sa gayon maaari mong talagang simulan ang paglikha ng software na tumatakbo sa parehong na Glass Google. Ang isa pang device na aming na-play may ng late na naisip namin na maaaring maging masaya sa dulo semestre ay ito maliit na bagay dito. Ito ay tinatawag na lukso ng Paggalaw, at kung ano ang sa iyo tungkol sa upang makita ay technically isang advertisement para sa mga aparato, ngunit ito ay makipag-usap sa kung ano ang partikular na aparato ay may kakayahang. At ito, masyadong, ay may isang API sa pamamagitan ng kung saan maaari kang sumulat sa software kontrolin ang iyong sariling computer sa isang paraan masyadong gustuhin ang isang minutong film dito. [Video playback] [END-playback ng video] Kaya ngayon, aparato nangyari ito sa ay ipinatupad bilang isang maliit na USB connector na maaari mong plug sa iyong computer, ngunit hindi ko mabigla kung matagal bago kami ay may mga ganitong uri ng teknolohiya sa susunod na batch ng mga PC mga Mac at sa gayon ay maaari mong, sa katunayan, makipag-ugnayan sa ito sa isang paraan tulad na. Sa katunayan, kung ano ang naisip ko na gusto kong gawin, masyadong, ay Nakuha ko up ng isang maliit na demonstration programa na nagmumula sa software na ito. Kaya ko na ilagay ang maliit na sensor sa harap ng aking laptop. At bilang maaari mong makita, mayroon napagtanto na ang aking kamay ay doon pagkontrol ito. At lahat ng mga application na ito ay gumagana tagumpay kaunti mga bagay na tulad nito. Ngunit maaari mong makita na, sa katunayan, Mayroon akong limang daliri doon. Kung maaari naming makakuha ng mga ito upang gawin ang lahat ng 10, maaari mong isipin ang isang malinis at maayos piano application o mga katulad. Kaya kung nais mong makabuo pagkatapos ng klase ngayon at sa pag-play na bilang rin, ikaw ay maligayang pagdating sa. Kaya higit pa sa na patungo sa katapusan ng semestre. Kaya isang pares ng mga administratibong anunsyo. Ang isa, gawin ang seksyon na ito sa pamamagitan ng Biyernes sa tanghali sa cs60.net/section. URL na iyon ay nasa kurso ng homepage pati na rin. Sa habang panahon, bagaman, supersections ay pasinaya ito Linggo. Supersections ay isang isang-beses na bagay, dahil ito ay tumatagal sa amin ng ilang oras upang gumana out kung sino ang nasa kung aling mga seksyon at kung saan. Kaya ito darating na Linggo, may makikita maging isa na seksyon para sa mga mas kumportable, isang seksyon para sa mga mas kumportable. At doon sa ka sa isang lugar sa sa pagitan ng mga maligayang pagdating sa pumunta sa alinman sa o parehong o hindi. Pareho sa mga ito ay kumuha. Magagawa nilang sa isang mas malaki kaysa sa auditoryum seksyon ng isang normal na magiging in Ngunit ang layunin dito ay upang bigyan ng kasangkapan sa iyo ng ilang mga kaginhawahan na may problema magtakda ng isa, may C, na may CS50 appliance, ito katapusan ng linggo, kahit bago mo mahanap ang iyong out pormal na seksyon pagtatalaga. Kaya makikita mo matugunan ang iyong mga tf at ang iyong mas maliit pangkat ng mga sectionmates tungkol sa oras sa isang linggo. Opisina ng oras, samantala, Nai nangyayari. Gawin samantalahin ang mga ito ngayong gabi o bukas gabi kung nais mong. Problema hanay 0 ay dahil sa Biyernes. Ito ay isang araw na lalampas sa regular na naka-iskedyul na-Huwebes. Ngunit may problema na hanay 1, makikita mo ang na kasama nito ang ilang mga mainit-init-up pagsasanay na kung saan mo ang iyong sarili maaaring pahabain ang iyong Huwebes deadline hanggang Biyernes. Problema sa hanay 1, samantala, ay pasinaya sa website ng kurso ng ito darating Biyernes, kung nais mong kulutin up sa ito bilang ko ginawa nang matagal nang panahon late Biyernes gabi sa iyong kuwarto. Kaya cs50.net/appliance ay ang lugar kung saan maaari kang makakuha ng CS50 appliance na namin simulang gamitin sa Lunes. Gagamitin namin ang mga ito nang kaunti pa ngayon. Ngunit makatitiyak na nagpapatuloy ang problema itakda 1 pagtutukoy ay ituturo sa iyo tumpak na hakbang na kailangan mo upang makakuha ng na up at tumatakbo. Kaya huwag mag-alala tungkol sa paggawa na bago Pset 1 kung ikaw ay sa halip hindi. Ayos lang. Kaya kami ay tumingin sa Lunes sa source code, ngunit sa konteksto ng isang bagong programming language, lalo C. At C, hindi katulad sa simula, ay hindi graphical. Hindi ito piraso puzzle. Ito ay higit pang Ingles-tulad ng syntax. At mayroong isang pares ng mga hakbang na kasangkot sa aktwal na pagsusulat at pagpapatakbo ng isang programa sa C, dahil bukod sa pinagmulan code na tulad nito, kailangan mo ng isang bagay tinatawag na tagatala. At sa mga tuntunin ng karaniwang tao, kung ano tagatala ay isang gawin para sa amin? Oo. MAG-AARAL: Ito-convert ang code na sinulat mo sa 0s at 1s. David MALAN: Mahusay. Kaya ito convert ang code na isulat namin sa 0s at 1s. Ito-convert tinaguriang source code upang object code, sa huli ng na kamukha isang maliit na isang bagay na katulad nito. At ito ay ang iyong CPU, ang talino sa loob ng sa iyong computer, na dahil sa ang mga tao na lumikha ng mga computer, malaman kung ano ang mga pagkakasunud-sunod ng 0s at 1s mean. Marahil, ito ay nangangahulugan na print. Siguro ang ibig sabihin nito karagdagan. Marahil, ito ay nangangahulugan na pagbabawas. Siguro ang ibig sabihin nito magpakita ng isang graphic. Walang mga paunang-natukoy na pattern ng mga piraso na ang mundo ay nagpasya sabihin ilang mga bagay. Ngunit para sa pinaka-bahagi sa kursong ito, makikipagtulungan kami sa mas mataas na antas, at isasaalang-alang namin para sa ibinigay na mayroong umiiral mga bagay tulad ng compiler na maaari gumawa ng aming source code ng function na sa paraang nilayon namin. Kaya ang programa namin unang sinulat noong nakaraang linggo at pagkatapos ay nagsimulang port, kaya upang makipag-usap, mag-C ito nakalipas Lunes, ito ay. Kapag berde bandila na-click, kamustahin. Ito ay, siyempre, nakasulat sa scratch. At ako na-claim na ang katumbas programa sa C ay tumingin ng kaunti isang bagay na katulad nito. Kaya kung ano ko naisip naming gawin sa una ay, sabihin mang-ulol apart kung ano hitsura, sa unang sulyap, tinatanggap na, bilang patas arcane syntax, ngunit ikaw ay magsisimulang upang mapansin pattern pa masyadong mabilis. Ano gagamitin din namin gawin ngayon ay magbigay sa iyo ng isang mental na modelo para sa ilang mga canonical, ang ilang mga karaniwang constructs sa programming. At pagkatapos ay gagamitin namin talagang makakuha ng aming mga kamay marumi na may ilang mga halimbawa pati na rin. Kaya para sa mga ka ng mas kumportable, Napag-alaman na ito linggo at pagkatapos ay susunod linggo ay maaaring napakahusay maging isang bit ng pagsusuri. Ngunit lalo na kapag ang mga Hacker edisyon ng problema sa set 1 napupunta sa labas ng website kurso sa Biyernes, sa tingin ko makikita mo na kahit na bilang punan mo sa ilang blangko sa mga susunod na linggo o dalawang, makikita mo simulan upang makakuha ng higit kailanman hinamon at makatagpo bago at mas bagong mga bagay. Kaya sabihin mang-ulol sa programang ito bukod ng ilang linya sa isang pagkakataon. Sa pinakatuktok, mayroon kaming kung ano ang technically tinatawag na Preprocessor direktiba. Ito ay lamang ng isang linya ng code na nagsasabing upang isama ang mga nilalaman ng isang file, karaniwang tinatawag na ako / N, standard input - o, paumanhin, standard I / O, karaniwang input / output,. h, sa loob ng aking sariling programa. Kaya sa ibang salita, kung ako ay nagsulat na ito programa sa isang simpleng text editor tulad ng gedit, ang mas simple na katumbas ng isang bagay tulad ng Microsoft Word, na pagtuturo, # isama stdio.h, ay lamang pagpunta sa sabihin ang tagatala, grab ang mga nilalaman ng iba pang mga na file, stdio.h, at ilagay ang mga ito dito mismo. Ngayon, bakit ko pinapahalagahan? Ano ang sinabi i-claim sa loob namin ay mga file na ito tinatawag stdio.h, na kung saan ay naka-imbak sa isang lugar sa aking hard drive, o sa kaso, sa isang lugar sa CS50 appliance? May ibang ilagay ito doon para sa akin. Ngunit kung ano ang sa loob nito? Oo, sa gayon ito ay isang pahayag ng function na tinatawag na isang printf. Kaya printf naalala ang function na display salita at character at mga numero sa screen sa aking pag-bid. Ngunit hindi ko isulat ito. CS50 ay hindi magsulat dito. May isang taon na ang nakalipas ay nagsulat nito, at sila mahalagang nagbigay sa amin ang recipe para dito sa isang file na tinatawag na stdio.h. Kaya na ang unang linya ay nagbibigay lamang sa akin ma-access ang sa mga function na may ibang tao Nagsulat taon na ang nakakaraan, bukod sa na kung saan ay printf. Ngayon, ang susunod na linya Pupunta ako sa aking iwagayway sa kamay, hindi bababa sa hanggang sa susunod na linggo. Ngunit para sa ngayon, alam na int pangunahing (walang bisa) ay mahalagang ang katumbas ng ito dilaw puzzle piraso kapag berde bandila click. Ang mundo, taon na ang nakalipas, nagpasya na kung sumusulat ka ng isang programa sa wika na tinatawag na C, simulan mo iyong programa na may linya na mukhang iyon. Sa lamang tungkol sa oras sa isang linggo, makikita ito gawin pakiramdam kung ano ang int ay, kung ano ay walang bisa. Ngunit para sa ngayon, lamang sa tingin ng ito bilang na ito dilaw na piraso puzzle. Ngayon susunod, mayroon kaming isang kulot suhay sinundan sa pamamagitan ng isa pang malapit na kulot suhay, kaya na magsalita. At kami na makita ang mga buong mga programa sa C, pati na rin ang JavaScript at PHP. At lamang ang mga encapsulate mga kaugnay na mga linya ng code. Ang open suhay kulot talaga sabi, dito ay ilang mga code. At ang closed suhay kulot, na siyang angled sa iba pang direksyon, lamang ibig sabihin, na ito para sa ang may-katuturang mga code. Kaya ang makatas linya sa unang programa ay ang huling, printf, quote-magpanipi, kumusta mundo. At ako na tinatawag na ang bagay sa pagitan ng quote kung ano ang huling panahon? Kaya ito ay isang string. At isang string lamang ang mga techie termino para sa isang pagkakasunod-sunod ng character, isang salita, isang parirala. Kahit isang solong titik ng dati i-double quote. Ngunit ito ay isang pagkakasunod-sunod ng zero o higit pang mga character. Backslash-n, bagaman, mukhang medyo kakaiba. Ngunit ito lamang nilalayong isang bagay simple sa computer. Ano ang backslash-n? Bagong line. Kaya ito lamang ang mga espesyal na pagkakasunod-sunod ng character na ang mundo ay nagpasya Nangangahulugan maglagay ng line break doon, dahil ang tagatala ay talagang makakuha nalilito, kadalasan, kung, napaka understandably, ngunit hindi tama, lamang simulan ang pagpindot ng Enter upang ilagay mga bagong linya sa iyong code. Kailangan mong maging isang kaunti pa tahasang may backslash-n. At kami makita mayroong ilang ibang tulad ng pattern para sa mga espesyal na character. Halimbawa, kung ginusto mong hayaan ang iyong mga tututol malihis sa isang kaso na sulok, ipagpalagay na nais kong i-print ang isang double quote sa screen para sa anumang dahilan, na tila maging isang maliit na problema, tama? Dahil kung ko bang ilagay ang isang double quote sa gitna ng "kumusta, mundo," para sa anumang dahilan, kung bakit ay na mukhang potensyal na problemang? Ito Pinaghihiwa ang string. Ang tagatala lamang ang programa. Ang isang programa tulad ng isang tagatala ay lamang ng pagpunta na basahin ang iyong code sa itaas hanggang sa ibaba, pakaliwa sa kanan. At kung nakikita ng tatlong double quote sa halip ng dalawang, ito ay hindi pagpunta sa alam kung ibig mong sabihin na ang mga bagay sa kaliwa dapat na ang string, o ang bagay na sa kanan, o sa buong bagay. Ito ay hindi maliwanag, at kaya kung ano ang isang karaniwang tagatala nais gawin ay lamang taong kakatuwa out, at magbibigay sa iyo ng ilang mga error na mensahe, at gumawa ka makitungo sa mga problema. Kaya ibinigay na backslash-n nangangahulugan ng isang bagong linya, ano ang gagawin sa iyong instincts ngayon simulan upang maging kung ginusto mong isama isang bagay iregular tulad ng isang double quote sa loob ng ito kung hindi man-quote string? Backslash-double quote. At kaya namin makita ito uri ng pattern masyadong. Kung gusto mong gawin ang isang bagay ng kaunti kakaiba, makikita mo na ang mga solusyon madalas sundin ang isang pattern, at ang backslash Nagpapahiwatig ng isang escape sequence. At ito ay nangangahulugan lamang ng isang bagay na espesyal na kailangan namin upang kumatawan sa isang iba't ibang paraan. Bilang para sa kung paano kinakatawan mo isang backslash, mahusay, bibigyan namin ng bumalik sa na. Ngunit ang sagot, masyadong, ay talagang medyo halata. Kaya natin ngayong ipakilala sa ilang ibang programming constructs na nakita mo sa scratch. Marahil Ginawa mo na para sa ipinagkaloob na kung nakalikha ka na dived sa problema itakda 0. Ngunit natin ngayon ipakilala ang syntax sa C para sa mga ito kung hindi man ay medyo madaling maunawaan mga ideya, hindi bababa sa ilan sa kanila. Kaya ito kuru-kuro ng isang kondisyon o isang branch, samantalang dati namin kinakatawan ito gamit ang code na tumingin tulad nito sa kaliwa sa scratch - kung x ay mas mababa sa y, pagkatapos ay sabihin sa gayon - sa halip na ngayon sa C - ipaalam sa akin magtagis in sa pinakasimpleng kaso - lamang kami ng pagpunta sa sabihin, kung, buksan panaklong, isang bagay ay totoo - ang isang Boolean expression ay pagpunta sa pumunta kung saan ko sinabi kondisyon - malapit panaklong, pagkatapos ay kung ano ang sa loob ng mga kulot tirante. Kaya dito, masyadong, ang kulot tirante ay mga uri ng tulad ng scratch ni Mag-U-shaped piraso puzzle. Huwag kung ano ang nasa loob ng mga kulot tirante. Sa kasong ito, slash slash. At mapansin ito ay isang pasulong iwa, hindi isang backslash. Forward slash, forward slash, para sa mga taong na-program bago, nangangahulugan lamang - ito lamang ay isang komento. Ang puna ay hindi isang linya ng code, per se. Ito ay isang linya ng Ingles na ikaw, ang pantao, na nakasulat sa iyong sarili upang marahil ipaalala sa iyo upang gawin ang isang bagay, i- ipaliwanag sa iyong sarili, upang ipaliwanag sa ng ibang tao, kung ano ang iyong code ay paggawa. Ito ay lamang ng isang naglalarawang komento. Ngayon, siyempre, maaari kaming magkaroon ng two-way tinidor sa kalsada lamang sa pamamagitan ng paggawa nito, isang tatlong-way na tinidor sa kalsada sa pamamagitan ng paggawa ito, at kung patuloy kang ito pattern, maaari kang magkaroon ng apat na paraan, limang-way, anim-way na tinidor sa kalsada kung kailangan mo upang mahawakan, sa katunayan, na maraming mga kundisyon. At pagkatapos mapansin ang paralelismo dito - kung (kondisyon), iba pa kung (kondisyon), at ang isa lamang na ang isang ilan kakaiba ay ang huling, na lamang na tao. Ngunit muli, ito ay kapareho, conceptually, sa kung ano ang ginawa namin pa, kahit na syntax ang kalooban tumagal nang kaunti nagsisimula ginamit upang. Ngayon, sa halimbawang ito, mayroong ilang iba pang kakaiba syntax. Nakakakita kami ng printf muli, buksan panaklong, at malapit panaklong. At sa loob ng mayroong isang naka-quote na string. Ang mga panaklong, sa konteksto ng printf, pumunta sa kaliwa at kanan ng kung ano? Ano ang gagawin namin ilarawan ang naka-quote na string bilang sa mas pangkalahatang? Kaya ito ay isang argumento. Anumang oras na ikaw ay may isang function, tulad ng printf, at pagkatapos ay isang open paren at isang malapit paren at isang bagay sa loob ng ito, kung ito ay ang isang string, o isang integer, o anumang bagay, ang mga bagay sa sa pagitan ng mga panaklong ay tinatawag na isang argumento. At isang argumento lamang nakakaimpluwensya pag-uugali ng mga function na ito. Sa kasong ito, maganda ito kung paano i-clear. x