Tagapagsalita 1: Ang lahat ng mga karapatan. Maligayang pagbabalik. Ito ay Linggo Dalawang ng CS50, at mayroon kami kaya malayo pa gamit ang function ngunit higit sa lahat kinuha ito para sa ipinagkaloob. Ginamit namin ang printf na may mga side effect ng pag-print bagay sa screen. Ginamit namin ang makakuha-int, kumuha ng mga lumutang. Ngunit kung ano ang talagang nais upang lumikha ng ng iyong sariling mga pag-andar, tulad ng ilan sa maaaring ikaw ay nagsimula sa gawin para Problema Set One, bagaman hindi mahigpit na kinakailangan? Well, sabihin sige at muling bisitahin na problema ng lang nagtatanong sa gumagamit para sa ang kanilang pangalan at pagpi-print ng isang bagay sa screen, ngunit subukan upang salik ang ilang mga ng commonality na na namin nakikita sa aming code kaya malayo. Kaya sa pamamagitan ng na ibig sabihin ko ang mga sumusunod. Pupunta ako sa sige at lumikha ng isang bagong programa, tawagan lamang hello.c ito gaya ng dati. Pupunta ako sa sige at bigyan ang aking sarili ng pamantayang io.h sa tuktok. Pupuntahan ko ring bigyan ang aking sarili preemptively ang CS50 library upang ang Hindi ako makapag-yelled sa pamamagitan ng mga tagatala. At ngayon pupuntahan ko sige at ipinapahayag int, main, walang bisa. At pagkatapos ay i-in dito, ito ay kung saan gusto ko upang simulan upang outsource pag-andar sa sa ilang ibang mga pag-andar na ako sa aking sarili am pagpunta sa magsulat subalit hindi kasalukuyang umiiral. Halimbawa, ipagpalagay na Nais kong magsulat ng isang function na nagbibigay-daan sa akin upang i-print out kumusta, kuwit, at pagkatapos ng ilang mga pangalan ng gumagamit. Sa halip na patuloy na gawin printf kumusta,% s, hindi magiging maganda kung doon ay lamang ng isang function na tinatawag na hindi printf ngunit naka-print na pangalan? Kaya sa ibang salita, gusto kong ma- magsulat ng isang programa na ginagawa ng kaunti isang bagay na katulad nito. Una, ako pagpunta sa sabihin ang iyong printf pangalan, at dahil doon pagdikta sa gumagamit sa akong bigyan ng kanyang pangalan, at pagkatapos ay ako pagpunta sa gamitin ang pamilyar na mga string sa magpahayag ng isang string. Bigyan mo ako ng isang variable na uri ng string, call ito s, at iimbak sa na ang magreresulta ng pagtawag makakuha ng string. Ngunit ngayon sa nakalipas na linggo, Gusto ko magkaroon medyo tediously tapos kumusta,% s / n. At sa ibang salita, nasaksihan namin ito Halimbawa ng grupo ng mga beses, at ito ay isang walang kuwenta halimbawa dahil mayroong isa lamang linya ng code sa gayon ito ay talagang hindi isang sang-ayon upang mapanatili ang pag-type sa muli. Ngunit ipagpalagay na ito linya ng code talaga ay nagiging pasanin, at hindi ito isang linya ng code ngunit ito ay 10 linya ng code ng ilang linggo mula ngayon, at lamang ka nakakakuha ng pagod ng pagkopya at pag-paste o retyping na ang parehong code. Hindi ba ito maging maganda sa halip ng paggawa printf kumusta,% s at iba pa, hindi magiging maganda kung mayroong lamang isang function na tinatawag na naka-print na pangalan kumukuha ng isang argumento - sa ibang salita, ito ay tumatagal ng input - at pagkatapos ay tuldok-kuwit. Kaya function na, hindi gagawin ito Maging mabait kung na umiral? Pagkatapos ay hindi ko na kailangang mag-alala tungkol sa ano printf ay, kung ano ang% s at lahat ng mga pagkakumplikado na hindi lahat na kawili-wili. Ang mga ito ay kapaki-pakinabang. Kaya naka-print na pangalan, sa kasamaang-palad, ay hindi imbento ng ilang mga 40 plus taon na ang nakakaraan. Walang isa naisip na isulat ito. Ngunit iyon lamang ang kagandahan ng pagkakaroon ng programming language, tulad ng sa Scratch maaari mong tukuyin ang mga pasadyang mga bloke, upang sa C at pinaka-anumang wika, maaari mong tukuyin ang iyong sariling mga pag-andar, maaari mong tukuyin ang iyong sariling mga function. Kaya kahit na makuha namin sa pamamagitan ng pangunahing Awtomatikong para sa libreng, maaari naming ipahayag ang aming sariling mga function. Kaya ako ng pagpunta sa gawin ang ilang mga kuwarto ng hanggang dito up tuktok, at ako pagpunta sa ipahayag ang aking sariling pag-andar na ang nangyayari upang tumingin ng isang medyo kakaiba sa unang ngunit magkakaroon kami dumating bumalik sa mga ito bago ang haba. Pupunta ako sa sabihin walang bisa, at dahil doon na nagpapahiwatig na ito function na gumagana isang bagay, ay may side effect, ngunit ito hindi nagbabalik ng isang bagay sa akin sa parehong paraan na makakuha ng int o makakuha ng string mismo ang ibig. At ako pagpunta upang bigyan ito ng isang function na pangalanan ng naka-print na pangalan, at pupuntahan ko tukuyin na ang tao na ito ay pagpunta sa tumagal isang string, at ako pagpunta sa tumawag na string pangalan. Kaya kong tumawag ito anumang nais ko, ngunit ko gusto ang aking code upang maging self-pagdodokumento. Sa ibang salita, kung ang isa sa iyo ay sa buksan ang file na ito at basahin ito, maaari mong uri ng magpakilala mula sa pangalan ng na input kung ano ang papel na ito ay dapat upang i-play. At ngayon sa ibaba na, pupuntahan ko buksan kulot suhay at closed kulot suhay, at kaya mapapansin ko na sinundan ang parehong pattern sa apat na mga linya sa pamamagitan ng pitong mga bilang Ko ang mga sumusunod na para sa isang mahusay na linggo plus ngayon sa pagitan ng, sabihin nating, mga linya at siyam 14 na sumulat ng mga pangunahing. Sa ibang salita, i-print ang pangalan ay isa pang function. Ngayon, ang tagatala ay hindi pagpunta upang malaman tumawag sa bagay na ito awtomatikong dahil ako literal lamang imbento ito, pero ito ay kilala pa rin sa pangunahing tumawag awtomatiko, at pagkatapos ay siyempre sa 13 linya, ako ay tumatawag ang aking sariling mga function. At dahil ko na ang nagpahayag na function na hanggang sa apat na mga linya bago main, ito ay pagpunta sa magturo ang tagatala ano quote, magpanipi, "naka-print na pangalan" Nangangahulugan at ano ang dapat nitong gawin. Kaya ako ay isang uri ng pagbibigay ito ng isang bagong custom harangan sa konteksto ng, sabihin nating, scratch. Kaya sa dito, maaari ko bang ilagay na laganap o paulit-ulit na pattern ng code panatilihing ako pagsulat sa klase, printf % S halo,% s / n ", - kung ano ang gusto kong ilagay dito? S? Kaya gusto ko upang ilagay ang pangalan sa kontekstong ito. Kaya mapansin ang isang bit ng isang paghihiwalay sa dalawang bahagi dito. Dahil ako deklarasyon aking sariling function na at medyo ko pa mang tinatawag na print ito pangalan, at dahil nag ako tinukoy sa panaklong na ito function na tumatagal ng isang argument, ang uri ng na kung saan ay isang string - kaya ito ay isang salita o parirala o isang bagay tulad na - at Ako sa pagtawag na argumento pangalan, na Nangangahulugan lamang ang variable na nasa saklaw, sa gayon na magsalita, ang pangalan. S lamang umiiral sa pagitan ng kung ano ang dalawang kulot tirante, siyempre? Well talaga, tulad ng linya 10 sa pamamagitan ng 14, kaya lang gusto sa Lunes ay hindi maaaring gamitin S, ngunit kung ano ang maaari kong gawin ay pumasa S sa naka-print na pangalan. I-print pangalan lang kaya ang mangyayari sa bigyan ito isang alias, isang kasingkahulugan, isang palayaw, pagtawag ito pangalan, at ngayon gamitin ito sa linyang ito. Kaya ngayon hayaan mo akong i-save ito, mag-zoom out. Hayaan akong sige at gumawa ng halo. Mukhang magandang. Hindi dura ang anumang mga error. . / Kumusta ang Enter. Ano ang aking pangalan? David. At kumusta David. Kaya hindi lahat ng mga kapana-panabik na, ngunit lamang sa tingin ngayon. Mayroon ka na ngayong na parehong sahog tulad ng ginawa namin sa scratch sa gumawa ng aming sariling mga function. Subalit mayroong isang bit ng isang gotcha. Ipagpalagay na hindi ko ay talagang naisip ito sa pamamagitan ng at ko talagang walang talagang nag-iisip tungkol dito ay nagsulat na function na pababa dito. Palagay ng ganap na ganap makatwirang. Sa scratch doon ay walang mga kuru-kuro ng lokasyon sa iyong mga script. Maaari mong ilagay up ng isa dito, isa dito ang, isa up dito, at maaari itong magsimula upang tumingin ng kaunti magulo kung wala ka lay out ito nang maayos, ngunit ito ay hindi mahalaga kung saan pisikal na mga script ay sa screen. Sa kasamaang palad sa C - at ito ay hindi katulad mga wika tulad ng Java at Python at iba pa na maaaring mong maging pamilyar may - sa kasamaang-palad sa C, ang pagkakasunud-sunod mahalaga dahil sa panonood ng kung ano ang pagpunta sa mangyayari ngayon. Ang default na pag-andar na ang nangyayari upang isakatuparan ay, siyempre, ang pangunahing. Main ay pagpunta sa tumawag print pangalan sa walong linya, ngunit sa kasamaang palad, ang tagatala ay hindi kahit na malaman na ang naka-print na pangalan Umiiral na hanggang sa ito ay makakakuha ng sa line 11, na kung saan ay sa kasamaang-palad pagpunta sa maging huli na. Kaya natin gawin gawing halo. At ngayon mapahamak, dalawang mga error na nabuo. Kaya ngayon hayaan mag-scroll up ako sa pinakadulo una sa lahat, bilang dapat naming laging gawin, at mapapansin na ito ay sumisigaw sa akin, "Implicit deklarasyon ng function na mag-print ng pangalan. " Kaya nasaksihan namin ang mensaheng ito bago, implicit deklarasyon ng function. Kapag na-nakita namin na uri ng error? Kapag hindi ko isama ang isang library. Kung nakalimutan ko ang cs50.h at Gusto ko makakuha yelled sa para makakuha ng string o kumuha ng int. Ngunit sa kasong ito, ang pagpapaandar na pag-print pangalan ay wala sa isang library, tama? Ito ay literal sa file na ito, kaya kung ano talaga ang problema? Well sa kasamaang-palad sa C, ito ay tumatagal ng sa iyo kaya hindi mapaniniwalaan o kapani-paniwala literal na kung iyong Gusto ng isang function na tinatawag na pag-print sa pangalan umiiral, maaaring ipatupad na function na sa pinakatuktok ng iyong code upang ito ay mapupuntahan sa babaan pag-andar, ngunit lantaran, na nagiging nanggigitata masyadong mabilis. Personal, ko ang paglalagay ng pangunahing muna dahil pagkatapos ay napaka ito ay i-clear kung ano ito programa ang ibig sa unang tingin. At saka, maaari kang makakuha ng kakaiba sa sulok mga kaso kung saan kung x ay nais na tumawag y ngunit y maaaring tumawag x, mo lamang pisikal na hindi maaaring talagang ilagay isa sa itaas ng iba pang mga. Ngunit ito lumiliko out sa C, maaari naming malutas ang napaka-simple. Pupunta ako sa maglagay ng maliit na bit ng space up dito, at lang ako sa pagpunta sa preemptively, kahit na medyo redundantly, pagpunta sa turuan ang tagatala na may umiiral na pag-andar ng tinatawag print pangalan, ito ay tumatagal ng isang string, at ako pagpunta sa tumawag sa ito pangalanan ang tuldok-kuwit. Kaya ito ngayon sa apat na linya, na aming hindi pa nakita bago, ay isang deklarasyon ng isang pangalan ng function na i-print, ngunit ito lamang isang pangako na function na ito kalooban kalaunan ay tinukoy, kalaunan ay ipinatupad. Ito ngayon ang maaari kong umalis dahil nag-iisa ngayon ito ay ang kahulugan, ang pagpapatupad, pag-uuri ng huling milya ng pagpapatupad ng mga ito partikular na function. Kaya nang tapat ito nakababagod, ito ay nakakainis, ngunit ito ay ang paraan ay C, at ito ay dahil ito ay magdadala sa iyo napaka literal at, bilang isang computer na dapat nang tapat, lamang ay eksakto kung ano sabihin mo ito sa gawin, at upang ang pagkakasunud-sunod ay mahalaga. Kaya panatilihin na sa isip at muli, magsimula sa mapansin ang pag-ulit ng mga pattern. Logro ay kalooban mo, kung hindi mo pa pa, magsimula sa magkasalubong mga mensahe tulad nito na sa unang sulyap ay tila ganap na misteriyoso, ngunit kung nagsimula ka upang tumingin para sa mga key na mga salita gaya ng "Implicit pahayag," nagbabanggit ng isang function na sa kasong ito - at lantaran, mo kung minsan kahit na makakuha ng isang maliit na berde karot simbolo na nagsasabi sa iyo kung saan ang isyu ay malamang na - maaari mong simulan upang gumana ang iyong paraan sa pamamagitan ng pa hindi nakikitang error na mensahe. Ang anumang mga katanungan sa pagsulat ng iyong sariling function na sa ganitong paraan? Tayo'y gawin ang isang bagay na ang isang maliit na mas nakakahimok. Sa halip na lamang gawin ang isang bagay na may isang side effect ng pag-print, hayaan mo akong pumunta Magpatuloy at i-save ang isang bagong file, at bibigyan namin ng tumawag ito positive.c, kahit na ito ay pagpunta sa maging isang maliit na iba't ibang kumpara sa huling panahon. At oras na ito, gusto kong muling ipatupad positive.C halimbawa huling oras, na ay puwersahin ang user upang mabigyan sa akin ng isang positibong integer. Ngunit ako ay nagkaroon na gamitin makakuha int huling oras. Hindi ba ito naging maganda kung nagkaroon isang function na tinatawag na makakuha ng positibong int na maaaring ko lang outsource ito piraso ng pag-andar sa? Kaya ang pagkakaiba dito ay bibigyan namin ng ipatupad makakuha ng positibong int, ngunit hindi katulad naka-print na pangalan ay nagkaroon ng isang pangalawang epekto - ito ay hindi nagbalik ng isang bagay sa akin tulad ng isang numero o isang string - maging positibo int ay, siyempre, pagpunta sa bumalik, sana, ang positibong int. Kaya sabihin gawin ito. Isama cs50.h, Isama ang standard io.h. Int pangunahing walang bisa. At ngayon sa dito, pupuntahan ko sige at sabihin nating int, tumawag n ito, ay katumbas ng makakuha ng positibong int. At tulad ng int makakuha ng Umiiral dahil ang mga tauhan ay nagsulat ito, pupuntahan ko upang ipalagay para sa mga sandali na makakuha positibong int umiiral, at ngayon ako pupunta upang sige at sabihin printf, salamat para sa% i / n ", n. Kaya ngayon kung ako sumulat ng libro sa programang ito, ano ang ay pagpunta sa mangyayari sa aking terminal window sa ibaba ng screen? Pupunta ako sa malamang na makakuha parehong error tulad ng dati. So sabihin subukan ito. Gawing positibo. At muli, walang pasubali na pagpapahayag ng pag-andar, makakuha ng positibong int. Kaya maaari naming malutas ito sa isang pares ng mga paraan. Pupunta ako sa panatilihin itong simple lamang at ilalagay ang aking deklarasyon up dito at makakuha ng positibong int. Kailangan ko ng tinatawag na lagda. Ang pirma ay tumutukoy lamang sa aesthetics ng unang linya ng programa. Kaya ano ang dapat makakuha ng positibong int return? Kaya sa isang int. Ibig kong sabihin may perpektong, magiging bumalik isang bagay tulad ng positibong int, ngunit na ay hindi umiiral. Hindi namin nakita na kasama ng aming data mga uri, kaya kami ay may upang harapin ang katunayan na kami ay may napakakaunting mga uri ng data upang gumana sa. Ngunit maaari naming bumalik sa isang int at lang pinagkakatiwalaan na ito ay magiging positibo. Ito ay pagpunta upang tawagin makakuha ng positibong int. At ngayon tungkol sa kung paano nito argumento? Gumagana ba ito gumawa ng anumang pag-input? Gumagana ba ito kailangan ng anumang mga input? Kaya hindi ito kailangang malaman nang maaga kahit ano. Kumuha ng string ay hindi, kumuha ng int ang hindi. Printf gumagana - ito ay kinakailangan na magkaroon ng ilang mga input naipasa sa ito - at naka-print na pangalan kinakailangan ng pag-input sa ilan, ngunit makakuha positibong int ang hindi. Kaya pupuntahan ko tahasan sabihin ang tagatala walang bisa. Walang bisa ay ang kawalan ng ano pa man. Kaya walang silbi ang ibig sabihin ay wala sa loob ng pagpunta ng mga panaklong, tuldok-kuwit. At ngayon sa ilalim ng aking mga file - at muli, lang ako sa pagiging uri ng anal dito paglalagay ng main sa tuktok, na ay mahusay na kasanayan dahil sa ganitong paraan, anumang oras sa iyo o sa ibang tao bubukas ang iyong mga file, ang pag-andar ay doon. Maaari mong sumisid sa mula sa square isa. Kaya ngayon pupuntahan ko duplicate na ito, makakuha ng positibong int walang silbi, ngunit hindi ako pagpunta sa pindutin ng isang tuldok-kuwit ngayon. Pupunta ako upang buksan ang kulot tirante, at ngayon ay kailangan ko upang humiram ilang mga ideya mula sa Lunes. Kaya bilang isipin ang mo, ginawa namin ng isang bagay i gawin ang mga sumusunod habang isang bagay na noon ay totoo. At kung ano ang gagawin ko? Ako ginawang isang bagay tulad ng ibigay sa akin ng isang positibong integer, Medyo ng isang prompt. Maaari ko bang gamitin ang anumang mga salita na gusto ko. At pagkatapos ay ginamit ko kung ano? Int n katumbas makakuha int, walang argumento dito. At mapansin ang pagkakaiba. Kapag tumawag ka ng isang function, kapag ginagamit mo ang isang function na, hindi mo ilalagay sa walang bisa. Mo lang gawin iyon kapag deklarasyon ng function, pagtuturo ang tagatala ano dapat itong asahan. Kaya hindi mo na kailangang maglagay walang silbi ang iyong sarili doon. At ngayon kung ano ang aking kalagayan? Well, n ay hindi katumbas ng positibo, ngunit ito lamang ay hindi tunay na code. Kaya paano ko ipahayag ito nang higit pa nang malinis? Kaya mas mababa sa o katumbas ng zero. Kaya muli, mapansin ang maaari mong gawin mas mababa sa o patas sa. Kahit na ito ay dalawang magkahiwalay na mga simbolo, maaari mong gawin ito sa iyong keyboard bilang naturang. Ngunit mayroon pa rin ng isang bug na Ako screwed up huling beses masyadong. Mayroon akong idedeklara - eksakto. Mayroon akong idedeklara n labas ng loop. Kaya kailangan kong ilagay n up dito, at gagawin ko hindi nais upang muling ipahayag ito sa dito baka makakuha ako ng isang bagong variable. Katatapos ko lamang nais na magtalaga ng isang halaga sa dito. At ngayon, hindi ko pa tapos dito. Hayaan akong makakuha nang mas maaga sa aking sarili at magpanggap na ako tapos na. Gawing positibo, at ngayon may bagong error. Control umabot sa dulo ng hindi pang-walang bisa function. Kaya bagong mensahe ng error, ngunit kung uri mang-ulol ng bukod sa bawat isa sa mga salitang ito, marahil pahiwatig sa kung ano ang mali. Kontrolin. Control lamang ay nangangahulugan na ang pagkakasunod-sunod ng mga operasyon sa isang program. Ang computer na nasa kontrol at may nangyaring mali. Kaya umabot sa dulo ng isang non-walang bisa function. Ano ang function na ito ay tila nagre-refer sa? Ano ang function na ay hindi-walang bisa? Kaya makakuha ng positibong int, at ng kaunti nakakalito sa na rin, ito ay uri ng walang bisa. Mayroon itong specification ng walang bisa para sa kanyang argumento, ngunit nito output ay pagpunta sa maging ng uri n. Kaya ang salita sa kaliwa ay ang tinatawag nang gayon return type. Ang salita sa loob dito ay ang zero o higit pang mga argumento na isang function na tumatagal. Kaya kung ano ang kailangan kong gawin? Sa puntong ito sa aking code, line 21 kung saan ang mga kumikislap prompt ngayon ay, ako mayroong positibong int loob ng variable na tinatawag n. Paano ko bigyan ito pabalik sa main? Literal. Bumalik n tuldok-kuwit. Kaya lang bilang Colton nagbalik ng isang piraso ng sulatin ang sagot sa akin sa pamamagitan ng pag-drop na piraso ng papel sa maliit na itim kahon sa mesa, upang gawin iyon sa code, literal ka magsulat lamang, bumalik n, at ito ay bilang bagaman Colton ay handing sa akin ng isang bagay na pisikal na bumalik. Sa kasong ito, kung ano ang nangyayari ay makakuha positibong int ay pagpunta sa ipasa pabalik ano ang siguro isang positibong integer kung kanino? Saan kinukuha ng halaga na magtapos up? Na nagtatapos up sa variable na ito, n, at pagkatapos namin magpatuloy sa linya siyam. Kaya sa ibang salita, sa pagkakasunud-sunod ng pagpapatakbo, programa na ito ay nagsisimula execute, at tagatala ang napagtanto, oh, gusto mo na ang library? Hayaan akong pumunta grab ano ang nasa loob na. Oh, gusto mo na ang standard library IO? Hayaan akong pumunta grab ano ang nasa loob na. Ano ang ibig tagatala ng sabihin sa sarili nito kapag ito ay umabot sa apat na linya? Oh, ikaw ipinangako upang ipatupad ang function na tinatawag na makakuha ng positibong, ngunit babalikan ka namin sa ibang pagkakataon na, isang bagay kasama ang mga linya. Int pangunahing walang bisa lamang ay nangangahulugan narito ang lakas ng loob ng aking mga programa. Linya ng pitong lamang ang kulot suhay. Linya ng walong ay nagsasabi sa kaliwa, bigyan sa akin 32 bits para sa isang integer, tumawag n ito. Sa kanang bahagi, ito ay sinasabi makakuha ng positibong int. Ngayon sabihin pause na kuwento dahil ngayon Hindi ko panatilihin ang aking mga gumagalaw cursor pababa. Aking cursor ngayon napupunta down na dahil dito ngayon makakuha ng positibong int executes. Int n ay ipinahayag. Gawin ang mga sumusunod. Printf nagbibigay sa akin ng isang positibong integer. Kumuha ng isang int mula sa gumagamit, iimbak ito sa n, at marahil gawin ito muli at muli. Loop Nangangahulugan ito na ang code na ito puwede pumugot ng ulo pataas at pababa tulad nito muli at muli, ngunit kapag ang mga gumagamit sa wakas cooperates at nagbibigay sa akin ng isang positibong int, ako pindutin ang linya 21, kung saan ang numero ay ipinasa muli, at kung alin ang ang dapat kong i-highlight ngayon? Siyam. Control, kaya na magsalita, nagbabalik sa line siyam. Iyan ang linya na ngayon sa pagsingil. Kaya na kung ano ang nangyayari na lahat oras na ito sa ilalim ng hood, ngunit kapag namin ginagamit mga function tulad ng printf o kahit na makakuha ng mga string na may ibang tao sinulat para sa iyo, control ay ina-ipinasa sa iba code ng linya sa pamamagitan ng linya sa pamamagitan ng linya. Lamang Ito ay hindi namin ma-makita ito at kami Hindi ma talagang ilarawan ito sa programa dahil sa ilang mga iba pang file sa hard drive walang anumang kaalaman sa amin. Kaya sabihin talagang sumulat ng libro at magpatakbo ng mga ito ngayon. Gawing positibo. Sumulat ng libro, iyon ang pag-unlad. . / Positibo. Bigyan mo ako ng isang positibong integer. Sabihin maging mahirap. Negatibong 1. Zero. Sabihin bigyan ito ng 50. Salamat para sa 50, at kaya kontrol na ngayon ang ibinalik. Ang anumang mga katanungan, pagkatapos, sa mga iyon? Oo? [Hindi marinig]. Sabihing muli. Oh, ang mahusay na tanong. Kaya maaari mong mapansin ang isang parallel na dito Ako uri ng paggupit ng isang sulok sa. Sa line 12, ako na nagsasabi, makakuha ng positibong int Ibinabalik ng isang int, ngunit sa pamamagitan ng na ang parehong logic, ito ngayon ay nakatayo sa dahilan na sa anim na linya, ako na nagsasabi na ang pangunahing tubo isang int, ngunit kung ano ang mayroon kaming hindi kailanman Nagkaroon sa alinman sa aming mga programa? Hindi namin nagkaroon ng pagbanggit ang key na ito return salita. Kaya ito lumiliko out na sa C, hindi bababa sa ang bersyon nito na ginagamit namin ginawa noong 1999, technically, ito ay nangyayari para sa iyo awtomatikong. Anumang oras mo ipatupad ang isang programa at sa iyo ipatupad ang isang function na tinatawag na main, na function na ay magbabalik ng zero sa pamamagitan ng default na kung hindi mo sasabihin kung hindi man, at zero lamang ang convention. Ang mundo ay nagbabalik zero dahil doon na nagpapahiwatig na ang lahat ay mabuti, mabisa Aalis sa amin sa 4000000000 posibleng bagay na maaaring pumunta mali upang kung bumalik kami ng isa, na maaaring magpahiwatig ng isang code na nangangahulugan na ito bagay nangyaring mali. Maaari naming ibalik dalawa, na nangangahulugan na ang iba pang mga bagay na nangyaring mali. Maaari naming ibalik 4000000000, na Nangangahulugan ito iba pang mga bagay nangyaring mali. At kung ikaw ngayon sa tingin tungkol sa iyong sarili PC o Mac, maaari mong isipin ang na kung minsan kumuha ka ng misteriyoso mga mensahe ng error mula sa software na ikaw ay paggamit, at kung minsan ito ay may pantao friendly na paglalarawan, ngunit mayroong madalas isang code o isang numero sa screen? Kung ito ay hindi dumating sa isip, lamang abangan ang para dito. Iyan ay karaniwang kung ano ang mga code na ito ay nagre-refer sa. Ang mga ito ay kasama sa Microsoft Word at iba pang mga programa upang kung mag-file ka ng isang bug ulat sa kumpanya, maaari mong sabihin mo sa kanila, oh, nakuha ko error number 45. At ilang mga programmer sa likod ng kumpanya Maaaring tumingin na hanggang sa kanyang code at sabihin, oh, iyon ay dahil sa aking ginawa ito bug at na ang dahilan kung bakit ang user Nakakuha ang mensaheng ito. Subalit lantaran, ito ay lamang ng isang maliit na distracting at medyo nakakainip na pagtibayin na, hindi bababa sa aming unang ilang mga programa, kaya na namin Na-omitting ito. Ngunit lahat ng oras na ito bawat isa sa iyong pangunahing pag-andar ay nagkaroon ng lihim na ito linya awtomatikong idinagdag para sa iyo ng mga tagatala, sa pamamagitan lamang ng convention sa i-save ka ng ilang oras. [Hindi marinig]. Hindi mo na kailangan upang maisama ito sa pangunahing. Iyon ay pinong. Mo kailangang isama ito kung ikaw ay pagpapatupad ng isang function na katulad nito. Kung hindi man ang function na flat out hindi gagana. Ngunit sa pangunahing, ito ay hindi kinakailangan. Sa isa o dalawang linggo, magsisimula kami sa pagkuha ng sa na ugali sa sandaling gusto naming simulan signifying error. Talagang mahusay na tanong. Kaya mabilis break na may kinalaman sa pandiwa upang banggitin na ito Biyernes, hindi namin ay nagkakaroon ng tanghalian per se, ngunit magkakaroon kami ng pagkakaroon ng hapunan sa ang ilan sa mga mag-aaral at mga kawani. Kung nais mong sumali sa amin, huwag mag- libre upang pumunta sa cs50.net/rsvp. 6:00 ito Biyernes. Space ay, gaya ng lagi, limitado, ngunit bibigyan namin ng magpatuloy sa paggawa sa mga halos isang lingguhang batayan kung espasyo naubusan sa linggong ito. Kaya ang cliffhanger na iniwanan namin sa off Lunes noon ay mga string na maaari talaga ay mai-index sa, na kung saan ay nangangahulugan lamang sa iyo Maaaring makakuha sa unang character, ang ikalawang karakter, ang ikatlong karakter at iba pa, dahil maaari ka mabisa sa tingin ng isang string, tulad ng kumusta, bilang sa kasong ito limang mga titik sa loob ng mga kahon. At maaari kang makakuha sa bawat isa sa mga mga kahon na may kung ano ang syntax ginawa namin ipakilala sa Lunes? Yaong mga square bracket sa iyong keyboard. Iyon lamang nilalayong pumunta sa lokasyon zero. Simulan namin ang pagbibilang sa zero, kaya bracket zero Sumisimbolo h, isa bracket Sumisimbolo e, at iba pa. At kaya sa lahat ng oras kapag kami nakapunta gamit ang string at pag-type sa "kumusta" at "mundo" at iba pang mga bagay sa ang screen, ito ay nai-imbak sa mga kahon tulad nito. At tumagal ng isang hula. Ano ang ginagawa ng bawat kahon ay kumakatawan sa pisikal na sa loob ng iyong computer? [Hindi marinig]. Paumanhin? Mga character. Kaya isang karakter, tiyak sa kaso ng mga string, at isang character na lamang ang walong piraso o isa byte. Kaya mo marahil ay hindi bababa sa vaguely pamilyar sa ang katunayan na ang iyong May computer na memorya. Ito ay may dalawang uri ng memorya ng hindi bababa sa. Ang isa ay ang hard disk kung saan mo i-save ang bagay-bagay na permanente, at iyon Karaniwang malaki kaya maaari kang magkaroon ng pelikula at musika at iba pa. Pagkatapos ay ikaw ay may isa pang uri ng memory tinatawag na RAM, R-A-M, Random Access Memory, at ito ay ang uri ng memory na ginagamit kapag ang iyong computer ay tumatakbo ngunit kung mawalan ka ng lakas o ang iyong baterya namatay, ang anumang bagay na naka-imbak sa RAM mawala kung mawalan ka ng lakas nang sama-sama dahil hindi ito paulit-ulit. Ay karaniwan mong magkaroon, mga araw na ito, isang kalesa ng ito, dalawang gig, siguro higit pa. At ang mga bentahe ng RAM ay na ito ay magkano magkano, magkano ang mas mabilis kaysa sa na hard disk o kahit na solid estado nag-mamaneho nang mga araw na ito, subalit ito ay karaniwang mas mahal kaya mayroon kang mas kaunti sa mga ito. Kaya pag-uusap ngayong araw talaga ay tumutukoy sa RAM, na uri ng memorya na Umiiral lamang habang mayroong kapangyarihan ina-fed papunta sa iyong computer. Kaya kapag nag-type sa H-E-L-L-O, ang Enter sa ang keyboard, ang H ay pagpunta sa isa byte ng RAM, E ay ang pagpunta sa isa pang byte ng RAM, bilang ay ang natitirang bahagi ng salita. Kaya isipin ang kung ano ang nagawa naming upang gawin ang huling oras na ito ay. Hayaan akong sige at buksan ang file na tinatawag naming string.c, at pagkuhang muli na ito ay tumingin ng kaunti isang bagay na katulad nito. Hayaan akong talaga ibalik at baguhin ito sa eksaktong kung ano ang hitsura nito gaya ng, string haba ng s. Kaya tumingin sa mga programa dito. Kasama namin ang CS50 library kaya na maaari naming gamitin makakuha ng string. Kasama namin standard io.h upang maaari naming gamitin ang printf. Bakit mo kami isama string.h? Ito ay bagong sa Lunes. Kaya gusto naming string length. STR leng. Mga Tao nagpasya taon na ang nakaraan, sabihin lang maging maikli at malinaw. Sa halip na tumawag ito "string haba," sabihin call ito "STR leng" at hayaan ang mundo na figure out, at sa gayon ay ang kung ano ang aming makakuha ng access sa may string.h. Ito ay pamilyar na. Ito ay pamilyar na. Ito ay pamilyar na. Ito ay isang maliit na bago. Sa line 22 - at kami ay bumalik upang ito, ngunit sa ngayon alam - at gusto mo lamang malaman na ito mula sa pagkakaroon ng basahin ang mga babasahin o kung Alam mo na C - makakuha ng string minsan ay maaaring magtaas. Kung ang gumagamit ay talagang adversarial o uncooperative at siya lang Hindi type ng kahit ano sa keyboard o mga uri kaya magkano sa keyboard na ito overwhelms memory ang computer, sa teorya, kumuha ng string ay maaaring bumalik bagay maliban sa isang string ng mga character. Maaaring ito ay nagbabalik ng espesyal na halaga na tinatawag na Walang bisa sa lahat caps, N-U-L-L, at ito ay lamang ng isang tinaguriang halaga nagbabantay. Ito ay isang espesyal na halaga na Sumisimbolo isang bagay masamang nangyari sa kasong ito. Ito ay ang kawalan ng isang string. Kaya null Lalabas na ako para lamang sa gayon, mahaba kuwento maikli, STR leng at iba pang mga function na ay may C, kung Inaasahan nila ang isang string pero pumasa ka sa kanila ang kawalan ng isang string, kung pumasa ka null kanila, ang computer o ang programa ay lamang crash ng tahas. Ito ay mag-hang. Ito ay throw up ng ilang mga mensahe ng error. Masamang bagay ang mangyayari. Kaya kahit na ito ay pa rin hindi mahusay na tinukoy - ito ay gumawa ng higit pa pakiramdam sa isang linggo o dalawang - sa linya 22, na ito ay isa lamang halimbawa ng pagtatanggol sa sarili error checking kung sakali isa oras sa labas ng isang milyong isang bagay napupunta mali, sa hindi bababa sa aking mga programa ay hindi pag-crash. Kaya kung s ay hindi katumbas ng isang bagay na masama, Mayroon akong na ito para sa loop, at ito ay kung saan nagkaroon kami na ang ibang bagong piraso ng syntax. Mayroon akong para sa loop iterating mula sa sa zero hanggang sa ang haba ng s. At pagkatapos dito, ako ay isang pag-print out s i bracket, ngunit bakit ko bang gamitin% c lahat ng isang biglaang sa halip ng% s kahit na bagaman s ay isang string? Ito ay isang karakter, tama? S ay isang string, ngunit may mga bracket, s bracket i kung saan ay i zero o isa o dalawang, na ang isang indibidwal na character sa string, at kaya para sa na, printf Kailangang ma-alam na ito ay sa katunayan ng isang character ang aasahan. At pagkatapos ay isipin ang, ano ang ginawa ito programa talagang gawin? Naka-print out ito sa mga haligi. Oo, eksakto. Ito lang ang naka-print na mga salita na aking i-type sa isang hanay, sa isang character sa bawat linya. Kaya natin makita ito muli. Kaya gumawa ng string. Pinagsama-sama ang OK. . / String. Hayaan akong mag-type sa H-E-L-L-O, Magpasok, at sa katunayan ko na ito, isa sa bawat linya. Kaya ipaalam sa akin gawin isa-optimize dito. Kung sa tingin mo tungkol dito, lalo na kung mo na ang program bago, mayroong arguably isang kawalan ng kaalaman sa linya 24. Sa ibang salita, ito ay hindi kinakailangang ang pinakamahusay na disenyo. Ang diretsong, ng hindi bababa sa isang beses mo matandaan kung ano STR leng ay, subalit ito ay paggawa ng isang bagay pipi potensyal. Ano ang maaaring na maging? [Hindi marinig]. Mismong. Ito ay para sa pagsuri sa haba ng s bawat solong oras kahit na H-E-L-L-O ay palaging pagpunta upang maging limang mga character. Sa bawat oras na ito sa pamamagitan ng loop, ang lima ay hindi nagbabago. Baka ako incrementing ko, ngunit kung ano ay ang haba ng s sa bawat pag-ulit ng loop na ito? Ito ay limang ito, lima, ito ay limang, at gayunman pa ako ay humihingi ito tanong muli at muli at muli. Ngayon lantaran, ang computer ay kaya sumpain mabilis, walang sinuman ang nangyayari sa mapansin ang isang pagkakaiba sa kasong ito, ngunit mga ganitong uri ng hindi magandang mga desisyon disenyo maaari simulan upang magdagdag ng hanggang kung ang tagatala mismo hindi subukan upang ayusin ito para sa iyo kung aling mga ito ay karaniwang hindi gagawin, sa hindi bababa sa appliance. Kaya ako ng pagpunta sa gawin ito. Pupunta ako sa magdagdag ng isang comma pagkatapos ang aking unang variable, i. Pupunta ako sa sarili ko bibigyan ng isa pang variable, pagtawag ito n, sa pamamagitan lamang ng convention para sa mga numero, at pagkatapos ay ako pagpunta sa italaga n ang halaga ng string haba ng s. At pagkatapos ay ako pagpunta sa baguhin ang aking kondisyon na maging ano? Pupuntahan ko babaguhin ang aking kondisyon habang upang i Mababa sa n. Kaya ngayon, kung gaano karaming beses ako check ang haba ng s? Sa sandaling, ngunit ito ay ang OK upang i-check laban sa n muli at muli ngayon dahil sa mga halaga ay hindi tunay na nagbabago. Ngayon para sa ngayon, lamang malaman na ang anumang oras mo tumawag sa isang function, mayroong isang bit ng overhead, hindi sapat upang pahinain ang loob sa iyo talaga mula sa kailanman gamit ang pag-andar, ngunit tiyak kapag mayroong isang linya ng code nais na - at ang mga linya ay makakakuha ng mas kawili-wiling bago mahaba - kung saan mayroong isang pagkakataon upang mag-isip, kung ako i-type ang code na ito, kung gaano karaming beses ay isakatuparan ito? Magsisimula ka upang makita sa paglipas ng panahon ang pagganap ng iyong mga programa maaari talagang baguhin. Sa katunayan, ang isa sa mga problema Nagtatakda na namin tapos na sa nakalipas na taon ay nagsasangkot pagpapatupad, bilang maaari mong isipin ang mula sa linggo zero, isang spell checker, ngunit isang oras ng paggawa checker na dinisenyo upang suportahan ang isang diksyunaryo ng 150,000 plus mga salita na kami magbibigay sa iyo ng guys. Gusto mong mag-isulat ang code na naglo-load mga salitang iyon sa RAM, kaya sa mga kahon tulad ng nakita natin sa screen ng sandali ang nakalipas, at pagkatapos ay mas mabilis hangga't sa iyo maaari, kailangan mong magawang sagutin ang isang tanong ng form, ay ang salitang ito tamang spelling? Ay salitang ito tamang spelling? Ay salitang ito tamang spelling? At sa isang bagay tulad na kung ano na namin tapos na sa nakalipas na taon ay nakabukas ito sa, kahit na sa isang opt-in opsyonal na batayan, isang kumpetisyon ng uri, kung saan ang mag-aaral na gumagamit ng mas mababa RAM at mas mababa oras, mas kaunting mga cycle CPU, magtapos up bulubok up sa tuktok ng isang maliit na lider board o ranking na aming inilagay sa homepage ng kurso bilang na namin tapos na sa nakalipas na taon. Kaya muli, lubos opsyonal, ngunit ito Binabanggit sa mga pagkakataon sa disenyo na mas maaga sa oras na magsimula namin pagbuo nasa ibabaw ang ilan sa mga pangunahing gusali ng mga bloke. Kaya hayaan mo akong bumalik sa diagram na ito para sa sandali lamang at magbunyag ng kaunti isang bagay na mas. Ito talaga ay isang string, at nagsagawa kami ng kalamangan ng ilang mga aklatan, standard io.h na may - Printf. Printf, bukod sa iba pang mga bagay. cs50.h, na kung saan ay makakakuha ng int at kumuha ng string at iba pa, string.h, na Nagkaroon STR leng. Ngunit ito lumiliko out mayroong isa pang. Nang tapat, mayroong maraming at maraming mga header mga file na magpahayag ng mga function para sa mga aklatan, ngunit ito ay ctype.h talagang pagpunta na medyo makabubuti ito dahil ako pupunta upang magpatuloy at ipatupad isa iba pang mga programa dito. Hayaan akong sige at buksan up ng isang bagay Ako ay sumulat ng mas maaga na tinatawag na capitalize.c, at sabihin tumagal isang pagtingin sa kung paano ito gumagana. Pansinin na gumagamit ako, sa ang bersyon na ito ng mga ito, tatlong pamilyar na mga file. Pansinin na sa linya 18, ako pagkuha ng isang linya ng teksto. Abiso sa linya 21, ako nagke-claim na ang sumusunod na code ay pagpunta sa sulatin sa malaking titik s, kahit anong user ang nag-type sa, at kung paano ako paggawa na? Well, ako paglalaan - aralin natutunan mula sa huling oras - Ako deklarasyon at i n at iterating sa ibabaw ng mga character sa string. At pagkatapos ay kung ano ang bloke ng code sa linya 24 sa pamamagitan ng 27 paggawa sa mga tuntunin lego ni? Maliit na titik sulat pabalik. Mismong. Kung s bracket i - kaya kung ang i-ika katangian ng mga, na kung saan ay isang partikular na pansamantalang trabaho sa string, ay mas malaki sa o katumbas ng lowercase at - isipin ang na double ampersand maging tanda at - at ang parehong mga katangian, mga bracket ko, ay mas mababa sa o katumbas ng lowercase z, na nangangahulugan na ito ay isang isang o isang b o a c o tuldok, tuldok, tuldok, o isang z, na nangangahulugang ito ay lowercase. Ano ang gusto kong gawin sa kasong iyon? Well, maaari kong gawin ito medyo cryptically, ngunit sabihin mang-ulol-hatiin ito. Pupunta ako sa call printf, mga Kopya% c dahil gusto kong i-print muli ito na character sa screen. Pagkatapos ay ako pagpunta sa tumagal ng mga bracket i, ang i-ika-character sa s, at pagkatapos ay kung bakit ako ginagawa ito maliit na bilis ng kamay dito, lowercase ng minus A kabisera? Ano ay na pagpunta sa bigyan sa akin, sa pangkalahatan ay nagsasalita? [Hindi marinig]. Mismong. Hindi ko talaga matandaan - ito ay 65 para sa capital A. gawin ko hindi talaga matandaan kung ano lowercase isang ay, ngunit hindi mahalaga. Ang computer na nakakaalam. Kaya sa pamamagitan ng sinasabi, lowercase ng minus capital A, ito ay kakaiba upang maging pagbabawas isang pansamantalang trabaho mula sa isa pang, ngunit kung ano ang mga karakter sa ilalim ng hood? Ang mga ito ay mga numero lamang. Kaya kahit anong mga numerong ito ay, hayaan ang computer matandaan ito sa halip na sa akin ang mga tao. Kaya lowercase ng minus capital A ay pagpunta sa bigyan ako ng isang pagkakaiba. Ito ay nangyayari na maging 32, at iyon ay magiging ang kaso para sa maliit na mga b at capital B at iba pa. Ito ay nananatiling pare-pareho, thankfully. Kaya mahalagang ako sinasabi, gawin ang lowercase letter, ibabawas off na standard pagkakaiba, at na epektibong mga pagbabago s bracket i mula sa lowercase na, siyempre, malalaki, nang wala ang aking talagang nagkakaproblema sa tingin o tungkol sa Tandaan, ano ang mga iyon mga numero ng usapan natin ang tungkol sa kapag ang walong boluntaryo ay dumating up sa entablado? Ngayon samantala, sa ibang tao, kung ito ay hindi isang maliit na mga titik tulad ng natukoy sa pamamagitan ng line 24, lamang i-print ito. Gusto ko lang i-pindutin ang mga character na tunay na orihinal na lowercase. Kaya natin makita ito. Gumawa ng sulatin sa malaking titik. Pinagsama-sama, ang OK. . / Sulatin sa malaking titik. At hayaan mo akong mag-type sa H-E-L-L-O sa lowercase, ang Enter. At mapapansin na ito ay nai-convert sa uppercase. Hayaan ang gawin sa akin ito muli gamit sa ibang salita. Paano tungkol sa D-A-V-ko-D sa unang D malaking titik bilang isang karaniwang pangalan ay? Enter. Pansinin pa ito sa tama. Ito lamang outputted na muna D hindi nagbabago sa pamamagitan ng ibang tao na bumuo. Kaya tandaan, pagkatapos, isang dalawang bagay dito. One, kung sakaling gusto mong tingnan ang dalawang kundisyon nang sabay-sabay, maaari mong at ang mga ito magkasama bilang namin hinulaang. Maaari mong ihambing ang mga character sa paraang ito at mabisa tinatrato ang mga character na bilang mga numero, ngunit lantaran, ito ay kaya sumpain misteriyoso hindi kailanman pupuntahan ko matandaan kung paano makabuo ng mga ito mula sa simula walang nagpapasiya sa pamamagitan nito para sa lubos ng kaunting oras. Hindi ba ito naging maganda kung may isang taong out doon ay nagsulat ng isang function na tinatawag ay babaan na maaaring sagutin para sa akin totoo o hindi totoo, na character na ito ay lowercase? Well thankfully, kung sinuman ang nagsulat ctype.h ginawa eksakto na. Hayaan akong pumunta up dito at magdagdag ctype para sa c uri, at ngayon hayaan mo akong pumunta down na dito at muling isulat ang linya na ito bilang mga sumusunod. Kaya kung ang tawag dito ay mas mababa, inaangkin ko, s bracket ko, pagkatapos pupuntahan ko tanggalin mga dalawang linya nang sama-sama. Kaya ngayon ibang tao, ako umaasa, nagsulat isang function na tinatawag ay mas mababa, at ito liko out ang kanilang ginawa at ipinahayag nila ito sa loob ng ctype.h. At ngayon ako pagpunta sa umalis linya 27 nag-iisa, pupuntahan ko umalis linya 31 mag-isa, ngunit napansin kung magkano nag ako tightened up ang aking code. Ngayon ay mas malinis. Ito ay mas mahirap upang tumingin sa pamamagitan ng dahil ngayon ang function, bukod doon, ay kaya kamangha-mangha na may pangalang ito lamang ginagawa kung ano ang sinasabi nito. Kaya ngayon ako pagpunta sa i-save ito. Pupunta ako upang mag-zoom out. At tulad sa scratch maaari kang magkaroon ng Booleans, Boolean halaga o totoo hindi totoo, na eksakto kung ano ang babaan epektibo returns. Hayaan akong mag-recompile. Hayaan akong re-run. At ngayon sabihin subukan ito muli, H-E-L-L-O, Enter. Iyon ay medyo magandang. At subukan ito muli, siguraduhin na ako Hindi tornilyo isang bagay up. Iyon ay sa malaking titik pati na rin. Ngunit ito ay hindi sapat na mahusay na dahil ang iba pang mga bagay na hindi kailanman pupuntahan ko matandaan maliban kung gumana ko sa pamamagitan nito talaga Maingat sa, sabihin nating, papel ay ito sumpain linya. Hindi ba ito maging maganda kung mayroong isang function na tinatawag na sa itaas? Well ito lumiliko out doon ay nasa ctype.h pati na rin. Pupunta ako sa sige at i-type - hayaan mo akong dalhin ang linyang iyon pabalik. Sa halip na ito dito, sabihin sa akin sige at sinasabi, halangan ang% c ang resulta ng pagtawag sa function na ito upang itaas sa i-ika-character ng s. At ngayon mapansin nakakakuha ito ng isang maliit na balanse. Mayroon akong upang masubaybayan kung gaano karaming panaklong ko iyong binuksan at sarado. Kaya ngayon ito ay kahit na mas malinis. Ngayon programa na ito ay nakakakuha ng mas mahusay na at mas mahusay na dinisenyo arguably dahil ito ay magkano, magkano ang mas nababasa ngunit hindi ito sabihin itama. Gumawa ng sulatin sa malaking titik. . / Sulatin sa malaking titik. H-E-L-L-O. Sabihin patakbuhin itong muli, D-A-V-ko-D. OK, sa gayon pa rin kami sa medyo magandang hugis. Ngunit ngayon sa itaas. Ipanukala ko na may isa pa refinement kami maaaring magsagawa ng iyon ay magiging talagang maganda, na maaaring talagang higpitan up ang code na ito at talagang bigyan kami ng limang out sa lima para sa disenyo, halimbawa. Ano ang gusto maging mabait sa mapupuksa ang? Well, tingnan kung paano sumpain mahaba ang bloke ng code ay lamang na gawin ng isang bagay. Ngayon bilang isang bukod, bilang na maaaring mayroon ka nakikita sa sobrang seksyon nakalipas na ito katapusan ng linggo, hindi mo kailangang mahigpit na kailangan ang kulot tirante kapag ikaw lamang magkaroon ng isa linya ng code, kahit kami ipinanukala pinapanatili ang mga ito upang ito ay ginagawang mas mas malinaw, tulad ng sa scratch ni U-hugis bloke, kung ano ang nasa loob ng mga sanga. Ngunit hindi magiging maganda kung sa itaas, kapag ibinigay na input nito, naka-on ito sa uppercase kung hindi, at kung ano ang gagawin maging kahanga-hanga sa tapat kaso kung ito ay nasa uppercase? Lamang pumasa ito sa pamamagitan ng at iwanan ito nang nag-iisa. Kaya siguro ginagawa nito iyon. Kaya kong subukan at umaasa lamang na ito, ngunit hayaan mo akong ipakilala ang isa iba pang mga bagay. Sa halip na gamitin ang built-in na terminal down na window dito, isipin ang na ito square icon itim ay nagbibigay sa iyo ng isang mas malaking terminal na window na maaari kong full screen kung gusto ko? Kaya ito lumiliko out ang mga ito ay uri ng mga nang kakatwa pinangalanan, ngunit mayroong mga bagay na ito na tinatawag na tao pahina, manu-manong mga pahina, ang tao para sa maikling, at ang maaari kong i-access ito sa pamamagitan ng pag-type ng tao - kung ano ang gusto kong i-type? Man sa itaas. At ngayon mapansin kung mayroong isang umiiral gumana sa loob ng mga computer, sa kasong ito ang appliance, na kung saan ay lamang sa operating system ng Linux, ito ay pagpunta upang bigyan ako ng isang medyo misteriyoso hanay ng mga output, ngunit makikita mo ang paglipas ng panahon na ito laging na-format ang medyo magkano ang parehong kaya simulan mo upang masanay ito. Pansinin sa tuktok upang itaas, at wari ay pareho dokumentasyon para sa babaan. Kung sinuman ang nagsulat nito ay paggupit ilang kanto at ilagay ang lahat ng ito sa isang pahina. Ang mga bagay na 'layunin sa buhay ay ang pag-convert ang isang sulat sa itaas o lowercase. Pansinin na sa ilalim ng Buod, ang tao pahina ay nagturo sa akin kung ano ang file na mayroon akong upang isama ang upang magamit ang bagay. Ito ay nagbibigay sa akin ang mga lagda para sa mga pag-andar, pareho ng mga ito, kahit na bagaman kami ngayon lamang nagmamalasakit tungkol sa isa. Narito ngayon ang isang paglalarawan. Upang itaas na-convert ang titik c sa uppercase kung maaari. Hindi pa rin na may itinuturo, ngunit hayaan mo akong ngayon tumingin sa ilalim ng return na halaga, ang mga bagay na ipinasa pabalik. Kaya ang halaga ay ibinalik na ng convert na titik o c kung ang conversion ay hindi posible. Ano ang c? Ang orihinal na karakter. Ang orihinal na katangian at alam namin na sa pamamagitan ng, muli, pagpunta hanggang sa ang buod, at kung sinuman ang nagsulat na ito function na lamang nagpasya na ang pag-input upang sa itaas at sa mas mababa lamang ang mang pagpunta sa tawagin c. Maaari nilang na tinatawag na ito pinaka-anumang bagay gusto nila, ngunit sila ay iningatan ito simpleng bilang c. Kaya ko na consulted ang tao pahina. Pangungusap na ito ay sinisigurado na sa akin kung ito ay hindi isang maliit na mga titik na ito, pagpunta sa makatarungan bigyan ako pabalik c, na siyang perpekto, na nangangahulugan na maaari ko mapupuksa ang ang aking mga tao na kondisyon. Kaya hayaan mo akong bumalik sa GEdit, at ngayon hayaan mo akong lamang gawin ito. Pupunta ako upang kopyahin ang aking printf statement. Pupunta ako sa sige at sa loob mismo ng ang para sa loop na pag-print out, at makakuha alisan ito ngayon buo kung tayuan. Ay hindi isang masamang ideya, at ito ay napaka magkano ang tama at pare-pareho sa ang lahat ng bagay na namin ipinangaral, ngunit hindi lamang ang kinakailangan. Sa lalong madaling mapagtanto mo ang ilang mga library function na ay umiiral na ibang tao Nagsulat, o marahil ay sumulat ka sa ibang lugar sa ang file, maaari mo itong gamitin at talagang simulan upang higpitan ang mga code. At kapag sinabi ko ang mga bagay tulad ng mahusay na estilo, ang katotohanan na ang taong ito ay tinatawag na gumana sa itaas, o dati ay mas mababa ay kamangha-mangha kapaki-pakinabang dahil ang mga ito ay masyadong mapaglarawan. Hindi mo gugustuhing upang tawagan ang iyong mga function x at y at z, kung saan ay mayroon magkano, higit na mas mababa kahulugan. Anumang mga katanungan na sa serye ng mga pagpapabuti? Kaya magkasiya ito upang sabihin ang isa sa mga takeaways ay kahit na bilang iyong sariling problema set - siguro problema sa hanay ng isa, ngunit tiyak P itakda dalawa at pasulong, kahit na kapag ikaw ay tama ang mga ito ay hindi kinakailangang ibig sabihin ang mga ito ay perpekto lamang pa o partikular na mahusay na dinisenyo. Iyan ang iba pang axis sa simulan ang pag-iisip tungkol sa. Kaya ito ay isang string sa loob ng iyong computer memory, ngunit kung mayroon kang isang buong bungkos ng mga character tulad ng H-E-L-L-O sa loob ng RAM, at ipagpalagay na sa iyo sa iyong mga programa tumawag makakuha ng string maraming beses na tulad mo tumawag makakuha ng string sabay-sabay, pagkatapos ay sa iyo tumawag makakuha ng string muli. Well, kung ano ang nangyayari sa mangyari sa paglipas ng panahon? Sa ibang salita, kung mayroon kang isang linya ng code, kahit na nasa labas ng konteksto, tulad ng string s ay nakakakuha - natin gawin ito. String pangalan ay katumbas makakuha ng string. Kaya ipagpalagay na linya ng code ay sinadya upang hilingin sa gumagamit para sa kanyang pangalan. Ang susunod na linya ng code ay sinadya upang tanungin ang mga gumagamit para sa kanyang paaralan, at ito susunod na linya, at iba pa. Ipagpalagay na panatilihin kami nagtatanong ang mga gumagamit para sa iba at ang isa pa at ng isa pang string. Ang mga ito ay pagpunta upang manatili sa memory sa parehong oras. Hindi isa ay pagpunta sa gumulpi sa iba pa. Paaralan ay hindi patungan ang iba pang mga. Ngunit kung saan ginagawa nila ang lahat ng hantungan memory? Well, kung sinimulan namin upang gumuhit sa screen, kung saan maaari naming gamitin ito bagay dito tulad ng isang Chalkboard, kung ito itim Kinakatawan ng parihaba ng aking computer memorya, pupuntahan ko mang simulan paghahati nito hanggang sa maliit na kuwadrado, sa bawat isa sa kung saan ay kumakatawan isa byte ng memorya. Nang tapat, kung mayroon kang isang gigabyte ng RAM mga araw na ito, mayroon kang isang bilyong bytes ng memorya sa iyong computer, kaya isang bilyong ng mga parisukat. Kaya magkasiya ito upang sabihin, ito ay hindi talaga sa scale. Ngunit maaari naming panatilihin ang pagguhit ng lahat ng mga malinaw na hindi upang masukat ang kuwadrado, at ito kapag pinagsama-sama ay kumakatawan memorya ng aking computer. Ngayon lang namin gawin tuldok, tuldok, tuldok. Kaya sa ibang salita, kapag ako ngayong i-prompt ang gumagamit na may get string upang bigyan ako ng isang string, ano ang mangyayari? Kung gumagamit ang mga uri sa "kumusta," na nagtatapos up sa H-E-L-L-O. Ngunit ipagpalagay na ang gumagamit pagkatapos ay sa mga uri - talaga, hindi ko dapat nagawa na kumusta dahil hinihiling namin sa ang mga ito para sa kanilang mga pangalan. So sabihin bumalik kung maaari kong gawin ito. Kaya kung nagta-type ako sa D-A-V-ko-D para sa aking pangalan, ngunit isipin ang na pangalawang linya ng code ay makakuha ng string muli upang makuha ang kanilang paaralan. Saan ang salita na iyon ang user mga uri sa pagpunta sa pumunta susunod? Well, marahil ito ay pagpunta sa pumunta sa H-A-R-V-A-R-D. Kaya kahit na nag ako iginuhit na ito bilang dalawang mga hanay, ito lamang ang ang maramihang mga bytes sa iyong computer RAM. Mayroong isang problema sa ngayon dahil ngayon kung ako paggamit ng RAM ito sa napaka-makatwirang ngunit ang uri ng mga walang muwang paraan, kung ano ang maaari mong hindi makilala sa mukha? Kung saan ang isa ay nagsisimula at saan isa dulo, tama? Ang mga ito ay uri ng blurring magkasama. Kaya ito lumiliko out ang computer ay hindi gawin ito. Hayaan akong talaga mag-scroll pabalik sa panahon ng ilang mga character, at sa halip ng Harvard pagpunta agad pagkatapos ng pangalan ng gumagamit, ang user ay makakakuha talaga, sa likod ng ng mga pangyayari, ang isang espesyal na character ipinasok sa pamamagitan ng mga computer para sa kanya. / 0, kung hindi, na kilala bilang ang nul na character annoyingly tinatawag na N-U-L, hindi N-U-L-L, ngunit isulat mo ito bilang / 0. Ito ay lamang ang lahat ng zero bits ay isang marker sa sa pagitan ng mga unang salita na ng gumagamit nai-type at ang pangalawang. Kaya Harvard talaga ngayon ay nagtatapos up bilang na ito pagkakasunud-sunod ng mga character at isa pa / 0. Kaya sa ibang salita, sa pamamagitan ng pagkakaroon ng mga nagbabantay halaga, walong magkadikit zero bits, maaari mo na ngayong simulan upang makilala ang isang character mula sa isa pang. Kaya lahat ng mga oras na ito kung ano ang "kumusta" ay talaga "kumusta" na may isang / 0, at samantala, may kapangyarihan nang napakahusay lubos ng kaunti pang RAM sa loob ng mga computer. Hayaan ang gawin sa akin ng isa pang bagay ngayon. Ito ay lumiliko out na ang lahat ng mga parisukat kami pagguhit, ang mga ito, oo, mga string, ngunit mas pangkalahatang paraan, mga bagay na ito ay array. Ang isang array ay lamang ng isang tipak ng memory na bumalik upang i-back-back sa likod, at karaniwan kang gumamit ng isang array sa pamamagitan ng paraan ng square na ito pagtatanda bracket. Kaya kami ay pagpunta upang makita ang mga lubos ng kaunti sa paglipas ng panahon, ngunit hayaan mo akong magpatuloy at buksan up, sabihin call ito edad. At mapansin kung ano ang maaari naming gawin sa ang parehong mga trick, ng kaunti kaunti pang syntax dito. Kaya sa linya 17 ng programang ito - talaga, hayaan mo akong tumakbo sa programa unang upang maaari naming makita kung ano ang bagay na ito gumagana. Hayaan akong tawagan gumawa edad sa sumulat ng libro sa programang ito. . / Edad. Gaano karaming mga tao ay sa kuwarto? Tawagan ang tatlong ito. Edad ng unang tao? 18, 19, at 20. At ngayon medyo ridiculously, ko lang ginawa ng isang program na edad mga tatlong tao. Kaya mayroong malinaw na isang pagkakataon para sa ilang mga masaya aritmetika dito. Thankfully, ang matematika ay tama. 18 napunta sa 19, 19 nagpunta sa 20 at iba pa. Ngunit kung ano talaga ang sinadya upang maging nakapagpapakita dito ay kung paano namin ang pag-iimbak ng mga tatlong tao edad. Hayaan akong mag-zoom in sa kung ano ang pagpunta sa dito. Kaya una, ang mga unang ilang mga linya dapat ay nakakakuha ng medyo pamilyar. Lang ako sa pagdikta sa gumagamit para sa bilang ng tao sa kuwarto. Pagkatapos ay gumagamit ako makakakuha ng int at gawin habang upang gawin ito muli at muli at muli. Nasaksihan namin pattern na bago, ngunit line 27 ay bago at talagang medyo kapaki-pakinabang, at ay magiging nagiging kapaki-pakinabang. Pansinin na kung ano ang naiiba sa linya 27 ay lumitaw na ako na deklarasyon ng isang int tinatawag na edad, ngunit maghintay. Ito ay hindi lamang int edad. Mayroong mga square bracket, sa loob ng na kung saan ay n. Kaya ang bracket n sa kontekstong ito, hindi sa loob ng isang printf pahayag dito ngunit ito sa nag-iisang linya 27, linya na ito ay sinasabi, akong bigyan n ints, ang bawat isa ang uri ng int. Kaya ito ay isang bucket, kaya na magsalita, ng, sa kasong ito, tatlong integer pabalik sa bumalik upang i-back kaya ako na epektibong may tatlong variable. Ang mga alternatibo, upang maging malinaw, magiging ito. Kung Nais kong sa unang mag-aaral edad, maaari kong gawin ito. Kung Nais kong sa pangalawang mag-aaral edad na maaaring kong gawin ito. Kung Nais kong sa ikatlong mag-aaral edad, maaari kong gawin ito. At diyos sawayin kailangan namin ng lahat edad sa kuwartong ito - Ibig kong sabihin, ito ay isang ano ba ng ng maraming kopya, ilagay muli at muli at muli. At plus isang beses ako sumulat ng libro sa programang ito, kung ang mag-aaral ay nagtuturo sa isa pang sa ibabaw out ng pinto na, ngayon bilang aking ng mga variable ay hindi tama. Kaya kung ano ang maganda tungkol sa isang array ay bilang lalong madaling simulan mo ang iyong sarili pakiramdam pagkopya at pag-paste, logro ay na hindi ang pinakamahusay na diskarte. Ang isang array ay dynamic na potensyal. Hindi ko alam nang maaga kung gaano karaming mga tao ay pagpunta sa maging sa kuwarto, ngunit ko alam kung kailangan ko n sa kanila, at idedetalye ko tayahin n kapag oras ng pagdating. Ang linya ng code ngayon ay nangangahulugan, ninyo ako ng tipak ng memory na ganito ang hitsura kung saan ang bilang ng mga kahon sa screen ay ganap na nakasalalay sa n na gumagamit ang nai-type in Kaya ngayon ang natitirang bahagi ng programang ito ay talagang kaakit-akit na katulad ng kung ano ang aming lamang ginawa na may mga character. PAUNAWA Mayroon akong para sa loop nagsisimula sa line 30. Kaya karapatan pagkatapos makuha ko ang mga array, ako umulit mula sa y katumbas ng zero sa hanggang sa n. Ko na lang ay ito nakapagtuturo printf mensahe lang sinasabi, magbigay sa akin ang edad ng tao #% i, kaya bilang isa, dalawang numero, numero ng tatlo. At bakit ko ito magagawa? Nang tapat, mga kawani na tao ginusto upang mabilang mula sa isa sa up samantalang ang mga siyentipiko computer, sa zero up. computer na siyentipiko ay hindi pagpunta sa gamitin ang ganitong uri ng programa, kaya kami ay pagpunta sa makatarungan simulan ang pagbibilang sa isa tulad ng normal na tao. At ngayon sa linya 33, mapansin ang bahagyang iba't ibang piraso ng syntax. Ang i-ika sa edad na variable ng uri array ay pagpunta upang makakuha ng isang int. At ngayon bilang wakas, ito lamang ang pang-aritmetika pababa dito. Ako nagpasya sa isang hiwalay na loop upang i-claim ilang oras pumasa, at ngayon ay nasa ito hiwalay loop, ang mga linyang execute. Isang taon mula ngayon, ang tao ay i maging i taong gulang, ngunit mapapansin na ito ay hindi ang i variable. Ito ay ngayon% i para sa int. At notice bilang unang placeholder, ako plug in i plus 1, kaya umaasa kami na parang isang normal na tao. At pagkatapos ay para sa ang halaga ng kanilang edad, para sa i taong gulang, ako ng mga edad bracket i - at kung bakit ako paggawa plus isa dito? Sila lamang na may edad na. Ito'y aking nakababagod pagpipilian ng mga programa. Sila lamang ang may edad na isang taon. Kaya kong i-type sa anumang numero na Ko talagang gusto doon. Kaya kung ano ang talagang lahat ng ang kaugnayan dito? Well, hayaan mo akong talaga mag-scroll pabalik sa paglipas dito at pintura ng isang larawan ng kung ano ang namamalagi maaga. Ano lilikha kami ginagawa sa aming mga susunod na Problema Itakda Dalawang ay dabbling sa mundo ng cryptography. Kaya ito ay isang string ng mga character, kaya isang pagkakasunod-sunod ng maramihang mga karakter, at kung ano ang ibig sabihin? Hindi ito sa online na bersyon ng mga slide. Kaya inaangkin ko na ito ay katumbas ng ito, isang nakababagod advertisement mula sa maraming mga taon nakalipas na maaaring aktwal na isipin ang isa sa mga pinagmulan nito. Kaya ito ay isang halimbawa ng pag-encrypt o cryptography. Ito ay lumiliko out na kung nais mong talagang magpadala ng impormasyon o magbahagi impormasyon sa isang tao nang ligtas, tulad ng isang mensahe tulad nito, maaari mong pakikipag-agawan ang mga titik. Ngunit karaniwan, ang mga salita ay hindi scrambled random. Sila ay naka-permuted sa ilang mga paraan o nagbago sa ilang mga paraan upang ang - oops. Iyan ay isang masaya spoiler para sa susunod na pagkakataon. Kaya maaari mong i-map kung ano ay tila O sa B. Abiso na ang mga linya up capitalization-matalino. Tila nagiging r e. Sa malas F-H-E-R ay nagiging S-U-R-E. Kaya ito lumiliko out mayroong isang pagmamapa, at sa kasong ito mayroong isang medyo bobo paggawa ng mga mapa kung sinuman ay may korte ito out? Ito ay isang bagay na tinatawag na Rot 13, I-rotate 13. Ito ay ang stupidest ng encryption mekanismo na ito dahil literal lamang nagdadagdag ng 13 sa bawat isa sa mga titik, nakababagod sa kamalayan na kung ikaw lamang magkaroon ng kaunting libreng oras sa iyong mga kamay at isang lapis, o mo lamang sa tingin ito sa pamamagitan ng sa iyong ulo, maaari mong subukan ang lahat ng posibleng mga karagdagan - isa, dalawa, tatlong, tuldok, tuldok, tuldok, 25 na lang ikutin ang buong alpabeto, at kalaunan, makikita mo malaman kung ano ang mensaheng ito ay. Kaya't kung ikaw ginawang isang bagay na tulad nito sa elementarya pagpasa ng mga mensahe sa iyong pinakamatalik na kaibigan, kung ang iyong mga grado sa paaralan guro lamang basahin sa pamamagitan ng mensahe at mga taong malupit pinilit ang solusyon, baka nakuha mo isang sagot sa pamamagitan ng na. Ngayon siyempre, sa tunay na mundo, cryptography ay mas sopistikadong. Ito ay isang snippet ng teksto mula sa isang computer system na may mga username at mga password, bilang halos lahat ng atin gawin, at ito ay kung ano ang iyong password kapangyarihan hitsura kung naka-imbak sa iyong hard magmaneho ngunit sa naka-encrypt na form. Ito ay hindi lamang isang pag-ikot ng mga titik, A ay B at B ay C. Ito ay higit na mas sopistikadong, ngunit ito ay gumagamit ng ano ang karaniwang kilala bilang sikretong key cryptography. Ang larawan na ito ay nagsasabi sa mga sumusunod na kuwento na may ilang mga icon. Sa kaliwa, mayroon kaming kung ano Makikita kami tatawag sa plain text. Sa mundo ng cryptography, plain teksto lamang ang orihinal na mensahe nakasulat sa Ingles o Pranses o anumang wika kung ano pa man. Kung gusto mong i-encrypt ito, kailangan namin pumasa pictorially ito sa pamamagitan ng isang padlock, kaya ang ilan sa mga uri ng mga algorithm, ang ilang mga pag-andar o programa na may isang taong nagsulat na scrambles ang mga titik sana mas complicatedly pa sa pagdaragdag ng 13 sa bawat isa sa kanila. Ano kang makakuha ng out sa prosesong iyon sa gitna doon ay tinatawag cyphertext. Kaya uri ng isang sexy salita. Ito lamang ay nangangahulugan na ito ay naka-encrypt ang bersyon ng plain text. At lamang kung mayroon kang na parehong lihim, 13 o minus 13, ikaw ay makapag- i-decrypt ng isang mensahe tulad na. Kaya sa Problema Itakda Dalawang, bukod sa mga bagay na makikita mo gawin kung sa Hacker Edition, ikaw ay mayroon na magsulat code sa lumagutok ang mga password, ang pag-uunawa kung ano sila ay at kung paano sila ay naka-encrypt na, bagaman ang ginagawa namin magbibigay sa iyo ng kaunti ng paggabay kasama ang paraan. Sa Standard Edition, namin ipakilala isang pares ng mga ciphers, encryption mekanismo, isa na tinatawag Caesar, isa tinatawag Vigenere, na hindi pa rin palitin ciphers kung saan ay nagiging isang isang bagay, B ay nagiging isang bagay, ngunit kailangan mo lang gawin ito ayon sa programa dahil doon ay talagang maging isang lihim na key kasangkot na kung saan ay karaniwang isang numero o ang isang keyword na lamang ang nagpadala at ang tatanggap ng mga mga mensahe ay dapat maunawaan. Ngayon, ito ay aktwal na anyo sa tunay na mundo. Ito ay, halimbawa, ay maliit para sa mga ulila Lihim na decoder Annie ng ring, at ikaw Maaari aktwal na ipatupad ang mga palitin ciphers - Ang isang nagiging isang bagay, nagiging B isang bagay - na may isang pares ng mga wheels, isa sa labas, isa sa loob tulad na kung mong paikutin ang wheel o ang singsing, maaari mong talagang pumila ang mga titik na may iba't ibang mga titik, pagkuha ng isang lihim na code. At kaya bilang ang cliffhanger para sa araw, kung ano naisip ko na gusto kong gawin ay isang bit ng kilos sa pabalik na kung iyong i-on ang TV sa Disyembre 24, maaari mong panoorin ang pelikula ad nauseum para sa 24 oras sa isang hilera. Ngunit para sa ngayon, kukunin ko na buksan ito up dito at bigyan kami lang dalawang minuto ng isang pedagogically may-katuturang mga Christmas Story na may isang maliit na tao na may pangalang Ralphie. [Video playback] Ma-kilala ito sa lahat at sari-sari na Ralph Parker pamamagitan nito ay itinalaga ng isang kasapi ng Little ulila Annie lihim lupon at karapat-dapat sa lahat mga parangal at mga benepisyo nagaganap doon. Naka-sign-, Little ulila Annie. Countersigned, Pierre Andre sa tinta. Mga parangal at mga benepisyo na sa edad ng siyam. [Abot-ON Radio] Halika sa, sabihin makakuha sa sa mga ito. Hindi ko kailangan ang lahat na jazz tungkol sa smugglers at pirates. Makinig-bukas gabi para sa concluding pakikipagsapalaran ng mga itim tulisang-dagat barko. Ngayon, oras na para sa Annie ng Lihim Mensahe para sa iyo miyembro ng lihim na bilog. Tandaan, ang mga bata. Ang mga kasapi lamang ng Secret Circle ni Annie Maaari decode lihim na mensahe ni Annie. Tandaan, Annie ay nakasalalay sa iyo. Itakda ang iyong mga pin sa B2. Heto ang mensahe ng. 12, 11, 2 - -Isa akong sa aking unang lihim na pulong. -25, 14, 11, 18, 16 - -Pierre ay nasa mahusay na boses ngayong gabi. Maaari ko bang sabihin sa mensahe na ngayong gabi ni ay talagang mahalaga. -3, 25. Iyan ay isang mensahe mula sa kanyang sarili Annie. Tandaan, huwag sabihin sa sinuman. -90 Segundo mamaya, ako sa room lamang sa bahay kung saan ang isang batang lalaki ng siyam maaaring umupo sa privacy at decode. Aha, B. nagpunta ako sa susunod. E. Ang unang salita ay "maging." S. Ito ay darating na mas madali na ngayon. U. 25. Iyon R. -Halika sa, Ralphie. I gotta go. -I'll maging kanan pababa, Ma. Hi humaging. -T. O. Maging sigurado na. Maging sigurado sa kung ano? Ano ang Little ulila Annie sinusubukan mong sabihin? Maging sigurado sa kung ano? -Ralphie, Randy ay nakuha ko upang pumunta. Babaguhin ba ninyo ang mangyaring dumating out? -Ang lahat ng mga karapatan, Ma. Makikita ko ba ang tamang out. -Ako ay nakakakuha ng mas malapit sa ngayon. Malamig ang samahan ay kahila-hilakbot. Ano ito? Ang kapalaran ng mga planeta maaari maging nakasalalay. -Ralphie, gotta go ni Randy. -I'll maging kanan out para sa umiiyak nang malakas. -Halos doon. Aking mga daliri nagsakay. Ang aking isip ay isang asero bitag. Napakaliit na butas Tuwing vibrated. Ito ay halos malinaw. Oo, oo, oo, oo, oo. -Maging sigurado na uminom ng iyong Ovaltine. Ovaltine? Isang pangit komersyal? Anak ng isang asong babae. [END-playback ng video] Tagapagsalita 1: Ito ang CS50, at na magiging Problema Itakda Dalawang. Tingnan mo sa susunod na linggo. Tagapagsalita 2: Sa susunod na CS50, ito ang mangyayari. Tagapagsalita 1: So isa topic mayroon kaming hindi Tiningnan kaya kalayo na payo ng function. Ngayon, ang isang function pointer lamang ang ang address ng isang pampublikong function, ngunit tulad ng - anak na lalaki ng isang -