[MUSIC nagpe-play] Tagapagsalita 1: Ito ang CS50 at ito ay ang simula ng linggo dalawang. Kaya, sabihin sumisid karapatan sa isang bagay na ipaalam iyon ay maraming surot, kaya na magsalita. Kaya, sa paglipas dito ay CS50 IDE at na ako nakuha up nang maaga na ito screen-- sumpain ito. Spoiler alert. Lahat tama. Na nakuha ko up screen na ito dito, na kung saan ay isang napaka-simpleng programa. Kung mag-scroll namin down, pinaka ng mga ito ay lamang mga komento, ngunit dito sa linya 13 sa pamamagitan ng 17 kami ay may isang program. Ito ay syntactically may-bisa, na nangangahulugan na kung Sumulat ng libro ko ito, ito ay sumulat ng libro at tumakbo, ngunit ito ay maraming surot. Ang program na ito claims sa mga komento up tuktok na dapat itong i-print 10 bituin, ngunit ito ay hindi. At batay sa iyong karanasan, o sa lalong madaling panahon upang maging karanasan sa C, maaari mong lohikal umintindi kung bakit ito ay, sa katunayan, maraming surot? Oo? Madla: Ito ay napupunta mula sa zero sa 10. Iyan ay 11 iteration. Tagapagsalita 1: Oo. Kaya, ito ay pagpunta mula sa zero up sa pamamagitan ng at pantay-pantay sa 10, na siyempre ay 11 iteration. Kaya, ito ay pagpunta sa print, sa katunayan, 11 stars. Kaya, ang computer science convention sa karamihan ng mga wika programming ay, sa katunayan, para lamang simulan ang pagbibilang sa zero, ngunit bilang ng hanggang sa ngunit hindi sa pamamagitan ng mga halaga na iyong aktwal na nagmamalasakit sa. Ngayon, ito ay isang bagay na tumatagal ng isang maliit na nagsisimula ginagamit upang at kahit na wala, na idinisenyo bilang na ito ay para sa mga di programmers o non ng computer siyentipiko at para sa mga bata higit sa lahat, ay dinisenyo upang magkaroon simulan mo ang pagbibilang sa pangkalahatan sa isa. At na fine. Maaari mong ganap na simulan ang pagbibilang sa isa kung na mas kumportable. At bilang ng hanggang sa at sa pamamagitan ng 10, ngunit makikita mo mapagtanto lalo ngayong linggo at lampas na lang kaya maraming bagay sa programming ipalagay na 0 ay ang unang digit na kung saan ikaw bilangin, na kayo ay pagpunta upang mahanap ito ng mas madali para makarating lamang sa ito ugali ng panimulang mula sa zero at nadaragdagan pa hanggang sa ang halaga na mahalaga sa iyo sa ngayon mula sa mga makakuha pumunta. Kaya, na may taning na. Binago namin ang mas mababa sa o katumbas sa lamang mas mababa sa. Tingnan natin ang isang pagtingin sa isang pangalawang halimbawa dito. Kaya, masyadong inaangkin ang program na ito sa kanyang comments up tuktok na dapat itong i-print sampung mga bituin, ngunit ito ay hindi. Ano ang bug dito? Kaya, what-- at paumanhin, sabihin na malinaw. 10 stars. Isa sa bawat linya, ngunit ito ay hindi. Kaya, sa katunayan, hayaan mo akong magpatuloy at sumulat ng libro isa na ito dahil ito ay isang maliit na mas mababa clear batay sa paglalarawan. Hayaan akong pumunta sa aming direktoryo ng source. Gumawa buggy isang tuldok slash, buggy isa. OK, nakikita ko ang 11 mga bituin, na ay may problema pa rin, ngunit ikaw din lahat sila sa isang linya. Ano ang mga isyu dito? Oo. Madla: [hindi marinig]. Tagapagsalita 1: Oo. Kaya ito ay isang katusuhan na ikaw ay maaaring pagpapabalik sa akin ang paggawa ng maikling banggitin ng. Kahit na ang lahat ng bagay na tingin pretty, at ito ay mabuti indent, at ito uri ng mukhang scratch-like sa linya 16 at 17 ay, sa katunayan, naka-indent sa ilalim na para sa loop. Iyan ay hindi mahalaga. Ang computer ay hindi alam o makita white space. White space ay para lamang sa mga tao sa amin, stylistically. Ang computer ay malaman kapag mayroon kang curly braces, kung saan ay, sa katunayan, ayusin ang problemang ito. Kaya, kung ang tunay na kami pumasok at malinaw na ilagay sa mga kulot braces na ayusin ang problemang ito sa pamamagitan ng paggawa ng malinaw na ang tagatala na ako ang tunay na nais upang maipatupad dalawang linya ng code muli, at muli, at muli. Ngunit ano ang mga pangunahing mga paliwanag? Right? Hindi namin mahigpit na kailangan curly braces lahat ng oras, kahit na ito ay maaring pinakamahusay pagsasanay upang makakuha ng sa na ugali anyway kahit na ito ay nagdadagdag ng dalawang character sa iyong code. bakit? Madla: [hindi marinig]? Tagapagsalita 1: Oo kaya iyon isa pang solusyon sa kabuuan. Right? Lalo na kung sa unang tingin hindi mo talagang Pinahahalagahan kung ano ang nangyayari sa. Well, tiyak na magagawa namin lamang gawin ang dalawang bagay nang sabay-sabay at iwasan lang ang problema sa kabuuan. At iyon ang masarap, ngunit ngayon, para sa mga layunin sa ngayon, kung ano ang ang paliwanag para sa mga bug? Bakit ang lahat ng mga bituin sa isang linya? Oo? Madla: Tila na kung ikaw ay may isang linya ng code, maaari mong gawin ito nang walang mga iyon. Tagapagsalita 1: Eksakto. Ito ay lamang ng isang tao convention. Mga tao ay mapagtanto na ito ay isang maliit na nakakainis o nakakapagod sa may sa ilagay curly braces lahat ng mga oras kung ang lahat ng gusto mong gawin ay maglalapat ng isang linya ng code. Kaya, napagpasyahan tao ilang oras na ang nakalipas na na multa. Kung nais mong ilagay ang lahat ng iyong mga loop sa lamang na ang isang linya tulad nito, na multa sa mga single semicolon sa dulo. Ngunit maaari mo lamang gawin ang isang tulad linya nang walang mga kulot tirante. Kaya, kapag ang estilo ng gabay CS50 bilang ay ituro sa iyo sa, makikita mo na sa pangkalahatan ito ay magandang ugali upang makakuha ng sa na ito hanggang sa ikaw ay lubos na kumportable naliligaw mula sa mga uri ng mga convention at paggawa ng iyong sariling mga bagay. Kaya't hangga't ikaw ay self pare-pareho. At kami ay makipag-usap higit pa tungkol sa estilo ng isang maliit na piraso mamaya. Kaya, sabihin buksan up ako ng isa sa iba pang mga program. Siyempre, dapat tayong ayusin na 10 rin. Hayaan akong magpatuloy at isulat ang isang tunay na mabilis na programa na Tatawag ako, sabihin nating, dot loop C. So, loop dot C. At sa loop dot C pupuntahan ko na magkaroon, isama ang standard I / O dot H int pangunahing walang bisa. At ngayon hayaan gawin lang ni, sa katunayan, isang loop. Kaya, 4 int ako makakakuha ng zero. Ako ay mas mababa kaysa sa, sabihin nating, 50. Ako plus, plus. At pagkatapos in dito sabihin sige, at i-print F. At pagkatapos ay gusto kong i-print ko at ang isang bagong linya, tuldok-kuwit. At ito ay dapat i-print ang lahat ng mga numero mula sa zero hanggang sa 50? Ang ilang mga ulo tumango. Ilang Nos. Ano ang mga bug na? Ano ang madaling pagkakamali na ginawa ko? Oo. Madla: [hindi marinig]. Tagapagsalita 1: Oo. Kaya kahit na mukha itong tulad nito ay kung ano ang balak ko, pagpapabalik na ako rin ay lamang ng isang character na ASCII. Kaya, kung sinasabi ko, print "I." Literal Ito ay pagpunta upang i-print I. Kaya, kung ako nais na mga plug-in sa isang placeholder halaga ang tunay na kailangan kong gawin ito at pagkatapos ay plug-in sa halaga ng I magilas. Kung hindi man lamang ako ng pagpunta sa makakuha ng 50 ako sa screen. Kaya, hayaan mo akong magpatuloy at gumawa ng loop na ito, patakbuhin ito, at, sa katunayan, namin ang lahat ang paraan up hanggang 49. At kung mag-scroll ko pabalik sa oras na makita ko numerong zero sa simula. Well, kung ano kung ako uri ng magtaas? Paano kung gagawin ko ito? Dahil lang sa hindi ako nag-iisip. Ano ang programang ito. Kapag Pag pinagsama-sama at tumakbo, pagpunta sa gawin lohikal? Madla: Hindi. Tagapagsalita 1: Hindi. Bakit na? Madla: Ako ay dinisenyo para sa zero. Kaya, ang mga kondisyon ay hindi totoo. Tagapagsalita 1: Oo, eksakto. Ang lahat ng mga code ay tama, syntactically. Ito ay sumulat ng libro, ito code ay tatakbo, ngunit ito ay hindi pagpunta sa gawin kapaki-pakinabang dahil magpasimula ko ako sa zero. Pagkatapos ay tingnan namin, ay ko mas higit sa 50? Malinaw, hindi, ito ay hindi. Kaya hindi na executes sa lahat ng mga loop. Paano kung gawin namin ang isang bagay mas walang ingat ng kaunti? Kaya, kung ano kung gagawin namin tulad ng int ako makakakuha ng zero. At ngayon hayaan mo akong gamitin ang habang loop, na kung saan ay isa pang kondisyon. At habang sinasabi ko, habang ako ay mas malaki sa o katumbas ng zero, at pagkatapos ay sa dito ako sige, at i-save ang file, gumawa ng loop. At ako ay tungkol sa upang patakbuhin ito. Ano ako pagpunta upang makita ito oras sa isang habang loop? Oo. Madla: Isang walang katapusang loop? Tagapagsalita 1: Isang walang katapusang loop? Oo, at bakit? Madla: Dahil ito ay palaging zero. Tagapagsalita 1: Oo. Kaya, ako ay nasimulan bilang zero. Siyempre ako ay palaging mas mataas kaysa sa o katumbas ng 0 bilang isang resulta. Kaya, lamang ako pagpunta sa makikita ito ng walang katapusan. At ngayon, ito ay magkaroon ng isang beses o dalawang beses sa ulo ang kurso na iyon. Ano ang mangyayari kapag ikaw ay magkaroon ng isang walang-katapusang loop? Madla: Control C. Tagapagsalita 1: Oo. Kaya Control C ay tuluyang sumagot. Sa kasamaang palad, na-print out namin milyon-milyong at milyon-milyong mga zeroes nai at sa gayon ang computer ay may uri ng nauna pa sa akin. Kaya, ito ay pagpunta upang huwag pansinin sa akin ng isang maliit na bit. Ngunit kung ikaw pindutin lamang Control C isang ilang beses sa iyong Mac o PC keyboard, sa huli ito ay dapat, sa katunayan, wakasan. At kung hindi, ipapakita namin sa iyo ang ilang mga pamamaraan bago ang haba kung saan mo maaaring aktwal na puwersahang pumatay programa, marami tulad ng sa Windows at Mac OS, kung kailangan. Ngunit subukan ang isang bagay kaya'y ang. Aktwal paglakas I. Ay Ipaalam ito pa rin pagpunta sa walang hanggan? Hayaan akong tumakbo ito. At ngayon maaari mong uri ng makita kung ano ang nangyayari. Ito rin ay isang walang-katapusang loop. Ngunit ito ay isang piraso ng isang kahanga-hangang gawa tanong. Ay ito pagpunta upang i-print ang mga numero na walang hanggan? Madla: No. Tagapagsalita 1: No. Bakit? Narinig ko ang ilang Nos paglipas dito. Someone-- Oo. Madla: Hindi mo na magkaroon ng sapat na bits sa tunay na panatilihin ang pagpunta. Tagapagsalita 1: Ang lahat ng karapatan. Kaya hindi ko magkaroon ng sapat na bits upang panatilihin ang pagpunta. Kaya, kung ano ang nangyayari sa mangyayari? Lamang Ito ay pagpunta sa itigil? Madla: Sa ilang mga punto ito ay sarhan the-- Tagapagsalita 1: Ito ay sarhan loop down, ngunit bakit? Ano kaya ang mangyari sa dulo ng mga hangganan nito? Oo? Madla: Ito ay cycle bumalik sa mga negatibong numero. Tagapagsalita 1: Upang negatibong numero, o kung lamang namin ay pagpapagamot positive, zero hindi bababa sa. Kaya oo, walang pasubali. Alalahanin na nakita natin noong nakaraang panahon na iyon kung ikaw dagdagan ang iyong bits isa masyadong maraming beses, at mayroong kang unahan overflow ang kapasidad ng iyong int o ano pa man ang uri ng data ay, ikaw ay pagpunta sa wrapper sa paligid, marahil, dalawang mga negatibong numero. O kung nag-tukuyin na ang iyong hanay ay dapat na positibo lamang, na maaari mong gawin, ngunit hindi namin pa nakita iyon, na maaaring humantong sa hindi bababa sa bumalik sa zero. Kahit na, ang tunay na oo. Sa kasong ito, negatibo numero, kung saan ang loop ay pagpunta upang wakasan dahil ako ay hindi, sa katunayan, mas malaki kaysa sa o katumbas ng zero kung ito ay negatibo. Kaya, sa kasamaang-palad, kung paano katagal na namin na maghintay? Sa ngayon kami ng hanggang sa ano, 2 milyon-ish? Kami ay tulad ng 2 bilyon, kami ay pagpunta sa may sa maghintay hanggang maaari namin ang aktwal na makita ang mga sintomas na ito. Ngunit maaari naming makita ang mga ito ng isang maliit na mas mabilis, maybe-- sabihin makita kung maaari naming matigil. Sige na. Kahit na ang mga menu ay lumilitaw nang dahan-dahan. Lahat tama. Kaya, kami ay bumalik sa na bago ang haba. Ito ay isang magandang time-- mapapahamak ang mga ito, mga tuta. Ito ay isang magandang panahon para sa ilang mga anunsyo. Kaya, kung baka gusto mo upang makisali sa YHack, na kung saan ay sa pagiging isang kaganapan inisponsor ng aming mga kaibigan sa Yale. At, sa katunayan, ang ilan sa mga kurso TFs sa Yale ay kasangkot sa mga ito. YHack ay isang internasyonal na hack-a-Thon na naka-host sa pamamagitan ng at gaganapin sa Yale, nagdadala nang magkasama 1,500 tulad ng isip mga hacker at creatives lahat sa buong mundo. Kung ito ay ng interes, tingnan dito. Kung masyadong maiksi sa ito ay screen, tingnan ang mga slide ngayon para sa mga URL para sa yhack.org. So, din ang ilang mabilis na mga anunsyo. Kaya, opisyal na mga seksyon ay magsisimula susunod na linggo parehong dito at sa New Haven. Isaisip na ikaw ay nakakakuha ng isang email sa ibang pagkakataon ngayong weekend malamang. Ito ay tumatagal ng isang mahabang panahon para sa CS50 sa seksyon, ibinigay ang lahat ng mga tao sa klase at ang lahat ay gumagalaw sa paligid. At ang lahat ng Teaching Fellows ' iskedyul ay din solidifying pa rin, ngunit manatiling nakatutok para sa isang email at kung kailangan ay, maaari mong muling i-seksyon pagkatapos doon. Study.cs50.net. Kaya, kahit na kung ikaw ay isang pare-pareho ang attendee sa seksyon, mapagtanto na ang halos lahat mga resources na ginagamit namin sa mga seksyon ay magagamit ng publiko sa CS50 Pag-aralan na ito sa URL dito. Kaya, kung gusto mo kailanman nais na muling review materyal mula sa seksyon, o basahin nang mas maaga, o hindi ka maaaring gumawa ng mga ito ng ilang mga linggo, Napagtanto sample na mga slide, at mga problema, at mga kahulugan, at higit pa ay ang lahat doon pati na rin. Ipagpatuloy ngayon Office oras, at bukas, at Miyerkules, at Huwebes suriin ang kurso na iyon website para sa schedule. At din, ngayon paglunsad ngayon ay CS50 Talakayin. Kaya, kung at kapag mayroon kayong mga tanong para sa isa't isa o para sa mga tauhan ng kurso, at sa pangkalahatan ay nagtatrabaho sa ilang mga hanay ng problema, mapagtanto na hindi mo kinakailangang kung i-sa-tao sa tabi mo. Kung walang isa doon, maaari mong makipag-ugnay sa amin at kaklase online sa pamamagitan ng CS50 Talakayin. Kaya, ito ay isang talakayan board para sa mga kurso, at mapagtanto na ito ay marahil ang pinakamahusay ilagay upang magsimula kapag ikaw ay may mga katanungan kapag nasa labas ng oras ng opisina sa partikular. Pagkain ay magsisimula up this week masyadong. Sa Sunog at Yelo [Hindi marinig] sa New Haven. Tingnan kung ang kurso na iyon website upang mag-RSVP. First come, first maglingkod para sa na. Kung hindi mo makuha sa linggong ito gagawin namin ang mga pinaka-tuwing Biyernes sa panahon ng termino. OK, at ngayon ng isang salita tungkol sa pagmamarka. Lalo na bilang namin ipasok ang problemang itakda ang isa, na kung saan ay sa labas na ito linggo, at itakda ang problema ng dalawa at pagkatapos noon. Paano namin pumunta tungkol sa pag-evaluate P sets at pagsusuri ng kalidad nito? Kaya, ito ay apat axes na ginagamit namin sa CS50, at na ang mga ito ang mga apat dito. Saklaw, kung saan kinukuha sa isang numerong batayan lamang kung magkano ng P set hindi pagharap sa isang bagay sa iyo. Halos Ito ay tumutugma sa pagsisikap, at ito ay ang aming paraan ng pagkuha ng ay subukan mo ang kalahati ng P naka-set, ang lahat ng mga P set. Ito ay isang madaling isa upang makakuha ng perpektong marka sa kung gagawin mo, sa katunayan, subukan ang bawat aspeto ng P set. Kaya, panatilihin na sa isip. Kawastuhan ay eksakto na. Ba ang iyong code sa trabaho bilang ang mga detalye at kung paanong ang staffs 'sample na solusyon Iminumungkahi na ang iyong code dapat, sa katunayan, gumana. Suriin 50, kung hindi mo pa ito natutugunan gayon pa man, ay nasa P magtakda ng isa detalye at magpo pangkalahatan bigyan ka ng oo / hindi sagot bilang kung tama ang iyong code. Hindi bababa sa ngayon bilang kami ay pagpunta upang suriin mo ito batay sa mga pagsusuri na aming pinatatakbo sa loob ng programang iyon. Design ay mas subjective. Ito ay kung paano mahusay na nakasulat ang iyong code. At ito ay isang bagay na makakakuha ka ng mas mahusay sa paglipas ng panahon, at ito ay isang bagay na bibigyan namin ng magbigay ng higit pang husay feedback on. At sa pamamagitan ng disenyo maaari ko ibig sabihin matagal bago ka maaaring matukso sa ilang mga P naka-set na gawin ang isang bagay loopingly, ngunit upang magkaroon siguro tatlo, o apat, o limang nested unahan loop o nested habang loop. Iyon ay karaniwang dapat simulan na gumawa ka sumukot at magiging pangkalahatan itinuturing na masamang disenyo. At makikita mo simulan na makita sa klase at sa labas ng klase magandang paraan ng paggawa ng mga bagay-bagay, masamang paraan ng paggawa ng mga bagay na ito ay maaaring maging tama ang lahat, ngunit hindi kinakailangang mahusay na dinisenyo. Tulad ng pagsusulat ng sanaysay. Maaari mong ma-ilagay ang mga salita sa isang mo page na Balarila tama, ngunit ang mga sanaysay o mga thesis ang mga ito sa ay lamang ganap na walang pagkakaugnay-ugnay o unpersuasive. At upang ang mga ito ay maaaring maging analog sa nakasulat mundo ng masama o magandang disenyo. At style, masyadong, ay medyo subjective. Ngunit hindi bababa sa inaasahan namin pare-pareho. Ito ay kung paano pretty ay ang iyong code. Sigurado mabuti indent bagay? Sigurado rin pinangalanan ang iyong mga variable / Sigurado lahat ng iyong mga panaklong at kulot braces nakahanay bilang sila ay dapat? Kami ay may isang estilo ng gabay CS50 bilang ang hanay ng problema ay ituro sa iyo sa. Ang mga mas kumportable ay Tinatanggap na ligaw na hayop mula sa na kaya hangga't ikaw ay self pare-pareho. At ito, masyadong, ay isang aralin ipapakita namin mapalakas sa section. Kaya, kung ang lahat ng mga ito ay isang maliit na mabilis, mapagtanto ang set P at mga seksyon ay mapupunta sa mas malalim na bago ang haba. Ngunit sa pangkalahatan mayroon kami napakakaunting mga bucket para sa CS50. Kalidad ay sa pangkalahatan sa isang scale ng isa sa tatlong, o isa sa limang. Humihingi kami ng literally-- at hindi ko masabi sapat na ito sa unang linggo. Tatlong ay mabuti. Kaya, kahit na, oo, tatlong out ng limang normal, mathematically, ay maaaring maging isang 60 porsiyento o tulad ng isang D minus. Tatlong ay, sa katunayan, ang mahusay. At, sa katunayan, inaasahan nating karamihan ng mga estudyante sa klase upang magsimula ang termino sa paligid twos, at threes, at nakadapa. Marahil hindi kaya maraming fives. Hindi masyadong maraming mga bago. Ngunit sa pangkalahatan upang magsimula sa na sweet spot sa curve upang ang bilang ng oras ay, may tunay na mga kuwarto para sa, at mga pagkakataon para sa itaas na pag-unlad. Kaya, mangyaring huwag Tutumbas tatlong na may 60%. Ito ay mas mahirap unawain kaysa. Ang formula na kung saan namin makalkula marka ay tinimbang ang mga sumusunod. Kawastuhan ay nagkakahalaga ang pinaka. Design ay nagkakahalaga ng isang maliit na mas mababa. Style ay nagkakahalaga ng isang maliit na mas mababa. At ito ay karaniwang kinukuha ang halaga ng oras na napupunta sa pagkuha ng bawat ng mga axes lamang karapatan. Style ay napakadaling, dapat maging sobrang mabilis, ngunit ito ay isang madaling ugali upang makakuha ng tamad tungkol sa. Kawastuhan ay maaaring tumagal ikaw ay halos lahat ng oras. Habol ang ilang mga bug lakas kumuha ng dagdag na oras o higit pa, at sa gayon, ang pagmamarka huli kinukuha iyon. At ito, ngayon ay isang mas malubhang salita. Dahil CS50 ay ang pagkakaiba, para sa mas mahusay o mas masahol pa, ng pagiging marahil mas mahusay na pamilyar sa mga isyu ng pang-akademikong katapatan kaysa sa karamihan ng anumang iba pang mga kurso. At sa katunayan, ito ay sa aking kaalaman na magpadala kami ng mas maraming mga mag-aaral, sa kasamaang palad, para sa mga layunin ng pagdidisiplina bawat taon bilang isang resulta. Kaya, sa interes ng buong pagsisiwalat, saglit na makipag-usap hayaan tungkol sa kung ano ang napupunta sa sa CS50, at kung ano ang iyong maaaring gawin, at kung ano ang maaari mong alintanahin. Kaya, dito mula noong 2007, kapag Minana ko sa mga kurso, ay ang bilang ng mga kaso Board Ad. Board Ad ay disciplinary Harvard ni katawan, o ngayon ang karangalan Counsel, na kung saan ang kaso ay isinangguni kapag mga mag-aaral gawin ang isang bagay na ang mga kurso ni Isinasaalang-alang ng syllabus walang katwiran. Walang tunay na pattern dito, nais kong sabihin. Ito ay nagbabago sa paglipas ng taon ngunit sa pangkalahatan ito ay ang bilang ng mga mga kaso na tinutukoy. Ang bilang ng mga mag-aaral na kasangkot? Ito masyadong nag-iiba. Karaniwan, ang mga nakaraang taon para sa Halimbawa, 29 mag-aaral sa Harvard ay Ad sumakay, kaya na magsalita. 29 sa mga ito ay kasalukuyang mag-aaral, dalawa sa kanila bago mag-aaral, sino ay nakikipagtulungan sa ilang mga suwail paraan. At pagkatapos ay sa mga tuntunin ng porsyento, ito ay karaniwang tungkol sa 3% ng klase na iyon, sa kasamaang palad, gumagawa ng mga ganitong uri ng mga desisyon. Kaya, noong nakaraang taon, ito ay 3.5% ng mag-aaral katawan CS50 na Ad sumakay, kaya na magsalita. Kaya, ano ang ibig sabihin ng lahat ng ito? At ano ang gagawin namin talagang gawin? Kaya, para sa buong pagsisiwalat, namin walang pasubali, bilang mga siyentipiko computer, may mga kasangkapan software sa aming pagtatapon at ito ay tunay madali para sa amin, sa pagkamakatarungan, kaklase na isa na hindi tumatawid ang mga linyang ito sa cross ihambing bawat pagsumite sa taong ito laban sa bawat submission para sa nakalipas na walong taon. Ginagawa ito sa Software. At sa huli ito ay mata ng tao na magdesisyon kung o hindi na mag-refer ng ilang mga mahalaga para sa karagdagang pagpapasiya, ngunit software ay tumutulong sa tiyak. At ito, lantaran, ang dahilan kung bakit na sa tingin ko kami ay may tulad malaking bilang sa CS50. Hindi ito dahil CS50 mag-aaral o CS mag-aaral pa sa pangkalahatan ay anumang mas mababa matapat kaysa sa iba pang mga mag-aaral, ito lamang ay mayroon kaming ang mga kasangkapan at mga pamamaraan na na kung saan upang kunin ang unang pass. Subalit hindi namin panatilihin ang isang mata sa lahat ng mga bagay pati na rin, muli, sa mga interes ng Kinikilala ang mga trabaho na ang pagiging ilagay sa pamamagitan ng isang sobrang karamihan ng mga klase. At patakaran ng kurso sa academic honesty, kahit na ito ay isang grupo ng mga talata matagal na may isang bungkos ng mga bullet na sana ay lubos na nababasa, ito tunay ay pasingawan sa makatwirang. At ang pinakamahusay na patakaran ng hinlalaki na Nag-aalok kami ng hanggang sa loob ng syllabus ay ito, ang kakanyahan ng lahat ng gawain na iyong isumite sa kursong ito ay dapat na ang iyong sarili. At sa katunayan, sa halos lahat ng mga kaso inirekomenda para sa aksiyong pandisiplina ito ay dahil sa ilang isa late na mag-aaral gabi ay karaniwang naka-kanyang code paglipas ng kagyat na isang kaklase, na pagkatapos ay pinagtibay ito sa kabuuan nito o makabuluhang hinggil doon. Ngunit talagang, ito ay OK. At sa katunayan, sa opisina na oras, ang mga piraso ng papel na iyong nai-kamay kung ikaw ay dumating sa pamamagitan ng opisina oras na hinihikayat ng mas maraming huling linggo. Ikaw ay ganap na tinatanggap at hinihimok upang talakayin ang mga hanay ng problema sa mga kaklase. Upang tulungan ang bawat isa kapag Nagkakamali. Ngunit sa pangkalahatan ang mga patakaran ng hinlalaki ay dapat mangyayari ito, "kapag ikaw ay humihingi ng tulong, Maaari mong ipakita ang iyong code sa iba, ngunit hindi mo maaaring tingnan ang sa kanila. " Kaya, sa ibang salita, kung hindi ako nahihirapan sa ilang P set at ako upo doon sa kainan hall, o sa mga library, o sa silid-aralan sinusubukan mong mahanap ang ilang mga kasalanan, Ako tiyak na ipakita ang aking code sa aking screen sa taong katabi sa akin, tiyak na mga tauhan ng, kundi pati na rin isang kaklase. Ngunit kung ang mga solusyon na ang aking mga kamag-aaral ay nag-aalok ay, oh, dito lamang kumuha ng isang pagtingin sa kung ano Ginawa ko, na tumatawid ang linya. At gusto ko maglakas-loob sabihin na sa pangkalahatan isang makatwirang bagay para sa karamihan ng mga tao na tunay madaling makita ang mga linya ng. At kaya, tingnan ang syllabus para sa karagdagang detalye. At ngayon ay isa sa mga mas kontrobersyal na aspeto ng CS50 syllabus na naisip ko na ako nakikipag-usap sa sa pagtatapos dito ay ang tinatawag na sugnay ikinalulungkot. Kaya, narito ang lahat ng fine print. Ngunit sa pangkalahatan ng nakita natin sa nakaraang 8 plus taon na, sa katunayan, halos lahat ng CS50 mga kaso ng pang-akademikong panlilinlang ay ang resulta ng mga lamang mahihirap paggawa ng humatinggabi desisyon. Ang mga resulta ng stress, ang resulta kakulangan ng pagkain, kawalan ng tulog, masyadong maraming mga hanay P, masyadong maraming deadlines, masyadong maraming mga commitment. Stress gusali up sa isang 02:00, 03:00 AM, 4:00 AM, may deadline looming. Karamihan sa mga mag-aaral sa mga kasong may ginawa lamang masamang mga desisyon upang sila ay tunay mabuti ikinalulungkot ang susunod na umaga kung hindi minuto mamaya, ngunit hanggang sa huling taon walang release balbula na dati ang mga mag-aaral talaga bukas hanggang sa tunay na address ang problema sa ulo nang walang takot ng pagiging booted mula sa kolehiyo kabuuan. At, sa katunayan, ipinakilala namin ito panghihinayang sugnay nakaraang taon, na nagsasabi na kung sa loob ng 72 oras, tatlong araw, ng pagtawid ng ilang linya inireseta sa syllabus dumating ka inaabangan ang panahon na ang isa sa mga kurso ulo at kami ay may isang chat tungkol dito. May mga pa rin ang ilang kinalabasan, salungat sa kung ano ang naiulat na ang laban. Mayroon pa rin ang ilang mga resulta na ay actionable sa pamamagitan ng mga kurso, pangkalahatan zeroing isang P set o pagkuha ng ilang iba pang mga pagkilos, ngunit kami ay, sa katunayan, hawakan ito sa ating sarili at hindi sumangguni ito sa mas mataas na ay ang kinalabasan ito ay maaaring maging mas malubha. At, sa katunayan, upang ibahagi ang kung ano ang nangyari noong nakaraang taon, sa walong taon, at ngayon siyam na taon, ng pagtuturo sa kursong ito at pagkatapos ng hinalang pagbabago sa iba't-ibang mga knobs, paggawa sa iba't-ibang mga dials sa nakaraang sa ilang mga taon sa pang-akademikong katapatan, at nakikita ng bawat ang data sa walang maliwanag epekto, kahit ng mga talumpati na tulad nito, ito ay kamay down ang pinakamahusay na bagay Nagpakilala kami pedagogically sa walong taon sa kahabaan mga linyang ito sa CS50. 19 mga mag-aaral ay dumating pasulong sa ilalim ng sugnay na ito noong nakaraang taon. Kinuha namin walang aksyon para pitong ng mga mag-aaral, pagtukoy na sila ay hindi kinakailangan na nag-aalala. Sila ay hindi, sa katunayan, tumawid ng linya, ngunit ito ay isang mahusay na chat na magkaroon gayunman. Zeroed kami ng 11 ng ang mga marka na isinumite. At sa isang kaso tinanong namin ang isang ang mag-aaral na gawin ang isang hanay ng problema. Ngunit mas nakakahimok, sa totoo lang, may mga 19 mga chat, na kung saan ay paraan ng higit sa ko inaasahan na magkaroon ng, ang bawat isa sa kanila 10 minuto upang marahil isang oras ang haba, dinala din sa liwanag ng isang bilang ng mga isyu tungkol sa familial isyu, mga isyu na kaibigan, mga isyu sa kalusugan ng kaisipan na pansin namin noon, sa mga mag-aaral ng grasya, resident dean, o mga kaibigan, o anumang iba pang numero ng mga mapagkukunan ng suporta. Kaya na ito ay sa pamamagitan ng malayo ang isa mga pinakamahusay na gumagamit ng aming mga oras at isa sa mga pinakamahusay na mga pamamagitan. Sa na sinabi, ito ay walang input sa rate ng detection ng akademikong panlilinlang sa mas pangkalahatang. At ako maglakas-loob sabihin, ito subset ng mga mag-aaral noong nakaraang taon ay isang demographic na tayo dati hindi kinilala bago at hindi kailanman ay konektado sa dati. At ito, ang mga ito ay kahanga-hangang mga kuwento ng tagumpay kahit na sila ay dinadala sa liwanag sa mas mababa sa optimal na pangyayari. Kaya, panatilihin ito sa isip bilang na gagawin mo, marahil, ang ilang mga mahihirap na desisyon iyong sarili humatinggabi, na humingi ng tulong kaya mahaba bilang ng mag-aaral sa na sitwasyon umamin at dumating pasulong upang maaari naming mayroon na uri ng chat at pakikitungo sa mga ito sa isang paraan na ang mga pang-edukasyon, at pagkatapos ay maaari naming ilagay ito sa likod sa amin sa susunod na araw. Kaya nang walang karagdagang ado, kumuha ng mga gilid off ng pag-uusap na ito, ang dahilan ng puppies ay up ay lamang sa break ang yelo para sa isang sandali. At sa kasamaang palad, ang mga ito ang lahat ng pagtulog, ngunit ano ang dapat na mangyari dito ay lahat ng tao ay dapat sa kasindak at uri ng mag-relaks matapos na masyadong mabigat pag-uusap. Ngunit sa malas kong ilagay ang mga tuta sa pagtulog. Ngunit kung ikaw ay pupunta sa CS50 slash website puppies, maaari mong panoorin ang mga ito sa buong araw. Lalo na siguro 2:00, o 3:00, o 04:00 sa gabi upang makita ang isang maliit na stress relief doon. Kaya na slash puppies. Lahat tama. Ay hindi na masaya? SIGE. Kaya, bumalik sa ilang mga computer science, kung maaari kong. Kaya, isipin ang na huling beses na namin na nagsimula naghahanap hindi lamang sa main, kung saan ay ang default na function, ang kapag green flag click katumbas, ngunit din namin na nagsimula sa madaling sabi pagsulat ng ilan sa aming sariling mga pag-andar. At kaya sa ngayon wala sa mga pag-andar naging lalo na malaki o parang karne. Makakakuha ka sa mga mas malaki function marahil, P set 2, P set 3, tiyak P set ng 4 at pasulong. Sa ngayon ang karamihan ng iyong mga programa, kung hindi lahat ng mga ito, tiyak na para sa P set 1 ay maaaring tapos na ganap sa main. Kung ang iyong programa ay lamang limang linya, 10 na linya, kahit na 20 na linya ang haba, ganap na ganap makatwirang upang isulat ito lahat sa main at hindi over makapagpalubha iyong code, ngunit kung anong ginagawa namin sa araw na ito at pasulong ay sinusubukan na rin ipakilala ang ilang mga mahusay na disenyo ng pamamaraan kaya na rin ang iyong code ay makakakuha ng mas kumplikado at bilang ng mga problema gusto mong malutas makakuha ng mas mahirap at mas kawili-wiling mayroon ka, uri ng, mga kasangkapan sa iyong toolbox na kung saan mag-disenyo ng mahusay na solusyon sa mga iyon. Kaya, sabihin kumuha ng isang mabilis na pagtingin sa likod sa ang program na ito mula sa aking mga nakaraang linggo, kung saan ay function zero dot C. At mapapansin na, medyo simple, mukhang ito na may dalawang pag-andar, main at pangalan print. At iisip bumalik o di kaya reverse engineering ngayon, kung ano ang nag-udyok sa pagpapasok isang function sa 28 na tinatawag na line, Pangalan print? O kung ano ang isang halimbawa ng in mga tuntunin ng isang prinsipyo o takeaway, kung gagawin mo. Ang ilang mga murmurs. Ano? Oo kaya functional agnas ay uri ng magarbong paraan ng sinasabi, mabulok iyong programa sa mga bahagi nito at pagkatapos ay gamitin ang mga bahagi upang mag-ipon ng isang buo. Kaya, na masyadong ay uri lamang ng isang katiting na, ngunit ito ay marahil kahit na isang mas mahusay na halimbawa ng isang bagay lamang na tinatawag na abstraction. Right? Abstraction ay magiging isa ng paulit-ulit na tema sa CS50 at din computer science higit pa sa pangkalahatan dahil ito ay isang pamamaraan na kung saan maaari mong malutas problema nang mas mabisa dahil ikaw maaaring isulat solusyon pa intuitively at sa isang paraan na kaliskis at ito ay maliwanag sa pamamagitan ng ibang mga tao. Ano ang gagawin ko ibig sabihin ng? Kaya, arguably ito ay mas nababasa upang tumingin sa isang program na tulad nito, sobrang maikling bagaman ito ay. Kapag nakita mo sa 22 na linya na mayroong isang function na tinatawag, pangalan print. Iyon ang pangalan ng nag-iisa sinasabi kung ano ang ginagawa nito. Lumilitaw na tumatagal ng pag-andar na input pagitan panaklong nito, at tila ay isang bagay, siguro mga kopya ng mga pangalan. At ito, kahit na namin ang walang pasubali ay maaaring magkaroon ng tapos na kung ano ang ginawa namin sa isang linggo na ang nakakaraan, na kung saan ay tumagal lamang ito aktwal na linya ng code, makakuha ng alisan ng mga ito, at makakuha ng alisan ng ito ang lahat ng sama-sama, kami uri ng lumilipad ang isip sa malayo ang paniwala ng pag-print ng isang pangalan. Wala akong pakialam kung gumagamit ka ng print def. Wala akong pakialam kung mayroon kang isang porsiyento S at isang backslash N. Ang mga ito mga hindi kapani-paniwalang arcane detalye. Ano akong pakialam tungkol sa bilang programmer ay pag-print ng isang pangalan. At kaya, kung ano ang mas mahusay na paraan upang gawin iyon sa pamamagitan ng pagtawag ng isang function, pangalan print? At ito, na noon ay isa sa mga motivations para sa paggawa ng isang bagay na katulad nito. Ang pagsasagawa ng mas nababasa ang code, mas magagamit muli, at din sa sarili naglalarawan. Ngayon, sabihin tumagal ng isang pagtingin sa isa pang halimbawa, na kung saan ay pag-andar ng isa, kung saan nagkaroon kami sa paglipas dito. Kaya, ang isang ito ay marahil na mas nakakahimok dahil, sa kasong ito, Hindi ko nais upang makakuha ng isang int. Gusto kong makakuha ng isang positibong int. At ito ay lumiliko out upang makakuha ng isang positibong int kailangan mong gawin ng grupo ng mga matrabahong gawain. Right? Ito ay hindi isang simpleng isang linya tumawag tulad ng pangalan print ay, na kung saan ay tinatanggap na mas mababa nakakahimok. Upang makakuha ng isang positibong int, logically-- hayaan mo akong mag-scroll pabalik pababa upang itago ito. Ano ang kailangan mong gawin? Tulad ng lahat ng mga tool na namin Mayroon sa kasalukuyan ay mga bagay tulad ng naka-print na def mula sa Standard Library at din mula sa CS50 library mayroon kaming Kumuha int, at Kumuha magpalutang, Kumuha ng Long Long, Kumuha String, ngunit ang isa lamang, Germane, sa ngayon ay Kumuha ng int. Kaya, kung ang tanging kasangkapan mayroon kang sa iyong tool box ay Kumuha int, paano namin pumunta tungkol sa pagpapatupad ito upang makakuha ng positibong int? Madla: Lumikha ng isang mag-log at suriin sa kung ang input na ibinigay nila ay positibo o hindi. Tagapagsalita 1: Perfect. Mismong. Ang isa pang tool na namin sa aming toolbox mula sa isa o dalawang linggo ang nakaraan ay lamang ang looping tayuan. At ito, oo, kung gagamitin namin ang isang habang loop, o isang gawin habang loop, o isang unahan loop maaari naming malamang na makakuha ng layo sa anuman sa mga nasa ilang mga form. Maaari naming ipatupad ang paniwala ng get positive int sa pamamagitan lamang ng paggamit Kunin int, at pagkatapos lamang panatilihin ang pagtawag na ito muli at panatilihin pestering ang user hanggang siya talaga ay nagbibigay sa amin kung ano ang gusto namin. At kaya ngayon, ito abstraction ng proseso ng pagkuha ng isang positibong int sa isang function na tinatawag na Kumuha ng Positibong int ay isang kaunti pa nakakahimok dahil tingnan ito. Ang mga ito ay tulad ng 10 plus linya ng code na ay kasangkot sa pagkuha ng isang positibong int, at hindi ko talagang pakialam kung paano mo gawin ito. Lahat ng pag-aalaga ko ay na kayo maaaring gawin ito, at kaya ko nakatago ang lahat ng mga detalye sa likod ng isang function na tinatawag na Kumuha ng Positibong int na, sa katunayan, ay may ito gawin habang loop. At makita noong nakaraang linggo para sa syntax doon, ngunit sabi lamang ito N, at ito mga print out ang pagtuturo sa user. Ito tawag Kumuha int at pagkatapos ito tseke ang kundisyong ito muli, at muli, at muli hanggang sa nakikipagtulungan sa gumagamit. Kaya ngayon, ang ilang katinuan tseke. Para sa mga marahil pamilyar kasama ang ilang mga programming, bakit ipinahayag ay N, bakit ako lilikha N labas ng gawin habang loop? Bakit ito ay on line 29 at hindi on tulad ng 33, halimbawa. Madla: Dahil kapag ikaw Ipinahahayag ito sa labas, ito uri ng higit pa, ang mas malaking scope-- Tagapagsalita 1: Good. Madla: --at kung ipinapahayag mo ito sa loob ng loop, [hindi marinig] dahil ito ay hindi alam ang tungkol dito. Tagapagsalita 1: Eksakto. Kung ang maaari kong simplify-- ito ay isang isyu ng saklaw. At scope ay tumutukoy sa konteksto na kung saan umiiral na ang isang variable o ay kapaki-pakinabang. At ang ganda ng patakaran ng hinlalaki dito ay na karaniwang kapag ikaw idedeklara o lumikha isang variable na maaari mo lamang gamitin ito sa loob ng pinakamalapit na pagyakap curly braces. Kaya kung ano ang ibig sabihin nito? Kung ako, sa halip, i-undo ang mga ito at pumunta sa isang bagay na pakiramdam ng isang maliit na mas simple. Right? Line 32 lamang hitsura cleaner sa akin ngayon. Ako ginagawa ang parehong mga bagay-bagay sa beses at pagkatapos ay magtatalaga ang kanang kamay sa kaliwang kamay. Ang problema ngayon batay sa na kahulugan ng saklaw ay na N ay maaaring gamitin sa mga linya 31 at 32 sa loob ng loop na ito, ngunit kung saan sa pamamagitan ng kahulugan na maaari itong hindi gagamitin? Sa linya na kung ano? Oo. Madla: 35. Tagapagsalita 1: 35. Talagang hindi 35. At din kung saan ang ibang tao? Madla: 34. Tagapagsalita 1: Kahit na 34 ay may problema dahil sa ito ay sa labas ng curly braces. At kaya sa katunayan, sabihin makita kung ano ang mangyayari. Right? Ito ay maaaring mukhang isang maliit na intuitive o maaaring hindi, ngunit sabihin makita kung ano ang compiler ay may sabihin kapag pumunta kami sa direktoryo ng pinagmulan ngayon. Gumawa ng pag-andar ng isa. Oh, ang aking diyos. Well, sa wakas ako tapos na, sa pamamagitan ng paraan. Lahat tama. At ano ang pinag-uusapan dito? Very arcane na tingnan. Ngunit narito ang kung ano ang aking typed-- gumawa ng pag-andar ng isa. Narito kung ano ang gumawa ng sapilitan, na kung saan ay tunay na gamit ang compiler clang sa ilan sa mga flags na namin makita muli bago ang haba. At muli, palaging tingnan sa unang error, dahil ito ay maaaring magkaroon lamang ng isang cascading walang ibig sabihin na epekto sa iba pang mga linya. Kaya kung ano ang ibig sabihin nito ay ang mga Ang problema ay sa function 1.c. Ito ay sa 32 linya. At ito ay sa haligi, o character, 13. Kaya kapag ang iyong text editor na maaari makatulong sa iyo na makilala kung saan ang isyu ay. Kaya kung mag-scroll ko up, kung ano ang 32 na linya? Iyan ay katunayan ng isang ito na na naka-highlight karapatan here-- hindi nagamit na variable n. Ngunit ito ay hindi nagamit. Gumagamit ako ng mga ito. Ngunit ang mga compiler ng nalilito, dahil mayroon na lamang ito sa loob ng mga saklaw na ito. At kaya hindi ko itong gamitin dito. Hindi ko maaaring gamitin ito dito. At ang mga compiler, samakatuwid, hindi kahit na pag-aalaga ay na sinusubukan ko. Ito ay anyong hindi nagamit sa loob ng kanyang aktwal na saklaw. Kaya maaari naming palawakin ang saklaw sa pamamagitan ng paggawa eksakto kung ano ang namin na nagsimula with-- int n. At kahit na ito ay hindi tingnan bilang eleganteng, marahil, at kami ay pagkuha ng dagdag na linya dito, ngayon ito ay sa saklaw sa lahat ng dako. Kaya sabihin subukan muli. Kaya gumawa ng pag-andar ng isa. Nice. At ngayon, kung ako kung nagpatakbo ako ng function isa, bigyan ito ng mga negatibong 10 ipaalam, negatibong 1, 0, 1, at ito nga ay gumagana. Kaya may isa pang solusyon dito. Alam mo ba? Paano kung ako tunay am pakikipagbuno sa mga ito? Hindi ko alam kung saan ang mga n ay dapat na pumunta. Alam mo ba? Tingin lang ako sa pagpunta sa ilagay ito sa lahat ng paraan sa tuktok ng aking mga file dito. Ano ang gusto ito, sa palagay mo? Oo? Madla: [hindi marinig]. Tagapagsalita 1: Oo. Kaya ko na ginawa ito global, kaya na magsalita. Kung mayroon kang isang variable na nasa labas ang lahat ng iyong mga pag-andar na ito ay pinahihintulutan, at dapat itala ang code, at n ay ngayon ay naa-access hindi lamang sa get positive int, kundi pati na rin sa main-- saan ay isang maliit na nakakaligalig dahil mayroong isa nang n sa main, para sa karagdagang sa na sa isang moment-- lamang ngunit ito ay itinuturing na masamang disenyo. Lahat tama. Kung ikaw ay may sa resort sa isang bagay tulad ng, oh, kukunin ko ilagay lang ito up dito dahil Tila upang itala ang code sa pangkalahatan ay hindi ang pinakamahusay na pagsasanay. Sa halip na nais mong pumili narrowest posibleng saklaw para sa iyong mga variable, kung saan ay nangangahulugan pagpunta sa aming mga paunang disenyo, na ay karapatan dito. Ngayon bilang isang bukod, kung ikaw ay walang isang identically-pinangalanan variable dito, ang paraan c hawakan this-- bagaman ito ay hindi mangyayari masyadong often-- ay na ito ay pa rin okay naman sa dito. Ngunit ito kahulugan ng n sa linya 22 ay anino ng isang global. Kaya ang isang ito ay gagana sa loob main, at ang isa global ay tunay na mag-aplay kapag ikaw ay nasa makakuha ng positibong int Ngunit higit pa sa na sa ibang panahon, ngunit lamang para sa mga curious. Kaya sa maikling salita, maayos namin ito dito. Ngayon sabihin manunudyo bukod sa dalawang iba pang mga piraso ipaalam bago namin tumingin sa isang huling linya ng code sa programang ito. Kumuha positive int. Sa kaliwang gilid ng kanyang salita ay ang salita int. Ano ang ibig na maging tanda sa palagay mo? Kaya ngayon namin halos nakita ko na walang bisa. Oo? Madla: Ito ay ang mga uri ng variable na ikaw ay nagtatanong tungkol. Tagapagsalita 1: Oo Ito ay ang mga uri ng, ipaalam sa akin hindi sinasabi ng variable, ngunit ang uri ng halaga na ako ng hinihingi para sa. At sa katunayan, iyon ang intuitive dito, sana. Right? Kung nais mong makakuha ng isang positive int, ano ito sa iyo gusto ang function-- tulad ng ating boluntaryo mula noong nakaraang linggo sa kamay mo sa likod ng isang piraso ng papel na may isang int sa mga ito? At kaya ko na tinukoy namin na ang tinatawag na bumalik uri ng mga function na ito ay makakuha ng positibong int. Kung hindi namin ginawa nais ito sa bumalik kahit ano, sabihin mo na walang bisa. Kung gusto mo ito upang bumalik isang string, sabihin mo string. Kung gusto mo ito upang bumalik isang float, sabihin mo float. Ngunit ang isa lamang na sumasaklaw dito lohikal na, dahil gumagamit ako ng get int, kahit ako paghihigpit sa mga ito sa positibong halaga, ay upang bumalik sa isang int. Kaya pasalungat, kung ano ang ibig sabihin ng na mayroong isang walang bisa sa panaklong? Ano ang gagawin ng mga panaklong tukuyin pangkalahatan? Oo? Madla: Ito ay nangangahulugan na ang pag-andar ng hindi aktwal na pagkuha nito. Tagapagsalita 1: Ito ay nangangahulugan na ang pag-andar ng hindi aktwal na pagkuha ng kung ano? Madla: Isang input. Tagapagsalita 1: Isang input, kahit ano pa man. Kaya sa katunayan, kung parenthesis dito mo tukuyin walang bisa, na nangangahulugan lamang na hindi ko gusto ang anumang input. Kukunin ko harapin ang mga problema sa aking sarili. At sa katunayan, hindi mo na kailangang sabihin makakuha ng positibong int kahit ano. Ikaw lamang sabihin, makakuha ng positibong int, at na function na ay umalis at gawin ang bagay. Ngunit mayroong nangyaring isang maliit na nanlilinlang na ko nai-play dito ang buong panahon tiyakin compiles ang code na ito. Pansinin na int makakuha ng positibong int void-- ay sa 27 linya. Ngunit para sa ilang tila kakaiba dahilan ito ay din up para sa 16 linya. At para lamang sa mabuting uulitin ko ito kaya ito ay ganap na magkapareho. At ako sinabi prototype na may isang maliit na isang-linya komento. Ano ang mangyayari kung tanggalin ko na, At ngayon muling palabas ng pelikula gumawa ng function 1, ipasok. Oops. Sandali lang. Nasaan ang aking tab? Huh? Tumayo ka sa tabi. Gumawa ng function 1. Mayroon kaming pumunta. SIGE. Ay hindi ito na-save ng maayos. Kaya, sa tingin ko ay may isang maliit na bug dito kung saan hindi ako nakikita ang mga pangalan ng tab sa sandaling ito. Kaya kung ano ang nangyayari dito? Implicit deklarasyon ng function makakuha ng positibong int ay hindi wasto sa C99. Kaya nakalilito muli. Kaya kung ano ito nagpapahiwatig ng? Well, ito lumiliko out na C ay medyo tanga. Well, ito ay ang programming wika, o sa halip ang tagatala ay. Lamang ang nakakaalam nito kung ano ang mayroon kang itinuro ito, at ito lamang pagpunta sa malaman ng isang bagay kung itinuro mo ito bago. Sa ibang salita, sa main sa sandaling ito, hindi ako sinusubukan mong tawagan ang isang function tinatawag na makakuha ng positibong int. Ngunit ang mga compiler ay hindi pagpunta sa paunawa na makakuha ng positibong int umiiral hanggang 26 linya. At kaya kung ano ang ginagawa ng compiler ay lamang error sa lalong madaling ito ay makakakuha ng sa line 17, sinasabi implicit deklarasyon ng makakuha ng positibong int, na ay lamang ng isang magarbong paraan ng sinasabi, hindi ako alam kung ano ang makukuha pa positive int ay. Iba pang mga wika tulad ng Java at Python at Ruby ay maaaring tumingin sa kinabukasan. C ay hindi. At upang ang mga paraan namin ayusin ito ay isa sa dalawang paraan. Alinman sa isa, kung ang problema ay kumuha na positive int ay hindi pa nakikita dati, well, hayaan mo ilipat sa akin lamang ito sa itaas. Iyon ay ayusin ang problemang ito. Ngunit sa pangkalahatan, ito ay itinuturing na mas mahusay na pamamaraan upang ilagay ang iyong pangunahing pag-andar sa pinakadulo top kaya na ang isang tao sa pagbabasa ng iyong code nakakaalam kung ano ang ginagawa ng programa, dahil main ay hindi inilibing lahat ang paraan sa ibaba o sa gitna. Ito ay sa pinakatuktok. Kaya na ay hindi pakiramdam ideal. At maaari kang makakuha ng tunay sa mga sitwasyon kung saan kung ang isang function ng mga tawag isa pang, na tawag sa isa pa, maaari kang makakuha sa isang isyu kung saan hindi maaaring pumunta sa itaas ng iba pang, lohikal. Ito lamang ay hindi maaari. At upang ang mga paraan upang gumana paligid na ito ay upang kumuha lamang signature ang function, kaya na speak-- ang unang linya kung saan ito ay declared-- at makatarungan kopyahin, i-paste ito sa top, ngunit hindi na may kulot braces-- sa pamamagitan lamang ng isang tuldok-kuwit. Ito ay tulad ng isang maliit na pahiwatig ng kung ano ang darating. At sa katunayan, ang lahat ng mga oras na ito kapag kami ay tumingin sa mga bagay tulad ng standard io.h at cs50.h, parehas, sa mga tuldok h file ay may iba pang mga modelo. At kami na makita na bago ang haba. Kaya sa maikling salita, kapag ikaw ay isang programa sa isang file na may maramihang mga function bukod sa main, halos ikaw laging nais na ipahayag ang mga ito sa pamamagitan lamang ng paraan ng kanilang unang linya, na sinusundan ng isang tuldok-kuwit, sa pinakatuktok ng file. Iyon ay isang pulutong ng sabay-sabay. May tanong? May tanong? Lahat tama. Kaya sabihin ilipat sa pagkatapos sa isang bagay tulad ng pag-ubo. Oh. Paano angkop. Lahat tama. Ubo. Kaya dito ay isang c pagpapatupad ng isang programa ginawa namin ang iba pang mga araw sa Scratch na tunay lamang lamang sabi ubo, ubo, ubo. Lahat tama. At sinabi ng isang tao sa ilang araw na nakalipas na may isang paraan ng paglilinis ang code na ito up na. Lahat tama? Sa sandaling ikaw ay pagkopya at dikit marahil masamang disenyo. Hindi bababa sa sandaling makuha namin sa apat o limang o 20-ubo, pakiramdam masamang kaugalian. Kami ay lamang panatilihin ang mga kopya, pag-paste. Ano ang malinaw na solusyon sa paglilinis ito up program? Madla: Loop. Tagapagsalita 1: Oo. Kaya gumamit ng isang loop. At maaari naming gamitin ang isang for-loop, ang isang habang loop, ang anumang bilang ng mga pamamaraang. At sa katunayan, iyon ang ginagawa namin sa bersyon ng isa dito. Sa halip na muling pagsusulat ko ito sa bersyon ng isa sa cough.c na ubo lang sa loob ng isang for-loop. Lahat ng karapatan, ngunit mayroong isang pagkakataon na ngayon sa uri ng start sa disenyo na ito ng kaunti pa tulad ang aralin namin tinuturuan ng isang sandali ang nakalipas, na kung saan ay this-- ipagpalagay na nais ko upang lumikha ng isang function na tinatawag na pag-ubo, isaalang-alang para sa isang sandali lamang ipaalam kung ano ang pagpunta sa hitsura. Kaya kung gusto ko ng damit sa pag-ubo, kailangan ko lang gamitin print f sa loob ng function. At sa katunayan ako. At sa katunayan, sa lahat ng ito oras, anumang oras na ikaw ay pag-print ng isang bagay na screen, isang programmer ay tumawag na isang side effect. Ito ay hindi ako handing bumalik ang isang tao ng isang halaga. Sa akin ito ay ang pagkuha ng ilang mga aksyon na maaaring maging biswal halata. Ngunit ang function na ito ubo, ay ibalik ito anumang bagay batay sa unang linya nito? Hindi, dahil sa uri ng kanyang pagbabalik ay walang bisa, na kung saan ay nangangahulugan lamang hindi ito handing sa akin ang anumang bagay sa likod. Ito ay maaaring maging paggawa ng isang bagay biswal, ngunit ito ay hindi ako handing likod ng isang piraso ng papel tulad ng nakaraang linggo. Kailangan ba ng anumang mga input? Hindi. At kaya ito ay walang bisa dito masyadong. Kaya ito ay masyadong ay uri ng over-engineering ang problemang ito. Right? Ginawa ko ang mga program pa complex, mas maraming mga linya ng code, Hindi ko pa ginawa ito sa anumang mas sa pagganap, ngunit ito ay magiging isang tuntong bato, marahil, para sa isang mas malawak na context na may higit pang mga kumplikadong code. Ngunit ano ang tungkol sa mga ito? Ano na lamang ako done-- glancing sa ito nang walang pagtingin sa comment sa pinakatuktok ng file-- kung anong mayroon Panimula ko tapos dito sa aking ubo pagpapatupad na naiiba? Oo, sa likod? Madla: Gawin ito sa gayon maaari mong Mayroon i-off ang isang character. Tagapagsalita 1: Oo. Kaya ito nararamdaman uri ng magaling. Right? Ito ay tulad ng pagdagdag ng isang tampok sa iyong program o ang iyong function, sa kasong ito. Nagbabalik pa rin ito ng wala. Maaaring magkaroon ng isang pangalawang epekto visual, dahil sa ito ay pagtawag print f. Ngunit ngayon ay may parametrized ko ang pag-andar, kung saan nangangahulugan ko na tinukoy kinuha input ng uri int at tawagan ito n, ngunit ako ay maaaring tumawag ito anumang bagay na gusto ko. Sa katunayan, maaaring ito lamang ay beses na maging mas malinaw. At pagkatapos ay ako maaaring baguhin lamang ito dito. Ngunit ang punto ay na ito ay kung paano ko lumikha ng isang function na tumatagal ng input. At kung ikaw pagpapabalik flipping sa pamamagitan ng marahil online sa isa ng walk-through, ang ika-apat at huling halimbawa ubo, mapapansin mo dito na pangkalahatan ko ang aking code further-- uri ng lumilipad ang isip ito ng karagdagang. Tulad ng pag-ubo at bumahin, ang pareho ay tungkol sa tulad ng sinasabi ng isang bagay o paggawa ilang uri ng tunog. I-save ang magiging kaukulang scratch block. At kaya kung ano ang aking ginawa sa bersyon na ito, kung saan namin sulyap lang sa, ay ubo ay tulad ng sinasabi, [ubo], ubo, at samantala, bumahin ay tulad ng sinasabi, [Achoo]. At kaya nagbigay pangkalahatan ko ang pagpapatupad ng mga sa pamamagitan ng ngayon pagpapatupad ito generic function, sabihin, kung saan ay kawili-wili para sa mga layunin ngayon lamang dahil ito pa rin hindi magkaroon ng isang uri ng return. Ngunit kung gaano karaming mga input ay may ito? Madla: Dalawang. Tagapagsalita 1: Dalawang. At kaya kung nais mong kumuha sa dalawang argumento, lamang ihiwalay ang mga ito gamit ang isang kuwit. At kung gusto mong pagkatapos ay tumawag na function, mapapansin mo na ikaw lang tumawag sabihin, quote, magpanipi, para sa unang argument, karaniwang n, para sa ikalawang argument. Kaya muli, kami na lang ngayon ang mga bloke ng gusali sa gayon ay maaari naming aktwal ipatupad ang ilan sa aming sariling mga pag-andar. Lahat tama. Anumang mga katanungan sa mga ito? Kaya ng Peel pabalik isang layer kung kaya ngayon hayaan. At ang mga layunin, sa huli, ay itakda ang problema sa susunod na linggo ay magiging sa cryptogrophy-- ang sining ng scrambling impormasyon. At partikular, ang mga impormasyon ay mayroon kang i-encrypt o mag-decrypt ay magiging text. At upang ang mga uri ng mga paanyaya ang tanong ngayon tulad na rin, kung ano ang nangyayari sa ilalim ng hood may teksto lampas ASCII mula sa linggo zero, at kung paano namin talaga simulan upang manipulahin ang mga ito? Kaya dito ay ang pangalan Zamyla ni. At sa text, upang inputted sa tulad ng mga get string function. At simula ngayon, kapag nakakita ka ng isang string tulad this-- Z-A-M-Y-L-A-- simulan ang iniisip ng mga ito na parang ang bawat sa mga character ay sa isang kahon ng kanyang mga sarili. At sa katunayan, sa isang linggo o kaya ay panahon, bawat isa sa mga kahon ay pagpunta sa kumakatawan tunay na partikular na isang bloke ng na memorya ng isang kagat ng memory. Kaya bawat isa sa mga titik, sa huli, ay kumakatawan sa 8 bits. At kami ay talagang makita kung ano ang nangyayari sa ilalim ng hood sa aking computer. Ngunit para hindi ito suffices upang tingnan lamang sa Zamyla sa pamamagitan ng lens, kung saan ang bawat isa sa mga sulat na ito ay sa kanyang sariling box. At mabuti sapat na sa C ng aming makakaya ma-access ang bawat isa sa mga kahon nang direkta. Kaya kung nais mong makakuha ng mga unang titik ng kanyang pangalan, napakadaling sa C. Kung nais mong makuha ang huling sulat, napakadaling pati na rin may isang piraso ng bagong syntax. Kaya ako pagpunta sa sige sa CS50 IDE at buksan ang string zero dot C. At sa ganitong halimbawa dito, may mga isang pares ng mga bagong bagay na nangyayari. Kaya una sa 19 na linya, na namin nakita ito before-- get string. Kaya lang bilang isang mabilis katinuan check, kung ang isang tao ay nag-aalok ng hanggang sa salita paliwanag ng isang karaniwang tao ng kung ano ang nangyayari sa 19 linya. Tulad isalin lamang ito sa English na ang isang roommate wala sa CS50 maaaring maunawaan. Oo. Madla: Mayroon ang user input ng string at tindahan ito sa isang variable s. Tagapagsalita 1: Good. Magkaroon ng mga user input ng string at mag-imbak ito sa isang variable s. Mabuti iyan. Kaya sa kanang-kamay side, ang tawag namin sa get string. Iyon ay nagbabalik ng isang halaga na hindi makakuha nakatakda mula sa kanang bahagi sa kaliwang side sa isang variable na tinatawag na s na dinisenyo upang tindahan ng isang string. Mismong. Kaya ngayon line 22, per ang puna sa 21 na linya, malinaw naman ang mga kopya na string isang character sa bawat linya. Pero paano? Kaya una sa lahat, namin initialize ko sa 0. At pagkatapos paano namin makuha sa sa dulo ng pangalan Zamyla ni? Well, sa dulo ng Pangalan Zamyla ni, maaari ko manu-mano-type ang mga huling character ng ang kanyang pangalan sa anumang paraan, o ang bilang ng mga ito. Right? Kung kami bumalik here-- Z-A-M-L-- Y-L-A-- kaya maaari kong i-type sa. Ano ang index ng Huling sulat Zamyla ni? Kung ito ang 0-- pagsasalita tulad ng isang programmer-- 0, 1, 2, 3, 4, 5, Heard-- ko kaya nga, ang huling sulat pangalan Zamyla ay ang pang-anim, ngunit kung bibilangin namin mula sa 0, ito ay pagpunta sa maging number 5. Kaya panatilihin na sa isip dito. Ito ay lumiliko out may isang function sa C tinatawag strlen, at bumalik sa araw at sa araw pa rin, isang pulutong ng mga programmers piliin upang i-sync ang mga pangalan para sa kanilang mga mga function na ang tunog tulad ng mga salita sila ay sinusubukan upang sabihin. Kaya strlen ay length string. At kaya kung ano ang gusto string haba ng S bumalik kapag Zamyla ay ang input? Madla: Five. Tagapagsalita 1: Z-A-M-Y-L. Six. Right? Ano ang haba ng pangalan Zamyla ni? Right? At lamang sa katotohanan, anim na mga titik. Right? At kaya kung ano ang ibig sabihin na para sa aming mga loop? Kami ay pagpunta sa pumunta mula sa 0 hanggang anim na ay pagpunta sa bigyan kami ng limang iteration. Ano ang gagawin namin sa bawat pag-ulit? Well, porsiyento C, ang isang tao nahulaan ng ibang mga araw, ay nangangahulugang isang placeholder para sa ano? Madla: pansamantalang trabaho. Tagapagsalita 1: isang pansamantalang trabaho lamang. Kaya ang isang solong character-- hindi maramihang mga character tulad ng isang string. At pagkatapos ay narito ang mga bagong linya na namin ang nakuha ko sa pag-print out. At pagkatapos ay narito ang mga bagong syntax. Kung nais mong i-print out-th i ang character sa string S, kaya na magsalita, maaari mo lamang sabihin ang pangalan ng string S, at pagkatapos ay buksan square bracket, at pagkatapos ay sarado square bracket, na may isang i ang gitna. At ito ay uri ng nice sa na ito uri ng hitsura tulad ng isang parisukat tulad lamang ang mga parisukat na kung saan Zamyla ni character na umiiral sa na larawan doon. Kaya kung ako aktwal na patakbuhin ito ngayon, sabihin makita kung ano ang mangyayari. Gumawa ng string 0 dot slash string 0, at pagkatapos ay ako pagpunta sa uri ng pangalan Zamyla ni. Walang prompt, dahil ako ay hindi gamitin print f, ngunit na fine. Lang alam ko kung ano ang gagawin. At sa katunayan, ang mga kopya out Pangalan Zamyla, isa sa bawat linya. Ngayon ay maaaring isang maliit na walang ingat ipaalam. Ipagpalagay na hindi ko alam kung tungkol strlen at i korte, lahat ng karapatan, walang sinuman ay pagpunta sa magkaroon ng isang pangalanan mas malaki kaysa tulad ng 50 mga character. Sabihin sige at mag-recompile ito at gawin uli ito, at pagkatapos i-type sa Zamyla muli. Logically, kung ano ang program pagpunta sa subukan na i-print? Z-A-M-Y-L-A pagkatapos ay tulad ng 45 hindi kilala bytes ng memorya. At sa katunayan, kami ay bumalik sa ideyang ito ng memory. Ngunit lohikal lamang, kung Pangalan Zamyla ay ito ang haba, bilang sa bawat larawan dito, kung ano ang iyong sinasabi namin ay patuloy na pag-print, panatilihin ang pag-print, panatilihin pag-print, panatilihin ang pag-print, panatilihin ang pag-print, lahat ng mga paraan sa ika-50 na character, na nakakaalam kung ano ang nangyayari sa mangyari. Kaya sabihin aktwal na tingnan. Ni-type sa Zamyla Hayaan. Kawili-wili. Kami ay nakuha masuwerteng. Lamang ng isang buong grupo ng mga white space. Oh. May isang funky character. Tila uri ng tulad ng isang kakaibang tanong markahan doon, pero may pangalan Zamyla ni. Sabihin makakuha ng talagang walang ingat. Paano ang tungkol sa i-print namin out 500 bloke sa hindi kilala? Sabihin sige at gumawa ito pati na rin at pagkatapos ay muling i-run. At full screen na ito, dahil na ipaalam kailangan namin upang makita ang mas maraming espasyo. Zamyla. Mayroon ka ng masuwerteng muli. Dare makakakuha tayo ng mas walang ingat? Sabihin makakuha ng mas maraming walang ingat. 50,000 na mga character. Ito ang pinaka-tiyak na hindi isang magandang ideya. Lahat tama. Gumawa ng string 0. Ito ang magiging aming huling demo. Zamyla. Ugh. Ugh. SIGE. Kaya ang aking memory ay talagang walang laman ngayon, na kung saan ay tunay na uri ng maginhawa. Ano ang sinusubukan ko upang makakuha to-- lahat ng karapatan. At ngayon lang ako pagpunta upang makakuha ng walang ingat. 500,000. Full-screen ni Make-- ipaalam ito. Enter. Zamyla. Mayroon kaming pumunta. Wala akong ideya kung ano na ang ay, ngunit ito tunog masama. Lahat tama. At sa katunayan, sa lalong madaling panahon, kung ikaw ay kabilang ang mapalad na ang ilang sa mga oras ng opisina at sa hanay ng problema sa isa, ikaw maaaring napakahusay nakatagpo ito. Talaga ang Segmentation fault magkaroon ng isang mahusay na tinukoy ng kahulugan. Ito ay nangangahulugan na ang ilang mga uri ng pagkakamali na may kaugnayan sa isang segment ng memory. At sa mga tuntunin ng karaniwang tao, ito ay nangangahulugan na namin baliw na memorya na ginagamit namin RAM sa aking computer na dapat ay hindi ako nagkaroon ng access sa. At iyon ay kung ano ang parehong malakas at mapanganib din tungkol sa C ay na tunay Mayroon unfettered access sa kabuuan ng memory ng iyong programa o bytes o RAM, mas partikular. Kaya kahit na pangalan Zamyla ni ay mga character anim lamang ang haba, Maaari pa ring pumunta ako kahit saan sa memory ang gusto ko. At bilang isang bukod, kung na sa iyo kailanman basahin ang ilang mga artikulo paglipas ng mga taon tungkol sa ilang server o ilang programa pagkuha ng basag o na-hack na kinuha bentahe ng isang bagay tinatawag na isang buffer overflow maningning na tagumpay na bibigyan namin ng aktwal makipag-usap tungkol sa loob ng ilang linggo, na ang karaniwang tumutukoy sa anumang paraan ng tricking isang computer sa pagpunta rin lampas sa hangganan ng memory na ito ay dapat magkaroon, at paghahanap ng isang bagay makatas sa na na memorya ng password, marahil, ang isang paraan ng circumventing ilang serial number suriin, o lamang sa pangkalahatan ay magagawang upang linlangin ang computer ay Isinasagawa code na ay hindi inilaan. Ngunit sabihin bumalik upang ipaalam katotohanan para sa isang sandali lamang kung saan ang programang ito ay ipinatupad sa strlen, at ipakilala ang isang bagay up dito. Ano ang bago sa gitna ng mga pinakamataas na tatlong linya? Kaya string dot h. Ito ay lumiliko out mayroong ito library na tinatawag na String Dot H, o ang String Library, ang header ng file, kaya na magsalita, ay string dot h na nagbibigay sa akin access sa mga ito strlen function. Kung ligtaan ko na, ang tagatala ay pagpunta sa sumigaw sa akin sa ilang mga form. Pero alam mo kung ano? Ngayon sabihin makakuha ng talagang nuanced. Sa linya 22, may isang bagay na uri ng inefficient-- masama dinisenyo, arguably-- tungkol ito sa linya ng code. Isipin bumalik sa kung paano for-loop ay ipinatupad at kung ano ang mga hakbang na mangyari muli at muli at again-- ang Pinasimulan, ang kalagayan, ang mga code na makakakuha pinaandar, pagkatapos ay ang paglakas o ang pagbabago, pagkatapos ay ang kalagayan, pagkatapos ay ang code, at pagkatapos ay ang pagbabago, pagkatapos ay ang kundisyon, pagkatapos ay ang code, pagkatapos ay ang pagbabago, at iba pa. Kaya kung ano ang maaaring maging isang maliit nakakaligalig o hindi maganda gawin dito? Oo, sa asul. Madla: Strlen ay tinatawag na marami, maraming beses. Tagapagsalita 1: Oo. Kaya strlen ay tinatawag na maraming beses, ngunit kung ano ang ang haba ng pangalan Zamyla sa unang pagkakataon executes ang loop? Madla: Six. Tagapagsalita 1: Six. Well, kung ano ang haba ng kanyang pangalan sa pangalawang pagkakataon executes ang code? Madla: Six. Tagapagsalita 1: Ang lahat ng karapatan. Ito ay anim pa rin. Right? Pangalan Zarla ay may hindi nagbago, kahit na Naghahanap ako sa bahagi lamang ng mga titik sa kanyang pangalan. At upang ang mga katotohanan na epektibo ako humihingi sa tanong na, kung ano ang ang haba ng Zamyla, ano ang haba ng Zamyla, ano ang haba ng Zamyla, anim na magkahiwalay na mga oras, o pitong kahit, ay lamang hangal, dahil na walang pagbabago na sagot. At kaya kung ano ang aking magagawa talaga gawin ay this-- sa string ng isa Mayroon akong isang marginally mas mahusay na bersyon dito. There-- whoops-- string dalawang mayroon akong isang marginally mas mahusay na bersyon kung saan Gagawin ko this-- sa halip na lamang Sinisimulan i sa 0, ako rin gamit ang isang kuwit Ipinahahayag ng pangalawang variable na tinatawag na n-- Hindi ko na kailangang sabihin muli int. Hindi ko dapat, sa katunayan. Datapuwa't sinasabi ko n. At pagkatapos ay magpasimula ko n to ang strlen ng n, kaya na ngayon kung gaano karaming beses ang strlen naisasagawa sa kabuuang? Isang beses lang. At kaya ito ay kung ano ang ibig sabihin namin mas maaga ang tungkol sa mas mahusay na disenyo. Sa totoo lang isang beses tama ang iyong code, balik-iisip sa pamamagitan ng, Ako gamit bilang maliit memory o bilang ilang segundo o milliseconds ng oras computer bilang posible na ipatupad ang ilang mga problema? At ako pagpunta sa mag-scroll up at banggitin lamang na mayroong ito pagbanggit ng null sa bersyon na ito, ngunit kami ay bumalik sa na bago ang haba. Dahil sa ngayon, sabihin tumagal ng isang pagtingin sa kung saan ito ay pagpunta sa humantong sa amin. Kaya sa isa, ito ay lumiliko out na ngayon na kami ay may kakayahan na tingnan ang mga indibidwal na mga character, maaari naming pagkilos ng isang bagay mula sa linggo 0 na noon ay napaka arcane at uri ng kawili-wili sa oras. Ngunit ngayon, at lalo na kapag kami ay makapunta sa Cryptography sa isang linggo, ito ay magiging kaakit-akit na makapangyarihan. Lumalabas na may ilang data types-- ints at sa kamay at char at mga string at iba pang mga bagay- ilan sa mga ito maaaring napaka-madaling-convert sa isa pa. Halimbawa, kapag nag-uusap kami tungkol ASCII ilang oras ago-- narito ang mga malalaking titik A sa pamamagitan ng M, tuldok, tuldok, dot-- sinabi namin na mayroong isang mapping sa pagitan ng mga titik at numero. At sa katunayan, ito ay mayroong tunay para sa maliliit na mga titik pati na rin. Lowercase isang ay 97, capital ng isang ay 65. At may isang numero sa ASCII, na kung saan ay lamang ng paggawa ng mga mapa na ito sistema para sa lahat ng mga iba pang mga titik. Kaya kung ano ang ibig sabihin nito? Well, ako pagpunta sa sige at bukas up real mabilis ang isang bagay na tinatawag na ASCII 0, karamihan sa mga ito ay mga komento. At muli online maaari ka laging sulyap sa pamamagitan ng mga komento. At tingnan kung ano ang ito ay pagpunta sa gawin. Kaya ito ay nakuha ng isang pangunahing pag-andar. Ko na hard-code ang mga numero lamang para sa ngayon, dahil alam ko kung ano ang ginagawa ko. Alam ko kung ano ang gusto kong makita dito. At na-initialize ko kong 65. At ako pagbibilang up sa pamamagitan ng 26 titik kabuuang. At kung ano ako pagpunta sa i-print ang isang linya sa isang oras kung maaari mong bigyan ng kahulugan ito naka-highlight na line? Ano ang makakakuha ng naka-print? Oo. Madla: Ikaw ba ay pagpunta upang i-print ang mga titik na tumutugon sa mapa ng halaga sulat at integer value? Tagapagsalita 1: Eksakto. Pupunta ako sa i-print ang mga titik naaayon sa halaga ng integer, at sa kabaligtaran, ang mga sumusunod. Well na ito, may isang taong nagsabi ng mas maaga, ay isang placeholder para lamang sa isang pansamantalang trabaho. Ito pa rin ay. Ito, siyempre, ay isang placeholder para sa isang int hindi isang bagong linya. At ngayon paunawa, ang aking unang halaga na Ako i-plug in para sa na placeholder ay hindi I. Lamang ako ng sinasabi, sa mga panaklong, char ko, na kung saan ang nakakahinto char ay nagsasabi ng compiler, Ililibre kita Hindi tulad ng kung ano ito ay, kung saan ay isang numero. Treat ito bilang isang aktwal na character. Sapagkat ang pangalawang halaga ako i-plug in-- I-- dapat na lamang ng isang numero. Kaya kung ako sumulat ng libro na ito program-- kaya ito ay gumawa ng mga ASCII 0, dot slash ASCII 0-- ko lang makakuha ng ang madaling-magamit maliit tsart na nagpapakita sa akin ang lahat ng mga posibleng mappings nang hindi na kinakailangang mag-isip ito sa pamamagitan ng o tayahin ito sa aking sarili. At ako din pag-print out, paunawa ang mga maliliit na mga titik, dahil ang ilang mga linya sa ibang pagkakataon, ako din i-print out ito mapping pati na rin, na kung saan ay para lamang sabihin na sa sandaling maunawaan mo ano ang nangyayari sa ilalim hood, maaari mong awtomatikong nagko-convert nang pabalik-balik. At sa katunayan, kung ang sinoman sa inyo kailanman ginawa ito sa mababang paaralan o narinig ang tungkol sa isang tao mythically pagkuha ng tala at pasado ito sa kanyang o ang kanyang mga kaibigan sa klase, ngunit ikaw piniritong sa mga titik sa pamamagitan ng tulad ng isang nagiging B, at B ay nagiging C, o isang bagay mas kumplikado kaysa sa na, well, kung paano mo pumunta tungkol sa pagpapatupad na bilang isang bata? Well, maaari mo lamang uri ng alam Isang nagiging B, B ay nagiging C, ngunit mathematically, kung ano na ang bata ginagawa? Anom ang iyong pagdagdag sa bawat titik? Mabisa, 1. Kaya kapag binago mo A to B, na ang uri ng tulad ng pagbabago ng 65-66, saan mathematically nangangahulugan magdagdag ng 1 lang. At kaya kung ikaw ay upang ipatupad na ang maliit na mapanlokong paraan para sa iyong mga guro sa code, ikaw ay maaaring gawin eksakto na lang sa pamamagitan ng pagdaragdag ng isang solong titik magkasama. Kaya bago ang haba, hindi namin pagpunta upang makita kung paano namin maaaring samantalahin ng na sa aktwal na tunay na pag-aagawan at ipaliwanag impormasyon. Sa habang panahon, alam na sinimulan namin sa upang ipakilala ang ilang iba pang mga aklatan here-- ang string ng isa ngayon. At isang napaka-kapaki-pakinabang na site sana makikita ninyo ay tinatawag reference.cs50.net, na mga kawani ng pagtuturo ay magkasama, upang kung nais mong maghanap ng kung paano strlen gawa, maaari kang magsimulang mag-type pangalan ng function, ang i-click ang strlen doon, at pagkatapos ay isang mas kumportable na paliwanag ay pagpunta sa lumitaw. O kung gusto mo ang opisyal na Linux-based na paliwanag, maaari mong i-click ang mas umaliw sa kanang tuktok, at ito Ipakikita ang parehong impormasyon, ngunit sa mga mas kumplikadong mga tuntunin. Iyan ay isang kapaki-pakinabang na mapagkukunan upang talaga alam kung ano ang ginagawa ng lahat ng bagay. Susunod na oras na namin ang pagpunta sa tingnan ang Ovaltine at higit pa, at ipakilala ang sarili sa mundo ng cryptography. Bago at pagkatapos, makikita namin makita mo ito sa susunod na linggo. At ngayon, Colton Ogden. Tingnan mo sa Miyerkules. [MUSIC nagpe-play] [MUSIC nagpe-play] Tagapagsalita 1: Ano ang [BLEEP] ang ginagawa mo? Tagapagsalita 1: kumakain ako ng aking dessert? Paano mo kumain ng ito? Gamit ang iyong mga kamay? [MUSIC nagpe-play]