PROFESSOR: Kaya ang agenda para sa this week, hindi na gaanong stuff. Ngunit sana tunay, tunay na kapaki-pakinabang at may-katuturan para sa iyo guys sa linggong ito. Ngunit kami ay pagpunta sa gastusin siguro 15, 20 minuto lamang ang mabilis na pakikipag-usap tungkol sa listahan ng link. Mga listahan ng Link ay pagpunta sa maging sakop sa pagsusulit. Kaya marahil ito ay maging kapaki-pakinabang upang malaman ng kaunti tungkol sa kung ano na. Kami ay pagpunta sa gastusin ang malawak karamihan section ngayon ng pagpunta sa paglipas ng pagsusulit zero problema sa pagsasanay. At pagkatapos ay gagamitin namin i-save marahil 20, 30 minuto sa dulo para sa anumang mga matagal na katanungan kahit sino ay may. At pagkatapos, ang huling limang minuto, pupuntahan ko upang magbigay ng isang pump up speech para sa mga pagsusulit. Ikaw guys lahat ng nais na maging dito para sa na. Dahil ito ay magiging isang magandang panahon. Lahat ng karapatan, kaya ang ilang mga materyal sa listahan link. Paano karaniwang mga ito ay nakabalangkas ay may kung ano ang tinatawag na isang node, di ba? Mayroon kang mga bagay na tinatawag na nodes, na kung saan ay structs. Kukunin ko pumunta sa paglipas ng kung paano lumikha ng isang node sa susunod na slide. Ngunit mahalagang lahat ng naka-link mga listahan ay ang data na ay langkin magkasama sa pamamagitan ng mga payo. At upang ang mga bentahe mayroon kami ng paggamit ng isang listahan ng mga link sa loob, marahil, tulad ng isang array, ay ang katotohanan na sa isang array kailangan mo ng isa magkadikit bloke ng memory ang lahat sa parehong lugar, isa isa, upang ma-magkaroon na. Sapagkat ang isang listahan ng mga link, maaari mong magkaroon ng random na maliit na piraso ng memory sa lahat ng dako sa iyong computer langkin sama sa pamamagitan ng mga payo. At sa ganitong paraan mo Maaaring i-access ng impormasyon na nanggagaling sa isa pagkatapos ng Iba pa, matapos ang iba pang walang nangangailangan lamang ng isang malaking tipak ng memorya sa iyong computer sa tabi-tabi. At kaya ito ay isa sa mga pangunahing mga dahilan kung bakit ginagamit namin ang listahan link. Pangalawa, ito ay tunay madali upang magilas palitan ang laki ng listahan link dahil sa array, kapag ipinapahayag sa iyo ng isang array, mayroon kang isang tiyak na halaga set. Ipagpalagay natin na Nais kong lumikha ng isang hanay ng mga 10 integer. Gumawa ako ng isang hanay ng mga 10 integer, at na ang mga ito. Ito ay 10. Hindi ko alam kung ano ang gagawin matapos na. Kung Nais kong gawin itong 11, hindi maaaring gawin ito. Kung gusto kong gawin itong 9, hindi maaaring gawin ito. Sapagkat sa isang listahan ng link, maaari mong idagdag at tanggalin at ipasok saan ninyo gusto. Maaari mong dynamic ang laki ng iyong buuin dito, ang iyong mga istraktura ng data. At na nagbibigay sa amin ng maraming higit idinagdag flexibility na hindi namin karaniwang Mayroon may array. Sinuman nalilito sa basic istraktura ng kung paano ang isang listahan link ay o kung bakit namin kailangang gumamit ng isa sa ibabaw ng isang array? Oo, kami ay pumunta sa paglipas ng sa mga detalye kung paano aktwal na lumikha ng isa. Ngunit ito lamang ang uri ng ang pangkalahatang kamalayan ngayon. Cool. At kaya array ay may langkin sama-sama ng mga kaibig-ibig maliit na bagay tinatawag na nodes. Lahat ng node ay ay isang uri ng struct. Tandaan, ang isang struct ay kung nais mong upang lumikha ng isang tiyak na uri ng variable sa C na hindi nai umiiral, ikaw, bilang isang programmer, talaga ay maaaring lumikha ng na ang iyong sarili. At kaya ang ganitong uri ng data istraktura ay tinatawag na isang node, ay tunay na nilikha sa pamamagitan ng sa amin, na ay hindi umiiral sa loob ng C sa kanyang sarili. At ang paraan na iyong lumikha ng isa ay mayroon kang ang header ng typedef struct, na nagsasabi sa mga compiler Ako tungkol sa upang lumikha ng isang struct. Kami ay pagpunta pangalan ito "node." At sa loob kami ay pagpunta idedeklara isang variable sa, na kung saan ay pagpunta sa tindahan ng isang halaga. At pagkatapos din namin ang pagpunta sa may isang pointer na tinatawag na "susunod" na ang mga puntos sa susunod na node sa listahan link. At pagkatapos mong tapusin na off sa pamamagitan ng paulit-ulit na lang node muli kaya alam ang tagatala, OK iyon ang katapusan ng aking struct. At kaya sa ganitong paraan, hindi namin uri ng paglikha ng isang maganda maliit na array uri ng bagay na may isang halaga at may isang pointer. At maaari mong i-link ang mga ito sa lahat ng kasama ang mga payo. Sa gayon ay maaari silang lahat ay mga uri ay langkin magkasama sa isang kadena. Cool. Maaari mong marinig na ang isang bit mas mahusay? Madla: Oo. PROFESSOR: Lahat ng karapatan. Kaya ang paraan na, tulad ng maaaring makakita sa iyo guys, isang listahan tipikal link ay nakabalangkas ay mayroon kang isang ulo. Kayo ay may halaga sa ulo na kung saan ay hindi na nakatutok sa pamamagitan ng anumang iba pang mga pointer. Ngunit ito ay pagpunta upang ituro sa, o reference, isa pang node. Node Ang pagkatapos ay pagpunta sa reference ang node matapos na, at iba pa at iba pa hanggang sa huli mong pindutin sa dulo ng iyong listahan link. At hindi lamang mo ay magkakaroon ng isang pointer doon. At ito, sa tingin mo, sa isang chain, o kahit na kung anuman sa iyo guys ginawa, hindi ko alam, tulad ng sa Fruit Mga Loop kapag ikaw ay maliit. Gusto mo string sama ang mga ito at magsuot ng mga ito sa iyong leeg. Isipin ito ay ang parehong bagay. Mayroon kang mga maliit na bagay na iyong Maaari string magkasama sa puntong iyon sa isa matapos na ito, upang ang isa matapos ito, at iba pa at iba pa hanggang sa magkaroon ka ng isang kadena ng isang istraktura ng data na maaari mong gamitin gayunpaman gusto mo. Kaya ang paraan na ito ng gagawin namin karaniwang ipasok o tanggalin anumang node mula sa isang link list ay ibang-iba depende sa kung saan na node ay. Kaya, halimbawa, dahil payo ay laging tumuturo sa isang tiyak na halaga, kapag tinanggal mo o magsingit ng isang node, nais mong tiyakin na ang pointer ay ang lahat ng pagturo sa mga tamang bagay. Kaya kung nais mo upang potensyal na ipasok isang bagong node sa ang halaga ng isa sa loob ng isang pinagsunod-sunod na link list, alam namin ang lahat dito mula sa larawan na pupuntahan pumunta sa pagitan ng ulo at dalawa, di ba? Dahil isa na akma sa kanan doon. Ngunit ang paraan na kung saan nais naming gawin iyon ay sa pamamagitan ng unang dereferencing ang pointer mula sa ulo at pagpapadala na sa isa. Ngunit kami ay pumasok sa isang problema dito. Kahit sino ay maaaring makita kung ano ang problema ay kung kami ay upang unang dereference ang pointer mula sa ulo sa isa? Ano ang problema ay maaaring tumakbo kami sa kung susubukan namin upang maidagdag ito sa harap ng aming array? Madla: [hindi marinig] PROFESSOR: Eksakto. Kaya dito kami ay may isang pointer na isang beses na tumuturo mula sa ulo sa dalawang. Ngunit kung ikaw ay makakuha ng alisan ng pointer, itinuro mo ito sa isa, kami ngayon ay walang ideya kung saan pumunta upang makahanap ng dalawang. Dahil gaya ng sinabi ko dati, mayroon ka ng isang higanteng tipak ng memorya sa iyong computer. Lahat ng mga nodes ng dati sapalarang kahalong sa anumang lugar sa iyong computer. At hindi mo alam kung paano pumunta tungkol sa paghahanap na iyon. At kaya kailangan mong magkaroon ng mga payo tumuturo sa lahat ng nodes sa dulo. O iba pa na hindi mo sinasadyang dereference isa walang unang pagtatalaga ang halaga ng una, ikaw ay lamang ng pagpunta sa mawala lahat ng bagay pagkatapos. Kaya kung ano ang namin ang pagpunta sa gawin ay, gusto mo munang nais na lumikha ng isang pointer sa ang node na gusto mong ipasok. Ituro ito sa kung saan mo nais na ipasok ito sa, at pagkatapos ay pagkatapos mong maaaring punto ulo bumalik sa isa. Ba na magkaroon ng kahulugan sa lahat ng tao dito? Great. Isipin ito bilang tulad ng isang kadena. Kung magdaragdag ka ng chain, ito ay uri ng intuitive kung paano nais mong pumunta tungkol sa pagpasok na iyon. OK, kaya na ay talagang marami mas maikli kaysa sa naisip ko na magiging, limang minutong spiel sa mga listahan ng link. Kaya lang kayo guys may pangunahing ideya ng kung ano na. Narito kami ay may mga agenda para sa quiz zero. Huwag hayaan na ito manakot iyo. Alam ko ito ay isang pulutong ng mga impormasyon. Mukhang masyadong nakakatakot. Ito din ay isang pulutong ng mga, ako mag-isip, CSC uri ng mga term. Mga bagay tulad ng mga string ng hexadecimal, payo, dynamic memory alokasyon ay tunay na nakakatakot na tunog na termino. Ngunit kami ay pagpunta sa masira ang mga ito down, gawin ang ilang mga problema sa pagsasanay upang ikaw guys lahat ay handa na para sa pagsusulit na ito. Gaano karaming ng ka guys ay may na nagsimula sa pag-aaral? OK, marahil nais mong guys upang simulan ang pagsisimula sa na, dahil ang mga pagsusulit ay bukas. O Huwebes para sa ilan sa inyo. Oo, kaya kami ay pagpunta sa pumunta paglipas ng ilang mga problema sa pagsasanay. Kung ang lahat ng gusto mong guys na kumuha ng ng isang sheet ng papel, lapis. Kami ay pagpunta sa gastusin lamang ang Ginagamit ng karamihan ng seksyon ngayon ng pagpunta sa paglipas ng ilan sa mga iyon kaya ka guys ay may isang ideya ng kung ano ang aasahan sa pagsusulit. SIGE. Ang isang pares ng logistical ang mga detalye pati na rin, para sa kahit sino na ay hindi pa sa na link doon, kung pumunta ka sa cs50.yale.edu, sa harap ang pahinang ito ay may isang link na nagsasabing "Tungkol sa Pagsusulit Zero." Link magdadala sa iyo doon. Kung hindi mo pa basahin ito, mangyaring basahin ito. Dahil ito ay nagsasabi sa iyo talagang mahalaga impormasyon tungkol sa mga pagsusulit. Pupunta ako upang hilahin ito out mula sa na ang dahilan lamang, pisikal, kung hindi ka guys alam kung saan upang pumunta, magkakaroon kami ng problema. At kaya kung ang iyong huling sa mga tuntunin sa A sa N, pumunta sa auditorium batas ng paaralan. At kung ang iyong huling nagsisimula sa P hanggang Z, pumunta sa Davies Auditorium. At ito ay nalalapat lamang sa mga mga tao sa seksyon ng Miyerkules. Kung ikaw ay pagkuha ng pagsusulit sa Huwebes, pumunta ka sa SSS 114 kung saan ang iyong lecture kadalasan ay. Madla: [hindi marinig] PROFESSOR: O to Z, ikaw ay pagpunta upang pumunta sa Davies auditorium. Pupunta ako upang baguhin iyon, di ba? Oh, oo, awtomatikong mabigo ka lang. Oh oo, iyan ay sa iyo Christa. Oo, aking masama. Oo, O hanggang Z, ikaw ay pagpunta upang pumunta sa Davies Auditorim. Pupunta ako upang ayusin ito sa sandaling i-upload ko. Oo. At pagkatapos ay din ng isang bagay mahalaga sa isip ay na Miyerkules, kung ikaw ay opisyal na nakatala sa seksyon ng Miyerkules, dapat kang kumuha ng iyong pagsusulit sa Miyerkules. At kung ikaw ay naka-enrol sa Huwebes, dapat kang kumuha ng iyong pagsusulit Huwebes. At ito ay sa oras ng klase. Saan, sa tingin ko ito ay tulad ng 1:00 hanggang 02:15 sa Miyerkoles at 2:30-03:45 sa Huwebes. Kung ikaw ay may isang hindi mapagkakasundo salungatan, Paliwanag ni Dean ay ang tanging bagay, sa kasamaang-palad, maaari naming gawin. Dahil kami ay may isang Ginagamit ng karamihan ng mga kahilingan upang lumipat mula Miyerkules hanggang Huwebes. Aling hindi namin maaaring tanggapin maliban kung kami ay may kahilingan ng Dean. SIGE. Kaya bago tayo magsimula sa isang pares ng mga problema sa pagsasanay, Lamang ako ng pagpunta sa pumunta sa ibabaw Helpful tips Andy para sa tagumpay. Ikaw lalaki, kapag nag-aral, na tunay na nais na pagsasanay sa pagsulat ng code sa pamamagitan ng kamay. Ang unang pagkakataon ko kailanman kinuha ng isang CS pagsusulit, ako ay hindi pagsasanay sa pagsulat code sa pamamagitan ng kamay bago at ito ay lubhang kagulat-gulat sa kung gaano kahirap. Kapag kayo guys hindi makakuha ng sa ugali ng pag-type ang lahat ng bagay, ito ay dumating natural na natural ang pagiging maaaring may autocompleted braket at semicolons doon. Kapag nagsusulat ka ng mga ito sa labas sa pamamagitan ng kamay, minsan ito ay tunay, tunay madaling makalimutan ng isang tuldok-kuwit, o kalimutan na isara ang isang bracket, o kalimutan na isara ang isang colon, o isang bagay tulad na. Kaya kapag ikaw ay sumulat ng code sa pamamagitan ng kamay, ito ay isang napaka-ibang pakiramdam. Kaya ikaw lalaki, kapag ikaw ay nagtatrabaho sa pamamagitan ng ilan sa mga problema sa pagsasanay, ito ay mabuti upang talagang practice ngayon. O bukas, sa palagay ko, kung ikaw ay pagkuha ng pagsusulit sa Huwebes. Pangalawa, ang huling namin, tulad ng, walong taon na halaga ng pagsasanay pagsusulit online. Ang pagsusulit na ito taon ay marahil ay tunay, tunay na katulad ng lahat ng mga ito. Ang mga ito ang lahat ng halos katulad na. Ikaw uri ng makakuha ng sa style ng mga uri ng mga katanungan hingin natin, ang uri ng mga function na gagamitin namin isulat ito sa, at iba pa, at iba pa. Kaya kumuha ng mga pagsusulit pagsasagawa, lalo na sa ilalim hadlang sa oras. 75 minuto para gawin ang mga pagsusulit ay hindi isang pulutong ng mga halaga ng oras. Ito ay napaka, napaka-haba. At kaya mo guys talagang gusto tiyakin na ikaw guys ay sa ugali ng pagsulat mabilis na code sa pamamagitan ng kamay. Dahil hindi mo nais ang unang oras upang makita ang isang pagsusulit ng na haba maging sa iyong pagsusulit. Gusto mo talagang guys tiyakin na pagsasanay sa simula pa. Ika-apat, gusto mong suriin ang mga lecture at seksyon slide. Hindi mo na kailangang kabisaduhin bagay. Sa totoo lang, ang lahat ay pinapayagan ng isang isang sheet ng puting papel ng mga tala, harap at likod. Ikaw guys ay maaaring i-type o isulat. Kung nakita mo ang iyong sarili nangangailangan kabisaduhin anumang bagay, ilagay ito sa na sheet. Ginagarantiya ko sa iyo, hindi mo nais na natigil sa gitna ng na quiz pagiging tulad ng, oh oo, ano ang runtime ng uri na ito kumpara na uri. Basta ilagay down na ito at kopyahin ang mga ito diretso mula sa iyong note sheet. Pagkatapos ay maaari mong aktwal na gamitin lamang ang iyong utak upang isipin ang tungkol sa mga problema sa halip ng pagkakaroon upang isipin ang mga katotohanan. At kaya talagang samantalahin ng anumang mga detalye niche na sa tingin mo kailangan mong kabisaduhin, gumawa ng mapa down na ito sa review sheet. OK, ang anumang mga katanungan logistically tungkol sa quiz bago namin simulan ang ilang mga problema quiz pagsasanay? Oo? Madla: Hindi ko pa nagkaroon ng isang pagkakataon upang tumingin sa mga pagsusulit [hindi marinig] ngunit ito ay pagpunta sa maging application nakararami, o ay may-alis din na, tulad ng, kaalaman katanungan? PROFESSOR: Ito ay isang pulutong. Kaya, ang paraan na ako Gusto inilarawan ang pagsusulit is-- ko magkasama ilang mga problema sa pagsasanay na kinuha ko mula sa lahat ng mga quizzes. Ngunit makikita mo na mayroong dalawang pangunahing mga uri ng mga katanungan hihilingin namin sa iyo. Ang isa ay isang mababang mga detalye ng mga bagay-bagay na antas. Bibigyan ka namin ng isang maliit na bahagi ng code at sabihin mo, ay may isang error dito? Ano ang gusto ma-print out dito? Ano ang gumawa ng code na ito, at iba pa. Kaya detalye ng impormasyon mababang antas. At sa tingnan ang bahagi, kami ay may masyadong katanungan kaalaman na nakabatay sa mataas na antas. Maaari mong ipaliwanag kung ano ang pagkakaiba sa pagitan ng isang binary paghahanap at isang linear paghahanap ay? Bakit gusto nating gamitin ang isa sa mga iba? Marahil, kung ano ang GDB? Bakit gusto naming gamitin ang GDB? Mas mataas na level, mas pangunahing unawa katanungan. Kaya makikita mo ang isang halo ng ang dalawa sa kanila sa iyong pagsusulit. Ano pa bago tayo tumuloy tuwid sa mga ito? SIGE. Madla: Isa pa. PROFESSOR: Oh, isa pa. Sorry. Madla: Oo, ito ay ang lahat ng karapatan. Kaya ikaw ay sinasabi ng 75 minuto ay masyadong maikli, tulad ng ito ay malamang na hindi na kami matapos? O, tulad ng, 75 minuto ay eksakto ng mas maraming oras tulad ng gagawin kailangan namin kung kami ay naaangkop handa? PROFESSOR: OK, kaya ang pagsusulit ay mahirap na. Ito ay talagang mahirap. Matatagpuan mo ang iyong sarili sa maikling oras. Marahil ka ng pagpunta sa hit, tulad ng 10, 15 minuto upang pumunta, at sa pagiging tulad ng, tae. Kaya marami akong may kaliwa upang gawin. At iyon ay lubos na fine. Ang bawat tao'y ng pagpunta sa pakiramdam ang parehong paraan. Basta napaka-alam ng kung gaano karaming oras ang mayroon ka. At kaya na ang dahilan kung bakit sinasabi ko sa inyo guys gawin ang mga pagsusulit ng pagsasanay. Dahil ito ay talagang nagbibigay ng isang mahusay na kahulugan ng kung ano ang pagsusulit ay magiging tulad ng. Kaya kung nakita mo ang iyong sarili na maaaring natapos ang pagsasanay quizzes sa isang mahusay na halaga ng oras, maaari mong huwaran ang iyong sarili na rin, pagkatapos ay hindi ka magkakaroon ng problema sa Miyerkules o Huwebes. Cool. Kaya kung ang lahat wants-- kong isipin karamihan sa mga tao ay may mga sheet ng papel out na. Pupunta ako sa mahalagang lamang magbibigay sa iyo ng mga halimbawang tanong, magbibigay sa iyo ng isang lalaki, tulad ng, ang isang ilang minuto upang gawin ito. At kami ay pumunta sa bilang isang klase kung ano ang mga sagot sa mga ito ay. Kaya ito ay isang napaka-pangkaraniwang maagang tanong bibigyan namin ng hilingin sa iyo, lamang sa pag-convert numero sa pagitan ng iba't-ibang naka-base. Binary, bilang ka guys maaari pagpapabalik, ay base sa dalawang. Decimal ay base 10, o kung ano ang aming bilang mga tao ay karaniwang bigyan ng kahulugan. Hexadecimal ay base 16, na kung saan ay zero sa pamamagitan ng siyam pati na rin ang A sa pamamagitan ng F. Kaya may apat na mga numero Ako humihingi sa inyo guys ang pag-convert dito. Bibigyan kita ng gusto mo, tatlo hanggang apat na minuto upang isipin pamamagitan ng kung paano Gusto naming pumunta tungkol sa paglutas ng mga ito. Madla: Sigurado namin pinapayagan calculators? PROFESSOR: Ikaw ay hindi Kailangan calculators, oo. Sa tingin ko ang pangunahing karagdagan, sa tingin ko, ay lahat ng ka guys ay hiningi na gawin. At kaya lang ako uri ng ay may kahulugan ng kapag ang lahat ay tapos na, maghanap, alon, hindi ko alam, ngiti, Tumingin masaya kung tapos ka na. Oo. Siguro ng ilang mga minuto. OK, dalhin natin ito sa ipaalam. Sadya Pupunta ako sa magbibigay sa iyo ng guys ng mas kaunting oras kaysa sa marahil na kailangan na gawin ang ilan sa mga problemang ito, lamang dahil gusto ko upang matiyak na ang makuha namin sa pamamagitan ng grupo ng mga problema. Kaya huwag mag-alala kung hindi mo ginawa magkakaroon ng isang pagkakataon upang matapos. Ganap OK hangga't mayroon kang isang ideya ng kung paano pumunta tungkol sa mga ito. Kaya sabihin magpatuloy at gawin ang unang isa. Kaya una, ay kahit sino gusto mong sabihin sa akin sa binary, kung ano ang ginagawa ng bawat isa sa mga digit kumakatawan sa mga tuntunin ng kanilang mga halaga? Oo? Madla: Dalawang sa kapangyarihan zero, dalawa sa isa. PROFESSOR: Eksakto. So. Right, kaya kadalasan kapag kami sa base 10 lahat ng mga ito ay kumakatawan ay, tulad ng, 10 sa ibaba ng zero, di ba? Iyan ay lugar ng iyong isang tao. Ang lahat ng iyong lugar 10 ay ay 10 sa kapangyarihan ng isa. Lugar mo 100 ay 10 sa kapangyarihan ng dalawa. Anuman ang base ikaw ay nasa ay pagpunta kinalaman sa ang eksaktong parehong bagay, sa pamamagitan lamang ng isang iba't ibang mga base. Kaya binary, lahat ng iyon ay ay base sa dalawang. Ikaw ay pagpunta upang i-convert ang lahat ng mga digits sa dalawang sa kahit anong power ng na digit. At kaya sa puntong ito, kami ay ay maaaring magkaroon ng isang mas madaling paraan ng kawalan ng kakayahang magdagdag ng hanggang o sabihin sa ilang ang lahat ng mga numero sa mga order na-convert sa base 10. Kaya ang sinuman nais na sabihin sa akin kung ano ang sagot sa unang isa ay sa base ng sampung? Madla: Two, [hindi marinig] PROFESSOR: Oo. Madla: 42. PROFESSOR: 42, doon ka pumunta. Kaya ang paraan namin nakuha ang sagot na ito ay sa pamamagitan ng paggawa ng dalawang ang unang, na kung saan ay dalawang. Plus dalawang ang ikatlo, na kung saan ay walong. Plus dalawang sa ikalimang, na ay kahit na ano ang natira. Sum up ang mga ito at ito ay 42. Nalilito sa kung paano namin nakuha na ang sinoman? Kaya pangunahing karagdagan, tulad ng Sinabi ko, ikaw ay dapat na OK. Kung hindi, well, maaari kaming magsagawa ng na masyadong. Ngunit iyon lamang ang lahat ng karapatan. Cool. Nais ba ng sinuman upang bigyan ako ang sagot sa ikalawang isa pati na rin? 50? Good. Kahit sino ay nalilito sa kung paano nakuha namin na mag? Cool, kukunin ko ang mga sagot sa susunod na slide. Kaya huwag mag-alala kung ikaw kailangan ninyong kopyahin ito pababa. OK, kaya hexadecimal ay nangangailangan ng kaunting kasanayan. ngunit ako pagpunta upang ipakita sa iyo guys isang shortcut para sa kung paano gawin ito. Kaya hexadecimal, tulad ng sa iyo tandaan, ang lahat ng ito ay magiging 16. At dahil kami bilang hindi tunay na mga kawani na tao magkaroon ng 16 mga numero upang kumatawan na, pumunta kami mula sa zero sa siyam, na kung saan ang aming mga unang 10 na mga halaga, at pagkatapos ay gawin namin A sa pamamagitan ng F, na kung saan ay sa susunod na anim na mga halaga. At kaya ang pinakamadaling paraan upang pumunta mula sa anumang binary numero sa hexadecimal ay upang basagin ang mga ito hanggang sa halves. At sa gayon ang anumang binary number ibibigay namin ikaw ay malamang na magkaroon ng walong digit. Maaari mo lamang masira ang mga ito hanggang sa gitna. Kaya ang unang one-- isa isa, isa isa, isa, isa, isa isa. Uri ng tingin ito up, alam mo, gumuhit isang slash o isang kuwit sa pagitan ng mga ito. At maaari mo lamang i-convert direkta anuman ito ay upang ang unang bilang ng hexadecimal, at kahit na ano dito ay upang ang ikalawang ng hexadecimal. Kaya tandaan mula sa mga karaniwang notasyon, ano ang mga halaga hexadecimal magsimula sa? Madla: Zero. PROFESSOR: 0 x. Kaya alam namin na anumang oras hinihiling namin sa iyo ang pag-convert ng anumang numero sa hexadecimal, o anumang oras mo makita ang anumang number na nagsisimula sa 0x, Alam mo na ito ay ang halaga ng hexadecimal. At pagkatapos ikaw ay pagpunta sa hilingin sa iyo na matukoy kung ano ang mga ito ng dalawang mga digit ay. At ang paraan mo na, tallying up na ang kalahati at tallying up na kalahati. Kaya sa halimbawang ito, kung ano ang Gusto ng isa, isa, isa, isa maging? Ano ang halaga na nais na maging? Na gusto ay F, di ba? Na gusto maging 15. Kaya ito ay magiging F. One, isa, isa, isa dito ay din F. Kaya isa, isa, isa, isa, isa, isa, isa, isa sa hexadecimal, ang lahat ng ito ay ay 0xFF. Dahil ito sa kalahati kinakatawan F, ang halaga ng 15, at ito half kinakatawan F, ang halaga 15. Dahil tandaan, hindi namin pagbibilang mula sa zero sa siyam. A ay tulad ng 10, B ay tulad ng 11, F ay 15. Ba na magkaroon ng kahulugan sa lahat ng tao kung paano nakuha namin mula sa binary na hexadecimal? Madla: At kaya kung paano makuha namin ang ginawa 15 mula sa isa, isa, isa, isa? PROFESSOR: Oo, ito ay binary, di ba? Isipin ito ay lamang ng isang binary number. Kaya ikaw ay may dalawang sa zeroth, na kung saan ay isa. Madla: Oh, OK. Kaya ang kabuuang ito sa iyo lamang out. PROFESSOR: Oo, at pagkatapos ay total na ikaw lamang out. Iyan na ang lahat ng ito ay. Madla: OK. PROFESSOR: OK. Madla: Kaya pumunta ka mula sa binary sa decimal na hexadecimal? PROFESSOR: Iyan ang pinakamadaling paraan upang gawin ito, oo. Hindi ka pagpunta sa decimal dahil decimal may zero sa siyam lamang. Humihingi kami lamang ang uri ng paghahati ito up sa dalawa. Madla: [hindi marinig] gamit decimal upang mahanap kung ano ito ay tumutugma up sa sa hexadecimal. PROFESSOR: Ibig kong sabihin, ikaw ay tallying up gamit pangunahing matematika. Madla: Oo. PROFESSOR: Oo, medyo marami. Ito ay isang bit nakalilito. Ngunit lamang malaman na ikaw ay maaaring hatiin up anuman ang halaga na ito ay sa lamang halves. Hanapin, kung ano ito sa binary? Ano ang numero ay na? Ito ay magiging isang bagay mula sa zero sa F. Dito rin ay pagpunta sa maging isang bagay mula sa zero sa F. At pagkatapos ay maaari mo lamang ilagay mga dalawang may karapatan. Madla: OK. PROFESSOR: Yep. SIGE. Kaya mo guys nais na subukan ang kasunod pagkatapos? Zero, isa, zero isa, isa, zero, isa zero. Bibigyan kita ng isang lalaki tulad ng 30 segundo, dahil ikaw marahil ay hindi alam ang bilis ng kamay sa kung paano gawin ito nang mas maaga. OK, gusto sinuman upang makakuha ng isang ito ng isang shot? 0X5A. PROFESSOR: 0X5A. 5a. Good. Kaya ito dito ay be-- gusto mong upang sabihin sa amin kung paano mo nakuha na? Una, kung paano mo nakuha ang limang? Madla: Dahil zero, isa, zero, ang isa ay lima. PROFESSOR: ba maintindihan lahat ng tao bakit zero, isa, zero, ang isa ay limang? Nakuha mo na ang isa dito. Wala kayong dapat sa dalawang sa unang. Sa dalawang sa ikalawang, mo magkaroon ng isa, na kung saan ay apat. Kaya mong idagdag ang mga apat na plus ang isa, mayroon ka ng limang. Ang bawat mabuti? SIGE. At pagkatapos ay kung ano ito at bakit? Anong numero ang A tumutugma sa? Madla: 10. PROFESSOR: At kung ano ito sa base ng dalawang? Madla: [hindi marinig] PROFESSOR: Eksakto. Kaya ito pangalawang halaga dito ay 0X5A. Ang bawat mabuting sa kung paano i-convert? Ito ay isang pulutong mas simple kaysa sa tingin mo ito ay. Gusto ko lang tiyakin alam mo helpful tips at trick para sa kung paano gawin iyon. Madla: Bakit maaaring hatiin mo lamang ito sa gitna na gusto? Basta gusto, OK, lamang ako pagpunta sa pag-aalaga tungkol sa mga unang [hindi marinig]? PROFESSOR: Dahil na talagang ang paraan hexadecimal halaga ay kinakatawan. 0 x, na aktwal na nangangahulugan wala na iba sa na nagsasabi sa iyo na ito ay isang bilang hexadecimal. At ito ay palaging ay kumakatawan ang unang apat na digit. At ito ay palaging ay kumakatawan ang huling apat na numero. At kaya ito ng dalawang mga digit lamang tumutugma sa iba't ibang mga bits. Madla: Kaya kami ng lagi PROFESSOR: Lagi kang pagpunta upang makakuha ng walong halaga bits. Madla: Ay na gusto lamang ng isang bagay dito o na ang isang bagay sa lahat ng dako? PROFESSOR: Iyan na lamang ng isang bagay sa mga computer, yep. Madla: OK. Kahanga-hanga. PROFESSOR: Gayundin, para sa halimbawang ito namin na-convert mula sa binary decimal, at mula sa binary na hexadecimal. Gusto mong guys upang tiyakin na ikaw din pagsasanay ng pagpunta sa iba pang mga paraan sa paligid. Kaya kung ibinigay ko sa iyo 0xFF, maaari mong gumuhit na out sa binary, di ba? Convert mo F sa binary, kung saan ay isa, isa, isa, isa, convert F sa binary, na ay isa, isa, isa, isa. Kaya maaari naming hilingin sa iyo na gawin ang iba pang mga paraan sa paligid. Kaya desimal sa binary, o hexadecimal sa binary. Kaya nais mong gumawa ng Siguraduhin na alam mo ang parehong paraan. Kami ay marahil hilingin sa iyo ng isang kumbinasyon ng dalawa. Oo, mayroon kang isang katanungan? Maaari ko bang see-- magaling ka? Madla: Oo. PROFESSOR: OK. Ako ba ay handa na upang burahin ito? Great. Lahat ng karapatan, kaya mga sagot ay dito kung ang sinuman ay kakaiba sa susunod at makakuha ng nalilito. SIGE. Madla: ba ang bagay na ito kung ilalagay namin aming mga titik sa Capitol o lowercase? PROFESSOR: Ginagawa, dahil sa hexadecimal, sa pamamagitan ng convention, lahat ng mga character ay malalaki. Kaya A sa pamamagitan ng F ay magiging uppercase. Kung inilagay mo ang isang lowercase a, hindi ko alam kung kinakailangang tayo ay markahan ito mali. Ngunit theoretically, iyan ay hindi technically kung paano mo ay dapat na magkaroon nito. Kaya dapat sila ay uppercase lahat. Oo, magandang katanungan. SIGE. Ikalawang tanong. Isaalang-alang ang kaibig-ibig na programa dito. Kukunin ko tanungin ang tanong, Kukunin ko na dumating ito sa likod. Kaya, una, ano ang nasa loob ng standard io.h na ng interes sa programa? Pangalawa, kung ano ang ginagawa void maging tanda sa tatlong line? At pangatlo, ano ang bumabalik zero mula sa pangunahing, tulad ng anim na linya, maging tanda sa pangkalahatan? Kung nais mong guys na magsulat sa mga down, dahil mayroon akong upang lumipat pabalik sa slide upang maaari mong makita lamang code. Ito ay isang halimbawa ng, tulad ng, marahil ng isang mas mataas antas ng tanong na kung saan hinihiling namin sa iyo kung ano ang ibig sabihin ng mga bagay-bagay sa isang programa. Ang bawat mabuti sa akin na bumalik sa slide? OK, cool. Kaya Bibigyan kita ng isang lalaki tulad marahil ng tatlong minuto upang tingnan ang isang ito tunay na mabilis. OK, kaya ang isang ito ay tulad ng medyo madali, conceptually. Nais ba ng sinuman na sabihin sa akin kung ano ang unang loob ng hash kabilang aming file standard io.h library? Bakit kailangan namin na library kasama para sa programang ito? Ano dito kailangan namin ito para sa? Oo? Madla: Ay na kapag ilagay mo na printf? PROFESSOR: Eksakto. Kaya printf, anumang oras na kumuha ng isang input mula sa user at i-print ang isang bagay sa screen, na ang ang standard na input, output library. Isipin ito na way-- input, output. Kailangan ko ng isang output? Oo. Kaya alam ko na palaging ako pagpunta sa kailangan ang sa pamantayan i.o library. Kaya printf ay ang function sa pamamagitan ng kung saan kailangan namin upang ma-access at isama ang hashtag ang standard i.o library. SIGE. Pangalawa, ito kung ano ang ibig ipakahulugan void? Mayroon kaming mga int pangunahing (walang bisa), kung ano ang ginagawa magpawalang-bisa dito ibig sabihin dito sa tatlong line? Oo, sa likod. Madla: [hindi marinig] PROFESSOR: Eksakto. Kaya tandaan, ang aming natutunan simula sa aming pset na maaari mong aktwal na tukuyin command line argumento na ang iyong programa, na ikaw pangunahing pag-andar, tumatagal ng sa iyo, ang mga gumagamit, tawagin mo. Kung kami ay walang bisa, na nangangahulugan na ikaw ay maaari lamang tumakbo nang direkta sa programa nang walang anumang argumento command line. Ang bawat malinaw sa mga iyon? SIGE. At bilang wakas bakit abala kami sa paggawa ng ito return zero bagay dito? Bakit namin kahit na magkaroon ng isang int main? Bakit hindi kami na lang na walang bisa pangunahing void? Oo? Madla: Kaya lang na kaya namin siguraduhin na ang programa ay Matagumpay na paglabas, tulad ng laban sa kung ito ay may bilang. At gusto namin malaman na iyon ang isang iba't ibang mga uri ng mga error. PROFESSOR: Oo, eksakto. Ito ay lamang ng isang napaka maginoo bagay na ginagawa namin, ay na lang sa dulo ng iyong programa, upang tiyakin lamang na ang iyong pangunahing pag-andar ay tumatakbo nang maayos, kami ay laging nais gawin return zero. Kahit na maaari naming kinakailangang hindi makita na naka-print kahit saan. Dahil bilang programmers, alam mo, kung ikaw ay maraming iba't-ibang linya ng code at hindi mo alam kung saan ang mga ito ay mali, at kung nangyari ang isang error na gusto mong tiyakin na ikaw ay makakuha ng error na. At kaya karaniwang kung may mangyaring mali ka namin ng isang pagbabalik ng isa lamang upang matiyak na alam namin na ito ay. Kaya kung nakakita ka ng isang pagbabalik zero, na karaniwang nangangahulugan na ang iyong programa ay Matagumpay na naisakatuparan. Good? Cool. OK, pangalawang programa dito. Isaalang-alang na. At kung ikaw guys makita ang isang lumutang, ka guys maaari marahil magkaroon ng isang magandang ideya ng kung ano Ako ay tungkol sa hinihiling mo. Kaya kapag ang program na ito executes, tulad ng maaari mong makita, Ako deklarasyon ng float sa loob ng aking pangunahing pag-andar. Ako pagbibigay ng pangalan na ito "sagot," at ako ng setting na katumbas ng isang hinati sa 10. Ako nagpi-print out, sa isa decimal lugar, na float. At pagkatapos ay ako bumabalik zero. Kaya kapag Isinasagawa ang mga programa, sa tingin bumalik sa matakaw ngayon, ang program na ito ng mga kopya 0.0. Bilang namin ang lahat ng alam, sana tayong lahat alam, isa na hinati sa 10 ay hindi isang 0.00, ito ay 0.1. Ngunit kung bakit sa palagay ng programang ito na ang 1 na hinati sa 10 mga kopya sa 0.1 iba pang sa 0.1? Bibigyan kita ng isang lalaki na siguro tulad ng 30 segundo upang mabilis na lang isipin ang tungkol na at kukunin ko na bumalik sa programa. SIGE. Sinuman na nais upang bigyan ito ng isang shot? Sa tatlong pangungusap o mas mababa, dahil kadalasan hindi namin pagpunta sa paghigpitan ang lahat ng mga sagot hanggang tatlong pangungusap o mas kaya hindi mo na lang magsuka random na mga bagay sa iyong pagsusulit. Oo, kumuha ng isang shot. Madla: Kaya sa tingin ko ay mayroong ito bagay na tinatawag na, tulad ng, [hindi marinig] Kaya doon ay maaaring, halimbawa, maaaring mayroong, tulad ng, 0.09, na kung saan mo i-print ang unang digit, ay ito ay upang 0.0? PROFESSOR: Close, hindi lubos. Christabell? Madla: Ikaw ay naghahati ng isa at 10, at ang mga ito ay parehong mga integer. At upang ang mga paraan na ito ay pagpunta sa store na ito ay bilang isang integer. At kaya sa pinakamalapit na integer maging 0.0. At kaya na 0.1. PROFESSOR: Oo, na talagang mahusay. Iyan ay ang tamang sagot. Kaya ito ay isang tunay nakalilito konsepto para sa isang pulutong ng mga bata. At ako ay talagang nais na tiyakin na ito ay reinforced sa ulo ng bawa't isa. Kaya kung ano ang tawag namin sa mga lumulutang point imprecision, kung saan ang dahilan kung bakit ang isang pulutong ng iyong mga programa sa matakaw Hindi gumana sa una ay dahil nakalimutan mong palayasin ang iyong variable. Kaya kung ano ang sinabi Christabell ay ganap na tama. Ang isang float ay likas na di-tiyak. Dahil sa isang computer, right, kami ay takda na halaga ng mga piraso ng memory maaari naming gamitin upang kumatawan sa numero. Kaya, halimbawa, ang CS50 ID is-- Sa tingin ko ito ay isang 64-bit computer. Maaari lamang na kinakatawan A float sa pamamagitan ng isang tiyak na halaga ng mga bits. At kaya 0.1 na may walang hangganang mga zero, na ni noon ay 0.1 ay, di ba? Ngunit hindi namin talagang maaaring tindahan na numero sa aming mga computer. Wala kaming lamang sapat na memorya upang gawin ito. At kaya sa pinakamalapit na pagtatantya ng ano ang nakaimbak sa memory ay talagang isang bagay tulad 0.000 ang isang bagay, ang isang bagay, isang bagay, ang isang bagay. Aling, sa sandaling pungusan mo ito, round down na 0.0. At kaya sa halimbawang ito ay isa lamang sa na nagpapakita ng maraming mga isyu kami ay may kapag hindi namin sinusubukan na hindi tama ang gawin matematika walang pagpapatala bilang ibang integer. Kaya maging maingat ng mga ito nangyayari lamang. Sa quizzes, kung bibigyan ka namin ng isang bloke ng code at ito ay tulad, kung ano ang mga print out sa dulo? At kung ito ay ang ilang mga random na halaga mo guys ay dapat na malaman kung bakit na ang nangyayari. Oo? Madla: Truncate ay mapupuksa lahat ng bagay matapos ang isang tiyak na punto? [Hindi marinig] PROFESSOR: Oo, kaya ang tunay na ito ay isang ganap na hindi maayos na halimbawa, dahil 0.100 kahit anong talaga Gusto pungusan pababa sa 0.1. Ngunit kung ikaw ay upang tumakbo it-- hindi ako tandaan, dahil ang nakaraang taon sila tumakbo ito sa isang iba't ibang mga programa. Sila tumakbo ang mga ito sa isang bagay na tinatawag ang CS50 Appliance, na ay naiiba mula sa ID. Iyon ay isang 32-bit na sistema, sa tingin ko. At kaya mayroong iba't-ibang mga numero. Ngunit mahalagang, lamang malaman na ang buong konsepto ng truncation at kung paano mapuputol lang ito bagay-off. At kaya kung ito rounds-- Madla: Walang rounding. PROFESSOR: Eksakto. Oo. Cool. Hi, sa likod. Kami ay pagpunta sa paglipas ng ilang katanungan sa pagsusulit sa pagsusuri. Lahat tama. Kaya isaalang-alang ang isang iba't ibang mga programa dito. Pupunta ako upang bigyan ka guys isang ilang minuto upang basahin ang higit na ito. Ito ang isang bagay na para sa isang napaka kamakailan na sa tingin ko hinipan ng maraming mo guys ni isip. Ngunit kami ay pagpunta sa makipag-usap sa pamamagitan na ito muli lamang upang tiyakin na ikaw maunawaan ito nang tuluyan. SIGE. SIGE. Kailangan ninuman ang mas maraming oras upang basahin sa pamamagitan ng code na ito? SIGE. Kaya ito tila sa akin na sa programang ito Ako paglikha ng dalawang mga string sa pamamagitan ng paggamit GetString. Isa na tinatawag na s at isa na tinatawag t. At kung ang mga ito ay pantay-pantay katumbas sa bawat isa, dapat itong i-print "Ikaw type ang mga parehong bagay. " Ngunit elsewise, ito i-print, "Ikaw nag-type ng iba't ibang bagay, "right? Parang tunay, tunay simple. Ngunit, gayunpaman, kung ako talaga subukan na isulat ang programang ito, tila na kahit na kapag ako input ang eksaktong parehong mga string, Kopya pa rin ito, "Ikaw nag-type ng iba't ibang bagay! " Nais ba ng sinuman na kumuha ng isang pagbaril sa kung bakit ang program na ito ay laging tumugon na ang input ay naiiba, kahit na kapag ang mga salita sa kanilang sarili ay ang parehong? Kaya kung ako ay upang input-- David ibig upang gamitin ang isang halimbawa tulad ng ina, di ba? Lowercase M-O-M para sa S, T ay katumbas ng lowercase M-O-M. Kung nagpatakbo ako ng ito sa pamamagitan na ang code, bakit gagawin ito i-print out "nag-type ka ng iba't ibang mga bagay-bagay?" Kailangan ba ang sinuman nang higit pa time na mag-isip tungkol sa mga ito? OK, sa tingin ko hindi namin mabuti. Oo? Madla: OK, sa gayon ito ay isang bagay tungkol sa kung saan ito ay naka-imbak sa memory, tama? PROFESSOR: Yep. Madla: Saan ito ay tulad ng, kung ito string s ay naka-imbak sa memory spot-- Ako inventing this-- ay zero. PROFESSOR: Oo naman. Madla: At string t ay naka-imbak sa memory lugar, tulad ng, 167, at pagkatapos ay zero ay hindi katumbas ng 167. PROFESSOR: Eksakto. OK, kaya tandaan ito paniwala paghahayag ipinaliwanag namin sa iyo guys ito nakaraang linggo, na string ay hindi tunay na umiiral? Kapag lumikha kami ng isang bagay na tinatawag na string hindi namin, sa katotohanan, paglikha ng isang bagay na tinatawag na char star. Alin ang lahat ng ito ay ay isang pointer sa isang string o sa isang array ng mga karakter. At kaya sa halimbawang ito, kung ako ay upang input M-O-M ang paraan na ang aking computer ay tindahan ng ito ay sa loob ng memory backslash zero, di ba? Ang apat na mga character, char, ay naka-imbak sa isang lugar. At pagkatapos ay ang mga apat na character, backslash zero, ay karapatan na naka-imbak sa ibang lugar,? Wala akong ideya kung saan ang mga address ay, ang mga ito sa isang lugar sa aking computer. Ngunit hindi ko eksaktong alam kung nasaan sila. Kapag gumawa ako ng isang string s, ang lahat na tunay ay ay isang pointer sa magsimula ng string. At kapag gumawa ako ng ganitong halaga t, lahat ng iyon ay isang pointer sa dito. At kaya kapag sinusubukan sa equate at suriin upang makita kung s ay equals katumbas sa t, ang computer ay talagang lamang ng pagbalik sa mo ang address ng mga ito m at ang address ng na m. At dahil ang mga ito ng dalawang hiwalay na mga piraso ng data na naka-imbak sa dalawang magkaibang address sa iyong computer, ang iyong computer ay hindi kailanman pagpunta sa makilala ang mga ito bilang ang parehong. Sinumang gusto ba sa magbigay ng isang shot sa kung ano ang aming ay may sa gawin kung gusto naming itama na ito at magkaroon ng isang wastong pagpapatakbo ng programa sa halip? Isipin na ang para sa isang ilang segundo. Ano ang kailangan namin upang baguhin sa kumuha ito gumagana program ang paraan na gusto naming ito upang gumana? Oo, gusto mong kumuha ng isang ulos sa ito? Madla: Maaari naming subukang dereference ang pointer at suriin sa pamamagitan ng array? PROFESSOR: Iyan ay isang paraan upang gawin ito. Kaya, ano muli ang iyong pangalan? Sorry, paalalahanan ako. Zee: Zee. PROFESSOR: Oo, kaya kung ano Zee iminungkahing ganap na gumagana. Right? Could namin dereference ang pointer at talagang pumunta at access ang pisikal na data sa loob ng dito. At maaari naming lamang ihambing ang buong screen. Maaari naming sabihin, OK, pointer, bigyan ako ng kung ano ang nasa loob dito. Mas magbalik ng m. At gusto kong sabihin, pointer, bigyan ako ng kung ano ang nasa loob dito. Bumalik ng isang m. Gawin ang mga tugma? Oo. Pagkatapos naming ilipat sa. Kami panatilihin ang pagsuri sa buong dalawang string lahat ng mga paraan up hanggang sa katapusan at tingnan kung ang mga ito ay pantay-pantay, kung ang lahat ng mga halaga ay pantay. At kung ang lahat ng mga halaga ay pantay-pantay, pagkatapos ay alam namin ang mga string ay totoo. Ganap, iyon ang kung paano namin gawin ito? Ang kahit sino ay nalilito sa alinman sa mga ito? Ang buong konsepto ng kung paano string ay talagang lamang ng mga payo, at kung paano sila ay hindi tunay na umiiral? At bakit kami makakuha ng mga error tulad ng paraan na makuha namin ito? Dahil ginagarantiya ko sa inyo guys, mga payo at string laang-gugulin at memory ay pagpunta sa darating up. Oo? Madla: [hindi marinig] dereference ito, ilagay mo lamang ang isang bituin [hindi marinig] PROFESSOR: Kanan. Kaya para derererence isang pointer paraan upang pumunta sa na address ng pointer at makakuha ng mga data, ang halaga doon. At ang paraan upang gawin iyon ay star pointer. Huwag malito iyon. Madla: [hindi marinig]. PROFESSOR: Oo. Madla: Kaya maaari mo lamang isulat kung katumbas equals star t star s. PROFESSOR: Well, hindi. Hindi. Madla: Iyan ay hindi sapat na mahusay, tama? PROFESSOR: Hindi, dahil ikaw ay lamang ng paglagay ng tsek ang unang titik. Marahil ka ng pagpunta sa kailangan mo ng ilang mga uri ng isang loop na iterates pamamagitan ng bawat solong character sa parehong string. Oo. Kaya kung nais mo lamang na tingnan upang makita ang kung sila ay nagsimula gamit ang mga parehong bagay, maaari mong gawin kung, star s ay katumbas ng star t. At alam mo na sila ay hindi bababa nagsimula na may parehong character. Oo? Madla: Kaya ang paraan mo na magiging tulad ng isang naka-embed para sa loop o pointer? PROFESSOR: Oo. Medyo marami lamang ng isang para sa loop. Tandaan, David sa klase na nabanggit ang free sintaktik asukal? At siya ay nagkaroon ito napaka nakalilito bagay ng star t plus one, kung saan ito ay samahin sa pamamagitan ng at ito ay ilipat ang pointer? Ang mas madaling paraan ng paggawa ng ito ay t lamang ng i. Kaya ito ay lamang ng isang array. Ang paraan na nais mong magkaroon ng para sa loop na tumakbo mula sa zero sa i, na kung saan ang i ay ang haba ng string, maaari mo lamang isulat na sa halip ng paggawa ng buong pointer, reference na bagay. At ang mga bagay ay eksaktong katumbas sa iyong computer. Ikaw guys marahil ay hindi kailangan mong malaman na, ngunit ito ay mabuti na lamang ang uri ng Mayroon sa likod ng iyong isip. Basta alam na ang computer Kinikilala iba't ibang mga bloke ng code bilang ang parehong bagay. Dahil ito ay lamang ng mas malayo user friendly na para sa amin upang ipakita ang mga ito tulad ng ito ay isang array. Ito ay lamang na mas madali. Madla: Kaya gamitin strlen upang gustuhin, get-- PROFESSOR: Oo. Madla: OK. PROFESSOR: Ikaw ay maaaring gamitin strlen o, kung ikaw ay ay hindi magkakaroon ng strlen maaari mo lamang gawin up hanggang maabot ang backslash zero para sa parehong. Alinman ay trabaho. Oo. Madla: Kaya ito ay sa dereference bawat solong character kung tayo ay talagang pagsulat ang code na ito, kami maaari lamang gawin t bracket i gusto may star sa harap ng mga ito? PROFESSOR: Oo, katumbas katumbas s bracket i, at pagkatapos ay patuloy na gumagalaw i down up hanggang maabot ang dulo. Oo, na kung ano ang nais mong gawin. At talagang kukunin ko na magkaroon ng isang susunod na halimbawa ng kapag kami talaga isulat strlen kaya ka guys ay uri ng makakuha ng upang i-play sa paligid na may ito ng kaunti. Kaya ay malinaw sa lahat ng tao sa lamang na memorya, string, mga payo, kalidad address? Ang ilang mga mas mataas na mga konsepto level na kayo para bang kailangan malaman sa pagsusulit bukas. Lahat tama. Good. Yep. OK, kaya ang isang bagay na namin makikita ring hilingin mo, tulad ng ginagawa namin sa bawat taon sa isang pagsusulit, ay, ipagpalagay na nakalimutan mo na (na parang kami na kalimutan na gawin taun-taon) na kung saan ang file na header strlen ay ipinahayag. At kaya kami ay may sa pagsulat na muli ito sa ating sarili. Narito ang isang listahan ng mga alituntunin na maaari naming ipakita sa iyo guys kung saan ka na ipalagay na s ang string ay hindi null. Maaari mong ipalagay na s maging tinapos sa isang backslash zero. Kaya alam mo na kung ano ang ito ay pagpunta sa magtapos sa. At, halimbawa, na ang haba ng kumusta ay limang. Kaya maaari mong ipalagay na kumusta ay limang, H-E-L-L-O. Wala kang na ipalagay na ang backside zero na kuwenta para sa haba. Ang huling bagay dito, hindi mag-alala tungkol integer overflow. Sinuman tandaan ano integer overflow ay? Madla: Pupunta sa kabila ng haba ng [hindi marinig]. PROFESSOR: Oo, maaari mong ipaliwanag ng kaunti, kung ano ang ibig sabihin nito? Madla: Kaya, Hulaan ko ito napupunta pabalik sa truncating halimbawa ng mas maaga. Ngunit kung ikaw ay may lamang kaya maraming mga numero na higit pa sa bilang ng bits na maaari mong talagang italaga ito na ito ay uri ng lamang putulin. PROFESSOR: Oo, kaya sa isang tipikal computer, kung gaano karaming mga bits mayroon tayo? Madla: 32? PROFESSOR: Oo, 32, sa kanan. At kaya na, ano, apat bilyon, dalawang bilyong? Apat bilyon, hanggang sa apat na bilyon positive integer, di ba? Dalawang bilyong mga negatibong, dalawang bilyong positive, depende sa kung paano mo nais na gawin ito. At kaya talaga namin ay may sapat na integer na maaaring pumunta up sa dalawang sa ika-31 ng minus 1, di ba? Dahil sa sandaling pindutin namin dalawang sa ika-32, hindi tayo na magkaroon ng maraming memorya sa aming mga computer. At ito, theoretically, ako maaaring magkaroon ng isang bilang iyon ay, tulad ng, dalawa hanggang sa ika-46. Ito ay isang numero ng malaking-asno, ngunit theoretically maaari mong. At kaya integer overflow ay kung sinubukan mong lumikha ng isang integer na napupunta sa kabila kung ano ang ang iyong computer ay may kakayahang pag-iimbak. At kaya sa inyo guys para halimbawa na ito ay hindi na mag-alala tungkol sa amin na nagbibigay sa iyo ng isang higanteng string na dalawa hanggang ika-32 na karakter ang haba. Iyon ay nangangahulugan na talaga. Lahat ng karapatan, kaya ako lamang ang pagpunta upang bigyan ka guys sa base structure ng mga ito. Ikaw ay pagpunta upang lumikha ng isang function na tinatawag int strlen kung saan isang pumasa sa, isang char star, o string, pointer sa string na tinatawag s. Lahat ng mga karapatan, lahat ng kopya na pababa. Cool. Oops-- ibang paraan. Kaya ito ay uri ng tulad ng isang mahirap na piraso ng problema, kaya Bibigyan kita ng isang lalaki na siguro lima hanggang anim na minuto upang uri ng atake ng kabaliwan at isulat ang function na ito. Madla: Hindi namin account para [hindi marinig], hindi namin ay may upang gamitin ang integer? PROFESSOR: Hindi, hindi mo. Bibigyan kita ng isang lalaki na isang hint. Ang isang habang loop ay maaaring maging lubhang kapaki-pakinabang dito. Oo. Narito ang kendi. Kendi na ito ay makukuha rin para sa mga pagsusulit, tingin ko. Kaya mo guys ay ang lahat ng sugared up bukas. Maaari I-- ba kayong mga ito. Madla: OK. PROFESSOR: Oo. Siguro 30 more o kaya ng ilang segundo. Lahat ng mga karapatan, kung ikaw ay hindi tapos na, huwag mag-alala. Susubukan naming ilipat ito sa pamamagitan ng sama-sama. SIGE. Kaya ako ng pagpunta sa makatarungan ang layout ng pangunahing istraktura para sa mga function na ito dito. Int strlen. Una, ang sinuman nais na sabihin sa akin kung ano ang nagpapahiwatig na int? Kailangan namin na magkaroon ng sa function na ito. Madla: Strlen [hindi marinig]. PROFESSOR: Eksakto. Kaya kahit anong mangyayari sa dito, kailangan namin upang ibalik ang isang integer. At gaya ng tinukoy sa spec, nais naming return-- Sige lang guys, lamang panatilihin ang pagpunta. Lahat ng ito ay mabuti. Kumain ito ang lahat kaya hindi ko na kailangang upang dalhin ito pabalik, talaga. Int Ang lamang ay nagpahayag na ikaw ay pagpunta sa pagbabalik ng isang integer. Ano itong char star s? Ano ang ibig sabihin nito? Madla: Tulad ng, kung ano ang pagiging input in. PROFESSOR: Eksakto. At kung ano ay halos ang parehong bagay tulad ng char star? Madla: String? PROFESSOR: Eksakto. Kaya lahat ng aming ginagawa ay nagbibigay sa ito isang pointer sa isang string. SIGE. Cool. Gayundin, huwag kalimutan, kung nakalimutan namin upang bigyan ka ng mga bracket, huwag kalimutan na isulat ang mga ito sa iyong sarili. Dahil theoretically, ang iyong code ay hindi tama kung nakalimutan mong isulat ang mga ito. Basta laging magbayad ng pansin. Tulad ng, maliit na bagay na hindi mo mapansin kapag ikaw ay programming sa iyong laptop, dahil ang iyong mga laptop ay ito para sa iyo? Huwag kalimutan na kapag sumusulat ka sa pamamagitan ng kamay. Oo? Hindi tamang Ngunit paano: Madla? Tulad ng, namin makuha ang buong problema ng mali? PROFESSOR: Hindi, hindi. Huwag mag-alala. Ito ay talagang theoretically posible para sa iyo upang makakuha ng ganap na mga punto sa isang tanong kahit na ang iyong code ay hindi kailanman tumakbo sa totoong buhay. Mungkahi ko na hindi mo subukan upang gumawa na mangyari. Halimbawa, tulad ng kung ang lahat ng bagay na ang dahilan dito ay karapatan, ngunit nakalimutan mo ang isang colon o isang bracket, ang iyong code ay hindi talaga tumakbo. Ngunit maaari naming maging maawain. Oo? Madla: Kailangan mong magkomento sa aming sulat-kamay? PROFESSOR: Hindi, hindi, hindi alalahanin tungkol sa na. Walang pagkomento. Style ay dapat na mabuti. Tulad ng, hindi Smush ang lahat ng bagay sa isang linya. Hindi namin ay magiging masaya sa iyo kung wala ka na. Sinumang gusto ba sa bigyan ako ang unang linya? Pahiwatig, ito ay tunay madali. Oo? Madla: Int, n katumbas ng zero. Set up lang counter. PROFESSOR: Kaya gusto namin ang ilang mga uri ng isang counter, di ba? Ako lamang ang pagpunta upang pangalanan ito "bilang" para sa kapakanan ng pagiging madaling mabasa. Ano ang gusto namin upang itakda ito katumbas? Madla: Zero. PROFESSOR: Yep. Tuldok-kuwit. Ito ay lubhang kakaiba semicolons drawing din. Practice lang ginagawa na. Kaya gusto naming unang magkaroon ng isang counter ng uri int. Dahil gusto naming bilangin up kung paano maraming mga character o titik ay sa string, i-right? Sa lalong madaling unang hakbang. OK, marahil ng isang bit mas kumplikadong ngayon, kung paano namin ay pagpunta sa gawin ito? Sinumang gusto ba sa bigyan ako ang linya ng code na maaaring makatulong sa loop sa pamamagitan ng anumang ito ay? Oo, matapang na kaluluwa sa likod? Madla: OK, sa gayon habang ang point asterisks, ang oo, bituin ng s, ay hindi katumbas ng zero, at pagkatapos ay gawin ang isang bagay? PROFESSOR: Iyan ay tunay, tunay na malapit. Talagang malapit. Kaya ako ng pagpunta sa address dalawang bagay na iyon. Una sa lahat, ito ay hindi eksakto zero. Ano ito? Ito ay ang null Terminator, na kung saan ay backslash zero. Kaya ang mga ito sa iba't-ibang mga tuntunin ng kung paano sila ay naka-imbak. Kaya ikaw ay talagang malapit. At pangalawa, hindi namin nais upang ilipat lamang ang pointer. Gusto naming talagang ma-access ang mga halaga, di ba? At kaya kung paano ang gagawin namin iyon? Napakadaling. Huwag mag-isip tungkol sa mga payo, hindi nag-iisip tungkol sa mga alaala. Bumalik sa dalawang linggo ng kursong ito. Madla: [hindi marinig]. PROFESSOR: Bilang ng, tandaan? Ano ang mga string? Paano sila ay naka-imbak sa memory? Madla: Sila ay itataas. PROFESSOR: Sila ay itataas. Kaya paano namin ma-access ang ang bawat character sa loob? Madla: [hindi marinig]. PROFESSOR: Eksakto. Kaya while-- kung ano ang napupunta sa loob dito? S ng - Madla: I. PROFESSOR: Oh, hindi ko ay umiiral, ang ginagawa nito? Madla: Oh, bilangin? PROFESSOR: Maaari naming lamang gamitin ang count, maaaring hindi namin? Madla: Paumanhin, tinatawag ko ito i. PROFESSOR: Oo, ito ay ang lahat ng mabuti. Kami ay may isang variable up dito na nai-ipinahayag bilang aming counter. Kaya bakit hindi ginagamit namin na lamang ilipat sa pamamagitan ng habang loop? Ba na magkaroon ng kahulugan? Kaya habang s ng count-- ay kahit sino gusto upang bigyan ako ng kung ano ang mangyayari pagkatapos dito? Madla: Ito ay hindi katumbas. PROFESSOR: Sinusuportahan ba ng hindi pantay-pantay, di ba? Ang putok Ito ay katumbas, exclamation point katumbas, kahit na ano ka guys nais na tawag na ito ay hindi equal-- Madla: [hindi marinig]. PROFESSOR: Oo. Tandaan single quote ay para sa isang pansamantalang trabaho, double quotes ay para sa isang string. Mag-ingat kapag ginagamit ang mga ito. Kaya kapag kami ay naghahanap sa pamamagitan ng ang array, ang huling character, alam namin na hindi namin nais ito upang maging backslash zero. Kaya habang. Hindi kami sa dulo ng string. Ano ang gusto naming gawin sa loob? Madla: Gusto naming idagdag sa counter kaya ito ay nagbibilang plus plus? PROFESSOR: Eksakto. Kaya dito kami ay pagpunta sa gawin count, count plus plus. Kulang ng isa pang linya. Malapit na tayo. Ano ang mga namin forgetting upang gawin? Madla: Bumabalik zero? PROFESSOR: Gusto mong bumalik sa zero? Madla: Hindi, bumabalik sa strlen. Maghintay. PROFESSOR: Aling ay naka-imbak sa? Madla: Bilang. Bilang. PROFESSOR: Eksakto. Kaya dito kami ay pagpunta upang bumalik count. Dahil kung ano ang hindi namin ginagawa dito ultimately-- kami ay may isang counter variable na pagpunta sa dagdagan sa pamamagitan ng aming string. Kami ay pagpunta upang panatilihin ang pagpunta, panatilihin tuloy, sa paligid at sa paligid sa loop. At habang kami ay hindi sa dulo ng ito string, na kung saan ay ang null Terminator. At sa bawat oras na pumunta kami sa pamamagitan ito, kami ay nagdadagdag sa aming counter. At kami ay pagpunta sa karagdagang kasama na ito sa array. At sa dulo, sa sandaling kami ay pindutin ang null Terminator, alam namin, oh, maaari naming masira, bumalik ang count. Mayroon kaming aming strlen. Lahat makakuha paano ito ay ipinatupad? Habang loops-- alam ko na mayroon kaming hindi tapos masyadong maraming sa mga ito, ngunit ang mga ito ay karaniwang tunay, tunay na kapaki-pakinabang kung ikaw hindi alam kung ano ang iyong pagpapahinto kalagayan kinakailangan ay dapat. Tanong? Madla: Maaari naming magsulat null sa kalagayan habang? PROFESSOR: Habang? Oo, kaya sa problemang ito Nagkaroon na ako sa iyo guys ipalagay na s ay hindi null. Dahil tandaan, theoretically, kung ibinigay ko sa iyo isang pointer na ay masyadong malaki ng memory, ito ay magbibigay sa iyo ang null, di ba? Ano Iyan ang operating sistema ay gawin. Kaya kung hindi ko sinabi sa inyo upang ipalagay Gusto ni maging null, kailangan mong suriin. Kaya hanggang dito, ang gusto mong gawin, kung s katumbas ng ay katumbas null, bumalik sa isa. Parang ganun. Madla: [hindi marinig] zero. PROFESSOR: OK, kukunin ko na sabihin sa iyo kung bakit hindi namin maaaring gawin iyon. Dahil tandaan sa memory, right, dito. Susubukan naming pumunta dito. Nakuha mo na ang giant bloke ng memory ang lahat na may grids na store iba't ibang mga halaga, di ba? At sa gayon ang lahat ng string is-- para Halimbawa, kung hindi namin na input hello, ay ito ay H-E-L-L-O backslash zero, di ba? At pagkatapos ay may alam, tulad ng random mga bagay na nasa dito matapos na ito. Hindi namin talagang malaman kung ano ang doon. At kaya kung ikaw ay upang gawin sa halip ng backslash zero, null, ito ay maaaring hindi null. Dahil maaaring nangangahulugan na ito lamang ilang mga random na iba pang mga bagay na hindi nabibilang sa iyong string. At upang ang mga paraan na kami ay laging alam na isang string nagtatapos ay may isang backslash zero. At kaya na palaging kung paano namin suriin upang makita ang dulo ng isang string. Walang bisa, ang lahat ng mga paraan na kung mayroon kang isang di-umiiral na pointer, una sa lahat, o kung ang iyong memory ay lamang kaya malaki na hindi ka maaaring ibalik ito, pagkatapos ay gusto ito ay null. Kaya maging maingat kapag differentiating ang pagkakaiba sa pagitan null at ang backslash zero. Oo. Ang bawat OK na ito? SIGE. Kaya ako ay nagkaroon ng isang lalaki isulat ang strlen. Feasibly maaari rin naming hilingin mong isulat out A to ko, tandaan na ang "Atwoa" o kahit na ano ang iyong guys gusto pangalanan ito? Iyon function sa Vigenere at Caesar, na Kino-convert ng isang halaga Ascii sa isang integer? Iyon ay lumapit din sa nakaraang quizzes ng pag-andar na iyong hiniling namin sa iyo na magsulat. Medyo magkano ang anumang function na nagamit mo at ito ay napaka madaling isulat ang iyong sarili, Gusto sensor ay mas mababa, ay itaas, upang mas mababa, sa itaas. Pag-andar na pag-convert ng isang string mula sa lowercase sa uppercase. Alam nating lahat kung paano gawin iyon, di ba? Ito ay medyo madali. Nais lamang na siguraduhin na ikaw can-- ito ay ang parehong pag-iisip proseso. Umulit lamang ka sa pamamagitan ng at i-on mo ang mga bagay-bagay. Kang mag-count o kapag buksan mo bagay na naiiba. Gusto ko suggest-- ko hindi alam kung kami ay pagpunta upang hilingin sa inyo na kabisaduhin kung ano capital A o capital Z, o lowercase A o lowercase z ay sa Ascii, ngunit nais kong imungkahi marahil pagsulat na pababa sa kaso ginagawa namin. Basta kaya ka guys ay may isang reference. Tulad ng uppercase A ay, kung ano ang, 197? At pagkatapos ay lowercase ay tulad ng 50 bagay. 65, oo, doon ka pumunta. Kaya lang kung medyo marami ang mga pagkakaiba sa pagitan ng mga ito ay 32. Iyan ay medyo mahalaga. Oo. Ako ba ay mabuti sa mga ito? SIGE. Madla: maaari naming theoretically sumulat ng ilang ng mga down na rin sa aming little-- PROFESSOR: Ikaw theoretically maaaring kopyahin lamang ang pag-andar down. Totoo yan. Madla: Hindi [hindi marinig]. PROFESSOR: You guys magkaroon ng isang sheet. Ikaw guys magkaroon ng isang note sheet. Maaari mong i-type ito. Maaari mong isulat ang mga ito. Maaari mong gawin ang anumang gusto mo dito. Oo. Kaya theoretically, kung gusto mo, pumunta para sa. Madla: [hindi marinig] ngunit hindi namin talagang kinakailangan na kailangan upang tandaan ang halaga, maaari naming lamang gamitin ang sa itaas o sa mas mababa function, right? PROFESSOR: Oo. Ngunit kung ibinigay namin sa iyo ng isang katanungan na nagsasabing sumulat sa itaas, pagkatapos ay kailangan mong isulat ito. Kaya ka guys ay maaaring ipalagay na kayo guys may access sa lahat ng mga function, ngunit kung nais mong gamitin sa itaas o sa mas mababa, ano ang mayroon ka ring gawin? Madla: [hindi marinig] gamitin CS50 [hindi marinig] PROFESSOR: Ito ba ay CS50.h? Mag-ingat doon. Kaya sa itaas, upang mas mababa, ay itaas, ay mas mababa, mga function na kasangkot string manipulasyon ay sa loob ng alinman sa Ascii lahat o sa loob ng math library o sa loob ng string library. Kaya't kung ikaw guys gamitin ang mga mga function, mag-ingat upang tandaan upang isama ang header na. Kaya marahil din ng isang bagay sa iyo nais na isama sa iyong sheet, ano ang mga header? Ano ang mga aklatan kayo ay gumagamit? Anong mga function ay sa loob ng mga aklatan? Ito ay mahalaga. Oo? Madla: Puwede naming lamang cop out at gawin ang hashtag sa pamamagitan ng ganap na walang ang bawat titik na namin kailanman nakita tulad ng sa lahat ng mga katanungan? PROFESSOR: Maaari mo. Hindi ko alam kung paano masaya kami ay pagpunta sa maging sa grado na quiz kapag ang bawat piraso ng code ay dalawang beses hangga't kailangan nito upang maging. Hindi ko alam, maaari naming mag-alis ng isang punto para sa estilo. Ngunit theoretically iyong code ay tama. Ikaw guys could cop out at isama lahat ng bagay. Iyon ay pinong masyadong, oo. Madla: [hindi marinig]. PROFESSOR: Oo. Imumungkahi ko ang hindi paggawa na bagaman. Oo. Madla: Cool. PROFESSOR: Magandang katanungan. Madla: Kaya, ang pinakamasama kaso sitwasyon. PROFESSOR: Ang pinakamasama kaso. Kung ganap na ikaw ay kalimutan, maaari mong gawin na. Oo. Oo, ang code ay may karapatan. Ginamit ko n halip ng count ngunit, ikaw alam, kahit anong kamay ang iyong bangka. Madla: Maghintay, kaya kami hindi na kailangang mag hashtag isama dahil hindi namin simula sa mga int? PROFESSOR: Oo, lamang ako ay ipinapalagay na kami ay nagtanong upang isulat ang function. Kung iyong nais na maging ligtas, ikaw ay maaaring marahil ilagay ito doon. Ngunit ko lang ay hindi abala, oo. Hindi ko kahit na malaman kung ikaw kailangan ng anumang mga library para sa mga ito. Dahil hindi ka na talagang pag-print out kahit ano o kahit ano, di ba? Oo, hindi ko alam kung kailangan mo ng isang library. SIGE. Ito din ay isang bit mas kasama ang mga linya ng pagmamanipula memory. Ang uri ng mga bit mapanlinlang. Pagisipan mo to. Mayroon kang isang function na tinatawag func. Sana pinangalanan ko ito kahit na ano, ngunit pinili kong pangalan ito func. Mayroon akong ito sa itaas ang aking main. Tandaan, gusto mong magkaroon ng isang function na pagkatapos ng iyong pangunahing, gusto mong tiyakin na ikaw ay isama ang prototype ng tuktok. Ngunit sa kasong ito, ito ay kaya maikli na nadama ko na maaaring ko lamang isama ito sa ibabaw ng main. Hindi ko kailangan ang magkaroon ng prototype, dahil sa ito ay nakasulat sa itaas. Kaya lahat ako ginagawa sa aking pangunahing pag-andar ay ang paglikha ng integer x ay katumbas ng 10. Ako pagtawag aking func function, at pagkatapos ay pag-print ng hanggang sa isang bagay. At pagkatapos na talagang ano func ay ginagawa. Ikaw guys na nais na mag-isip sa pamamagitan ng mga ito. Dahil ito ay isang bit mapanlinlang. Ito ay tunay, tunay na nakakalito, talaga. Mag-isip sa pamamagitan ng kung ano ito programa ay outputting. Bibigyan kita ng isang lalaki ng dalawang minuto. Magandang talakayan? Madla: Oo. PROFESSOR: Oo. Lahat ng karapatan, sa gayon ito ay nakakalito para sa isang dahilan. At ito ang dahilan kung bakit ako gustong dalhin ito sa pansin ng lahat. Nais ba ng sinuman upang bigyan ako isang mungkahi, isang pagtatangka? Ano ang gusto i-print out ito? Ganap multa kung ikaw ay mali. Oo? Madla: Sa tingin ko ito ay 100 at pagkatapos ng 10 sa dalawang magkahiwalay na mga linya. PROFESSOR: At ang isang 10? Ay may anumang iba pang mga hula Ang kahit sino? Oo? Madla: Maaari lamang ng 10 dahil func ay hindi bumabalik ng kahit ano? PROFESSOR: OK, kaya namin Mayroon hulaan bilang isa ay na hulaan dalawang numero ay lamang ang pagpunta sa i-print ang 10. Ay may anumang iba pang mga hula Ang kahit sino? SIGE. Kaya sabihin sa pamamagitan ng paglalakad na ito, i-right? Sa tuwing makakakuha ka ng isang piraso ng code, huwag lamang tingnan ang mga ito at maging tulad ng, ah, syanga maraming bagay-bagay! Ako kaya nalilito! Tulad ng, kalmado ang iyong sarili pababa. Basta alam na magagawa mo lamang hanapin sa pamamagitan ng linya ng code sa pamamagitan ng linya. Iyan na ang lahat ng ito ay. Ito ay tulad ng pagbabasa ng libro. Kaya sa anumang function, palagi naming magsimula sa main. Kaya kami ay pagpunta sa magsimula sa int pangunahing walang bisa, kahit na ang program na tumakbo down, right? Magsimula sa sa main walang bisa. Int x ay katumbas ng 10. Kaya ako pagpunta upang burahin ito. Pupunta ako upang gumuhit ng memory lang kaya mo guys maaaring uri ng makita kung ano ang nangyayari. Tandaan down na dito na namin ang aming stack? Hanggang dito na namin ang aming magbunton lugar up dito. Stack ay lumalaki up, di ba? At sa loob ng stack, kailangan mong mains function pati na rin lahat ng mains lokal na variable. Kaya dito, int x pantay 10. Sa loob ng aming pangunahing function na hindi namin paglikha ng isang variable na tinatawag na x. Kami ay set na katumbas ng 10. Dito ay nakuha mo ang ilang mga x, at ikaw ay pagtatakda na katumbas ng 10, kanan, sa loob ng main. Ang bawat mabuti? Function. Kaya ngayon, sa loob ng aming mga pangunahing function, kami ay pagtawag ang function na nakasulat sa itaas. Kaya ngayon kami ay ipasok ang pangalawang function. Kami ay pagpunta sa gumawa ng isa pang variable int x ay katumbas ng 100. Ano ang nangyayari dito sa stack? Ano ang mangyayari kapag tumawag ka ng isang function na lumilikha ng mga bagong variable? Ano ang mangyayari dito sa stack? Madla: [hindi marinig] piles sa itaas? PROFESSOR: Oo. Kaya ito ang tunay na lumilikha ng isang kopya. At ito uri ng tambak sa itaas. Isipin mo na ang stack-- isang stack ng mga libro, ng isang stack ng kahit ano. Piles sa itaas, una sa huling out, tatagal, unang labas. Kaya ito ay pagpunta upang lumikha ng isang x dito. Iyon ay pagpunta sa may lahat funcs variable. Great. Kaya ngayon kami ay may dalawang magkaibang mga x na kumakatawan dalawang ibang bagay. Pagkatapos kami ay pagpunta sa i-print ang mga integer ng x. Kaya sabihin i-print ang 100, di ba? Dahil dito ito ay 100. Kaya iyon ang unang bagay na ito ay pagpunta upang i-print out. Bilang ang function na nagbabalik sa wala, ngayon na function, na linya sa mga pangunahing ay tapos na. Ang bawat mabuting kasama ko sa ngayon? Kaya hindi namin ngayon sa pamamagitan ng dalawang sa labas ng tatlong linya ng aming mga pangunahing pag-andar. Ngayon kami ay pagpunta sa ikatlong linya. Kami ay pagpunta sa printf. Ano itong x loob main? Ano ang ibig na kumakatawan? Ano ang halaga ay x ngayon? Madla: 100. PROFESSOR: Ito ay 100? Madla: Still 10. PROFESSOR: Still 10. Oo. Dahil tandaan, sa loob ng aming func, x ay katumbas ng 100. Ngunit kung babalik kami sa likod sa aming mga pangunahing pag-andar, variable na naka-imbak sa isang iba't-ibang mga lugar sa aming stack. Kaya ngayon ay kailangan naming bumalik sa pangunahing stack, mains lokal na variable. At dito x ay katumbas ng 10. At kaya kami ay pagpunta sa i-print ang 10. Kaya siya ay ganap na karapatan. Kami ay pagpunta sa may output ng 100 at 10. Oo? Madla: Kapag nag malloc, ito ang magbunton o stack na [hindi marinig]? PROFESSOR: Kapag ikaw malloc, ikaw ay pagkuha ng memory mula sa magbunton at paglalaan ng mga ito. Kaya na hindi mo na kailangang sa gulo sa anumang ng mga ito. Kaya ako hulaan ang mas malaking takeaway dito ay isang bagay na tinatawag na saklaw. Para sa inyo na nasa ang review session kagabi, usapan natin ang tungkol sa madaling sabi ito. Saklaw tumutukoy sa kung paano at kapag umiiral ang iyong mga variable. O sa loob ng kung ano ang mga frame gawin umiiral ang iyong mga variable. Medyo marami ang mga patakaran ng hinlalaki sa pangkalahatan ay, ang iyong variables-- kung lumikha ka ng mga ito sa loob curly braces-- sila umiiral lamang sa loob ng mga kulot tirante. Kaya halimbawa sa aming pag-andar ng func, makikita mo ang mga dalawang braces. Kung ikaw ay lumilikha anumang bagay sa loob ng mga ito, pagkakataon ay lahat ng ginagawa mo ay paglikha ng isang stack at pagtatago na. Parehong bagay sa main. Na lamang na naka-imbak sa loob ng main. Gayundin nais mong maging napaka, napaka-ingat dito. Dahil din lends saklaw kanyang sarili sa iba't-ibang mga halimbawa. Kaya halimbawa ng isang para sa loop, para sa int i katumbas ng 0. Ako ay mas mababa sa, hindi ko alam, 10. Ako plus plus. At nakuha mo na ang code sa loob ng mga ito, right? Saan ang variable na ito, i, ang tunay na umiiral na lamang? Sa loob lamang ng iyong para sa loop. Kaya taya ko marami sa inyo guys kung marahil ay nakatagpo ng error na ito kapag ikaw ay gumagawa ng mga programa sa iyong psets. Ilan sa inyo guys Sinubukan ninyong gamitin ang i sa labas ng isang para sa loop at nagkaroon ng error? Tulad ng isang unreferenced integer o isang bagay tulad na? Ang dahilan kung bakit nangyari iyon ay dahil dito ikaw ay paglikha ng isang bagay na lamang umiiral sa loob ng iyong para sa loop. At kung susubukan mong gamitin ito, i ay hindi ang tunay na umiiral sa labas nito. Kaya sinasabi talaga ng isang computer, ako hindi alam kung ano ang pinag-uusapan mo. Ang alam ko ay na ang isang ako ay dito, ngunit hindi na ngayon ng mas matagal. Kaya kung ako ay upang lumikha ng isang para sa loop sa loob, di ba? At ako pagpunta upang lumikha ng isa pa, tulad ng int j, at mayroon itong gawin kahit anong. At mayroon kang isang code sa loob ng na loop, mayroon na lamang j dito. Ngunit iyon ay umiiral din sa loob i. At kaya umiiral j lamang sa loob na ito para sa loop, samantalang i umiiral sa buong bagay. Ang bawat malinaw? Parehong bagay sa kondisyon na pahayag kung nais mong lumikha ng kahit ano. Parehong bagay sa habang loop kung nais mong lumikha ng kahit ano. Iyan ay isang bagay na tunay, tunay maingat tungkol sa. Kaya ito ay isang tunay na magandang problema sa kahulugan na nagpakita ito sa dalawang bagay. Unang Ito nagpakita, saklaw. At nagpakita din memory laang-gugulin. Dahil ikaw guys ay dapat malaman na function lumaki paitaas sa stack. At na kapag tumawag ka function, ikaw ay lumilikha ng mahalagang isang bagong salansan ng memory. Iyon ay masyadong iba mula sa ano ang iyong mga mains memory ay. Oo. Whew! Ang bawat OK sa mga iyon? Iyon ay nakalilito. Tunay na mahusay na paksa upang pumunta sa ibabaw, dahil ikaw ay malamang na pagpunta upang makakuha ng ilang mga mapanlinlang mga bagay tulad na sa pagsusulit. Oo. Cool. Kailangan ko bang ilagay ka ng 100 sa isa linya at pagkatapos ay 10 sa isa. Oo, isang magandang. OK, ngayon ka guys ay makakakuha ng ang pagkakataon na maging ang TAS. Makakakuha ka upang sagutin ang lahat ng mga kaibig-ibig mga email na minsan kong makuha. Kaya, Dear Andi, nakikita ko ang tingin ko ng isang bagay ay pagpunta mali sa aking compiler. Ako ay tiyak na ang aking code ay tama, ngunit akong nakakatanggap ng segmentation fault sa bawat oras na patakbuhin ko. Ano ang nangyayari? Mangyaring tulungan, ng maraming mga pag-ibig. Kung nakakuha ka guys isang bagay tulad ng na kung paano ang gagawin mo? Ang mga ito ay talagang napaka-pangkaraniwan katanungan hihilingin namin sa iyo. Ay kung, bibigyan ka namin ng isang sitwasyon, kami ay magbibigay sa amin ang iyong pinakamahusay na hula sa kung ano ang nangyayari sa. Kahit sino ay may isang ulos sa kung ano ang nangyari? Oo? Madla: Maaari dereferenced ang null, ang isang bagay tulad ng pointer ay tumuturo sa isang bagay null. PROFESSOR: Oo, na nais maging isang halimbawa ng kapag na mangyayari. Ngunit kung ano ang mas malaking larawan ng kung ano ang nangyayari sa dito? Madla: Ito ba ay na sinusubukan upang ma-access memory na hindi ka dapat na magkaroon ng access sa? PROFESSOR: Eksakto. Kaya sa tingin ng isang seg fault, isang off limitasyon, pinaghihigpitan na lugar sa memory na hindi mo ay dapat na hawakan. Kaya medyo marami kapag sinusubukan upang index-- tulad halimbawa, na iyong ipinahayag ng isang array mula sa zero sa siyam. Ngunit subukan mong hawakan na ika-10 halaga, wala kang access sa mga iyon. Dahil hindi mo pa ito ipinahayag. At gayon ang iyong computer ay pagpunta na tingnan ang mga na maging tulad ng, uh oh, sinusubukan mong pumunta sa labas ng hangganan ng isang index. Pupunta ako upang bigyan ka ng ng segmentation fault. Mag-isip ng bilang segment, i-right? May dagdag na segment, ang kasalanan ay kapag sinusubukan mong labagin ang isang bagay at hindi mo dapat doon. Segmentation fault ay anumang oras subukan mong pindutin ang mga bagay na hindi mo ay dapat na hawakan. Kaya karaniwang mga halimbawa ay isang index. Siyempre, kung sinusubukan na touch na null, na din sa trabaho pati na rin. Kung ang iyong pointer ay sinusubukang pindutin ang mga bagay na hindi dapat hawakan, na maaari ring gumagana rin. Karamihan ay karaniwang makikita mo makita ang mga ito sa isang array. Ang bawat mabuti? Madla: Kaya kung nais mong upang ma-access ang ika-10 point at mayroong isang limitasyon lamang ng siyam o isang bagay. PROFESSOR: Oo, eksakto. Medyo marami. Cool. Dear Andi. Kaya namin nakuha ang mga kahanga-hangang mga bagay-bagay na tinatawag na uri. Kung Sumanib sort-- bilang namin nakita sa halimbawa na kapag David ay ang buong bagay sa class-- kung bakit, kung ito ay kaya lubhang mas mabilis kaysa alinman sa iba pang mga uri, bakit namin kahit na mag-abala pag-alam ang alinman sa mga iba pang mga uri? Ano ang tanong na ito tunay na humihingi sa inyo? Ano ang tatlong word-- Madla: Ano ang kalakalan-off? PROFESSOR: Eksakto. Iyan ang humihiling sa mga tanong. Ano ang trade-off sa pagitan ng Pagsamahin ang mga uri bersikulo ng anumang iba pang uri? Madla: Dadalhin memory, tama? PROFESSOR: Gusto mo ba ipaliwanag na ang isang bit higit pa? Unang hayaan ipaliwanag ni Pagsamahin store. Paano gumagana ang Pagsamahin ang uri ng trabaho? Madla: Kaya ito ay gumagana sa pamamagitan ng paghati lahat ng bagay sa kalahati at pagkatapos ay ilagay ito nang magkasama at reallocating ito sa pagkakasunud-sunod, tulad ng sa bawat oras na pagsamahin mo ang mga hanay. PROFESSOR: Medyo marami. Kaya ang maaari kong iguhit ito, ngunit gagawin ito kumuha ako ng limang minuto upang gumuhit ito. Hanapin pabalik sa sa seksyon na mga slide kung saan namin sakop Pagsamahin sort. Mismong. Kaya ang paraan Sumanib gawa sort ay ito naghihiwalay bagay sa kalahati, at pagkatapos ay ito lamang ang hitsura sa unang halaga ng lahat ng mga ito at uri ang mga lamang na. Patuloy na lumilikha ng bagong mga array at naglalagay ng mga bagay at mas higit pa sa order. At kaya habang na tunay, tunay mabilis dahil it's-- alam mo, isang binary paghahanap ay n log ng n. Lumilikha ka ng gayon maraming iba't-ibang mga array na kayo gamit ang isang malaking halaga ng memorya. At kaya habang ito ay mas mabilis, ang kalakalan off dito ay na ikaw ay gumagamit ng mas maraming memory. At ito, hint, uri at mga paghahanap ay sakop ng maraming higit pa sa taong ito kaysa sila ay sa nakaraang mga taon. Ikaw guys dapat makita na masasalamin naaayon sa pagsusulit. Gusto ko gastusin tiyak na oras ng pagpunta sa kung ano ang lahat ng iba't ibang uri ay, kung paano binary paghahanap, paano linear paghahanap ng trabaho. Paano marahil pseudocode code ang mga out. Ano ang mga panahon ng pagtakbo? Isang bagay na tulad ng pagtakbo ng oras ay tunay madaling kopyahin papunta sa isang note sheet, right? Ito ay talagang mahirap na kapag ikaw ay sa gitna ng pagsubok at kailangan mong malaman na out. Kopyahin ito pababa. Ginagarantiya ko sa iyo na ikaw ay pagpunta sa kailangan mong malaman na. Ano ang mga trade-off? Pinakamahina ang kaso, pinakamahusay na kaso sitwasyon para sa lahat ng mga ito, tunay na makilala. Oo? Madla: Kailangan ba tayong malaman kung paano code Pagsamahin ang uri? Tulad ng, ang kailangan nating tandaan ang recursive? PROFESSOR: ko lubos na pagdudahan ito, lamang dahil ito ay tulad ng medyo kumplikado. Ngunit ito ay maaaring hindi infeasible kung tayo hilingin sa inyo na gamitin ang pseudocode ito. Oo. Oo, OK, isa pa. Maaaring ito ay may lumapit sa ka huling piraso sa isang bit. Oo? Ang ibig lahat ng tao marinig na? OK, kaya medyo marami ang una sa lahat, kung anong uri ng program ay nagbibigay sa iyo ng isang output na tulad nito? Tandaan tinatanong ka namin na malaman ang tungkol sa ang bagong uri ng tool sa pag-debug? Ano ang pangalan ng mga ito? Valgrind, right Ito ay isang programa kung saan ang maaari kang tumawag na maaaring subaybayan ang lahat ng memory ikaw gamit sa iyong programa at ang nangyayari. Kaya kung mayroon ka ng isang bagay, tulad ng, talagang nawala, 40 bytes sa isang bloke. Malamang na hindi ka pag-alala sa libreng ito. Dahil kung ikaw ay gumagamit ng bytes ng memorya, ay nangangahulugan na na-access mo na ang memory, ngunit hindi mo pa magawang magbakante. Kaya nais mong gumawa ng siguraduhin na ikaw din gamit free-- na ang isang function-- upang magbakante lahat ng memory reallocated pamamagitan malloc. Cool. Kaya ito slide, kukunin ko ito. Ito ay lahat ng dako sa isang pulutong ng mga mga aralin, sa isang pulutong ng mga seksyon na slide. Talagang gusto mong siguraduhin alam mo lamang ang lahat ng ito. Alinman sa iyong tala sheet o kung ikaw gusto kabisaduhin ito, huwag mag-atubiling. Iyan ay tunay, tunay, tunay na mahalaga. Gayundin isang napakahusay na tanong na maaari naming hilingin sa. Bakit ang hitsura Selection sort-- sa Sort-- Pinili ang lahat ng mga runtimes ay n nakalapat. Hindi alintana ng kung paano dumating ang mga listahan upang ka bilang, kaya kung bakit ang Pinili sort-- Bibigyan kita ng isang lalaki 30 pangalawang-isip tungkol sa mga ito. Dahil ang uri ng ito ay nakalilito. Ito ay nagsasangkot ng ilang mga haka-haka-iisip. Bakit ang mga oras run na magkapareho sa pareho ang pinakamasama at pinakamahusay na kaso sitwasyon? Oo? Madla: Dahil Selection sort bawat posisyon o space na ito sa maliit na hanay bagay o ano pa man. Kaya kahit na sa mga pinakamahusay na kaso sitwasyon, kahit na ganap na ito ay pinagsunod-sunod, Gusto pa rin ito kailangang maging katulad, OK, isa. Sa aking unang lugar Mayroon akong isa. At pumunta sa lahat ng mga ito. OK, ang isa ay ang pinakamaliit. At pagkatapos ay babalik muli at ito ay tulad, OK, dalawang ay ang pinakamaliit na ng lahat ng mga bagay-bagay. Ngunit ito pa rin ay upang suriin ang bawat isa. PROFESSOR: Oo. Kaya halimbawa, sabihin lang sabihin kami ay isang listahan, na pinagsunod-sunod, isang array isa sa limang. Ang paraan na ang mga uri Selection ay na ito napupunta sa pamamagitan, ang mga tseke ng mga dalawang. Pagkatapos ito sumusuri ng mga dalawang. At pagkatapos ay ito tseke, at ito tseke. Ito ay nagpapanatili ng paglagay ng tsek ang lahat ng mga ito, hindi alintana kung o hindi tunay na ito ay pinagsunod-sunod. Dahil na lang sa paraan ng paggana ng mga uri. At kaya tanong na ito ay uri ng tulad ng isang haka-haka na katanungan hihingi kami. Saan unang, mong malaman kung ano ang mga uri Pinili ay, kanan, para ma upang sagutin ang mga katanungan. Ikaw ay dapat ma-maunawaan conceptually kung ano ang nangyayari. At pagkatapos ay maaari mo itong mag-apply at mag-isip, OK isipin lang pinakamasama kaso sitwasyon ipaalam. Sila ay ang lahat sa pababang pagkakasunud-sunod. Paano na makakaapekto ito? Paano kung ito ay pataas order? Kung na ito ay inayos? Paano na makakaapekto sa runtimes? At pagkatapos ay ang Pinili uri, mapapansin mo na ito ay hindi tunay na bagay na ito. Dahil naka-check ang lahat ng mga mga halaga alintana ng kung ano ang nangyayari. At kaya mahusay na mga bagay upang tandaan. Bakit ang ilang mga uri ay naiiba mula sa iba at kung paano pinakamahusay at pinakamasamang sitwasyon kaso ay makakaapekto sa lahat ng mga ito. Pupunta ako sa talagang hit sa masama dahil iyon ay sa pagsusulit. Oo. SIGE. May anim na minuto ang natitira. Maaari bang kumuha ng tatlong minuto ng tanong. Maaari ko ring mag-istambay para tulad ng 20 minuto pagkatapos ng section kung gusto mong magtanong rin. Kahit sino ay may tunay maikling ba lamang tanong o haka-haka isyu ang mga ito ay hindi maliwanag ang tungkol sa ngayon? Oo? Madla: Maaari kang makipag-usap sa isang maliit na kaunti tungkol sa bitwise operator? PROFESSOR: Oo. Kaya bitwise operator ay isang bagay na ikaw ay malamang na Maaaring gusto lamang upang ilagay sa iyong mga sheet. Kaya quickly-- hindi ko gusto upang pumunta masyadong maraming malalalim dahil Harvard, sa kanilang mga review session, tinakpan nang mahusay. Bitwise operator, may limang ng mga ito, right? May na ito, kung saan ay x o function, mayroong ampersand, na kung saan ay ang at. Pipe, kung saan ay ang o. At pagkatapos ay mayroon kang dalawang iba't ibang uri ng mga nagbabago. Kung ako magbibigay sa iyo ng dalawang mga halaga, kung Ibinibigay ko sa iyo, i, isa at isa. Ano ang gusto na suriin na? Kung ako magbibigay sa iyo ng tunay at totoo, totoo? Ano ang tungkol sa tama o mali? Still true right,? Dahil mayroong isang o. Susubukan naming malamang na magbigay sa iyo ng mga numero. Kaya tandaan, ang isa ay katumbas ng totoo, zero katumbas false. At maaari naming ibigay sa inyo ang mga bagay na at hilingin sa iyo upang sabihin sa amin kung ano ang mangyayari. Ito ay sumasakop sa Harvard sa loob ng unang 10 minuto ng kanilang mga session ng pag-aaral tunay, tunay mabuti. Kaya nais mong guys na gumawa Siguraduhin na tumingin ka pabalik sa mga iyon. Madla: pisa5 magiging sa pagsusulit? PROFESSOR: No. Huwag kahit na tumingin sa pisa5 ngayon. Mahirap. Lamang ay hindi kahit na abala sa pagtingin sa pisa5. Gayunpaman, tulad ng ilang mga pahiwatig at mga mungkahi, ako Gusto iminumungkahi na simulan mo pisa5 sa oras na ang pagsusulit ay higit sa. Ito ang magiging pinakamahirap linggo, ngunit pagkatapos ay sa iyo guys maipapasa ito sa mga burol ng mga pagulong sa berde at Tuta, at ito ay multa. Makabuluhang klase na ito ay makakakuha ng mas madali matapos ang ika-limang pset. Oras ng opisina: Madla mga araw ng Linggo, Lunes? PROFESSOR: Oo, kaya oras ng opisina ay ang Linggo hanggang Lunes para sa pset. Oras ngayong gabi Office mahalagang ay lamang ay review para sa mga pagsusulit. Kung ang sinuman ay nagnanais na dumating sa at hilingin ang TAS ng isang katanungan, kami ay magiging doon. Kukunin ko siguro isa pang tanong kung ang sinuman ay isang katanungan? Oo? Madla: Kapag handa ka pagtukoy nodes, [hindi marinig] kung sabihin mo node star at pagkatapos ay susunod, awtomatikong gumagana ang computer maunawaan na ikaw ay nagre-refer sa isa pang pointer? PROFESSOR: No. Madla: Mayroon kang relink ito [hindi marinig]? PROFESSOR: Kaya talaga ang struct ng isang node ay, tandaan, ito ay tulad ng sa iyo na lumikha ng mga node at pagkatapos ay mayroon kang isang pointer na tinatawag na susunod. Lahat ng ginagawa mo ay nagkakaroon ang istraktura doon. Ikaw ay may na magtalaga na pointer sa isang lugar. Kaya ang mga computer ay hindi malaman kung ano pa ang ginagawa nito. Ikaw ang tunay na italaga ito kapag ikaw ay lumilikha ng iyong listahan ng naka-link. At iyan ang higit sa lahat pset 5 ay sa. Kaya huwag mag-alala tungkol sa anuman sa mga iyon sa ngayon. Madla: Kaya hindi namin kailangan upang focus masyado sa list link, lamang ang pangkalahatang mga kuru-kuro? PROFESSOR: Just medyo marami stack, queues, mga listahan ng link, mga puno, hash talahanayan. Basta ma-alam kung ano sila. Hindi namin pagpunta upang hilingin gusto mo anumang bagay na tiyak dahil hindi talaga kami ng isang pset na ang sumasakop sa anumang ng na pa. Kaya sa huling dalawang minuto bago Inilagay ko sa iyo ng libreng upang patayin ang quiz. Medyo marami, tulad ng, isipin ang tungkol sa kung paano malayo ka guys ay may dumating sa ganitong klase. Tandaan ako kapag linggo dalawang ng klase, ang ilan sa iyo gumastos ng tatlong oras ang pagsusulat ng tubig. Gaano katagal ito ay magdadala sa iyo guys na magsulat ng tubig ngayon? 30 segundo, marahil? Mag-isip tungkol sa kung magkano ka guys ay may natutunan. CS ay isang tunay, tunay na mahirap na paksa. Walang duda na iyon. Ito ay mahirap, na kung bakit walang pag-aaral ng mga ito. Ito lang ang mahirap. At ito ay ganap fine. At ako ay talagang maipagmamalaki na ay ginawa ang lahat ng ito ito malayo. Psets ay hindi madali. Nagsasagawa sila ng isang pulutong ng mga oras. Ikaw guys, hindi ko hihilingin sa iyo na magsulat ang laro ng 15 o Vigenere sa pset. Hindi na kailangang mag pambihira out lamang tungkol sa na. Lahat ng sinusubok namin dito ay ang masuri ang iyong haka-haka kaalaman, pati na rin gaya ng ilan sa iyong mga pangunahing kasanayan ng coding. Ang pagsubok ay dinisenyo upang maging talagang mahirap. Tulad ng, ito ay dinisenyo para hindi mo na makakuha ng 100. Ito ay dinisenyo para sa iyo na marahil hindi mo magagawang upang matapos sa 75 minuto. At iyon ay lubos na fine. Ako ay isang mag-aaral sa sarili ko. Alam ko, hate ko ito kapag ako maglakad sa labas ng isang pagsusulit ay tulad ng, tae. Iyon ay talagang mahirap. Marahil kung ano ang nangyayari sa happen-- at iyan ay ganap na multa, Sinasabi ko sa iyo guys ngayon. Ang ibig sabihin nito ay ang mga bagay na ay hindi mataas sa lahat. At para sa mga mo na ay nakakakuha ng, tulad ng, threes sa iyong hanay ng problema, na ay hindi nangangahulugan na ikaw ay pagpunta upang makakuha ng isang 60 na bahagdan sa ganitong klase. Kung makakakuha ka ng 60% sa pagsusulit, na hindi ibig mo bang sabihin ay pagpunta sa makakuha ng isang D sa ganitong klase. Nakakakita kami, lalo na ako, para sa sa mga ka sa aking seksyon, Nakikita ko kung paano mahirap mo guys ay nagtatrabaho sa lahat. At patuloy kong track na iyon. Ikaw guys ay multa. Walang institutional memory ng kaligayahan sa dulo ng semestre. Dahil ang lahat ng Harvard bata ay nagsasabi kanilang mga kaibigan, oh, makikita mo fine. Walang sinuman ay nagsasabi sa iyo guys na dito. Kaya ko bang sabihin sa iyo guys na dito. Ikaw guys ay multa. Ako kaya maipagmamalaki ng lahat ng ka guys. Ang pagsubok ay magiging mahirap. Pag-aralan para sa mga ito, at pagkatapos ay lamang itapon. Maghanda upang matuto ng mga bagong bagay. At kumain ng kendi. Hindi namin magkaroon ng maraming kendi. Kumuha ng pagtulog ng isang magandang gabi. Huwag hindi makatulog, dahil na nais maging ganap na hindi maayos. CS ay isang pulutong ng logic. Kung hindi mo makatulog, hindi ka maaaring gumana, at hindi maaaring gumana ang iyong utak. At kukunin ko na dito para sa susunod na 20 minuto kung ang sinuman ay nais na mag-hang sa paligid. Ikaw guys ay pagpunta upang patayin ito. Good luck.