1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSOR: Kaya ang agenda para sa this week, hindi na gaanong stuff. 3 00:00:09,790 --> 00:00:12,801 Ngunit sana tunay, tunay na kapaki-pakinabang at may-katuturan para sa iyo guys sa linggong ito. 4 00:00:12,801 --> 00:00:15,550 Ngunit kami ay pagpunta sa gastusin siguro 15, 20 minuto lamang ang mabilis na pakikipag-usap 5 00:00:15,550 --> 00:00:17,370 tungkol sa listahan ng link. 6 00:00:17,370 --> 00:00:19,694 Mga listahan ng Link ay pagpunta sa maging sakop sa pagsusulit. 7 00:00:19,694 --> 00:00:22,610 Kaya marahil ito ay maging kapaki-pakinabang upang malaman ng kaunti tungkol sa kung ano na. 8 00:00:22,610 --> 00:00:25,210 >> Kami ay pagpunta sa gastusin ang malawak karamihan section ngayon ng 9 00:00:25,210 --> 00:00:27,640 pagpunta sa paglipas ng pagsusulit zero problema sa pagsasanay. 10 00:00:27,640 --> 00:00:30,970 At pagkatapos ay gagamitin namin i-save marahil 20, 30 minuto sa dulo para sa anumang mga matagal na katanungan 11 00:00:30,970 --> 00:00:32,850 kahit sino ay may. 12 00:00:32,850 --> 00:00:34,610 >> At pagkatapos, ang huling limang minuto, pupuntahan ko 13 00:00:34,610 --> 00:00:36,467 upang magbigay ng isang pump up speech para sa mga pagsusulit. 14 00:00:36,467 --> 00:00:38,050 Ikaw guys lahat ng nais na maging dito para sa na. 15 00:00:38,050 --> 00:00:39,591 Dahil ito ay magiging isang magandang panahon. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Lahat ng karapatan, kaya ang ilang mga materyal sa listahan link. 18 00:00:49,230 --> 00:00:52,620 Paano karaniwang mga ito ay nakabalangkas ay may kung ano ang tinatawag na isang node, di ba? 19 00:00:52,620 --> 00:00:54,870 Mayroon kang mga bagay na tinatawag na nodes, na kung saan ay structs. 20 00:00:54,870 --> 00:00:57,360 Kukunin ko pumunta sa paglipas ng kung paano lumikha ng isang node sa susunod na slide. 21 00:00:57,360 --> 00:01:00,680 Ngunit mahalagang lahat ng naka-link mga listahan ay ang data na 22 00:01:00,680 --> 00:01:03,340 ay langkin magkasama sa pamamagitan ng mga payo. 23 00:01:03,340 --> 00:01:09,110 >> At upang ang mga bentahe mayroon kami ng paggamit ng isang listahan ng mga link sa loob, 24 00:01:09,110 --> 00:01:11,280 marahil, tulad ng isang array, ay ang katotohanan na sa isang array 25 00:01:11,280 --> 00:01:15,000 kailangan mo ng isa magkadikit bloke ng memory ang lahat sa parehong lugar, isa 26 00:01:15,000 --> 00:01:16,870 isa, upang ma-magkaroon na. 27 00:01:16,870 --> 00:01:20,200 Sapagkat ang isang listahan ng mga link, maaari mong magkaroon ng random na maliit na piraso ng memory 28 00:01:20,200 --> 00:01:23,020 sa lahat ng dako sa iyong computer langkin sama sa pamamagitan ng mga payo. 29 00:01:23,020 --> 00:01:26,270 >> At sa ganitong paraan mo Maaaring i-access ng impormasyon 30 00:01:26,270 --> 00:01:28,610 na nanggagaling sa isa pagkatapos ng Iba pa, matapos ang iba pang 31 00:01:28,610 --> 00:01:32,720 walang nangangailangan lamang ng isang malaking tipak ng memorya sa iyong computer sa tabi-tabi. 32 00:01:32,720 --> 00:01:35,910 At kaya ito ay isa sa mga pangunahing mga dahilan kung bakit ginagamit namin ang listahan link. 33 00:01:35,910 --> 00:01:40,300 >> Pangalawa, ito ay tunay madali upang magilas palitan ang laki ng listahan link dahil sa array, 34 00:01:40,300 --> 00:01:44,720 kapag ipinapahayag sa iyo ng isang array, mayroon kang isang tiyak na halaga set. 35 00:01:44,720 --> 00:01:47,340 Ipagpalagay natin na Nais kong lumikha ng isang hanay ng mga 10 integer. 36 00:01:47,340 --> 00:01:49,970 Gumawa ako ng isang hanay ng mga 10 integer, at na ang mga ito. 37 00:01:49,970 --> 00:01:50,580 Ito ay 10. 38 00:01:50,580 --> 00:01:52,038 Hindi ko alam kung ano ang gagawin matapos na. 39 00:01:52,038 --> 00:01:53,680 Kung Nais kong gawin itong 11, hindi maaaring gawin ito. 40 00:01:53,680 --> 00:01:55,710 Kung gusto kong gawin itong 9, hindi maaaring gawin ito. 41 00:01:55,710 --> 00:01:59,910 >> Sapagkat sa isang listahan ng link, maaari mong idagdag at tanggalin at ipasok saan ninyo gusto. 42 00:01:59,910 --> 00:02:04,940 Maaari mong dynamic ang laki ng iyong buuin dito, ang iyong mga istraktura ng data. 43 00:02:04,940 --> 00:02:08,370 At na nagbibigay sa amin ng maraming higit idinagdag flexibility 44 00:02:08,370 --> 00:02:11,320 na hindi namin karaniwang Mayroon may array. 45 00:02:11,320 --> 00:02:15,210 >> Sinuman nalilito sa basic istraktura ng kung paano ang isang listahan link ay 46 00:02:15,210 --> 00:02:17,930 o kung bakit namin kailangang gumamit ng isa sa ibabaw ng isang array? 47 00:02:17,930 --> 00:02:20,330 Oo, kami ay pumunta sa paglipas ng sa mga detalye kung paano aktwal na lumikha ng isa. 48 00:02:20,330 --> 00:02:24,121 Ngunit ito lamang ang uri ng ang pangkalahatang kamalayan ngayon. 49 00:02:24,121 --> 00:02:24,620 Cool. 50 00:02:24,620 --> 00:02:28,770 At kaya array ay may langkin sama-sama ng mga kaibig-ibig maliit na bagay 51 00:02:28,770 --> 00:02:29,960 tinatawag na nodes. 52 00:02:29,960 --> 00:02:32,210 Lahat ng node ay ay isang uri ng struct. 53 00:02:32,210 --> 00:02:36,090 Tandaan, ang isang struct ay kung nais mong upang lumikha ng isang tiyak na uri ng variable 54 00:02:36,090 --> 00:02:39,850 sa C na hindi nai umiiral, ikaw, bilang isang programmer, 55 00:02:39,850 --> 00:02:42,030 talaga ay maaaring lumikha ng na ang iyong sarili. 56 00:02:42,030 --> 00:02:46,540 >> At kaya ang ganitong uri ng data istraktura ay tinatawag na isang node, 57 00:02:46,540 --> 00:02:50,770 ay tunay na nilikha sa pamamagitan ng sa amin, na ay hindi umiiral sa loob ng C sa kanyang sarili. 58 00:02:50,770 --> 00:02:53,150 At ang paraan na iyong lumikha ng isa ay mayroon kang 59 00:02:53,150 --> 00:02:57,170 ang header ng typedef struct, na nagsasabi sa mga compiler Ako 60 00:02:57,170 --> 00:02:59,640 tungkol sa upang lumikha ng isang struct. 61 00:02:59,640 --> 00:03:00,830 >> Kami ay pagpunta pangalan ito "node." 62 00:03:00,830 --> 00:03:03,350 At sa loob kami ay pagpunta idedeklara isang variable sa, 63 00:03:03,350 --> 00:03:05,060 na kung saan ay pagpunta sa tindahan ng isang halaga. 64 00:03:05,060 --> 00:03:09,320 At pagkatapos din namin ang pagpunta sa may isang pointer na tinatawag na "susunod" 65 00:03:09,320 --> 00:03:12,090 na ang mga puntos sa susunod na node sa listahan link. 66 00:03:12,090 --> 00:03:14,730 At pagkatapos mong tapusin na off sa pamamagitan ng paulit-ulit na lang node muli kaya 67 00:03:14,730 --> 00:03:17,490 alam ang tagatala, OK iyon ang katapusan ng aking struct. 68 00:03:17,490 --> 00:03:22,540 >> At kaya sa ganitong paraan, hindi namin uri ng paglikha ng isang maganda maliit na array 69 00:03:22,540 --> 00:03:25,450 uri ng bagay na may isang halaga at may isang pointer. 70 00:03:25,450 --> 00:03:27,757 At maaari mong i-link ang mga ito sa lahat ng kasama ang mga payo. 71 00:03:27,757 --> 00:03:30,090 Sa gayon ay maaari silang lahat ay mga uri ay langkin magkasama sa isang kadena. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Cool. 74 00:03:34,162 --> 00:03:35,453 Maaari mong marinig na ang isang bit mas mahusay? 75 00:03:35,453 --> 00:03:36,140 >> Madla: Oo. 76 00:03:36,140 --> 00:03:38,540 >> PROFESSOR: Lahat ng karapatan. 77 00:03:38,540 --> 00:03:44,280 Kaya ang paraan na, tulad ng maaaring makakita sa iyo guys, isang listahan tipikal link ay nakabalangkas 78 00:03:44,280 --> 00:03:45,500 ay mayroon kang isang ulo. 79 00:03:45,500 --> 00:03:49,460 Kayo ay may halaga sa ulo na kung saan ay hindi na nakatutok sa pamamagitan ng anumang iba pang mga pointer. 80 00:03:49,460 --> 00:03:53,177 Ngunit ito ay pagpunta upang ituro sa, o reference, isa pang node. 81 00:03:53,177 --> 00:03:56,510 Node Ang pagkatapos ay pagpunta sa reference ang node matapos na, at iba pa at iba pa 82 00:03:56,510 --> 00:03:59,170 hanggang sa huli mong pindutin sa dulo ng iyong listahan link. 83 00:03:59,170 --> 00:04:00,980 At hindi lamang mo ay magkakaroon ng isang pointer doon. 84 00:04:00,980 --> 00:04:04,659 >> At ito, sa tingin mo, sa isang chain, o kahit na kung anuman sa iyo guys ginawa, hindi ko alam, 85 00:04:04,659 --> 00:04:06,450 tulad ng sa Fruit Mga Loop kapag ikaw ay maliit. 86 00:04:06,450 --> 00:04:08,590 Gusto mo string sama ang mga ito at magsuot ng mga ito sa iyong leeg. 87 00:04:08,590 --> 00:04:09,840 Isipin ito ay ang parehong bagay. 88 00:04:09,840 --> 00:04:12,964 Mayroon kang mga maliit na bagay na iyong Maaari string magkasama sa puntong iyon sa isa 89 00:04:12,964 --> 00:04:15,291 matapos na ito, upang ang isa matapos ito, at iba pa at iba pa 90 00:04:15,291 --> 00:04:17,040 hanggang sa magkaroon ka ng isang kadena ng isang istraktura ng data 91 00:04:17,040 --> 00:04:21,190 na maaari mong gamitin gayunpaman gusto mo. 92 00:04:21,190 --> 00:04:27,370 >> Kaya ang paraan na ito ng gagawin namin karaniwang ipasok o tanggalin 93 00:04:27,370 --> 00:04:30,020 anumang node mula sa isang link list ay ibang-iba 94 00:04:30,020 --> 00:04:31,970 depende sa kung saan na node ay. 95 00:04:31,970 --> 00:04:34,880 Kaya, halimbawa, dahil payo ay laging 96 00:04:34,880 --> 00:04:38,645 tumuturo sa isang tiyak na halaga, kapag tinanggal mo o magsingit ng isang node, 97 00:04:38,645 --> 00:04:41,770 nais mong tiyakin na ang pointer ay ang lahat ng pagturo sa mga tamang bagay. 98 00:04:41,770 --> 00:04:46,200 >> Kaya kung nais mo upang potensyal na ipasok isang bagong node sa ang halaga ng isa 99 00:04:46,200 --> 00:04:48,379 sa loob ng isang pinagsunod-sunod na link list, alam namin ang lahat dito 100 00:04:48,379 --> 00:04:51,170 mula sa larawan na pupuntahan pumunta sa pagitan ng ulo at dalawa, di ba? 101 00:04:51,170 --> 00:04:52,620 Dahil isa na akma sa kanan doon. 102 00:04:52,620 --> 00:04:59,060 Ngunit ang paraan na kung saan nais naming gawin iyon ay sa pamamagitan ng unang dereferencing ang pointer 103 00:04:59,060 --> 00:05:02,160 mula sa ulo at pagpapadala na sa isa. 104 00:05:02,160 --> 00:05:05,040 >> Ngunit kami ay pumasok sa isang problema dito. 105 00:05:05,040 --> 00:05:08,280 Kahit sino ay maaaring makita kung ano ang problema ay kung kami ay upang unang dereference 106 00:05:08,280 --> 00:05:10,090 ang pointer mula sa ulo sa isa? 107 00:05:10,090 --> 00:05:14,202 Ano ang problema ay maaaring tumakbo kami sa kung susubukan namin upang maidagdag ito sa harap ng aming array? 108 00:05:14,202 --> 00:05:15,409 >> Madla: [hindi marinig] 109 00:05:15,409 --> 00:05:16,200 PROFESSOR: Eksakto. 110 00:05:16,200 --> 00:05:20,000 Kaya dito kami ay may isang pointer na isang beses na tumuturo mula sa ulo sa dalawang. 111 00:05:20,000 --> 00:05:23,120 Ngunit kung ikaw ay makakuha ng alisan ng pointer, itinuro mo ito sa isa, 112 00:05:23,120 --> 00:05:26,500 kami ngayon ay walang ideya kung saan pumunta upang makahanap ng dalawang. 113 00:05:26,500 --> 00:05:29,850 Dahil gaya ng sinabi ko dati, mayroon ka ng isang higanteng tipak ng memorya sa iyong computer. 114 00:05:29,850 --> 00:05:31,860 Lahat ng mga nodes ng dati sapalarang kahalong 115 00:05:31,860 --> 00:05:33,350 sa anumang lugar sa iyong computer. 116 00:05:33,350 --> 00:05:36,140 At hindi mo alam kung paano pumunta tungkol sa paghahanap na iyon. 117 00:05:36,140 --> 00:05:40,420 >> At kaya kailangan mong magkaroon ng mga payo tumuturo sa lahat ng nodes sa dulo. 118 00:05:40,420 --> 00:05:42,420 O iba pa na hindi mo sinasadyang dereference isa 119 00:05:42,420 --> 00:05:44,485 walang unang pagtatalaga ang halaga ng una, ikaw ay 120 00:05:44,485 --> 00:05:47,410 lamang ng pagpunta sa mawala lahat ng bagay pagkatapos. 121 00:05:47,410 --> 00:05:49,720 >> Kaya kung ano ang namin ang pagpunta sa gawin ay, gusto mo munang 122 00:05:49,720 --> 00:05:53,270 nais na lumikha ng isang pointer sa ang node na gusto mong ipasok. 123 00:05:53,270 --> 00:05:55,270 Ituro ito sa kung saan mo nais na ipasok ito sa, 124 00:05:55,270 --> 00:05:59,410 at pagkatapos ay pagkatapos mong maaaring punto ulo bumalik sa isa. 125 00:05:59,410 --> 00:06:02,800 >> Ba na magkaroon ng kahulugan sa lahat ng tao dito? 126 00:06:02,800 --> 00:06:03,346 Great. 127 00:06:03,346 --> 00:06:04,720 Isipin ito bilang tulad ng isang kadena. 128 00:06:04,720 --> 00:06:07,420 Kung magdaragdag ka ng chain, ito ay uri ng intuitive 129 00:06:07,420 --> 00:06:10,742 kung paano nais mong pumunta tungkol sa pagpasok na iyon. 130 00:06:10,742 --> 00:06:15,274 >> OK, kaya na ay talagang marami mas maikli kaysa sa naisip ko na magiging, 131 00:06:15,274 --> 00:06:16,690 limang minutong spiel sa mga listahan ng link. 132 00:06:16,690 --> 00:06:19,960 Kaya lang kayo guys may pangunahing ideya ng kung ano na. 133 00:06:19,960 --> 00:06:23,580 >> Narito kami ay may mga agenda para sa quiz zero. 134 00:06:23,580 --> 00:06:24,895 Huwag hayaan na ito manakot iyo. 135 00:06:24,895 --> 00:06:26,270 Alam ko ito ay isang pulutong ng mga impormasyon. 136 00:06:26,270 --> 00:06:27,580 Mukhang masyadong nakakatakot. 137 00:06:27,580 --> 00:06:33,130 Ito din ay isang pulutong ng mga, ako mag-isip, CSC uri ng mga term. 138 00:06:33,130 --> 00:06:37,440 Mga bagay tulad ng mga string ng hexadecimal, payo, dynamic memory alokasyon 139 00:06:37,440 --> 00:06:40,120 ay tunay na nakakatakot na tunog na termino. 140 00:06:40,120 --> 00:06:42,700 >> Ngunit kami ay pagpunta sa masira ang mga ito down, gawin ang ilang mga problema sa pagsasanay 141 00:06:42,700 --> 00:06:44,980 upang ikaw guys lahat ay handa na para sa pagsusulit na ito. 142 00:06:44,980 --> 00:06:47,104 Gaano karaming ng ka guys ay may na nagsimula sa pag-aaral? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, marahil nais mong guys upang simulan ang pagsisimula 145 00:06:53,670 --> 00:06:56,480 sa na, dahil ang mga pagsusulit ay bukas. 146 00:06:56,480 --> 00:06:58,739 O Huwebes para sa ilan sa inyo. 147 00:06:58,739 --> 00:07:01,030 Oo, kaya kami ay pagpunta sa pumunta paglipas ng ilang mga problema sa pagsasanay. 148 00:07:01,030 --> 00:07:04,600 Kung ang lahat ng gusto mong guys na kumuha ng ng isang sheet ng papel, lapis. 149 00:07:04,600 --> 00:07:07,310 Kami ay pagpunta sa gastusin lamang ang Ginagamit ng karamihan ng seksyon ngayon ng 150 00:07:07,310 --> 00:07:11,590 pagpunta sa paglipas ng ilan sa mga iyon kaya ka guys ay may isang ideya ng kung ano ang aasahan sa pagsusulit. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> SIGE. 153 00:07:16,890 --> 00:07:19,730 Ang isang pares ng logistical ang mga detalye pati na rin, para sa kahit sino 154 00:07:19,730 --> 00:07:25,120 na ay hindi pa sa na link doon, kung pumunta ka sa cs50.yale.edu, sa harap 155 00:07:25,120 --> 00:07:28,566 ang pahinang ito ay may isang link na nagsasabing "Tungkol sa Pagsusulit Zero." 156 00:07:28,566 --> 00:07:29,440 Link magdadala sa iyo doon. 157 00:07:29,440 --> 00:07:31,065 Kung hindi mo pa basahin ito, mangyaring basahin ito. 158 00:07:31,065 --> 00:07:34,470 Dahil ito ay nagsasabi sa iyo talagang mahalaga impormasyon tungkol sa mga pagsusulit. 159 00:07:34,470 --> 00:07:37,410 >> Pupunta ako upang hilahin ito out mula sa na ang dahilan lamang, pisikal, 160 00:07:37,410 --> 00:07:40,200 kung hindi ka guys alam kung saan upang pumunta, magkakaroon kami ng problema. 161 00:07:40,200 --> 00:07:44,220 At kaya kung ang iyong huling sa mga tuntunin sa A sa N, pumunta sa auditorium batas ng paaralan. 162 00:07:44,220 --> 00:07:47,500 At kung ang iyong huling nagsisimula sa P hanggang Z, pumunta sa Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 At ito ay nalalapat lamang sa mga mga tao sa seksyon ng Miyerkules. 164 00:07:50,240 --> 00:07:53,420 >> Kung ikaw ay pagkuha ng pagsusulit sa Huwebes, pumunta ka sa SSS 114 165 00:07:53,420 --> 00:07:55,078 kung saan ang iyong lecture kadalasan ay. 166 00:07:55,078 --> 00:07:55,953 Madla: [hindi marinig] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSOR: O to Z, ikaw ay pagpunta upang pumunta sa Davies auditorium. 169 00:08:01,940 --> 00:08:03,273 Pupunta ako upang baguhin iyon, di ba? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, oo, awtomatikong mabigo ka lang. 172 00:08:09,698 --> 00:08:11,753 >> Oh oo, iyan ay sa iyo Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Oo, aking masama. 175 00:08:16,030 --> 00:08:17,610 Oo, O hanggang Z, ikaw ay pagpunta upang pumunta sa Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Pupunta ako upang ayusin ito sa sandaling i-upload ko. 177 00:08:19,140 --> 00:08:20,320 Oo. 178 00:08:20,320 --> 00:08:22,160 >> At pagkatapos ay din ng isang bagay mahalaga sa isip 179 00:08:22,160 --> 00:08:25,290 ay na Miyerkules, kung ikaw ay opisyal na nakatala sa seksyon ng Miyerkules, 180 00:08:25,290 --> 00:08:26,832 dapat kang kumuha ng iyong pagsusulit sa Miyerkules. 181 00:08:26,832 --> 00:08:29,706 At kung ikaw ay naka-enrol sa Huwebes, dapat kang kumuha ng iyong pagsusulit Huwebes. 182 00:08:29,706 --> 00:08:31,000 At ito ay sa oras ng klase. 183 00:08:31,000 --> 00:08:35,970 Saan, sa tingin ko ito ay tulad ng 1:00 hanggang 02:15 sa Miyerkoles at 2:30-03:45 184 00:08:35,970 --> 00:08:37,220 sa Huwebes. 185 00:08:37,220 --> 00:08:41,710 >> Kung ikaw ay may isang hindi mapagkakasundo salungatan, Paliwanag ni Dean ay ang tanging bagay, 186 00:08:41,710 --> 00:08:43,030 sa kasamaang-palad, maaari naming gawin. 187 00:08:43,030 --> 00:08:45,560 Dahil kami ay may isang Ginagamit ng karamihan ng mga kahilingan 188 00:08:45,560 --> 00:08:47,970 upang lumipat mula Miyerkules hanggang Huwebes. 189 00:08:47,970 --> 00:08:51,265 Aling hindi namin maaaring tanggapin maliban kung kami ay may kahilingan ng Dean. 190 00:08:51,265 --> 00:08:52,650 >> SIGE. 191 00:08:52,650 --> 00:08:57,000 Kaya bago tayo magsimula sa isang pares ng mga problema sa pagsasanay, 192 00:08:57,000 --> 00:09:00,540 Lamang ako ng pagpunta sa pumunta sa ibabaw Helpful tips Andy para sa tagumpay. 193 00:09:00,540 --> 00:09:04,140 Ikaw lalaki, kapag nag-aral, na tunay na nais na pagsasanay sa pagsulat ng code sa pamamagitan ng kamay. 194 00:09:04,140 --> 00:09:07,050 Ang unang pagkakataon ko kailanman kinuha ng isang CS pagsusulit, ako ay hindi 195 00:09:07,050 --> 00:09:09,960 pagsasanay sa pagsulat code sa pamamagitan ng kamay bago at ito ay lubhang 196 00:09:09,960 --> 00:09:11,890 kagulat-gulat sa kung gaano kahirap. 197 00:09:11,890 --> 00:09:16,125 >> Kapag kayo guys hindi makakuha ng sa ugali ng pag-type ang lahat ng bagay, 198 00:09:16,125 --> 00:09:20,260 ito ay dumating natural na natural ang pagiging maaaring may autocompleted 199 00:09:20,260 --> 00:09:22,015 braket at semicolons doon. 200 00:09:22,015 --> 00:09:23,890 Kapag nagsusulat ka ng mga ito sa labas sa pamamagitan ng kamay, minsan ito ay 201 00:09:23,890 --> 00:09:27,100 tunay, tunay madaling makalimutan ng isang tuldok-kuwit, o kalimutan na isara ang isang bracket, 202 00:09:27,100 --> 00:09:30,970 o kalimutan na isara ang isang colon, o isang bagay tulad na. 203 00:09:30,970 --> 00:09:34,322 >> Kaya kapag ikaw ay sumulat ng code sa pamamagitan ng kamay, ito ay isang napaka-ibang pakiramdam. 204 00:09:34,322 --> 00:09:37,280 Kaya ikaw lalaki, kapag ikaw ay nagtatrabaho sa pamamagitan ng ilan sa mga problema sa pagsasanay, 205 00:09:37,280 --> 00:09:38,904 ito ay mabuti upang talagang practice ngayon. 206 00:09:38,904 --> 00:09:41,770 O bukas, sa palagay ko, kung ikaw ay pagkuha ng pagsusulit sa Huwebes. 207 00:09:41,770 --> 00:09:45,280 >> Pangalawa, ang huling namin, tulad ng, walong taon na halaga ng pagsasanay 208 00:09:45,280 --> 00:09:47,070 pagsusulit online. 209 00:09:47,070 --> 00:09:50,759 Ang pagsusulit na ito taon ay marahil ay tunay, tunay na katulad ng lahat ng mga ito. 210 00:09:50,759 --> 00:09:51,800 Ang mga ito ang lahat ng halos katulad na. 211 00:09:51,800 --> 00:09:54,220 Ikaw uri ng makakuha ng sa style ng mga uri ng mga katanungan 212 00:09:54,220 --> 00:09:57,250 hingin natin, ang uri ng mga function na gagamitin namin isulat ito sa, 213 00:09:57,250 --> 00:09:58,580 at iba pa, at iba pa. 214 00:09:58,580 --> 00:10:01,980 >> Kaya kumuha ng mga pagsusulit pagsasagawa, lalo na sa ilalim hadlang sa oras. 215 00:10:01,980 --> 00:10:05,390 75 minuto para gawin ang mga pagsusulit ay hindi isang pulutong ng mga halaga ng oras. 216 00:10:05,390 --> 00:10:07,254 Ito ay napaka, napaka-haba. 217 00:10:07,254 --> 00:10:09,670 At kaya mo guys talagang gusto tiyakin na ikaw guys ay 218 00:10:09,670 --> 00:10:11,990 sa ugali ng pagsulat mabilis na code sa pamamagitan ng kamay. 219 00:10:11,990 --> 00:10:15,070 Dahil hindi mo nais ang unang oras upang makita ang isang pagsusulit ng na haba 220 00:10:15,070 --> 00:10:16,560 maging sa iyong pagsusulit. 221 00:10:16,560 --> 00:10:20,540 Gusto mo talagang guys tiyakin na pagsasanay sa simula pa. 222 00:10:20,540 --> 00:10:24,550 >> Ika-apat, gusto mong suriin ang mga lecture at seksyon slide. 223 00:10:24,550 --> 00:10:25,980 Hindi mo na kailangang kabisaduhin bagay. 224 00:10:25,980 --> 00:10:30,430 Sa totoo lang, ang lahat ay pinapayagan ng isang isang sheet ng puting papel ng mga tala, 225 00:10:30,430 --> 00:10:31,090 harap at likod. 226 00:10:31,090 --> 00:10:32,920 Ikaw guys ay maaaring i-type o isulat. 227 00:10:32,920 --> 00:10:37,070 Kung nakita mo ang iyong sarili nangangailangan kabisaduhin anumang bagay, ilagay ito sa na sheet. 228 00:10:37,070 --> 00:10:40,810 >> Ginagarantiya ko sa iyo, hindi mo nais na natigil sa gitna ng na quiz 229 00:10:40,810 --> 00:10:43,890 pagiging tulad ng, oh oo, ano ang runtime ng uri na ito kumpara na uri. 230 00:10:43,890 --> 00:10:46,490 Basta ilagay down na ito at kopyahin ang mga ito diretso mula sa iyong note sheet. 231 00:10:46,490 --> 00:10:50,420 Pagkatapos ay maaari mong aktwal na gamitin lamang ang iyong utak upang isipin ang tungkol sa mga problema 232 00:10:50,420 --> 00:10:52,190 sa halip ng pagkakaroon upang isipin ang mga katotohanan. 233 00:10:52,190 --> 00:10:55,250 At kaya talagang samantalahin ng anumang mga detalye niche 234 00:10:55,250 --> 00:11:00,140 na sa tingin mo kailangan mong kabisaduhin, gumawa ng mapa down na ito sa review sheet. 235 00:11:00,140 --> 00:11:02,680 >> OK, ang anumang mga katanungan logistically tungkol sa quiz 236 00:11:02,680 --> 00:11:05,510 bago namin simulan ang ilang mga problema quiz pagsasanay? 237 00:11:05,510 --> 00:11:06,416 Oo? 238 00:11:06,416 --> 00:11:10,040 >> Madla: Hindi ko pa nagkaroon ng isang pagkakataon upang tumingin sa mga pagsusulit [hindi marinig] 239 00:11:10,040 --> 00:11:11,757 ngunit ito ay pagpunta sa maging application nakararami, 240 00:11:11,757 --> 00:11:14,090 o ay may-alis din na, tulad ng, kaalaman katanungan? 241 00:11:14,090 --> 00:11:14,940 >> PROFESSOR: Ito ay isang pulutong. 242 00:11:14,940 --> 00:11:16,731 Kaya, ang paraan na ako Gusto inilarawan ang pagsusulit 243 00:11:16,731 --> 00:11:18,810 is-- ko magkasama ilang mga problema sa pagsasanay 244 00:11:18,810 --> 00:11:20,960 na kinuha ko mula sa lahat ng mga quizzes. 245 00:11:20,960 --> 00:11:25,210 Ngunit makikita mo na mayroong dalawang pangunahing mga uri ng mga katanungan hihilingin namin sa iyo. 246 00:11:25,210 --> 00:11:28,750 >> Ang isa ay isang mababang mga detalye ng mga bagay-bagay na antas. 247 00:11:28,750 --> 00:11:31,720 Bibigyan ka namin ng isang maliit na bahagi ng code at sabihin mo, ay may isang error dito? 248 00:11:31,720 --> 00:11:33,110 Ano ang gusto ma-print out dito? 249 00:11:33,110 --> 00:11:35,980 Ano ang gumawa ng code na ito, at iba pa. 250 00:11:35,980 --> 00:11:38,710 Kaya detalye ng impormasyon mababang antas. 251 00:11:38,710 --> 00:11:42,700 >> At sa tingnan ang bahagi, kami ay may masyadong katanungan kaalaman na nakabatay sa mataas na antas. 252 00:11:42,700 --> 00:11:45,190 Maaari mong ipaliwanag kung ano ang pagkakaiba sa pagitan ng isang binary paghahanap 253 00:11:45,190 --> 00:11:46,148 at isang linear paghahanap ay? 254 00:11:46,148 --> 00:11:48,500 Bakit gusto nating gamitin ang isa sa mga iba? 255 00:11:48,500 --> 00:11:49,960 Marahil, kung ano ang GDB? 256 00:11:49,960 --> 00:11:51,560 Bakit gusto naming gamitin ang GDB? 257 00:11:51,560 --> 00:11:54,590 Mas mataas na level, mas pangunahing unawa katanungan. 258 00:11:54,590 --> 00:11:58,240 Kaya makikita mo ang isang halo ng ang dalawa sa kanila sa iyong pagsusulit. 259 00:11:58,240 --> 00:12:01,462 >> Ano pa bago tayo tumuloy tuwid sa mga ito? 260 00:12:01,462 --> 00:12:02,879 SIGE. 261 00:12:02,879 --> 00:12:03,670 Madla: Isa pa. 262 00:12:03,670 --> 00:12:04,030 PROFESSOR: Oh, isa pa. 263 00:12:04,030 --> 00:12:04,340 Sorry. 264 00:12:04,340 --> 00:12:05,631 >> Madla: Oo, ito ay ang lahat ng karapatan. 265 00:12:05,631 --> 00:12:10,140 Kaya ikaw ay sinasabi ng 75 minuto ay masyadong maikli, tulad ng ito ay malamang na hindi 266 00:12:10,140 --> 00:12:11,640 na kami matapos? 267 00:12:11,640 --> 00:12:13,571 O, tulad ng, 75 minuto ay eksakto ng mas maraming oras 268 00:12:13,571 --> 00:12:15,700 tulad ng gagawin kailangan namin kung kami ay naaangkop handa? 269 00:12:15,700 --> 00:12:17,450 PROFESSOR: OK, kaya ang pagsusulit ay mahirap na. 270 00:12:17,450 --> 00:12:19,550 Ito ay talagang mahirap. 271 00:12:19,550 --> 00:12:21,092 Matatagpuan mo ang iyong sarili sa maikling oras. 272 00:12:21,092 --> 00:12:24,341 Marahil ka ng pagpunta sa hit, tulad ng 10, 15 minuto upang pumunta, at sa pagiging tulad ng, tae. 273 00:12:24,341 --> 00:12:25,520 Kaya marami akong may kaliwa upang gawin. 274 00:12:25,520 --> 00:12:26,520 At iyon ay lubos na fine. 275 00:12:26,520 --> 00:12:28,740 Ang bawat tao'y ng pagpunta sa pakiramdam ang parehong paraan. 276 00:12:28,740 --> 00:12:31,074 >> Basta napaka-alam ng kung gaano karaming oras ang mayroon ka. 277 00:12:31,074 --> 00:12:33,490 At kaya na ang dahilan kung bakit sinasabi ko sa inyo guys gawin ang mga pagsusulit ng pagsasanay. 278 00:12:33,490 --> 00:12:36,672 Dahil ito ay talagang nagbibigay ng isang mahusay na kahulugan ng kung ano ang pagsusulit ay magiging tulad ng. 279 00:12:36,672 --> 00:12:39,130 Kaya kung nakita mo ang iyong sarili na maaaring natapos ang pagsasanay 280 00:12:39,130 --> 00:12:41,671 quizzes sa isang mahusay na halaga ng oras, maaari mong huwaran ang iyong sarili na rin, 281 00:12:41,671 --> 00:12:45,695 pagkatapos ay hindi ka magkakaroon ng problema sa Miyerkules o Huwebes. 282 00:12:45,695 --> 00:12:46,575 >> Cool. 283 00:12:46,575 --> 00:12:49,200 Kaya kung ang lahat wants-- kong isipin karamihan sa mga tao ay may mga sheet ng papel 284 00:12:49,200 --> 00:12:49,810 out na. 285 00:12:49,810 --> 00:12:52,604 Pupunta ako sa mahalagang lamang magbibigay sa iyo ng mga halimbawang tanong, 286 00:12:52,604 --> 00:12:54,520 magbibigay sa iyo ng isang lalaki, tulad ng, ang isang ilang minuto upang gawin ito. 287 00:12:54,520 --> 00:12:59,610 At kami ay pumunta sa bilang isang klase kung ano ang mga sagot sa mga ito ay. 288 00:12:59,610 --> 00:13:02,860 >> Kaya ito ay isang napaka-pangkaraniwang maagang tanong bibigyan namin ng 289 00:13:02,860 --> 00:13:06,720 hilingin sa iyo, lamang sa pag-convert numero sa pagitan ng iba't-ibang naka-base. 290 00:13:06,720 --> 00:13:09,070 Binary, bilang ka guys maaari pagpapabalik, ay base sa dalawang. 291 00:13:09,070 --> 00:13:12,470 Decimal ay base 10, o kung ano ang aming bilang mga tao ay karaniwang bigyan ng kahulugan. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal ay base 16, na kung saan ay zero sa pamamagitan ng siyam pati na rin ang A sa pamamagitan ng F. 293 00:13:17,120 --> 00:13:19,990 >> Kaya may apat na mga numero Ako humihingi sa inyo guys ang pag-convert dito. 294 00:13:19,990 --> 00:13:23,909 Bibigyan kita ng gusto mo, tatlo hanggang apat na minuto upang isipin pamamagitan ng kung paano 295 00:13:23,909 --> 00:13:25,200 Gusto naming pumunta tungkol sa paglutas ng mga ito. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> Madla: Sigurado namin pinapayagan calculators? 298 00:13:35,710 --> 00:13:37,630 >> PROFESSOR: Ikaw ay hindi Kailangan calculators, oo. 299 00:13:37,630 --> 00:13:42,420 Sa tingin ko ang pangunahing karagdagan, sa tingin ko, ay lahat ng ka guys ay hiningi na gawin. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> At kaya lang ako uri ng ay may kahulugan ng kapag ang lahat ay tapos na, maghanap, 302 00:14:45,070 --> 00:14:47,429 alon, hindi ko alam, ngiti, Tumingin masaya kung tapos ka na. 303 00:14:47,429 --> 00:14:47,929 Oo. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Siguro ng ilang mga minuto. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, dalhin natin ito sa ipaalam. 308 00:18:29,600 --> 00:18:31,580 Sadya Pupunta ako sa magbibigay sa iyo ng guys ng mas kaunting oras 309 00:18:31,580 --> 00:18:33,760 kaysa sa marahil na kailangan na gawin ang ilan sa mga problemang ito, 310 00:18:33,760 --> 00:18:37,124 lamang dahil gusto ko upang matiyak na ang makuha namin sa pamamagitan ng grupo ng mga problema. 311 00:18:37,124 --> 00:18:39,290 Kaya huwag mag-alala kung hindi mo ginawa magkakaroon ng isang pagkakataon upang matapos. 312 00:18:39,290 --> 00:18:43,770 Ganap OK hangga't mayroon kang isang ideya ng kung paano pumunta tungkol sa mga ito. 313 00:18:43,770 --> 00:18:45,850 Kaya sabihin magpatuloy at gawin ang unang isa. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Kaya una, ay kahit sino gusto mong sabihin sa akin sa binary, kung ano ang ginagawa ng bawat isa sa mga digit 316 00:18:57,870 --> 00:19:00,484 kumakatawan sa mga tuntunin ng kanilang mga halaga? 317 00:19:00,484 --> 00:19:01,250 Oo? 318 00:19:01,250 --> 00:19:03,349 >> Madla: Dalawang sa kapangyarihan zero, dalawa sa isa. 319 00:19:03,349 --> 00:19:04,140 PROFESSOR: Eksakto. 320 00:19:04,140 --> 00:19:04,640 So. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Right, kaya kadalasan kapag kami sa base 10 323 00:19:16,430 --> 00:19:20,580 lahat ng mga ito ay kumakatawan ay, tulad ng, 10 sa ibaba ng zero, di ba? 324 00:19:20,580 --> 00:19:21,810 Iyan ay lugar ng iyong isang tao. 325 00:19:21,810 --> 00:19:24,520 Ang lahat ng iyong lugar 10 ay ay 10 sa kapangyarihan ng isa. 326 00:19:24,520 --> 00:19:26,600 Lugar mo 100 ay 10 sa kapangyarihan ng dalawa. 327 00:19:26,600 --> 00:19:29,570 >> Anuman ang base ikaw ay nasa ay pagpunta kinalaman sa ang eksaktong parehong bagay, 328 00:19:29,570 --> 00:19:31,480 sa pamamagitan lamang ng isang iba't ibang mga base. 329 00:19:31,480 --> 00:19:34,130 Kaya binary, lahat ng iyon ay ay base sa dalawang. 330 00:19:34,130 --> 00:19:37,110 Ikaw ay pagpunta upang i-convert ang lahat ng mga digits sa dalawang sa kahit anong power 331 00:19:37,110 --> 00:19:38,190 ng na digit. 332 00:19:38,190 --> 00:19:41,450 At kaya sa puntong ito, kami ay ay maaaring magkaroon ng isang mas madaling paraan 333 00:19:41,450 --> 00:19:43,800 ng kawalan ng kakayahang magdagdag ng hanggang o sabihin sa ilang ang lahat ng mga numero sa mga order 334 00:19:43,800 --> 00:19:46,010 na-convert sa base 10. 335 00:19:46,010 --> 00:19:50,362 >> Kaya ang sinuman nais na sabihin sa akin kung ano ang sagot sa unang isa ay sa base ng sampung? 336 00:19:50,362 --> 00:19:51,674 >> Madla: Two, [hindi marinig] 337 00:19:51,674 --> 00:19:52,340 PROFESSOR: Oo. 338 00:19:52,340 --> 00:19:53,230 Madla: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSOR: 42, doon ka pumunta. 340 00:19:56,560 --> 00:20:00,660 Kaya ang paraan namin nakuha ang sagot na ito ay sa pamamagitan ng paggawa ng dalawang ang unang, na kung saan ay dalawang. 341 00:20:00,660 --> 00:20:02,760 Plus dalawang ang ikatlo, na kung saan ay walong. 342 00:20:02,760 --> 00:20:07,590 Plus dalawang sa ikalimang, na ay kahit na ano ang natira. 343 00:20:07,590 --> 00:20:09,390 Sum up ang mga ito at ito ay 42. 344 00:20:09,390 --> 00:20:12,000 >> Nalilito sa kung paano namin nakuha na ang sinoman? 345 00:20:12,000 --> 00:20:15,630 Kaya pangunahing karagdagan, tulad ng Sinabi ko, ikaw ay dapat na OK. 346 00:20:15,630 --> 00:20:17,410 Kung hindi, well, maaari kaming magsagawa ng na masyadong. 347 00:20:17,410 --> 00:20:18,720 Ngunit iyon lamang ang lahat ng karapatan. 348 00:20:18,720 --> 00:20:20,560 Cool. 349 00:20:20,560 --> 00:20:25,570 >> Nais ba ng sinuman upang bigyan ako ang sagot sa ikalawang isa pati na rin? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Good. 352 00:20:27,600 --> 00:20:30,044 Kahit sino ay nalilito sa kung paano nakuha namin na mag? 353 00:20:30,044 --> 00:20:31,960 Cool, kukunin ko ang mga sagot sa susunod na slide. 354 00:20:31,960 --> 00:20:34,440 Kaya huwag mag-alala kung ikaw kailangan ninyong kopyahin ito pababa. 355 00:20:34,440 --> 00:20:38,860 >> OK, kaya hexadecimal ay nangangailangan ng kaunting kasanayan. 356 00:20:38,860 --> 00:20:41,840 ngunit ako pagpunta upang ipakita sa iyo guys isang shortcut para sa kung paano gawin ito. 357 00:20:41,840 --> 00:20:44,800 Kaya hexadecimal, tulad ng sa iyo tandaan, ang lahat ng ito ay magiging 16. 358 00:20:44,800 --> 00:20:48,920 At dahil kami bilang hindi tunay na mga kawani na tao magkaroon ng 16 mga numero upang kumatawan na, 359 00:20:48,920 --> 00:20:56,940 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, 360 00:20:56,940 --> 00:20:58,630 na kung saan ay sa susunod na anim na mga halaga. 361 00:20:58,630 --> 00:21:03,040 >> At kaya ang pinakamadaling paraan upang pumunta mula sa anumang binary numero sa hexadecimal 362 00:21:03,040 --> 00:21:05,350 ay upang basagin ang mga ito hanggang sa halves. 363 00:21:05,350 --> 00:21:10,042 At sa gayon ang anumang binary number ibibigay namin ikaw ay malamang na magkaroon ng walong digit. 364 00:21:10,042 --> 00:21:11,750 Maaari mo lamang masira ang mga ito hanggang sa gitna. 365 00:21:11,750 --> 00:21:17,460 >> Kaya ang unang one-- isa isa, isa isa, isa, isa, isa isa. 366 00:21:17,460 --> 00:21:21,340 Uri ng tingin ito up, alam mo, gumuhit isang slash o isang kuwit sa pagitan ng mga ito. 367 00:21:21,340 --> 00:21:23,800 At maaari mo lamang i-convert direkta anuman 368 00:21:23,800 --> 00:21:26,670 ito ay upang ang unang bilang ng hexadecimal, 369 00:21:26,670 --> 00:21:29,880 at kahit na ano dito ay upang ang ikalawang ng hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Kaya tandaan mula sa mga karaniwang notasyon, ano ang mga halaga hexadecimal magsimula sa? 371 00:21:37,584 --> 00:21:38,460 >> Madla: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESSOR: 0 x. 373 00:21:39,270 --> 00:21:45,210 Kaya alam namin na anumang oras hinihiling namin sa iyo ang pag-convert ng anumang numero sa hexadecimal, 374 00:21:45,210 --> 00:21:48,230 o anumang oras mo makita ang anumang number na nagsisimula sa 0x, 375 00:21:48,230 --> 00:21:50,230 Alam mo na ito ay ang halaga ng hexadecimal. 376 00:21:50,230 --> 00:21:54,160 >> At pagkatapos ikaw ay pagpunta sa hilingin sa iyo na matukoy kung ano ang mga ito ng dalawang mga digit ay. 377 00:21:54,160 --> 00:21:59,690 At ang paraan mo na, tallying up na ang kalahati at tallying up na kalahati. 378 00:21:59,690 --> 00:22:02,870 Kaya sa halimbawang ito, kung ano ang Gusto ng isa, isa, isa, isa maging? 379 00:22:02,870 --> 00:22:04,890 Ano ang halaga na nais na maging? 380 00:22:04,890 --> 00:22:06,040 Na gusto ay F, di ba? 381 00:22:06,040 --> 00:22:08,050 Na gusto maging 15. 382 00:22:08,050 --> 00:22:11,780 >> Kaya ito ay magiging F. One, isa, isa, isa dito ay din 383 00:22:11,780 --> 00:22:21,270 F. Kaya isa, isa, isa, isa, isa, isa, isa, isa sa hexadecimal, ang lahat ng ito ay ay 0xFF. 384 00:22:21,270 --> 00:22:25,350 Dahil ito sa kalahati kinakatawan F, ang halaga ng 15, 385 00:22:25,350 --> 00:22:27,331 at ito half kinakatawan F, ang halaga 15. 386 00:22:27,331 --> 00:22:29,456 Dahil tandaan, hindi namin pagbibilang mula sa zero sa siyam. 387 00:22:29,456 --> 00:22:35,290 A ay tulad ng 10, B ay tulad ng 11, F ay 15. 388 00:22:35,290 --> 00:22:41,690 >> Ba na magkaroon ng kahulugan sa lahat ng tao kung paano nakuha namin mula sa binary na hexadecimal? 389 00:22:41,690 --> 00:22:44,595 >> Madla: At kaya kung paano makuha namin ang ginawa 15 mula sa isa, isa, isa, isa? 390 00:22:44,595 --> 00:22:46,220 PROFESSOR: Oo, ito ay binary, di ba? 391 00:22:46,220 --> 00:22:48,090 Isipin ito ay lamang ng isang binary number. 392 00:22:48,090 --> 00:22:50,792 Kaya ikaw ay may dalawang sa zeroth, na kung saan ay isa. 393 00:22:50,792 --> 00:22:51,500 Madla: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Kaya ang kabuuang ito sa iyo lamang out. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSOR: Oo, at pagkatapos ay total na ikaw lamang out. 396 00:22:52,670 --> 00:22:53,380 Iyan na ang lahat ng ito ay. 397 00:22:53,380 --> 00:22:54,890 >> Madla: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESSOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> Madla: Kaya pumunta ka mula sa binary sa decimal na hexadecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESSOR: Iyan ang pinakamadaling paraan upang gawin ito, oo. 401 00:23:04,590 --> 00:23:11,390 Hindi ka pagpunta sa decimal dahil decimal may zero sa siyam lamang. 402 00:23:11,390 --> 00:23:13,410 Humihingi kami lamang ang uri ng paghahati ito up sa dalawa. 403 00:23:13,410 --> 00:23:15,201 >> Madla: [hindi marinig] gamit decimal upang mahanap 404 00:23:15,201 --> 00:23:17,809 kung ano ito ay tumutugma up sa sa hexadecimal. 405 00:23:17,809 --> 00:23:20,100 PROFESSOR: Ibig kong sabihin, ikaw ay tallying up gamit pangunahing matematika. 406 00:23:20,100 --> 00:23:20,725 Madla: Oo. 407 00:23:20,725 --> 00:23:22,300 PROFESSOR: Oo, medyo marami. 408 00:23:22,300 --> 00:23:23,630 Ito ay isang bit nakalilito. 409 00:23:23,630 --> 00:23:26,410 Ngunit lamang malaman na ikaw ay maaaring hatiin up anuman 410 00:23:26,410 --> 00:23:28,160 ang halaga na ito ay sa lamang halves. 411 00:23:28,160 --> 00:23:29,570 Hanapin, kung ano ito sa binary? 412 00:23:29,570 --> 00:23:30,610 Ano ang numero ay na? 413 00:23:30,610 --> 00:23:33,270 Ito ay magiging isang bagay mula sa zero sa F. 414 00:23:33,270 --> 00:23:35,722 >> Dito rin ay pagpunta sa maging isang bagay mula sa zero sa F. 415 00:23:35,722 --> 00:23:37,722 At pagkatapos ay maaari mo lamang ilagay mga dalawang may karapatan. 416 00:23:37,722 --> 00:23:38,263 >> Madla: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESSOR: Yep. 418 00:23:38,910 --> 00:23:39,410 SIGE. 419 00:23:39,410 --> 00:23:42,320 Kaya mo guys nais na subukan ang kasunod pagkatapos? 420 00:23:42,320 --> 00:23:49,601 Zero, isa, zero isa, isa, zero, isa zero. 421 00:23:49,601 --> 00:23:52,350 Bibigyan kita ng isang lalaki tulad ng 30 segundo, dahil ikaw marahil ay hindi alam 422 00:23:52,350 --> 00:23:53,850 ang bilis ng kamay sa kung paano gawin ito nang mas maaga. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, gusto sinuman upang makakuha ng isang ito ng isang shot? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 PROFESSOR: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Good. 429 00:24:31,340 --> 00:24:37,050 Kaya ito dito ay be-- gusto mong upang sabihin sa amin kung paano mo nakuha na? 430 00:24:37,050 --> 00:24:38,920 Una, kung paano mo nakuha ang limang? 431 00:24:38,920 --> 00:24:42,030 >> Madla: Dahil zero, isa, zero, ang isa ay lima. 432 00:24:42,030 --> 00:24:45,170 >> PROFESSOR: ba maintindihan lahat ng tao bakit zero, isa, zero, ang isa ay limang? 433 00:24:45,170 --> 00:24:46,260 Nakuha mo na ang isa dito. 434 00:24:46,260 --> 00:24:48,010 Wala kayong dapat sa dalawang sa unang. 435 00:24:48,010 --> 00:24:50,300 Sa dalawang sa ikalawang, mo magkaroon ng isa, na kung saan ay apat. 436 00:24:50,300 --> 00:24:52,600 Kaya mong idagdag ang mga apat na plus ang isa, mayroon ka ng limang. 437 00:24:52,600 --> 00:24:53,600 Ang bawat mabuti? 438 00:24:53,600 --> 00:24:54,100 SIGE. 439 00:24:54,100 --> 00:24:56,570 At pagkatapos ay kung ano ito at bakit? 440 00:24:56,570 --> 00:24:58,350 Anong numero ang A tumutugma sa? 441 00:24:58,350 --> 00:24:59,350 >> Madla: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESSOR: At kung ano ito sa base ng dalawang? 443 00:25:00,976 --> 00:25:01,850 Madla: [hindi marinig] 444 00:25:01,850 --> 00:25:03,010 PROFESSOR: Eksakto. 445 00:25:03,010 --> 00:25:06,370 Kaya ito pangalawang halaga dito ay 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Ang bawat mabuting sa kung paano i-convert? 447 00:25:08,410 --> 00:25:10,770 Ito ay isang pulutong mas simple kaysa sa tingin mo ito ay. 448 00:25:10,770 --> 00:25:13,330 Gusto ko lang tiyakin alam mo helpful tips 449 00:25:13,330 --> 00:25:14,950 at trick para sa kung paano gawin iyon. 450 00:25:14,950 --> 00:25:18,432 >> Madla: Bakit maaaring hatiin mo lamang ito sa gitna na gusto? 451 00:25:18,432 --> 00:25:21,390 Basta gusto, OK, lamang ako pagpunta sa pag-aalaga tungkol sa mga unang [hindi marinig]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESSOR: Dahil na talagang ang paraan hexadecimal halaga ay kinakatawan. 453 00:25:24,240 --> 00:25:26,890 0 x, na aktwal na nangangahulugan wala na iba sa na nagsasabi sa iyo 454 00:25:26,890 --> 00:25:28,710 na ito ay isang bilang hexadecimal. 455 00:25:28,710 --> 00:25:31,580 At ito ay palaging ay kumakatawan ang unang apat na digit. 456 00:25:31,580 --> 00:25:34,330 At ito ay palaging ay kumakatawan ang huling apat na numero. 457 00:25:34,330 --> 00:25:37,835 At kaya ito ng dalawang mga digit lamang tumutugma sa iba't ibang mga bits. 458 00:25:37,835 --> 00:25:39,200 >> Madla: Kaya kami ng lagi 459 00:25:39,200 --> 00:25:41,830 >> PROFESSOR: Lagi kang pagpunta upang makakuha ng walong halaga bits. 460 00:25:41,830 --> 00:25:44,580 >> Madla: Ay na gusto lamang ng isang bagay dito o na ang isang bagay sa lahat ng dako? 461 00:25:44,580 --> 00:25:46,883 PROFESSOR: Iyan na lamang ng isang bagay sa mga computer, yep. 462 00:25:46,883 --> 00:25:47,424 Madla: OK. 463 00:25:47,424 --> 00:25:48,240 Kahanga-hanga. 464 00:25:48,240 --> 00:25:51,290 >> PROFESSOR: Gayundin, para sa halimbawang ito namin na-convert mula sa binary decimal, 465 00:25:51,290 --> 00:25:53,290 at mula sa binary na hexadecimal. 466 00:25:53,290 --> 00:25:56,610 Gusto mong guys upang tiyakin na ikaw din pagsasanay ng pagpunta sa iba pang mga paraan sa paligid. 467 00:25:56,610 --> 00:26:03,370 Kaya kung ibinigay ko sa iyo 0xFF, maaari mong gumuhit na out sa binary, di ba? 468 00:26:03,370 --> 00:26:06,820 >> Convert mo F sa binary, kung saan ay isa, isa, isa, isa, 469 00:26:06,820 --> 00:26:09,380 convert F sa binary, na ay isa, isa, isa, isa. 470 00:26:09,380 --> 00:26:11,310 >> Kaya maaari naming hilingin sa iyo na gawin ang iba pang mga paraan sa paligid. 471 00:26:11,310 --> 00:26:14,817 Kaya desimal sa binary, o hexadecimal sa binary. 472 00:26:14,817 --> 00:26:16,650 Kaya nais mong gumawa ng Siguraduhin na alam mo ang parehong paraan. 473 00:26:16,650 --> 00:26:19,371 Kami ay marahil hilingin sa iyo ng isang kumbinasyon ng dalawa. 474 00:26:19,371 --> 00:26:20,660 >> Oo, mayroon kang isang katanungan? 475 00:26:20,660 --> 00:26:22,724 Maaari ko bang see-- magaling ka? 476 00:26:22,724 --> 00:26:23,348 Madla: Oo. 477 00:26:23,348 --> 00:26:24,560 PROFESSOR: OK. 478 00:26:24,560 --> 00:26:26,101 Ako ba ay handa na upang burahin ito? 479 00:26:26,101 --> 00:26:26,600 Great. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Lahat ng karapatan, kaya mga sagot ay dito kung ang sinuman ay kakaiba sa susunod at makakuha ng nalilito. 482 00:26:40,437 --> 00:26:41,844 SIGE. 483 00:26:41,844 --> 00:26:46,070 >> Madla: ba ang bagay na ito kung ilalagay namin aming mga titik sa Capitol o lowercase? 484 00:26:46,070 --> 00:26:50,360 >> PROFESSOR: Ginagawa, dahil sa hexadecimal, sa pamamagitan ng convention, 485 00:26:50,360 --> 00:26:52,840 lahat ng mga character ay malalaki. 486 00:26:52,840 --> 00:26:54,650 Kaya A sa pamamagitan ng F ay magiging uppercase. 487 00:26:54,650 --> 00:26:58,660 Kung inilagay mo ang isang lowercase a, hindi ko alam kung kinakailangang tayo ay markahan ito mali. 488 00:26:58,660 --> 00:27:00,679 Ngunit theoretically, iyan ay hindi technically 489 00:27:00,679 --> 00:27:01,970 kung paano mo ay dapat na magkaroon nito. 490 00:27:01,970 --> 00:27:03,303 Kaya dapat sila ay uppercase lahat. 491 00:27:03,303 --> 00:27:05,910 Oo, magandang katanungan. 492 00:27:05,910 --> 00:27:07,780 >> SIGE. 493 00:27:07,780 --> 00:27:08,790 Ikalawang tanong. 494 00:27:08,790 --> 00:27:12,750 Isaalang-alang ang kaibig-ibig na programa dito. 495 00:27:12,750 --> 00:27:15,180 Kukunin ko tanungin ang tanong, Kukunin ko na dumating ito sa likod. 496 00:27:15,180 --> 00:27:23,170 >> Kaya, una, ano ang nasa loob ng standard io.h na ng interes sa programa? 497 00:27:23,170 --> 00:27:26,640 Pangalawa, kung ano ang ginagawa void maging tanda sa tatlong line? 498 00:27:26,640 --> 00:27:30,572 At pangatlo, ano ang bumabalik zero mula sa pangunahing, tulad ng anim na linya, maging tanda sa pangkalahatan? 499 00:27:30,572 --> 00:27:33,280 Kung nais mong guys na magsulat sa mga down, dahil mayroon akong upang lumipat pabalik 500 00:27:33,280 --> 00:27:36,810 sa slide upang maaari mong makita lamang code. 501 00:27:36,810 --> 00:27:40,400 Ito ay isang halimbawa ng, tulad ng, marahil ng isang mas mataas antas ng tanong na kung saan hinihiling namin sa iyo 502 00:27:40,400 --> 00:27:42,435 kung ano ang ibig sabihin ng mga bagay-bagay sa isang programa. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Ang bawat mabuti sa akin na bumalik sa slide? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK, cool. 507 00:27:54,361 --> 00:27:57,610 Kaya Bibigyan kita ng isang lalaki tulad marahil ng tatlong minuto upang tingnan ang isang ito tunay na mabilis. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, kaya ang isang ito ay tulad ng medyo madali, conceptually. 510 00:28:44,140 --> 00:28:49,280 Nais ba ng sinuman na sabihin sa akin kung ano ang unang loob ng hash kabilang 511 00:28:49,280 --> 00:28:52,630 aming file standard io.h library? 512 00:28:52,630 --> 00:28:55,510 Bakit kailangan namin na library kasama para sa programang ito? 513 00:28:55,510 --> 00:28:56,930 Ano dito kailangan namin ito para sa? 514 00:28:56,930 --> 00:28:56,980 >> Oo? 515 00:28:56,980 --> 00:28:58,340 >> Madla: Ay na kapag ilagay mo na printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESSOR: Eksakto. 517 00:28:59,131 --> 00:29:01,780 Kaya printf, anumang oras na kumuha ng isang input mula sa user 518 00:29:01,780 --> 00:29:04,140 at i-print ang isang bagay sa screen, na ang 519 00:29:04,140 --> 00:29:05,600 ang standard na input, output library. 520 00:29:05,600 --> 00:29:07,170 Isipin ito na way-- input, output. 521 00:29:07,170 --> 00:29:08,430 >> Kailangan ko ng isang output? 522 00:29:08,430 --> 00:29:09,207 Oo. 523 00:29:09,207 --> 00:29:12,040 Kaya alam ko na palaging ako pagpunta sa kailangan ang sa pamantayan i.o library. 524 00:29:12,040 --> 00:29:16,400 >> Kaya printf ay ang function sa pamamagitan ng kung saan kailangan namin upang ma-access 525 00:29:16,400 --> 00:29:19,370 at isama ang hashtag ang standard i.o library. 526 00:29:19,370 --> 00:29:20,280 SIGE. 527 00:29:20,280 --> 00:29:22,660 >> Pangalawa, ito kung ano ang ibig ipakahulugan void? 528 00:29:22,660 --> 00:29:26,970 Mayroon kaming mga int pangunahing (walang bisa), kung ano ang ginagawa magpawalang-bisa dito ibig sabihin dito sa tatlong line? 529 00:29:26,970 --> 00:29:28,080 Oo, sa likod. 530 00:29:28,080 --> 00:29:29,020 >> Madla: [hindi marinig] 531 00:29:29,020 --> 00:29:29,920 >> PROFESSOR: Eksakto. 532 00:29:29,920 --> 00:29:33,320 Kaya tandaan, ang aming natutunan simula sa aming pset 533 00:29:33,320 --> 00:29:35,360 na maaari mong aktwal na tukuyin command line 534 00:29:35,360 --> 00:29:39,010 argumento na ang iyong programa, na ikaw pangunahing pag-andar, tumatagal ng sa iyo, ang mga gumagamit, 535 00:29:39,010 --> 00:29:39,650 tawagin mo. 536 00:29:39,650 --> 00:29:42,650 Kung kami ay walang bisa, na nangangahulugan na ikaw ay maaari lamang tumakbo nang direkta sa programa 537 00:29:42,650 --> 00:29:44,680 nang walang anumang argumento command line. 538 00:29:44,680 --> 00:29:46,160 Ang bawat malinaw sa mga iyon? 539 00:29:46,160 --> 00:29:46,660 SIGE. 540 00:29:46,660 --> 00:29:52,850 >> At bilang wakas bakit abala kami sa paggawa ng ito return zero bagay dito? 541 00:29:52,850 --> 00:29:54,740 Bakit namin kahit na magkaroon ng isang int main? 542 00:29:54,740 --> 00:29:57,330 Bakit hindi kami na lang na walang bisa pangunahing void? 543 00:29:57,330 --> 00:29:59,216 Oo? 544 00:29:59,216 --> 00:30:01,590 Madla: Kaya lang na kaya namin siguraduhin na ang programa ay 545 00:30:01,590 --> 00:30:04,247 Matagumpay na paglabas, tulad ng laban sa kung ito ay may bilang. 546 00:30:04,247 --> 00:30:06,580 At gusto namin malaman na iyon ang isang iba't ibang mga uri ng mga error. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSOR: Oo, eksakto. 548 00:30:07,621 --> 00:30:10,670 Ito ay lamang ng isang napaka maginoo bagay na ginagawa namin, 549 00:30:10,670 --> 00:30:13,840 ay na lang sa dulo ng iyong programa, upang tiyakin lamang 550 00:30:13,840 --> 00:30:15,830 na ang iyong pangunahing pag-andar ay tumatakbo nang maayos, 551 00:30:15,830 --> 00:30:17,940 kami ay laging nais gawin return zero. 552 00:30:17,940 --> 00:30:21,160 Kahit na maaari naming kinakailangang hindi makita na naka-print kahit saan. 553 00:30:21,160 --> 00:30:25,092 >> Dahil bilang programmers, alam mo, kung ikaw ay maraming iba't-ibang linya ng code 554 00:30:25,092 --> 00:30:27,050 at hindi mo alam kung saan ang mga ito ay mali, 555 00:30:27,050 --> 00:30:30,240 at kung nangyari ang isang error na gusto mong tiyakin na ikaw ay makakuha ng error na. 556 00:30:30,240 --> 00:30:33,240 At kaya karaniwang kung may mangyaring mali ka namin ng isang pagbabalik ng isa lamang 557 00:30:33,240 --> 00:30:34,669 upang matiyak na alam namin na ito ay. 558 00:30:34,669 --> 00:30:36,460 Kaya kung nakakita ka ng isang pagbabalik zero, na karaniwang 559 00:30:36,460 --> 00:30:38,293 nangangahulugan na ang iyong programa ay Matagumpay na naisakatuparan. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Good? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Cool. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, pangalawang programa dito. 566 00:30:52,680 --> 00:30:54,827 Isaalang-alang na. 567 00:30:54,827 --> 00:30:56,910 At kung ikaw guys makita ang isang lumutang, ka guys maaari marahil 568 00:30:56,910 --> 00:31:00,810 magkaroon ng isang magandang ideya ng kung ano Ako ay tungkol sa hinihiling mo. 569 00:31:00,810 --> 00:31:05,200 >> Kaya kapag ang program na ito executes, tulad ng maaari mong makita, 570 00:31:05,200 --> 00:31:09,330 Ako deklarasyon ng float sa loob ng aking pangunahing pag-andar. 571 00:31:09,330 --> 00:31:13,470 Ako pagbibigay ng pangalan na ito "sagot," at ako ng setting na katumbas ng isang hinati sa 10. 572 00:31:13,470 --> 00:31:17,860 Ako nagpi-print out, sa isa decimal lugar, na float. 573 00:31:17,860 --> 00:31:19,880 At pagkatapos ay ako bumabalik zero. 574 00:31:19,880 --> 00:31:24,470 >> Kaya kapag Isinasagawa ang mga programa, sa tingin bumalik sa matakaw ngayon, 575 00:31:24,470 --> 00:31:26,550 ang program na ito ng mga kopya 0.0. 576 00:31:26,550 --> 00:31:29,993 Bilang namin ang lahat ng alam, sana tayong lahat alam, isa na hinati sa 10 ay hindi isang 0.00, 577 00:31:29,993 --> 00:31:32,350 ito ay 0.1. 578 00:31:32,350 --> 00:31:37,810 Ngunit kung bakit sa palagay ng programang ito na ang 1 na hinati sa 10 mga kopya sa 0.1 iba pang 579 00:31:37,810 --> 00:31:39,504 sa 0.1? 580 00:31:39,504 --> 00:31:42,545 Bibigyan kita ng isang lalaki na siguro tulad ng 30 segundo upang mabilis na lang isipin ang tungkol na 581 00:31:42,545 --> 00:31:43,878 at kukunin ko na bumalik sa programa. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> SIGE. 584 00:32:20,290 --> 00:32:22,205 Sinuman na nais upang bigyan ito ng isang shot? 585 00:32:22,205 --> 00:32:24,330 Sa tatlong pangungusap o mas mababa, dahil kadalasan hindi namin 586 00:32:24,330 --> 00:32:27,650 pagpunta sa paghigpitan ang lahat ng mga sagot hanggang tatlong pangungusap o mas 587 00:32:27,650 --> 00:32:31,130 kaya hindi mo na lang magsuka random na mga bagay sa iyong pagsusulit. 588 00:32:31,130 --> 00:32:32,740 >> Oo, kumuha ng isang shot. 589 00:32:32,740 --> 00:32:36,390 >> Madla: Kaya sa tingin ko ay mayroong ito bagay na tinatawag na, tulad ng, [hindi marinig] 590 00:32:36,390 --> 00:32:42,320 Kaya doon ay maaaring, halimbawa, maaaring mayroong, tulad ng, 0.09, 591 00:32:42,320 --> 00:32:47,250 na kung saan mo i-print ang unang digit, ay ito ay upang 0.0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSOR: Close, hindi lubos. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Madla: Ikaw ay naghahati ng isa at 10, at ang mga ito ay parehong mga integer. 595 00:32:51,770 --> 00:32:54,610 At upang ang mga paraan na ito ay pagpunta sa store na ito ay bilang isang integer. 596 00:32:54,610 --> 00:32:56,480 At kaya sa pinakamalapit na integer maging 0.0. 597 00:32:56,480 --> 00:32:57,471 At kaya na 0.1. 598 00:32:57,471 --> 00:32:58,970 PROFESSOR: Oo, na talagang mahusay. 599 00:32:58,970 --> 00:33:00,040 Iyan ay ang tamang sagot. 600 00:33:00,040 --> 00:33:03,597 Kaya ito ay isang tunay nakalilito konsepto para sa isang pulutong ng mga bata. 601 00:33:03,597 --> 00:33:06,680 At ako ay talagang nais na tiyakin na ito ay reinforced sa ulo ng bawa't isa. 602 00:33:06,680 --> 00:33:10,090 >> Kaya kung ano ang tawag namin sa mga lumulutang point imprecision, 603 00:33:10,090 --> 00:33:12,800 kung saan ang dahilan kung bakit ang isang pulutong ng iyong mga programa sa matakaw 604 00:33:12,800 --> 00:33:17,010 Hindi gumana sa una ay dahil nakalimutan mong palayasin ang iyong variable. 605 00:33:17,010 --> 00:33:19,370 Kaya kung ano ang sinabi Christabell ay ganap na tama. 606 00:33:19,370 --> 00:33:21,990 >> Ang isang float ay likas na di-tiyak. 607 00:33:21,990 --> 00:33:26,400 Dahil sa isang computer, right, kami ay takda na halaga ng mga piraso ng memory 608 00:33:26,400 --> 00:33:28,480 maaari naming gamitin upang kumatawan sa numero. 609 00:33:28,480 --> 00:33:33,480 Kaya, halimbawa, ang CS50 ID is-- Sa tingin ko ito ay isang 64-bit computer. 610 00:33:33,480 --> 00:33:37,520 >> Maaari lamang na kinakatawan A float sa pamamagitan ng isang tiyak na halaga ng mga bits. 611 00:33:37,520 --> 00:33:42,260 At kaya 0.1 na may walang hangganang mga zero, na ni noon ay 0.1 ay, di ba? 612 00:33:42,260 --> 00:33:45,450 Ngunit hindi namin talagang maaaring tindahan na numero sa aming mga computer. 613 00:33:45,450 --> 00:33:47,810 Wala kaming lamang sapat na memorya upang gawin ito. 614 00:33:47,810 --> 00:33:52,340 >> At kaya sa pinakamalapit na pagtatantya ng ano ang nakaimbak sa memory ay talagang 615 00:33:52,340 --> 00:33:55,390 isang bagay tulad 0.000 ang isang bagay, ang isang bagay, isang bagay, ang isang bagay. 616 00:33:55,390 --> 00:34:01,240 Aling, sa sandaling pungusan mo ito, round down na 0.0. 617 00:34:01,240 --> 00:34:05,640 >> At kaya sa halimbawang ito ay isa lamang sa na nagpapakita ng maraming mga isyu 618 00:34:05,640 --> 00:34:08,469 kami ay may kapag hindi namin sinusubukan na hindi tama ang gawin matematika 619 00:34:08,469 --> 00:34:11,000 walang pagpapatala bilang ibang integer. 620 00:34:11,000 --> 00:34:14,870 Kaya maging maingat ng mga ito nangyayari lamang. 621 00:34:14,870 --> 00:34:18,239 >> Sa quizzes, kung bibigyan ka namin ng isang bloke ng code at ito ay tulad, 622 00:34:18,239 --> 00:34:19,510 kung ano ang mga print out sa dulo? 623 00:34:19,510 --> 00:34:24,096 At kung ito ay ang ilang mga random na halaga mo guys ay dapat na malaman kung bakit na ang nangyayari. 624 00:34:24,096 --> 00:34:24,909 Oo? 625 00:34:24,909 --> 00:34:27,926 >> Madla: Truncate ay mapupuksa lahat ng bagay matapos ang isang tiyak na punto? 626 00:34:27,926 --> 00:34:28,513 [Hindi marinig] 627 00:34:28,513 --> 00:34:30,929 PROFESSOR: Oo, kaya ang tunay na ito ay isang ganap na hindi maayos na halimbawa, 628 00:34:30,929 --> 00:34:37,870 dahil 0.100 kahit anong talaga Gusto pungusan pababa sa 0.1. 629 00:34:37,870 --> 00:34:41,389 Ngunit kung ikaw ay upang tumakbo it-- hindi ako tandaan, dahil ang nakaraang taon sila 630 00:34:41,389 --> 00:34:42,830 tumakbo ito sa isang iba't ibang mga programa. 631 00:34:42,830 --> 00:34:45,300 Sila tumakbo ang mga ito sa isang bagay na tinatawag ang CS50 Appliance, na 632 00:34:45,300 --> 00:34:46,389 ay naiiba mula sa ID. 633 00:34:46,389 --> 00:34:48,520 Iyon ay isang 32-bit na sistema, sa tingin ko. 634 00:34:48,520 --> 00:34:50,290 At kaya mayroong iba't-ibang mga numero. 635 00:34:50,290 --> 00:34:53,330 >> Ngunit mahalagang, lamang malaman na ang buong konsepto ng truncation 636 00:34:53,330 --> 00:34:54,815 at kung paano mapuputol lang ito bagay-off. 637 00:34:54,815 --> 00:34:55,690 At kaya kung ito rounds-- 638 00:34:55,690 --> 00:34:56,300 >> Madla: Walang rounding. 639 00:34:56,300 --> 00:34:57,370 >> PROFESSOR: Eksakto. 640 00:34:57,370 --> 00:34:57,870 Oo. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Cool. 643 00:35:04,380 --> 00:35:05,250 >> Hi, sa likod. 644 00:35:05,250 --> 00:35:07,634 Kami ay pagpunta sa paglipas ng ilang katanungan sa pagsusulit sa pagsusuri. 645 00:35:07,634 --> 00:35:08,430 >> Lahat tama. 646 00:35:08,430 --> 00:35:10,150 Kaya isaalang-alang ang isang iba't ibang mga programa dito. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Pupunta ako upang bigyan ka guys isang ilang minuto upang basahin ang higit na ito. 649 00:35:15,380 --> 00:35:18,588 Ito ang isang bagay na para sa isang napaka kamakailan na sa tingin ko hinipan ng maraming mo 650 00:35:18,588 --> 00:35:19,142 guys ni isip. 651 00:35:19,142 --> 00:35:21,100 Ngunit kami ay pagpunta sa makipag-usap sa pamamagitan na ito muli lamang 652 00:35:21,100 --> 00:35:24,152 upang tiyakin na ikaw maunawaan ito nang tuluyan. 653 00:35:24,152 --> 00:35:24,652 SIGE. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 SIGE. 656 00:35:41,780 --> 00:35:44,342 Kailangan ninuman ang mas maraming oras upang basahin sa pamamagitan ng code na ito? 657 00:35:44,342 --> 00:35:45,650 SIGE. 658 00:35:45,650 --> 00:35:50,630 >> Kaya ito tila sa akin na sa programang ito Ako 659 00:35:50,630 --> 00:35:53,460 paglikha ng dalawang mga string sa pamamagitan ng paggamit GetString. 660 00:35:53,460 --> 00:35:55,180 Isa na tinatawag na s at isa na tinatawag t. 661 00:35:55,180 --> 00:35:58,680 At kung ang mga ito ay pantay-pantay katumbas sa bawat isa, 662 00:35:58,680 --> 00:36:00,880 dapat itong i-print "Ikaw type ang mga parehong bagay. " 663 00:36:00,880 --> 00:36:04,170 >> Ngunit elsewise, ito i-print, "Ikaw nag-type ng iba't ibang bagay, "right? 664 00:36:04,170 --> 00:36:05,990 Parang tunay, tunay simple. 665 00:36:05,990 --> 00:36:08,720 Ngunit, gayunpaman, kung ako talaga subukan na isulat ang programang ito, 666 00:36:08,720 --> 00:36:12,230 tila na kahit na kapag ako input ang eksaktong parehong mga string, 667 00:36:12,230 --> 00:36:15,490 Kopya pa rin ito, "Ikaw nag-type ng iba't ibang bagay! " 668 00:36:15,490 --> 00:36:18,020 Nais ba ng sinuman na kumuha ng isang pagbaril sa kung bakit ang program na ito ay laging 669 00:36:18,020 --> 00:36:20,370 tumugon na ang input ay naiiba, kahit na 670 00:36:20,370 --> 00:36:22,090 kapag ang mga salita sa kanilang sarili ay ang parehong? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Kaya kung ako ay upang input-- David ibig upang gamitin ang isang halimbawa tulad ng ina, di ba? 673 00:36:29,170 --> 00:36:37,890 Lowercase M-O-M para sa S, T ay katumbas ng lowercase M-O-M. 674 00:36:37,890 --> 00:36:40,340 Kung nagpatakbo ako ng ito sa pamamagitan na ang code, bakit gagawin ito 675 00:36:40,340 --> 00:36:44,180 i-print out "nag-type ka ng iba't ibang mga bagay-bagay?" 676 00:36:44,180 --> 00:36:46,336 >> Kailangan ba ang sinuman nang higit pa time na mag-isip tungkol sa mga ito? 677 00:36:46,336 --> 00:36:47,294 OK, sa tingin ko hindi namin mabuti. 678 00:36:47,294 --> 00:36:48,716 Oo? 679 00:36:48,716 --> 00:36:53,930 >> Madla: OK, sa gayon ito ay isang bagay tungkol sa kung saan ito ay naka-imbak sa memory, tama? 680 00:36:53,930 --> 00:36:54,890 >> PROFESSOR: Yep. 681 00:36:54,890 --> 00:37:00,400 >> Madla: Saan ito ay tulad ng, kung ito string s ay naka-imbak sa memory spot-- 682 00:37:00,400 --> 00:37:01,689 Ako inventing this-- ay zero. 683 00:37:01,689 --> 00:37:02,355 PROFESSOR: Oo naman. 684 00:37:02,355 --> 00:37:05,290 Madla: At string t ay naka-imbak sa memory lugar, 685 00:37:05,290 --> 00:37:11,000 tulad ng, 167, at pagkatapos ay zero ay hindi katumbas ng 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESSOR: Eksakto. 687 00:37:12,610 --> 00:37:18,350 OK, kaya tandaan ito paniwala paghahayag ipinaliwanag namin sa iyo guys 688 00:37:18,350 --> 00:37:21,530 ito nakaraang linggo, na string ay hindi tunay na umiiral? 689 00:37:21,530 --> 00:37:25,380 Kapag lumikha kami ng isang bagay na tinatawag na string hindi namin, sa katotohanan, 690 00:37:25,380 --> 00:37:29,330 paglikha ng isang bagay na tinatawag na char star. 691 00:37:29,330 --> 00:37:34,470 Alin ang lahat ng ito ay ay isang pointer sa isang string o sa isang array ng mga karakter. 692 00:37:34,470 --> 00:37:39,480 >> At kaya sa halimbawang ito, kung ako ay upang input M-O-M ang paraan 693 00:37:39,480 --> 00:37:49,350 na ang aking computer ay tindahan ng ito ay sa loob ng memory backslash zero, di ba? 694 00:37:49,350 --> 00:37:53,180 Ang apat na mga character, char, ay naka-imbak sa isang lugar. 695 00:37:53,180 --> 00:37:59,290 >> At pagkatapos ay ang mga apat na character, backslash zero, 696 00:37:59,290 --> 00:38:01,275 ay karapatan na naka-imbak sa ibang lugar,? 697 00:38:01,275 --> 00:38:04,685 Wala akong ideya kung saan ang mga address ay, ang mga ito sa isang lugar sa aking computer. 698 00:38:04,685 --> 00:38:07,080 Ngunit hindi ko eksaktong alam kung nasaan sila. 699 00:38:07,080 --> 00:38:10,170 >> Kapag gumawa ako ng isang string s, ang lahat na tunay ay 700 00:38:10,170 --> 00:38:15,550 ay isang pointer sa magsimula ng string. 701 00:38:15,550 --> 00:38:21,130 At kapag gumawa ako ng ganitong halaga t, lahat ng iyon ay isang pointer sa dito. 702 00:38:21,130 --> 00:38:23,980 At kaya kapag sinusubukan sa equate at suriin 703 00:38:23,980 --> 00:38:27,710 upang makita kung s ay equals katumbas sa t, ang computer 704 00:38:27,710 --> 00:38:31,635 ay talagang lamang ng pagbalik sa mo ang address ng mga ito m 705 00:38:31,635 --> 00:38:33,390 at ang address ng na m. 706 00:38:33,390 --> 00:38:36,230 At dahil ang mga ito ng dalawang hiwalay na mga piraso ng data 707 00:38:36,230 --> 00:38:38,750 na naka-imbak sa dalawang magkaibang address sa iyong computer, 708 00:38:38,750 --> 00:38:41,750 ang iyong computer ay hindi kailanman pagpunta sa makilala ang mga ito bilang ang parehong. 709 00:38:41,750 --> 00:38:43,500 Sinumang gusto ba sa magbigay ng isang shot sa kung ano ang aming 710 00:38:43,500 --> 00:38:46,900 ay may sa gawin kung gusto naming itama na ito at magkaroon ng isang wastong pagpapatakbo ng programa 711 00:38:46,900 --> 00:38:49,360 sa halip? 712 00:38:49,360 --> 00:38:52,070 Isipin na ang para sa isang ilang segundo. 713 00:38:52,070 --> 00:38:54,929 Ano ang kailangan namin upang baguhin sa kumuha ito gumagana program 714 00:38:54,929 --> 00:38:56,220 ang paraan na gusto naming ito upang gumana? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Oo, gusto mong kumuha ng isang ulos sa ito? 717 00:39:18,918 --> 00:39:24,082 >> Madla: Maaari naming subukang dereference ang pointer at suriin sa pamamagitan ng array? 718 00:39:24,082 --> 00:39:25,540 PROFESSOR: Iyan ay isang paraan upang gawin ito. 719 00:39:25,540 --> 00:39:27,880 Kaya, ano muli ang iyong pangalan? 720 00:39:27,880 --> 00:39:29,010 Sorry, paalalahanan ako. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSOR: Oo, kaya kung ano Zee iminungkahing ganap na gumagana. 723 00:39:32,130 --> 00:39:32,629 Right? 724 00:39:32,629 --> 00:39:35,730 Could namin dereference ang pointer at talagang pumunta at access 725 00:39:35,730 --> 00:39:38,460 ang pisikal na data sa loob ng dito. 726 00:39:38,460 --> 00:39:40,300 At maaari naming lamang ihambing ang buong screen. 727 00:39:40,300 --> 00:39:43,670 >> Maaari naming sabihin, OK, pointer, bigyan ako ng kung ano ang nasa loob dito. 728 00:39:43,670 --> 00:39:44,960 Mas magbalik ng m. 729 00:39:44,960 --> 00:39:47,168 At gusto kong sabihin, pointer, bigyan ako ng kung ano ang nasa loob dito. 730 00:39:47,168 --> 00:39:47,750 Bumalik ng isang m. 731 00:39:47,750 --> 00:39:48,410 Gawin ang mga tugma? 732 00:39:48,410 --> 00:39:49,410 Oo. 733 00:39:49,410 --> 00:39:50,340 Pagkatapos naming ilipat sa. 734 00:39:50,340 --> 00:39:54,240 >> Kami panatilihin ang pagsuri sa buong dalawang string lahat ng mga paraan up hanggang sa katapusan 735 00:39:54,240 --> 00:39:56,635 at tingnan kung ang mga ito ay pantay-pantay, kung ang lahat ng mga halaga ay pantay. 736 00:39:56,635 --> 00:39:59,680 At kung ang lahat ng mga halaga ay pantay-pantay, pagkatapos ay alam namin ang mga string ay totoo. 737 00:39:59,680 --> 00:40:01,600 Ganap, iyon ang kung paano namin gawin ito? 738 00:40:01,600 --> 00:40:03,930 >> Ang kahit sino ay nalilito sa alinman sa mga ito? 739 00:40:03,930 --> 00:40:06,970 Ang buong konsepto ng kung paano string ay talagang lamang ng mga payo, 740 00:40:06,970 --> 00:40:08,440 at kung paano sila ay hindi tunay na umiiral? 741 00:40:08,440 --> 00:40:10,480 At bakit kami makakuha ng mga error tulad ng paraan na makuha namin ito? 742 00:40:10,480 --> 00:40:15,070 Dahil ginagarantiya ko sa inyo guys, mga payo at string laang-gugulin at memory 743 00:40:15,070 --> 00:40:16,470 ay pagpunta sa darating up. 744 00:40:16,470 --> 00:40:17,410 >> Oo? 745 00:40:17,410 --> 00:40:21,072 >> Madla: [hindi marinig] dereference ito, ilagay mo lamang ang isang bituin [hindi marinig] 746 00:40:21,072 --> 00:40:21,780 PROFESSOR: Kanan. 747 00:40:21,780 --> 00:40:28,430 Kaya para derererence isang pointer paraan upang pumunta sa na address ng pointer 748 00:40:28,430 --> 00:40:30,390 at makakuha ng mga data, ang halaga doon. 749 00:40:30,390 --> 00:40:32,700 At ang paraan upang gawin iyon ay star pointer. 750 00:40:32,700 --> 00:40:34,262 Huwag malito iyon. 751 00:40:34,262 --> 00:40:35,186 >> Madla: [hindi marinig]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESSOR: Oo. 753 00:40:35,852 --> 00:40:39,750 Madla: Kaya maaari mo lamang isulat kung katumbas equals star t star s. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSOR: Well, hindi. 755 00:40:40,630 --> 00:40:40,960 Hindi. 756 00:40:40,960 --> 00:40:41,640 >> Madla: Iyan ay hindi sapat na mahusay, tama? 757 00:40:41,640 --> 00:40:43,760 >> PROFESSOR: Hindi, dahil ikaw ay lamang ng paglagay ng tsek ang unang titik. 758 00:40:43,760 --> 00:40:46,010 Marahil ka ng pagpunta sa kailangan mo ng ilang mga uri ng isang loop na 759 00:40:46,010 --> 00:40:49,055 iterates pamamagitan ng bawat solong character sa parehong string. 760 00:40:49,055 --> 00:40:49,837 Oo. 761 00:40:49,837 --> 00:40:52,920 Kaya kung nais mo lamang na tingnan upang makita ang kung sila ay nagsimula gamit ang mga parehong bagay, 762 00:40:52,920 --> 00:40:58,220 maaari mong gawin kung, star s ay katumbas ng star t. 763 00:40:58,220 --> 00:41:01,300 At alam mo na sila ay hindi bababa nagsimula na may parehong character. 764 00:41:01,300 --> 00:41:01,952 >> Oo? 765 00:41:01,952 --> 00:41:04,056 >> Madla: Kaya ang paraan mo na magiging 766 00:41:04,056 --> 00:41:06,064 tulad ng isang naka-embed para sa loop o pointer? 767 00:41:06,064 --> 00:41:06,730 PROFESSOR: Oo. 768 00:41:06,730 --> 00:41:08,170 Medyo marami lamang ng isang para sa loop. 769 00:41:08,170 --> 00:41:12,430 Tandaan, David sa klase na nabanggit ang free sintaktik asukal? 770 00:41:12,430 --> 00:41:17,690 At siya ay nagkaroon ito napaka nakalilito bagay ng star t 771 00:41:17,690 --> 00:41:22,030 plus one, kung saan ito ay samahin sa pamamagitan ng at ito ay ilipat ang pointer? 772 00:41:22,030 --> 00:41:29,910 Ang mas madaling paraan ng paggawa ng ito ay t lamang ng i. 773 00:41:29,910 --> 00:41:31,090 >> Kaya ito ay lamang ng isang array. 774 00:41:31,090 --> 00:41:34,630 Ang paraan na nais mong magkaroon ng para sa loop na tumakbo mula sa zero sa i, na kung saan ang 775 00:41:34,630 --> 00:41:36,580 i ay ang haba ng string, maaari mo lamang 776 00:41:36,580 --> 00:41:39,510 isulat na sa halip ng paggawa ng buong pointer, reference na bagay. 777 00:41:39,510 --> 00:41:43,510 At ang mga bagay ay eksaktong katumbas sa iyong computer. 778 00:41:43,510 --> 00:41:45,905 >> Ikaw guys marahil ay hindi kailangan mong malaman na, 779 00:41:45,905 --> 00:41:48,280 ngunit ito ay mabuti na lamang ang uri ng Mayroon sa likod ng iyong isip. 780 00:41:48,280 --> 00:41:52,630 Basta alam na ang computer Kinikilala iba't ibang mga bloke ng code 781 00:41:52,630 --> 00:41:53,890 bilang ang parehong bagay. 782 00:41:53,890 --> 00:41:57,510 Dahil ito ay lamang ng mas malayo user friendly na para sa amin upang ipakita ang mga ito tulad ng ito ay 783 00:41:57,510 --> 00:41:58,150 isang array. 784 00:41:58,150 --> 00:42:00,990 Ito ay lamang na mas madali. 785 00:42:00,990 --> 00:42:02,719 >> Madla: Kaya gamitin strlen upang gustuhin, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESSOR: Oo. 787 00:42:03,385 --> 00:42:03,926 Madla: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESSOR: Ikaw ay maaaring gamitin strlen o, kung ikaw ay 789 00:42:05,940 --> 00:42:10,420 ay hindi magkakaroon ng strlen maaari mo lamang gawin up hanggang maabot ang backslash zero para sa parehong. 790 00:42:10,420 --> 00:42:11,568 Alinman ay trabaho. 791 00:42:11,568 --> 00:42:12,068 Oo. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 Madla: Kaya ito ay sa dereference bawat solong character kung tayo ay talagang 794 00:42:17,996 --> 00:42:21,044 pagsulat ang code na ito, kami maaari lamang gawin t bracket i 795 00:42:21,044 --> 00:42:22,460 gusto may star sa harap ng mga ito? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSOR: Oo, katumbas katumbas s bracket i, at pagkatapos ay patuloy na gumagalaw i 797 00:42:27,700 --> 00:42:29,790 down up hanggang maabot ang dulo. 798 00:42:29,790 --> 00:42:31,286 Oo, na kung ano ang nais mong gawin. 799 00:42:31,286 --> 00:42:33,660 At talagang kukunin ko na magkaroon ng isang susunod na halimbawa ng kapag kami talaga 800 00:42:33,660 --> 00:42:36,740 isulat strlen kaya ka guys ay uri ng makakuha ng upang i-play sa paligid na may ito ng kaunti. 801 00:42:36,740 --> 00:42:43,567 >> Kaya ay malinaw sa lahat ng tao sa lamang na memorya, string, mga payo, kalidad address? 802 00:42:43,567 --> 00:42:46,650 Ang ilang mga mas mataas na mga konsepto level na kayo para bang kailangan malaman sa pagsusulit 803 00:42:46,650 --> 00:42:48,928 bukas. 804 00:42:48,928 --> 00:42:49,904 >> Lahat tama. 805 00:42:49,904 --> 00:42:50,404 Good. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Yep. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, kaya ang isang bagay na namin makikita ring hilingin mo, tulad ng ginagawa namin sa bawat taon sa isang pagsusulit, ay, 810 00:43:04,180 --> 00:43:08,340 ipagpalagay na nakalimutan mo na (na parang kami na kalimutan na gawin taun-taon) 811 00:43:08,340 --> 00:43:10,810 na kung saan ang file na header strlen ay ipinahayag. 812 00:43:10,810 --> 00:43:13,860 At kaya kami ay may sa pagsulat na muli ito sa ating sarili. 813 00:43:13,860 --> 00:43:16,350 >> Narito ang isang listahan ng mga alituntunin na maaari naming ipakita sa iyo 814 00:43:16,350 --> 00:43:20,660 guys kung saan ka na ipalagay na s ang string ay hindi null. 815 00:43:20,660 --> 00:43:23,830 Maaari mong ipalagay na s maging tinapos sa isang backslash zero. 816 00:43:23,830 --> 00:43:26,670 Kaya alam mo na kung ano ang ito ay pagpunta sa magtapos sa. 817 00:43:26,670 --> 00:43:29,500 >> At, halimbawa, na ang haba ng kumusta ay limang. 818 00:43:29,500 --> 00:43:32,890 Kaya maaari mong ipalagay na kumusta ay limang, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Wala kang na ipalagay na ang backside zero na kuwenta para sa haba. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Ang huling bagay dito, hindi mag-alala tungkol integer overflow. 822 00:43:42,300 --> 00:43:45,270 Sinuman tandaan ano integer overflow ay? 823 00:43:45,270 --> 00:43:48,041 >> Madla: Pupunta sa kabila ng haba ng [hindi marinig]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSOR: Oo, maaari mong ipaliwanag ng kaunti, kung ano ang ibig sabihin nito? 825 00:43:50,740 --> 00:43:55,330 >> Madla: Kaya, Hulaan ko ito napupunta pabalik sa truncating halimbawa ng mas maaga. 826 00:43:55,330 --> 00:43:58,380 Ngunit kung ikaw ay may lamang kaya maraming mga numero na higit pa sa bilang ng bits 827 00:43:58,380 --> 00:44:01,409 na maaari mong talagang italaga ito na ito ay uri ng lamang putulin. 828 00:44:01,409 --> 00:44:04,242 PROFESSOR: Oo, kaya sa isang tipikal computer, kung gaano karaming mga bits mayroon tayo? 829 00:44:04,242 --> 00:44:05,306 Madla: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSOR: Oo, 32, sa kanan. 831 00:44:06,430 --> 00:44:10,030 At kaya na, ano, apat bilyon, dalawang bilyong? 832 00:44:10,030 --> 00:44:13,579 Apat bilyon, hanggang sa apat na bilyon positive integer, di ba? 833 00:44:13,579 --> 00:44:15,370 Dalawang bilyong mga negatibong, dalawang bilyong positive, 834 00:44:15,370 --> 00:44:16,900 depende sa kung paano mo nais na gawin ito. 835 00:44:16,900 --> 00:44:21,470 >> At kaya talaga namin ay may sapat na integer na maaaring pumunta up 836 00:44:21,470 --> 00:44:25,800 sa dalawang sa ika-31 ng minus 1, di ba? 837 00:44:25,800 --> 00:44:27,980 Dahil sa sandaling pindutin namin dalawang sa ika-32, hindi tayo 838 00:44:27,980 --> 00:44:30,040 na magkaroon ng maraming memorya sa aming mga computer. 839 00:44:30,040 --> 00:44:32,310 >> At ito, theoretically, ako maaaring magkaroon ng isang bilang 840 00:44:32,310 --> 00:44:34,560 iyon ay, tulad ng, dalawa hanggang sa ika-46. 841 00:44:34,560 --> 00:44:38,040 Ito ay isang numero ng malaking-asno, ngunit theoretically maaari mong. 842 00:44:38,040 --> 00:44:42,730 At kaya integer overflow ay kung sinubukan mong lumikha ng isang integer na napupunta sa kabila kung ano ang 843 00:44:42,730 --> 00:44:44,790 ang iyong computer ay may kakayahang pag-iimbak. 844 00:44:44,790 --> 00:44:46,590 >> At kaya sa inyo guys para halimbawa na ito ay hindi na 845 00:44:46,590 --> 00:44:51,330 mag-alala tungkol sa amin na nagbibigay sa iyo ng isang higanteng string na dalawa hanggang ika-32 na karakter 846 00:44:51,330 --> 00:44:51,830 ang haba. 847 00:44:51,830 --> 00:44:54,010 Iyon ay nangangahulugan na talaga. 848 00:44:54,010 --> 00:44:59,430 >> Lahat ng karapatan, kaya ako lamang ang pagpunta upang bigyan ka guys sa base structure ng mga ito. 849 00:44:59,430 --> 00:45:02,020 Ikaw ay pagpunta upang lumikha ng isang function na tinatawag int strlen kung saan 850 00:45:02,020 --> 00:45:08,436 isang pumasa sa, isang char star, o string, pointer sa string na tinatawag s. 851 00:45:08,436 --> 00:45:10,820 >> Lahat ng mga karapatan, lahat ng kopya na pababa. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Cool. 854 00:45:14,850 --> 00:45:17,020 Oops-- ibang paraan. 855 00:45:17,020 --> 00:45:21,360 >> Kaya ito ay uri ng tulad ng isang mahirap na piraso ng problema, 856 00:45:21,360 --> 00:45:25,320 kaya Bibigyan kita ng isang lalaki na siguro lima hanggang anim na minuto upang uri ng atake ng kabaliwan 857 00:45:25,320 --> 00:45:27,478 at isulat ang function na ito. 858 00:45:27,478 --> 00:45:29,710 >> Madla: Hindi namin account para [hindi marinig], 859 00:45:29,710 --> 00:45:30,200 hindi namin ay may upang gamitin ang integer? 860 00:45:30,200 --> 00:45:31,241 >> PROFESSOR: Hindi, hindi mo. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Bibigyan kita ng isang lalaki na isang hint. 863 00:48:06,930 --> 00:48:12,325 Ang isang habang loop ay maaaring maging lubhang kapaki-pakinabang dito. 864 00:48:12,325 --> 00:48:12,825 Oo. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Narito ang 867 00:48:45,495 --> 00:48:45,995 kendi. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Kendi na ito ay makukuha rin para sa mga pagsusulit, tingin ko. 870 00:48:53,410 --> 00:48:55,315 Kaya mo guys ay ang lahat ng sugared up bukas. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Maaari I-- ba kayong mga ito. 873 00:49:02,962 --> 00:49:03,718 >> Madla: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESSOR: Oo. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Siguro 30 more o kaya ng ilang segundo. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Lahat ng mga karapatan, kung ikaw ay hindi tapos na, huwag mag-alala. 879 00:50:07,340 --> 00:50:08,810 Susubukan naming ilipat ito sa pamamagitan ng sama-sama. 880 00:50:08,810 --> 00:50:09,310 SIGE. 881 00:50:09,310 --> 00:50:13,800 Kaya ako ng pagpunta sa makatarungan ang layout ng pangunahing istraktura para sa mga function na ito dito. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 Una, ang sinuman nais na sabihin sa akin kung ano ang nagpapahiwatig na int? 885 00:50:23,460 --> 00:50:25,160 Kailangan namin na magkaroon ng sa function na ito. 886 00:50:25,160 --> 00:50:26,709 >> Madla: Strlen [hindi marinig]. 887 00:50:26,709 --> 00:50:27,500 PROFESSOR: Eksakto. 888 00:50:27,500 --> 00:50:31,140 Kaya kahit anong mangyayari sa dito, kailangan namin upang ibalik ang isang integer. 889 00:50:31,140 --> 00:50:36,367 At gaya ng tinukoy sa spec, nais naming return-- 890 00:50:36,367 --> 00:50:37,700 Sige lang guys, lamang panatilihin ang pagpunta. 891 00:50:37,700 --> 00:50:40,480 Lahat ng ito ay mabuti. 892 00:50:40,480 --> 00:50:42,960 Kumain ito ang lahat kaya hindi ko na kailangang upang dalhin ito pabalik, talaga. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int Ang lamang ay nagpahayag na ikaw ay pagpunta sa pagbabalik ng isang integer. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Ano itong char star s? 897 00:50:57,106 --> 00:50:58,640 Ano ang ibig sabihin nito? 898 00:50:58,640 --> 00:51:00,879 >> Madla: Tulad ng, kung ano ang pagiging input in. 899 00:51:00,879 --> 00:51:01,670 PROFESSOR: Eksakto. 900 00:51:01,670 --> 00:51:04,142 At kung ano ay halos ang parehong bagay tulad ng char star? 901 00:51:04,142 --> 00:51:04,850 Madla: String? 902 00:51:04,850 --> 00:51:05,641 PROFESSOR: Eksakto. 903 00:51:05,641 --> 00:51:09,080 Kaya lahat ng aming ginagawa ay nagbibigay sa ito isang pointer sa isang string. 904 00:51:09,080 --> 00:51:09,580 SIGE. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Cool. 907 00:51:13,360 --> 00:51:16,650 >> Gayundin, huwag kalimutan, kung nakalimutan namin upang bigyan ka ng mga bracket, 908 00:51:16,650 --> 00:51:18,330 huwag kalimutan na isulat ang mga ito sa iyong sarili. 909 00:51:18,330 --> 00:51:20,720 Dahil theoretically, ang iyong code ay hindi tama kung nakalimutan mong isulat ang mga ito. 910 00:51:20,720 --> 00:51:21,803 Basta laging magbayad ng pansin. 911 00:51:21,803 --> 00:51:23,750 Tulad ng, maliit na bagay na hindi mo mapansin 912 00:51:23,750 --> 00:51:26,917 kapag ikaw ay programming sa iyong laptop, dahil ang iyong mga laptop ay ito para sa iyo? 913 00:51:26,917 --> 00:51:28,624 Huwag kalimutan na kapag sumusulat ka sa pamamagitan ng kamay. 914 00:51:28,624 --> 00:51:29,170 Oo? 915 00:51:29,170 --> 00:51:30,954 >> Hindi tamang Ngunit paano: Madla? 916 00:51:30,954 --> 00:51:33,190 Tulad ng, namin makuha ang buong problema ng mali? 917 00:51:33,190 --> 00:51:34,190 >> PROFESSOR: Hindi, hindi. 918 00:51:34,190 --> 00:51:34,860 Huwag mag-alala. 919 00:51:34,860 --> 00:51:39,270 Ito ay talagang theoretically posible para sa iyo upang makakuha ng ganap na mga punto sa isang tanong 920 00:51:39,270 --> 00:51:41,980 kahit na ang iyong code ay hindi kailanman tumakbo sa totoong buhay. 921 00:51:41,980 --> 00:51:46,052 Mungkahi ko na hindi mo subukan upang gumawa na mangyari. 922 00:51:46,052 --> 00:51:48,260 Halimbawa, tulad ng kung ang lahat ng bagay na ang dahilan dito ay karapatan, 923 00:51:48,260 --> 00:51:51,850 ngunit nakalimutan mo ang isang colon o isang bracket, ang iyong code ay hindi talaga tumakbo. 924 00:51:51,850 --> 00:51:53,740 Ngunit maaari naming maging maawain. 925 00:51:53,740 --> 00:51:54,394 >> Oo? 926 00:51:54,394 --> 00:51:56,050 >> Madla: Kailangan mong magkomento sa aming sulat-kamay? 927 00:51:56,050 --> 00:51:57,758 >> PROFESSOR: Hindi, hindi, hindi alalahanin tungkol sa na. 928 00:51:57,758 --> 00:51:58,440 Walang pagkomento. 929 00:51:58,440 --> 00:51:59,400 Style ay dapat na mabuti. 930 00:51:59,400 --> 00:52:01,470 Tulad ng, hindi Smush ang lahat ng bagay sa isang linya. 931 00:52:01,470 --> 00:52:04,580 Hindi namin ay magiging masaya sa iyo kung wala ka na. 932 00:52:04,580 --> 00:52:07,250 >> Sinumang gusto ba sa bigyan ako ang unang linya? 933 00:52:07,250 --> 00:52:08,633 Pahiwatig, ito ay tunay madali. 934 00:52:08,633 --> 00:52:09,320 >> Oo? 935 00:52:09,320 --> 00:52:11,920 >> Madla: Int, n katumbas ng zero. 936 00:52:11,920 --> 00:52:13,734 Set up lang counter. 937 00:52:13,734 --> 00:52:15,900 PROFESSOR: Kaya gusto namin ang ilang mga uri ng isang counter, di ba? 938 00:52:15,900 --> 00:52:19,780 Ako lamang ang pagpunta upang pangalanan ito "bilang" para sa kapakanan ng pagiging madaling mabasa. 939 00:52:19,780 --> 00:52:21,265 Ano ang gusto namin upang itakda ito katumbas? 940 00:52:21,265 --> 00:52:21,890 >> Madla: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESSOR: Yep. 942 00:52:23,840 --> 00:52:24,340 Tuldok-kuwit. 943 00:52:24,340 --> 00:52:26,250 Ito ay lubhang kakaiba semicolons drawing din. 944 00:52:26,250 --> 00:52:28,870 Practice lang ginagawa na. 945 00:52:28,870 --> 00:52:31,990 >> Kaya gusto naming unang magkaroon ng isang counter ng uri int. 946 00:52:31,990 --> 00:52:35,360 Dahil gusto naming bilangin up kung paano maraming mga character o titik ay 947 00:52:35,360 --> 00:52:36,780 sa string, i-right? 948 00:52:36,780 --> 00:52:38,330 Sa lalong madaling unang hakbang. 949 00:52:38,330 --> 00:52:42,140 >> OK, marahil ng isang bit mas kumplikadong ngayon, kung paano namin ay pagpunta sa gawin ito? 950 00:52:42,140 --> 00:52:45,400 Sinumang gusto ba sa bigyan ako ang linya ng code 951 00:52:45,400 --> 00:52:48,450 na maaaring makatulong sa loop sa pamamagitan ng anumang ito ay? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Oo, matapang na kaluluwa sa likod? 954 00:52:56,900 --> 00:53:06,832 >> Madla: OK, sa gayon habang ang point asterisks, ang oo, bituin ng s, 955 00:53:06,832 --> 00:53:09,465 ay hindi katumbas ng zero, at pagkatapos ay gawin ang isang bagay? 956 00:53:09,465 --> 00:53:11,090 PROFESSOR: Iyan ay tunay, tunay na malapit. 957 00:53:11,090 --> 00:53:11,835 Talagang malapit. 958 00:53:11,835 --> 00:53:13,710 Kaya ako ng pagpunta sa address dalawang bagay na iyon. 959 00:53:13,710 --> 00:53:18,240 Una sa lahat, ito ay hindi eksakto zero. 960 00:53:18,240 --> 00:53:20,110 Ano ito? 961 00:53:20,110 --> 00:53:22,550 Ito ay ang null Terminator, na kung saan ay backslash zero. 962 00:53:22,550 --> 00:53:24,960 Kaya ang mga ito sa iba't-ibang mga tuntunin ng kung paano sila ay naka-imbak. 963 00:53:24,960 --> 00:53:26,270 Kaya ikaw ay talagang malapit. 964 00:53:26,270 --> 00:53:30,330 >> At pangalawa, hindi namin nais upang ilipat lamang ang pointer. 965 00:53:30,330 --> 00:53:32,320 Gusto naming talagang ma-access ang mga halaga, di ba? 966 00:53:32,320 --> 00:53:34,050 At kaya kung paano ang gagawin namin iyon? 967 00:53:34,050 --> 00:53:34,550 Napakadaling. 968 00:53:34,550 --> 00:53:36,841 Huwag mag-isip tungkol sa mga payo, hindi nag-iisip tungkol sa mga alaala. 969 00:53:36,841 --> 00:53:38,525 Bumalik sa dalawang linggo ng kursong ito. 970 00:53:38,525 --> 00:53:39,555 >> Madla: [hindi marinig]. 971 00:53:39,555 --> 00:53:40,680 PROFESSOR: Bilang ng, tandaan? 972 00:53:40,680 --> 00:53:41,400 Ano ang mga string? 973 00:53:41,400 --> 00:53:42,650 Paano sila ay naka-imbak sa memory? 974 00:53:42,650 --> 00:53:43,300 >> Madla: Sila ay itataas. 975 00:53:43,300 --> 00:53:43,810 >> PROFESSOR: Sila ay itataas. 976 00:53:43,810 --> 00:53:45,550 Kaya paano namin ma-access ang ang bawat character sa loob? 977 00:53:45,550 --> 00:53:46,466 >> Madla: [hindi marinig]. 978 00:53:46,466 --> 00:53:47,530 PROFESSOR: Eksakto. 979 00:53:47,530 --> 00:53:53,195 Kaya while-- kung ano ang napupunta sa loob dito? 980 00:53:53,195 --> 00:53:54,940 S ng - 981 00:53:54,940 --> 00:53:55,920 >> Madla: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSOR: Oh, hindi ko ay umiiral, ang ginagawa nito? 983 00:53:58,216 --> 00:53:59,620 >> Madla: Oh, bilangin? 984 00:53:59,620 --> 00:54:01,640 >> PROFESSOR: Maaari naming lamang gamitin ang count, maaaring hindi namin? 985 00:54:01,640 --> 00:54:03,050 >> Madla: Paumanhin, tinatawag ko ito i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSOR: Oo, ito ay ang lahat ng mabuti. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Kami ay may isang variable up dito na nai-ipinahayag bilang aming counter. 989 00:54:10,760 --> 00:54:13,650 Kaya bakit hindi ginagamit namin na lamang ilipat sa pamamagitan ng habang loop? 990 00:54:13,650 --> 00:54:15,230 Ba na magkaroon ng kahulugan? 991 00:54:15,230 --> 00:54:20,864 >> Kaya habang s ng count-- ay kahit sino gusto upang bigyan ako ng kung ano ang mangyayari pagkatapos dito? 992 00:54:20,864 --> 00:54:22,030 Madla: Ito ay hindi katumbas. 993 00:54:22,030 --> 00:54:23,405 PROFESSOR: Sinusuportahan ba ng hindi pantay-pantay, di ba? 994 00:54:23,405 --> 00:54:26,200 Ang putok Ito ay katumbas, exclamation point katumbas, 995 00:54:26,200 --> 00:54:28,500 kahit na ano ka guys nais na tawag na ito ay hindi equal-- 996 00:54:28,500 --> 00:54:29,496 >> Madla: [hindi marinig]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESSOR: Oo. 998 00:54:30,990 --> 00:54:37,110 Tandaan single quote ay para sa isang pansamantalang trabaho, double quotes ay para sa isang string. 999 00:54:37,110 --> 00:54:38,630 Mag-ingat kapag ginagamit ang mga ito. 1000 00:54:38,630 --> 00:54:42,430 Kaya kapag kami ay naghahanap sa pamamagitan ng ang array, ang huling character, 1001 00:54:42,430 --> 00:54:46,420 alam namin na hindi namin nais ito upang maging backslash zero. 1002 00:54:46,420 --> 00:54:47,340 >> Kaya habang. 1003 00:54:47,340 --> 00:54:48,840 Hindi kami sa dulo ng string. 1004 00:54:48,840 --> 00:54:52,335 Ano ang gusto naming gawin sa loob? 1005 00:54:52,335 --> 00:54:55,269 >> Madla: Gusto naming idagdag sa counter kaya ito ay nagbibilang plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESSOR: Eksakto. 1007 00:54:56,060 --> 00:55:03,064 Kaya dito kami ay pagpunta sa gawin count, count plus plus. 1008 00:55:03,064 --> 00:55:03,980 Kulang ng isa pang linya. 1009 00:55:03,980 --> 00:55:05,090 Malapit na tayo. 1010 00:55:05,090 --> 00:55:07,398 Ano ang mga namin forgetting upang gawin? 1011 00:55:07,398 --> 00:55:08,770 >> Madla: Bumabalik zero? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESSOR: Gusto mong bumalik sa zero? 1013 00:55:10,820 --> 00:55:12,962 >> Madla: Hindi, bumabalik sa strlen. 1014 00:55:12,962 --> 00:55:13,511 Maghintay. 1015 00:55:13,511 --> 00:55:14,760 PROFESSOR: Aling ay naka-imbak sa? 1016 00:55:14,760 --> 00:55:15,090 Madla: Bilang. 1017 00:55:15,090 --> 00:55:15,589 Bilang. 1018 00:55:15,589 --> 00:55:17,150 PROFESSOR: Eksakto. 1019 00:55:17,150 --> 00:55:20,760 Kaya dito kami ay pagpunta upang bumalik count. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Dahil kung ano ang hindi namin ginagawa dito ultimately-- 1022 00:55:25,380 --> 00:55:29,780 kami ay may isang counter variable na pagpunta sa dagdagan sa pamamagitan ng aming string. 1023 00:55:29,780 --> 00:55:33,050 Kami ay pagpunta upang panatilihin ang pagpunta, panatilihin tuloy, sa paligid at sa paligid sa loop. 1024 00:55:33,050 --> 00:55:37,700 At habang kami ay hindi sa dulo ng ito string, na kung saan ay ang null Terminator. 1025 00:55:37,700 --> 00:55:40,410 >> At sa bawat oras na pumunta kami sa pamamagitan ito, kami ay nagdadagdag sa aming counter. 1026 00:55:40,410 --> 00:55:42,640 At kami ay pagpunta sa karagdagang kasama na ito sa array. 1027 00:55:42,640 --> 00:55:44,880 At sa dulo, sa sandaling kami ay pindutin ang null Terminator, 1028 00:55:44,880 --> 00:55:48,469 alam namin, oh, maaari naming masira, bumalik ang count. 1029 00:55:48,469 --> 00:55:49,260 Mayroon kaming aming strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Lahat makakuha paano ito ay ipinatupad? 1032 00:55:56,400 --> 00:55:58,830 Habang loops-- alam ko na mayroon kaming hindi tapos masyadong maraming sa mga ito, 1033 00:55:58,830 --> 00:56:01,240 ngunit ang mga ito ay karaniwang tunay, tunay na kapaki-pakinabang kung ikaw 1034 00:56:01,240 --> 00:56:05,390 hindi alam kung ano ang iyong pagpapahinto kalagayan kinakailangan ay dapat. 1035 00:56:05,390 --> 00:56:06,220 >> Tanong? 1036 00:56:06,220 --> 00:56:10,080 >> Madla: Maaari naming magsulat null sa kalagayan habang? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESSOR: Habang? 1038 00:56:10,940 --> 00:56:15,304 Oo, kaya sa problemang ito Nagkaroon na ako sa iyo guys ipalagay na s ay hindi null. 1039 00:56:15,304 --> 00:56:17,220 Dahil tandaan, theoretically, kung ibinigay ko sa iyo 1040 00:56:17,220 --> 00:56:21,180 isang pointer na ay masyadong malaki ng memory, ito ay magbibigay sa iyo ang null, di ba? 1041 00:56:21,180 --> 00:56:23,770 Ano Iyan ang operating sistema ay gawin. 1042 00:56:23,770 --> 00:56:26,960 >> Kaya kung hindi ko sinabi sa inyo upang ipalagay Gusto ni maging null, kailangan mong suriin. 1043 00:56:26,960 --> 00:56:32,050 Kaya hanggang dito, ang gusto mong gawin, kung s katumbas ng ay katumbas null, bumalik sa isa. 1044 00:56:32,050 --> 00:56:33,028 Parang ganun. 1045 00:56:33,028 --> 00:56:34,153 Madla: [hindi marinig] zero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSOR: OK, kukunin ko na sabihin sa iyo kung bakit hindi namin maaaring gawin iyon. 1048 00:56:39,370 --> 00:56:43,357 Dahil tandaan sa memory, right, dito. 1049 00:56:43,357 --> 00:56:43,940 Susubukan naming pumunta dito. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Nakuha mo na ang giant bloke ng memory ang lahat na may grids 1052 00:56:54,090 --> 00:56:56,680 na store iba't ibang mga halaga, di ba? 1053 00:56:56,680 --> 00:57:00,110 At sa gayon ang lahat ng string is-- para Halimbawa, kung hindi namin na input hello, 1054 00:57:00,110 --> 00:57:05,490 ay ito ay H-E-L-L-O backslash zero, di ba? 1055 00:57:05,490 --> 00:57:09,570 At pagkatapos ay may alam, tulad ng random mga bagay na nasa dito matapos na ito. 1056 00:57:09,570 --> 00:57:11,220 >> Hindi namin talagang malaman kung ano ang doon. 1057 00:57:11,220 --> 00:57:13,350 At kaya kung ikaw ay upang gawin sa halip ng backslash zero, 1058 00:57:13,350 --> 00:57:15,590 null, ito ay maaaring hindi null. 1059 00:57:15,590 --> 00:57:17,680 Dahil maaaring nangangahulugan na ito lamang ilang mga random na iba pang mga bagay 1060 00:57:17,680 --> 00:57:19,270 na hindi nabibilang sa iyong string. 1061 00:57:19,270 --> 00:57:23,219 At upang ang mga paraan na kami ay laging alam na isang string nagtatapos ay may isang backslash zero. 1062 00:57:23,219 --> 00:57:25,760 At kaya na palaging kung paano namin suriin upang makita ang dulo ng isang string. 1063 00:57:25,760 --> 00:57:30,820 >> Walang bisa, ang lahat ng mga paraan na kung mayroon kang isang di-umiiral na pointer, una sa lahat, 1064 00:57:30,820 --> 00:57:36,160 o kung ang iyong memory ay lamang kaya malaki na hindi ka maaaring ibalik ito, pagkatapos ay gusto ito ay null. 1065 00:57:36,160 --> 00:57:40,150 Kaya maging maingat kapag differentiating ang pagkakaiba sa pagitan null 1066 00:57:40,150 --> 00:57:42,130 at ang backslash zero. 1067 00:57:42,130 --> 00:57:43,670 Oo. 1068 00:57:43,670 --> 00:57:46,886 >> Ang bawat OK na ito? 1069 00:57:46,886 --> 00:57:48,150 SIGE. 1070 00:57:48,150 --> 00:57:50,440 >> Kaya ako ay nagkaroon ng isang lalaki isulat ang strlen. 1071 00:57:50,440 --> 00:57:53,790 Feasibly maaari rin naming hilingin mong isulat out A to ko, tandaan na ang "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 o kahit na ano ang iyong guys gusto pangalanan ito? 1073 00:57:55,400 --> 00:57:58,010 Iyon function sa Vigenere at Caesar, na 1074 00:57:58,010 --> 00:58:00,900 Kino-convert ng isang halaga Ascii sa isang integer? 1075 00:58:00,900 --> 00:58:04,360 Iyon ay lumapit din sa nakaraang quizzes ng pag-andar na iyong hiniling namin sa iyo na magsulat. 1076 00:58:04,360 --> 00:58:08,280 >> Medyo magkano ang anumang function na nagamit mo at ito ay 1077 00:58:08,280 --> 00:58:11,660 napaka madaling isulat ang iyong sarili, Gusto sensor ay mas mababa, 1078 00:58:11,660 --> 00:58:14,620 ay itaas, upang mas mababa, sa itaas. 1079 00:58:14,620 --> 00:58:17,964 Pag-andar na pag-convert ng isang string mula sa lowercase sa uppercase. 1080 00:58:17,964 --> 00:58:19,380 Alam nating lahat kung paano gawin iyon, di ba? 1081 00:58:19,380 --> 00:58:21,100 Ito ay medyo madali. 1082 00:58:21,100 --> 00:58:24,770 Nais lamang na siguraduhin na ikaw can-- ito ay ang parehong pag-iisip proseso. 1083 00:58:24,770 --> 00:58:26,940 Umulit lamang ka sa pamamagitan ng at i-on mo ang mga bagay-bagay. 1084 00:58:26,940 --> 00:58:30,190 Kang mag-count o kapag buksan mo bagay na naiiba. 1085 00:58:30,190 --> 00:58:32,280 >> Gusto ko suggest-- ko hindi alam kung kami ay pagpunta 1086 00:58:32,280 --> 00:58:39,080 upang hilingin sa inyo na kabisaduhin kung ano capital A o capital Z, o lowercase A o lowercase 1087 00:58:39,080 --> 00:58:42,640 z ay sa Ascii, ngunit nais kong imungkahi marahil pagsulat na pababa sa kaso 1088 00:58:42,640 --> 00:58:44,124 ginagawa namin. 1089 00:58:44,124 --> 00:58:45,540 Basta kaya ka guys ay may isang reference. 1090 00:58:45,540 --> 00:58:47,180 Tulad ng uppercase A ay, kung ano ang, 197? 1091 00:58:47,180 --> 00:58:51,320 At pagkatapos ay lowercase ay tulad ng 50 bagay. 1092 00:58:51,320 --> 00:58:52,492 65, oo, doon ka pumunta. 1093 00:58:52,492 --> 00:58:54,950 Kaya lang kung medyo marami ang mga pagkakaiba sa pagitan ng mga ito ay 32. 1094 00:58:54,950 --> 00:58:57,670 Iyan ay medyo mahalaga. 1095 00:58:57,670 --> 00:58:58,170 Oo. 1096 00:58:58,170 --> 00:59:01,445 Ako ba ay mabuti sa mga ito? 1097 00:59:01,445 --> 00:59:01,945 SIGE. 1098 00:59:01,945 --> 00:59:03,109 >> Madla: maaari naming theoretically sumulat ng ilang 1099 00:59:03,109 --> 00:59:04,410 ng mga down na rin sa aming little-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESSOR: Ikaw theoretically maaaring kopyahin lamang ang pag-andar down. 1101 00:59:07,035 --> 00:59:08,482 Totoo yan. 1102 00:59:08,482 --> 00:59:11,080 >> Madla: Hindi [hindi marinig]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESSOR: You guys magkaroon ng isang sheet. 1104 00:59:12,720 --> 00:59:14,194 Ikaw guys magkaroon ng isang note sheet. 1105 00:59:14,194 --> 00:59:14,860 Maaari mong i-type ito. 1106 00:59:14,860 --> 00:59:15,490 Maaari mong isulat ang mga ito. 1107 00:59:15,490 --> 00:59:17,031 Maaari mong gawin ang anumang gusto mo dito. 1108 00:59:17,031 --> 00:59:18,530 Oo. 1109 00:59:18,530 --> 00:59:21,406 Kaya theoretically, kung gusto mo, pumunta para sa. 1110 00:59:21,406 --> 00:59:23,338 >> Madla: [hindi marinig] ngunit hindi namin talagang 1111 00:59:23,338 --> 00:59:25,994 kinakailangan na kailangan upang tandaan ang halaga, maaari naming lamang 1112 00:59:25,994 --> 00:59:28,914 gamitin ang sa itaas o sa mas mababa function, right? 1113 00:59:28,914 --> 00:59:29,580 PROFESSOR: Oo. 1114 00:59:29,580 --> 00:59:32,740 Ngunit kung ibinigay namin sa iyo ng isang katanungan na nagsasabing sumulat sa itaas, 1115 00:59:32,740 --> 00:59:34,350 pagkatapos ay kailangan mong isulat ito. 1116 00:59:34,350 --> 00:59:38,150 Kaya ka guys ay maaaring ipalagay na kayo guys may access sa lahat ng mga function, 1117 00:59:38,150 --> 00:59:41,523 ngunit kung nais mong gamitin sa itaas o sa mas mababa, ano ang mayroon ka ring gawin? 1118 00:59:41,523 --> 00:59:43,840 >> Madla: [hindi marinig] gamitin CS50 [hindi marinig] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESSOR: Ito ba ay CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Mag-ingat doon. 1122 00:59:48,310 --> 00:59:50,640 >> Kaya sa itaas, upang mas mababa, ay itaas, ay mas mababa, 1123 00:59:50,640 --> 00:59:52,990 mga function na kasangkot string manipulasyon ay 1124 00:59:52,990 --> 00:59:55,490 sa loob ng alinman sa Ascii lahat o sa loob ng math library 1125 00:59:55,490 --> 00:59:57,350 o sa loob ng string library. 1126 00:59:57,350 --> 01:00:00,290 Kaya't kung ikaw guys gamitin ang mga mga function, mag-ingat upang tandaan 1127 01:00:00,290 --> 01:00:01,451 upang isama ang header na. 1128 01:00:01,451 --> 01:00:03,950 Kaya marahil din ng isang bagay sa iyo nais na isama sa iyong sheet, 1129 01:00:03,950 --> 01:00:04,892 ano ang mga header? 1130 01:00:04,892 --> 01:00:06,600 Ano ang mga aklatan kayo ay gumagamit? 1131 01:00:06,600 --> 01:00:08,550 Anong mga function ay sa loob ng mga aklatan? 1132 01:00:08,550 --> 01:00:09,230 Ito ay mahalaga. 1133 01:00:09,230 --> 01:00:10,420 >> Oo? 1134 01:00:10,420 --> 01:00:12,570 >> Madla: Puwede naming lamang cop out at gawin ang hashtag 1135 01:00:12,570 --> 01:00:14,955 sa pamamagitan ng ganap na walang ang bawat titik na namin kailanman 1136 01:00:14,955 --> 01:00:17,340 nakita tulad ng sa lahat ng mga katanungan? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESSOR: Maaari mo. 1138 01:00:18,320 --> 01:00:20,361 Hindi ko alam kung paano masaya kami ay pagpunta sa maging sa grado 1139 01:00:20,361 --> 01:00:25,090 na quiz kapag ang bawat piraso ng code ay dalawang beses hangga't kailangan nito upang maging. 1140 01:00:25,090 --> 01:00:27,200 Hindi ko alam, maaari naming mag-alis ng isang punto para sa estilo. 1141 01:00:27,200 --> 01:00:28,790 Ngunit theoretically iyong code ay tama. 1142 01:00:28,790 --> 01:00:30,915 Ikaw guys could cop out at isama lahat ng bagay. 1143 01:00:30,915 --> 01:00:32,044 Iyon ay pinong masyadong, oo. 1144 01:00:32,044 --> 01:00:32,960 Madla: [hindi marinig]. 1145 01:00:32,960 --> 01:00:33,270 PROFESSOR: Oo. 1146 01:00:33,270 --> 01:00:34,900 Imumungkahi ko ang hindi paggawa na bagaman. 1147 01:00:34,900 --> 01:00:35,505 Oo. 1148 01:00:35,505 --> 01:00:36,130 Madla: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESSOR: Magandang katanungan. 1150 01:00:36,620 --> 01:00:37,480 Madla: Kaya, ang pinakamasama kaso sitwasyon. 1151 01:00:37,480 --> 01:00:38,563 PROFESSOR: Ang pinakamasama kaso. 1152 01:00:38,563 --> 01:00:40,350 Kung ganap na ikaw ay kalimutan, maaari mong gawin na. 1153 01:00:40,350 --> 01:00:40,850 Oo. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Oo, ang code ay may karapatan. 1156 01:00:45,400 --> 01:00:49,176 Ginamit ko n halip ng count ngunit, ikaw alam, kahit anong kamay ang iyong bangka. 1157 01:00:49,176 --> 01:00:51,092 Madla: Maghintay, kaya kami hindi na kailangang mag hashtag 1158 01:00:51,092 --> 01:00:53,460 isama dahil hindi namin simula sa mga int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSOR: Oo, lamang ako ay ipinapalagay na kami ay nagtanong upang isulat ang function. 1161 01:00:59,924 --> 01:01:02,340 Kung iyong nais na maging ligtas, ikaw ay maaaring marahil ilagay ito doon. 1162 01:01:02,340 --> 01:01:05,650 Ngunit ko lang ay hindi abala, oo. 1163 01:01:05,650 --> 01:01:09,919 >> Hindi ko kahit na malaman kung ikaw kailangan ng anumang mga library para sa mga ito. 1164 01:01:09,919 --> 01:01:12,710 Dahil hindi ka na talagang pag-print out kahit ano o kahit ano, di ba? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Oo, hindi ko alam kung kailangan mo ng isang library. 1167 01:01:19,568 --> 01:01:22,400 >> SIGE. 1168 01:01:22,400 --> 01:01:26,020 Ito din ay isang bit mas kasama ang mga linya ng pagmamanipula memory. 1169 01:01:26,020 --> 01:01:27,400 Ang uri ng mga bit mapanlinlang. 1170 01:01:27,400 --> 01:01:28,960 Pagisipan mo to. 1171 01:01:28,960 --> 01:01:30,580 Mayroon kang isang function na tinatawag func. 1172 01:01:30,580 --> 01:01:33,570 Sana pinangalanan ko ito kahit na ano, ngunit pinili kong pangalan ito func. 1173 01:01:33,570 --> 01:01:36,000 Mayroon akong ito sa itaas ang aking main. 1174 01:01:36,000 --> 01:01:39,790 Tandaan, gusto mong magkaroon ng isang function na pagkatapos ng iyong pangunahing, 1175 01:01:39,790 --> 01:01:42,370 gusto mong tiyakin na ikaw ay isama ang prototype ng tuktok. 1176 01:01:42,370 --> 01:01:45,750 >> Ngunit sa kasong ito, ito ay kaya maikli na nadama ko na maaaring ko lamang 1177 01:01:45,750 --> 01:01:47,260 isama ito sa ibabaw ng main. 1178 01:01:47,260 --> 01:01:51,170 Hindi ko kailangan ang magkaroon ng prototype, dahil sa ito ay nakasulat sa itaas. 1179 01:01:51,170 --> 01:01:55,430 Kaya lahat ako ginagawa sa aking pangunahing pag-andar ay ang paglikha ng integer x ay katumbas ng 10. 1180 01:01:55,430 --> 01:02:00,490 Ako pagtawag aking func function, at pagkatapos ay pag-print ng hanggang sa isang bagay. 1181 01:02:00,490 --> 01:02:02,840 >> At pagkatapos na talagang ano func ay ginagawa. 1182 01:02:02,840 --> 01:02:04,340 Ikaw guys na nais na mag-isip sa pamamagitan ng mga ito. 1183 01:02:04,340 --> 01:02:05,423 Dahil ito ay isang bit mapanlinlang. 1184 01:02:05,423 --> 01:02:07,220 Ito ay tunay, tunay na nakakalito, talaga. 1185 01:02:07,220 --> 01:02:09,549 Mag-isip sa pamamagitan ng kung ano ito programa ay outputting. 1186 01:02:09,549 --> 01:02:10,840 Bibigyan kita ng isang lalaki ng dalawang minuto. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Magandang talakayan? 1189 01:03:37,891 --> 01:03:38,853 >> Madla: Oo. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESSOR: Oo. 1191 01:03:39,815 --> 01:03:42,220 Lahat ng karapatan, sa gayon ito ay nakakalito para sa isang dahilan. 1192 01:03:42,220 --> 01:03:44,845 At ito ang dahilan kung bakit ako gustong dalhin ito sa pansin ng lahat. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Nais ba ng sinuman upang bigyan ako isang mungkahi, isang pagtatangka? 1195 01:03:51,147 --> 01:03:52,230 Ano ang gusto i-print out ito? 1196 01:03:52,230 --> 01:03:53,930 Ganap multa kung ikaw ay mali. 1197 01:03:53,930 --> 01:03:55,619 Oo? 1198 01:03:55,619 --> 01:03:59,483 >> Madla: Sa tingin ko ito ay 100 at pagkatapos ng 10 sa dalawang magkahiwalay na mga linya. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESSOR: At ang isang 10? 1200 01:04:00,940 --> 01:04:03,154 Ay may anumang iba pang mga hula Ang kahit sino? 1201 01:04:03,154 --> 01:04:04,150 Oo? 1202 01:04:04,150 --> 01:04:09,040 >> Madla: Maaari lamang ng 10 dahil func ay hindi bumabalik ng kahit ano? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSOR: OK, kaya namin Mayroon hulaan bilang isa 1204 01:04:11,610 --> 01:04:14,990 ay na hulaan dalawang numero ay lamang ang pagpunta sa i-print ang 10. 1205 01:04:14,990 --> 01:04:17,623 Ay may anumang iba pang mga hula Ang kahit sino? 1206 01:04:17,623 --> 01:04:19,654 SIGE. 1207 01:04:19,654 --> 01:04:21,070 Kaya sabihin sa pamamagitan ng paglalakad na ito, i-right? 1208 01:04:21,070 --> 01:04:23,903 Sa tuwing makakakuha ka ng isang piraso ng code, huwag lamang tingnan ang mga ito at maging tulad ng, 1209 01:04:23,903 --> 01:04:25,060 ah, syanga maraming bagay-bagay! 1210 01:04:25,060 --> 01:04:26,460 Ako kaya nalilito! 1211 01:04:26,460 --> 01:04:28,220 Tulad ng, kalmado ang iyong sarili pababa. 1212 01:04:28,220 --> 01:04:31,602 Basta alam na magagawa mo lamang hanapin sa pamamagitan ng linya ng code sa pamamagitan ng linya. 1213 01:04:31,602 --> 01:04:32,310 Iyan na ang lahat ng ito ay. 1214 01:04:32,310 --> 01:04:33,840 Ito ay tulad ng pagbabasa ng libro. 1215 01:04:33,840 --> 01:04:38,000 >> Kaya sa anumang function, palagi naming magsimula sa main. 1216 01:04:38,000 --> 01:04:40,860 Kaya kami ay pagpunta sa magsimula sa int pangunahing walang bisa, 1217 01:04:40,860 --> 01:04:43,010 kahit na ang program na tumakbo down, right? 1218 01:04:43,010 --> 01:04:45,070 Magsimula sa sa main walang bisa. 1219 01:04:45,070 --> 01:04:48,030 Int x ay katumbas ng 10. 1220 01:04:48,030 --> 01:04:50,400 >> Kaya ako pagpunta upang burahin ito. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Pupunta ako upang gumuhit ng memory lang kaya mo guys maaaring uri ng makita kung ano ang nangyayari. 1223 01:04:58,470 --> 01:05:02,190 >> Tandaan down na dito na namin ang aming stack? 1224 01:05:02,190 --> 01:05:05,810 Hanggang dito na namin ang aming magbunton lugar up dito. 1225 01:05:05,810 --> 01:05:07,470 Stack ay lumalaki up, di ba? 1226 01:05:07,470 --> 01:05:10,150 At sa loob ng stack, kailangan mong mains function pati na rin 1227 01:05:10,150 --> 01:05:12,230 lahat ng mains lokal na variable. 1228 01:05:12,230 --> 01:05:14,310 >> Kaya dito, int x pantay 10. 1229 01:05:14,310 --> 01:05:17,670 Sa loob ng aming pangunahing function na hindi namin paglikha ng isang variable na tinatawag na x. 1230 01:05:17,670 --> 01:05:20,590 Kami ay set na katumbas ng 10. 1231 01:05:20,590 --> 01:05:24,200 Dito ay nakuha mo ang ilang mga x, at ikaw ay pagtatakda na katumbas ng 10, kanan, 1232 01:05:24,200 --> 01:05:25,400 sa loob ng main. 1233 01:05:25,400 --> 01:05:27,430 Ang bawat mabuti? 1234 01:05:27,430 --> 01:05:28,070 >> Function. 1235 01:05:28,070 --> 01:05:30,330 Kaya ngayon, sa loob ng aming mga pangunahing function, kami ay pagtawag 1236 01:05:30,330 --> 01:05:31,810 ang function na nakasulat sa itaas. 1237 01:05:31,810 --> 01:05:34,550 Kaya ngayon kami ay ipasok ang pangalawang function. 1238 01:05:34,550 --> 01:05:40,120 Kami ay pagpunta sa gumawa ng isa pang variable int x ay katumbas ng 100. 1239 01:05:40,120 --> 01:05:42,410 Ano ang nangyayari dito sa stack? 1240 01:05:42,410 --> 01:05:46,980 Ano ang mangyayari kapag tumawag ka ng isang function na lumilikha ng mga bagong variable? 1241 01:05:46,980 --> 01:05:50,038 Ano ang mangyayari dito sa stack? 1242 01:05:50,038 --> 01:05:52,134 >> Madla: [hindi marinig] piles sa itaas? 1243 01:05:52,134 --> 01:05:52,800 PROFESSOR: Oo. 1244 01:05:52,800 --> 01:05:54,050 Kaya ito ang tunay na lumilikha ng isang kopya. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 At ito uri ng tambak sa itaas. 1247 01:05:57,740 --> 01:06:00,700 Isipin mo na ang stack-- isang stack ng mga libro, ng isang stack ng kahit ano. 1248 01:06:00,700 --> 01:06:06,520 Piles sa itaas, una sa huling out, tatagal, unang labas. 1249 01:06:06,520 --> 01:06:08,471 >> Kaya ito ay pagpunta upang lumikha ng isang x dito. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Iyon ay pagpunta sa may lahat funcs variable. 1252 01:06:14,450 --> 01:06:14,950 Great. 1253 01:06:14,950 --> 01:06:20,980 Kaya ngayon kami ay may dalawang magkaibang mga x na kumakatawan dalawang ibang bagay. 1254 01:06:20,980 --> 01:06:24,470 Pagkatapos kami ay pagpunta sa i-print ang mga integer ng x. 1255 01:06:24,470 --> 01:06:26,430 Kaya sabihin i-print ang 100, di ba? 1256 01:06:26,430 --> 01:06:29,389 Dahil dito ito ay 100. 1257 01:06:29,389 --> 01:06:31,680 Kaya iyon ang unang bagay na ito ay pagpunta upang i-print out. 1258 01:06:31,680 --> 01:06:35,710 Bilang ang function na nagbabalik sa wala, ngayon na function, na linya sa mga pangunahing 1259 01:06:35,710 --> 01:06:37,070 ay tapos na. 1260 01:06:37,070 --> 01:06:39,160 Ang bawat mabuting kasama ko sa ngayon? 1261 01:06:39,160 --> 01:06:43,034 >> Kaya hindi namin ngayon sa pamamagitan ng dalawang sa labas ng tatlong linya ng aming mga pangunahing pag-andar. 1262 01:06:43,034 --> 01:06:44,450 Ngayon kami ay pagpunta sa ikatlong linya. 1263 01:06:44,450 --> 01:06:46,350 Kami ay pagpunta sa printf. 1264 01:06:46,350 --> 01:06:48,222 Ano itong x loob main? 1265 01:06:48,222 --> 01:06:49,263 Ano ang ibig na kumakatawan? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Ano ang halaga ay x ngayon? 1268 01:06:54,280 --> 01:06:55,220 >> Madla: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESSOR: Ito ay 100? 1270 01:06:56,799 --> 01:06:57,590 Madla: Still 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSOR: Still 10. 1272 01:06:58,878 --> 01:07:00,870 Oo. 1273 01:07:00,870 --> 01:07:06,810 Dahil tandaan, sa loob ng aming func, x ay katumbas ng 100. 1274 01:07:06,810 --> 01:07:09,690 Ngunit kung babalik kami sa likod sa aming mga pangunahing pag-andar, 1275 01:07:09,690 --> 01:07:12,440 variable na naka-imbak sa isang iba't-ibang mga lugar sa aming stack. 1276 01:07:12,440 --> 01:07:16,250 >> Kaya ngayon ay kailangan naming bumalik sa pangunahing stack, mains lokal na variable. 1277 01:07:16,250 --> 01:07:18,460 At dito x ay katumbas ng 10. 1278 01:07:18,460 --> 01:07:20,300 At kaya kami ay pagpunta sa i-print ang 10. 1279 01:07:20,300 --> 01:07:22,530 >> Kaya siya ay ganap na karapatan. 1280 01:07:22,530 --> 01:07:25,053 Kami ay pagpunta sa may output ng 100 at 10. 1281 01:07:25,053 --> 01:07:25,553 Oo? 1282 01:07:25,553 --> 01:07:28,700 Madla: Kapag nag malloc, ito ang magbunton o stack na [hindi marinig]? 1283 01:07:28,700 --> 01:07:31,950 PROFESSOR: Kapag ikaw malloc, ikaw ay pagkuha ng memory mula sa magbunton 1284 01:07:31,950 --> 01:07:32,830 at paglalaan ng mga ito. 1285 01:07:32,830 --> 01:07:34,950 Kaya na hindi mo na kailangang sa gulo sa anumang ng mga ito. 1286 01:07:34,950 --> 01:07:38,100 Kaya ako hulaan ang mas malaking takeaway dito ay isang bagay na tinatawag na saklaw. 1287 01:07:38,100 --> 01:07:39,650 >> Para sa inyo na nasa ang review session kagabi, 1288 01:07:39,650 --> 01:07:41,080 usapan natin ang tungkol sa madaling sabi ito. 1289 01:07:41,080 --> 01:07:45,380 Saklaw tumutukoy sa kung paano at kapag umiiral ang iyong mga variable. 1290 01:07:45,380 --> 01:07:48,050 O sa loob ng kung ano ang mga frame gawin umiiral ang iyong mga variable. 1291 01:07:48,050 --> 01:07:51,690 >> Medyo marami ang mga patakaran ng hinlalaki sa pangkalahatan ay, ang iyong variables-- kung lumikha ka ng mga ito 1292 01:07:51,690 --> 01:07:56,660 sa loob curly braces-- sila umiiral lamang sa loob ng mga kulot tirante. 1293 01:07:56,660 --> 01:08:00,312 >> Kaya halimbawa sa aming pag-andar ng func, makikita mo ang mga dalawang braces. 1294 01:08:00,312 --> 01:08:02,020 Kung ikaw ay lumilikha anumang bagay sa loob ng mga ito, 1295 01:08:02,020 --> 01:08:06,500 pagkakataon ay lahat ng ginagawa mo ay paglikha ng isang stack at pagtatago na. 1296 01:08:06,500 --> 01:08:07,430 Parehong bagay sa main. 1297 01:08:07,430 --> 01:08:09,950 Na lamang na naka-imbak sa loob ng main. 1298 01:08:09,950 --> 01:08:13,560 >> Gayundin nais mong maging napaka, napaka-ingat dito. 1299 01:08:13,560 --> 01:08:18,310 Dahil din lends saklaw kanyang sarili sa iba't-ibang mga halimbawa. 1300 01:08:18,310 --> 01:08:25,950 Kaya halimbawa ng isang para sa loop, para sa int i katumbas ng 0. 1301 01:08:25,950 --> 01:08:28,460 Ako ay mas mababa sa, hindi ko alam, 10. 1302 01:08:28,460 --> 01:08:32,111 Ako plus plus. 1303 01:08:32,111 --> 01:08:34,560 At nakuha mo na ang code sa loob ng mga ito, right? 1304 01:08:34,560 --> 01:08:38,830 >> Saan ang variable na ito, i, ang tunay na umiiral na lamang? 1305 01:08:38,830 --> 01:08:40,510 Sa loob lamang ng iyong para sa loop. 1306 01:08:40,510 --> 01:08:43,640 Kaya taya ko marami sa inyo guys kung marahil ay nakatagpo ng error na ito kapag 1307 01:08:43,640 --> 01:08:45,930 ikaw ay gumagawa ng mga programa sa iyong psets. 1308 01:08:45,930 --> 01:08:49,990 Ilan sa inyo guys Sinubukan ninyong gamitin ang i sa labas ng isang para sa loop at nagkaroon ng error? 1309 01:08:49,990 --> 01:08:53,310 Tulad ng isang unreferenced integer o isang bagay tulad na? 1310 01:08:53,310 --> 01:08:56,069 >> Ang dahilan kung bakit nangyari iyon ay dahil dito ikaw ay 1311 01:08:56,069 --> 01:08:59,109 paglikha ng isang bagay na lamang umiiral sa loob ng iyong para sa loop. 1312 01:08:59,109 --> 01:09:01,972 At kung susubukan mong gamitin ito, i ay hindi ang tunay na umiiral sa labas nito. 1313 01:09:01,972 --> 01:09:04,930 Kaya sinasabi talaga ng isang computer, ako hindi alam kung ano ang pinag-uusapan mo. 1314 01:09:04,930 --> 01:09:08,689 Ang alam ko ay na ang isang ako ay dito, ngunit hindi na ngayon ng mas matagal. 1315 01:09:08,689 --> 01:09:12,580 >> Kaya kung ako ay upang lumikha ng isang para sa loop sa loob, di ba? 1316 01:09:12,580 --> 01:09:19,080 At ako pagpunta upang lumikha ng isa pa, tulad ng int j, at mayroon itong gawin kahit anong. 1317 01:09:19,080 --> 01:09:23,689 At mayroon kang isang code sa loob ng na loop, mayroon na lamang j dito. 1318 01:09:23,689 --> 01:09:26,029 Ngunit iyon ay umiiral din sa loob i. 1319 01:09:26,029 --> 01:09:29,310 At kaya umiiral j lamang sa loob na ito para sa loop, 1320 01:09:29,310 --> 01:09:33,850 samantalang i umiiral sa buong bagay. 1321 01:09:33,850 --> 01:09:34,500 >> Ang bawat malinaw? 1322 01:09:34,500 --> 01:09:37,416 Parehong bagay sa kondisyon na pahayag kung nais mong lumikha ng kahit ano. 1323 01:09:37,416 --> 01:09:40,390 Parehong bagay sa habang loop kung nais mong lumikha ng kahit ano. 1324 01:09:40,390 --> 01:09:42,390 Iyan ay isang bagay na tunay, tunay maingat tungkol sa. 1325 01:09:42,390 --> 01:09:45,681 Kaya ito ay isang tunay na magandang problema sa kahulugan na nagpakita ito sa dalawang bagay. 1326 01:09:45,681 --> 01:09:47,160 Unang Ito nagpakita, saklaw. 1327 01:09:47,160 --> 01:09:49,550 At nagpakita din memory laang-gugulin. 1328 01:09:49,550 --> 01:09:54,130 Dahil ikaw guys ay dapat malaman na function lumaki paitaas sa stack. 1329 01:09:54,130 --> 01:09:56,710 At na kapag tumawag ka function, ikaw ay lumilikha ng 1330 01:09:56,710 --> 01:09:59,060 mahalagang isang bagong salansan ng memory. 1331 01:09:59,060 --> 01:10:02,100 Iyon ay masyadong iba mula sa ano ang iyong mga mains memory ay. 1332 01:10:02,100 --> 01:10:03,300 Oo. 1333 01:10:03,300 --> 01:10:03,800 Whew! 1334 01:10:03,800 --> 01:10:05,470 Ang bawat OK sa mga iyon? 1335 01:10:05,470 --> 01:10:06,750 Iyon ay nakalilito. 1336 01:10:06,750 --> 01:10:09,380 Tunay na mahusay na paksa upang pumunta sa ibabaw, dahil ikaw ay malamang na 1337 01:10:09,380 --> 01:10:12,255 pagpunta upang makakuha ng ilang mga mapanlinlang mga bagay tulad na sa pagsusulit. 1338 01:10:12,255 --> 01:10:13,350 Oo. 1339 01:10:13,350 --> 01:10:13,850 Cool. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Kailangan ko bang ilagay ka ng 100 sa isa linya at pagkatapos ay 10 sa isa. 1342 01:10:18,430 --> 01:10:21,468 Oo, isang magandang. 1343 01:10:21,468 --> 01:10:26,350 >> OK, ngayon ka guys ay makakakuha ng ang pagkakataon na maging ang TAS. 1344 01:10:26,350 --> 01:10:30,600 Makakakuha ka upang sagutin ang lahat ng mga kaibig-ibig mga email na minsan kong makuha. 1345 01:10:30,600 --> 01:10:34,290 >> Kaya, Dear Andi, nakikita ko ang tingin ko ng isang bagay ay pagpunta mali sa aking compiler. 1346 01:10:34,290 --> 01:10:37,910 Ako ay tiyak na ang aking code ay tama, ngunit akong nakakatanggap ng segmentation fault 1347 01:10:37,910 --> 01:10:39,074 sa bawat oras na patakbuhin ko. 1348 01:10:39,074 --> 01:10:39,740 Ano ang nangyayari? 1349 01:10:39,740 --> 01:10:42,844 Mangyaring tulungan, ng maraming mga pag-ibig. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Kung nakakuha ka guys isang bagay tulad ng na kung paano ang gagawin mo? 1352 01:10:49,410 --> 01:10:51,860 Ang mga ito ay talagang napaka-pangkaraniwan katanungan hihilingin namin sa iyo. 1353 01:10:51,860 --> 01:10:54,090 Ay kung, bibigyan ka namin ng isang sitwasyon, kami ay magbibigay sa amin 1354 01:10:54,090 --> 01:10:56,350 ang iyong pinakamahusay na hula sa kung ano ang nangyayari sa. 1355 01:10:56,350 --> 01:11:00,710 Kahit sino ay may isang ulos sa kung ano ang nangyari? 1356 01:11:00,710 --> 01:11:02,654 Oo? 1357 01:11:02,654 --> 01:11:06,056 >> Madla: Maaari dereferenced ang null, ang isang bagay tulad ng pointer 1358 01:11:06,056 --> 01:11:08,924 ay tumuturo sa isang bagay null. 1359 01:11:08,924 --> 01:11:11,590 PROFESSOR: Oo, na nais maging isang halimbawa ng kapag na mangyayari. 1360 01:11:11,590 --> 01:11:14,467 Ngunit kung ano ang mas malaking larawan ng kung ano ang nangyayari sa dito? 1361 01:11:14,467 --> 01:11:17,050 Madla: Ito ba ay na sinusubukan upang ma-access memory na hindi ka 1362 01:11:17,050 --> 01:11:18,175 dapat na magkaroon ng access sa? 1363 01:11:18,175 --> 01:11:19,200 PROFESSOR: Eksakto. 1364 01:11:19,200 --> 01:11:24,800 Kaya sa tingin ng isang seg fault, isang off limitasyon, pinaghihigpitan na lugar sa memory 1365 01:11:24,800 --> 01:11:27,780 na hindi mo ay dapat na hawakan. 1366 01:11:27,780 --> 01:11:31,670 >> Kaya medyo marami kapag sinusubukan upang index-- tulad halimbawa, 1367 01:11:31,670 --> 01:11:34,110 na iyong ipinahayag ng isang array mula sa zero sa siyam. 1368 01:11:34,110 --> 01:11:37,360 Ngunit subukan mong hawakan na ika-10 halaga, wala kang access sa mga iyon. 1369 01:11:37,360 --> 01:11:38,694 Dahil hindi mo pa ito ipinahayag. 1370 01:11:38,694 --> 01:11:40,943 At gayon ang iyong computer ay pagpunta na tingnan ang mga na maging tulad ng, 1371 01:11:40,943 --> 01:11:43,440 uh oh, sinusubukan mong pumunta sa labas ng hangganan ng isang index. 1372 01:11:43,440 --> 01:11:45,270 Pupunta ako upang bigyan ka ng ng segmentation fault. 1373 01:11:45,270 --> 01:11:46,590 >> Mag-isip ng bilang segment, i-right? 1374 01:11:46,590 --> 01:11:49,665 May dagdag na segment, ang kasalanan ay kapag sinusubukan mong labagin ang isang bagay 1375 01:11:49,665 --> 01:11:50,790 at hindi mo dapat doon. 1376 01:11:50,790 --> 01:11:53,660 Segmentation fault ay anumang oras subukan mong pindutin ang mga bagay 1377 01:11:53,660 --> 01:11:54,970 na hindi mo ay dapat na hawakan. 1378 01:11:54,970 --> 01:11:56,815 >> Kaya karaniwang mga halimbawa ay isang index. 1379 01:11:56,815 --> 01:11:58,940 Siyempre, kung sinusubukan na touch na null, 1380 01:11:58,940 --> 01:12:00,220 na din sa trabaho pati na rin. 1381 01:12:00,220 --> 01:12:02,300 Kung ang iyong pointer ay sinusubukang pindutin ang mga bagay na hindi dapat hawakan, 1382 01:12:02,300 --> 01:12:03,730 na maaari ring gumagana rin. 1383 01:12:03,730 --> 01:12:07,120 Karamihan ay karaniwang makikita mo makita ang mga ito sa isang array. 1384 01:12:07,120 --> 01:12:07,740 Ang bawat mabuti? 1385 01:12:07,740 --> 01:12:10,374 >> Madla: Kaya kung nais mong upang ma-access ang ika-10 point 1386 01:12:10,374 --> 01:12:12,290 at mayroong isang limitasyon lamang ng siyam o isang bagay. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSOR: Oo, eksakto. 1388 01:12:13,160 --> 01:12:13,660 Medyo marami. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Cool. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Dear Andi. 1393 01:12:19,920 --> 01:12:23,440 Kaya namin nakuha ang mga kahanga-hangang mga bagay-bagay na tinatawag na uri. 1394 01:12:23,440 --> 01:12:25,472 Kung Sumanib sort-- bilang namin nakita sa halimbawa na kapag 1395 01:12:25,472 --> 01:12:27,180 David ay ang buong bagay sa class-- kung bakit, 1396 01:12:27,180 --> 01:12:29,760 kung ito ay kaya lubhang mas mabilis kaysa alinman sa iba pang mga uri, 1397 01:12:29,760 --> 01:12:33,310 bakit namin kahit na mag-abala pag-alam ang alinman sa mga iba pang mga uri? 1398 01:12:33,310 --> 01:12:35,100 >> Ano ang tanong na ito tunay na humihingi sa inyo? 1399 01:12:35,100 --> 01:12:36,659 Ano ang tatlong word-- 1400 01:12:36,659 --> 01:12:37,950 Madla: Ano ang kalakalan-off? 1401 01:12:37,950 --> 01:12:38,530 PROFESSOR: Eksakto. 1402 01:12:38,530 --> 01:12:39,946 Iyan ang humihiling sa mga tanong. 1403 01:12:39,946 --> 01:12:43,682 Ano ang trade-off sa pagitan ng Pagsamahin ang mga uri bersikulo ng anumang iba pang uri? 1404 01:12:43,682 --> 01:12:45,850 >> Madla: Dadalhin memory, tama? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESSOR: Gusto mo ba ipaliwanag na ang isang bit higit pa? 1406 01:12:47,720 --> 01:12:49,490 Unang hayaan ipaliwanag ni Pagsamahin store. 1407 01:12:49,490 --> 01:12:50,970 Paano gumagana ang Pagsamahin ang uri ng trabaho? 1408 01:12:50,970 --> 01:12:55,220 >> Madla: Kaya ito ay gumagana sa pamamagitan ng paghati lahat ng bagay sa kalahati 1409 01:12:55,220 --> 01:13:00,660 at pagkatapos ay ilagay ito nang magkasama at reallocating ito sa pagkakasunud-sunod, 1410 01:13:00,660 --> 01:13:02,862 tulad ng sa bawat oras na pagsamahin mo ang mga hanay. 1411 01:13:02,862 --> 01:13:03,820 PROFESSOR: Medyo marami. 1412 01:13:03,820 --> 01:13:06,861 Kaya ang maaari kong iguhit ito, ngunit gagawin ito kumuha ako ng limang minuto upang gumuhit ito. 1413 01:13:06,861 --> 01:13:10,220 Hanapin pabalik sa sa seksyon na mga slide kung saan namin sakop Pagsamahin sort. 1414 01:13:10,220 --> 01:13:10,790 Mismong. 1415 01:13:10,790 --> 01:13:13,406 >> Kaya ang paraan Sumanib gawa sort ay ito naghihiwalay bagay sa kalahati, 1416 01:13:13,406 --> 01:13:15,780 at pagkatapos ay ito lamang ang hitsura sa unang halaga ng lahat ng mga ito 1417 01:13:15,780 --> 01:13:17,000 at uri ang mga lamang na. 1418 01:13:17,000 --> 01:13:20,364 Patuloy na lumilikha ng bagong mga array at naglalagay ng mga bagay at mas higit pa sa order. 1419 01:13:20,364 --> 01:13:23,030 At kaya habang na tunay, tunay mabilis dahil it's-- alam mo, 1420 01:13:23,030 --> 01:13:25,380 isang binary paghahanap ay n log ng n. 1421 01:13:25,380 --> 01:13:27,880 Lumilikha ka ng gayon maraming iba't-ibang mga array na kayo 1422 01:13:27,880 --> 01:13:29,700 gamit ang isang malaking halaga ng memorya. 1423 01:13:29,700 --> 01:13:33,080 At kaya habang ito ay mas mabilis, ang kalakalan off dito ay na ikaw ay gumagamit ng mas maraming memory. 1424 01:13:33,080 --> 01:13:38,490 >> At ito, hint, uri at mga paghahanap ay sakop ng maraming higit pa sa taong ito 1425 01:13:38,490 --> 01:13:41,610 kaysa sila ay sa nakaraang mga taon. 1426 01:13:41,610 --> 01:13:45,100 Ikaw guys dapat makita na masasalamin naaayon sa pagsusulit. 1427 01:13:45,100 --> 01:13:49,160 Gusto ko gastusin tiyak na oras ng pagpunta sa kung ano ang lahat ng iba't ibang uri 1428 01:13:49,160 --> 01:13:52,320 ay, kung paano binary paghahanap, paano linear paghahanap ng trabaho. 1429 01:13:52,320 --> 01:13:54,750 Paano marahil pseudocode code ang mga out. 1430 01:13:54,750 --> 01:13:55,950 Ano ang mga panahon ng pagtakbo? 1431 01:13:55,950 --> 01:13:59,210 Isang bagay na tulad ng pagtakbo ng oras ay tunay madaling kopyahin papunta sa isang note sheet, 1432 01:13:59,210 --> 01:13:59,710 right? 1433 01:13:59,710 --> 01:14:01,420 >> Ito ay talagang mahirap na kapag ikaw ay sa gitna ng pagsubok 1434 01:14:01,420 --> 01:14:02,390 at kailangan mong malaman na out. 1435 01:14:02,390 --> 01:14:03,160 Kopyahin ito pababa. 1436 01:14:03,160 --> 01:14:05,550 Ginagarantiya ko sa iyo na ikaw ay pagpunta sa kailangan mong malaman na. 1437 01:14:05,550 --> 01:14:06,860 Ano ang mga trade-off? 1438 01:14:06,860 --> 01:14:10,064 Pinakamahina ang kaso, pinakamahusay na kaso sitwasyon para sa lahat ng mga ito, tunay na makilala. 1439 01:14:10,064 --> 01:14:10,564 Oo? 1440 01:14:10,564 --> 01:14:12,730 >> Madla: Kailangan ba tayong malaman kung paano code Pagsamahin ang uri? 1441 01:14:12,730 --> 01:14:15,470 Tulad ng, ang kailangan nating tandaan ang recursive? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESSOR: ko lubos na pagdudahan ito, lamang dahil ito ay tulad ng medyo kumplikado. 1443 01:14:18,950 --> 01:14:22,282 Ngunit ito ay maaaring hindi infeasible kung tayo hilingin sa inyo na gamitin ang pseudocode ito. 1444 01:14:22,282 --> 01:14:22,781 Oo. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Oo, OK, isa pa. 1447 01:14:29,170 --> 01:14:31,387 Maaaring ito ay may lumapit sa ka huling piraso sa isang bit. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Oo? 1450 01:14:43,090 --> 01:14:44,930 Ang ibig lahat ng tao marinig na? 1451 01:14:44,930 --> 01:14:48,360 >> OK, kaya medyo marami ang una sa lahat, kung anong uri ng program 1452 01:14:48,360 --> 01:14:51,000 ay nagbibigay sa iyo ng isang output na tulad nito? 1453 01:14:51,000 --> 01:14:54,350 Tandaan tinatanong ka namin na malaman ang tungkol sa ang bagong uri ng tool sa pag-debug? 1454 01:14:54,350 --> 01:14:57,340 Ano ang pangalan ng mga ito? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, right 1456 01:14:59,460 --> 01:15:02,600 >> Ito ay isang programa kung saan ang maaari kang tumawag na maaaring 1457 01:15:02,600 --> 01:15:05,940 subaybayan ang lahat ng memory ikaw gamit sa iyong programa at ang nangyayari. 1458 01:15:05,940 --> 01:15:11,090 Kaya kung mayroon ka ng isang bagay, tulad ng, talagang nawala, 40 bytes sa isang bloke. 1459 01:15:11,090 --> 01:15:14,870 Malamang na hindi ka pag-alala sa libreng ito. 1460 01:15:14,870 --> 01:15:18,710 Dahil kung ikaw ay gumagamit ng bytes ng memorya, ay nangangahulugan na na-access mo na ang memory, 1461 01:15:18,710 --> 01:15:20,240 ngunit hindi mo pa magawang magbakante. 1462 01:15:20,240 --> 01:15:21,948 Kaya nais mong gumawa ng siguraduhin na ikaw din 1463 01:15:21,948 --> 01:15:31,420 gamit free-- na ang isang function-- upang magbakante lahat 1464 01:15:31,420 --> 01:15:34,930 ng memory reallocated pamamagitan malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Cool. 1466 01:15:35,500 --> 01:15:37,140 Kaya ito slide, kukunin ko ito. 1467 01:15:37,140 --> 01:15:41,050 Ito ay lahat ng dako sa isang pulutong ng mga mga aralin, sa isang pulutong ng mga seksyon na slide. 1468 01:15:41,050 --> 01:15:44,254 Talagang gusto mong siguraduhin alam mo lamang ang lahat ng ito. 1469 01:15:44,254 --> 01:15:47,170 Alinman sa iyong tala sheet o kung ikaw gusto kabisaduhin ito, huwag mag-atubiling. 1470 01:15:47,170 --> 01:15:48,836 Iyan ay tunay, tunay, tunay na mahalaga. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Gayundin isang napakahusay na tanong na maaari naming hilingin sa. 1473 01:15:56,890 --> 01:16:00,320 Bakit ang hitsura Selection sort-- sa Sort-- Pinili ang lahat ng mga runtimes 1474 01:16:00,320 --> 01:16:02,060 ay n nakalapat. 1475 01:16:02,060 --> 01:16:06,714 Hindi alintana ng kung paano dumating ang mga listahan upang ka bilang, kaya kung bakit ang Pinili sort-- 1476 01:16:06,714 --> 01:16:08,630 Bibigyan kita ng isang lalaki 30 pangalawang-isip tungkol sa mga ito. 1477 01:16:08,630 --> 01:16:10,700 Dahil ang uri ng ito ay nakalilito. 1478 01:16:10,700 --> 01:16:12,710 Ito ay nagsasangkot ng ilang mga haka-haka-iisip. 1479 01:16:12,710 --> 01:16:16,470 Bakit ang mga oras run na magkapareho sa pareho ang pinakamasama at pinakamahusay na kaso sitwasyon? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Oo? 1482 01:16:30,000 --> 01:16:38,084 >> Madla: Dahil Selection sort bawat posisyon o space na ito sa maliit na hanay 1483 01:16:38,084 --> 01:16:40,350 bagay o ano pa man. 1484 01:16:40,350 --> 01:16:44,430 Kaya kahit na sa mga pinakamahusay na kaso sitwasyon, kahit na ganap na ito ay pinagsunod-sunod, 1485 01:16:44,430 --> 01:16:47,380 Gusto pa rin ito kailangang maging katulad, OK, isa. 1486 01:16:47,380 --> 01:16:49,000 Sa aking unang lugar Mayroon akong isa. 1487 01:16:49,000 --> 01:16:50,250 At pumunta sa lahat ng mga ito. 1488 01:16:50,250 --> 01:16:51,249 OK, ang isa ay ang pinakamaliit. 1489 01:16:51,249 --> 01:16:53,053 At pagkatapos ay babalik muli at ito ay tulad, OK, dalawang 1490 01:16:53,053 --> 01:16:54,594 ay ang pinakamaliit na ng lahat ng mga bagay-bagay. 1491 01:16:54,594 --> 01:16:56,804 Ngunit ito pa rin ay upang suriin ang bawat isa. 1492 01:16:56,804 --> 01:16:57,470 PROFESSOR: Oo. 1493 01:16:57,470 --> 01:17:00,490 Kaya halimbawa, sabihin lang sabihin kami ay isang listahan, na pinagsunod-sunod, 1494 01:17:00,490 --> 01:17:03,390 isang array isa sa limang. 1495 01:17:03,390 --> 01:17:07,100 Ang paraan na ang mga uri Selection ay na ito napupunta sa pamamagitan, ang mga tseke ng mga dalawang. 1496 01:17:07,100 --> 01:17:08,234 Pagkatapos ito sumusuri ng mga dalawang. 1497 01:17:08,234 --> 01:17:09,650 At pagkatapos ay ito tseke, at ito tseke. 1498 01:17:09,650 --> 01:17:13,285 Ito ay nagpapanatili ng paglagay ng tsek ang lahat ng mga ito, hindi alintana kung o hindi 1499 01:17:13,285 --> 01:17:14,160 tunay na ito ay pinagsunod-sunod. 1500 01:17:14,160 --> 01:17:16,450 Dahil na lang sa paraan ng paggana ng mga uri. 1501 01:17:16,450 --> 01:17:19,530 >> At kaya tanong na ito ay uri ng tulad ng isang haka-haka na katanungan hihingi kami. 1502 01:17:19,530 --> 01:17:21,430 Saan unang, mong malaman kung ano ang mga uri Pinili 1503 01:17:21,430 --> 01:17:23,304 ay, kanan, para ma upang sagutin ang mga katanungan. 1504 01:17:23,304 --> 01:17:26,200 Ikaw ay dapat ma-maunawaan conceptually kung ano ang nangyayari. 1505 01:17:26,200 --> 01:17:30,760 At pagkatapos ay maaari mo itong mag-apply at mag-isip, OK isipin lang pinakamasama kaso sitwasyon ipaalam. 1506 01:17:30,760 --> 01:17:32,230 Sila ay ang lahat sa pababang pagkakasunud-sunod. 1507 01:17:32,230 --> 01:17:33,290 Paano na makakaapekto ito? 1508 01:17:33,290 --> 01:17:34,650 >> Paano kung ito ay pataas order? 1509 01:17:34,650 --> 01:17:35,640 Kung na ito ay inayos? 1510 01:17:35,640 --> 01:17:37,240 Paano na makakaapekto sa runtimes? 1511 01:17:37,240 --> 01:17:40,270 At pagkatapos ay ang Pinili uri, mapapansin mo na ito ay hindi tunay na bagay na ito. 1512 01:17:40,270 --> 01:17:43,500 Dahil naka-check ang lahat ng mga mga halaga alintana ng kung ano ang nangyayari. 1513 01:17:43,500 --> 01:17:45,810 >> At kaya mahusay na mga bagay upang tandaan. 1514 01:17:45,810 --> 01:17:50,290 Bakit ang ilang mga uri ay naiiba mula sa iba at kung paano pinakamahusay at pinakamasamang sitwasyon kaso 1515 01:17:50,290 --> 01:17:52,740 ay makakaapekto sa lahat ng mga ito. 1516 01:17:52,740 --> 01:17:56,700 >> Pupunta ako sa talagang hit sa masama dahil iyon ay sa pagsusulit. 1517 01:17:56,700 --> 01:17:57,199 Oo. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 SIGE. 1520 01:18:01,320 --> 01:18:05,590 May anim na minuto ang natitira. 1521 01:18:05,590 --> 01:18:09,880 Maaari bang kumuha ng tatlong minuto ng tanong. 1522 01:18:09,880 --> 01:18:12,290 Maaari ko ring mag-istambay para tulad ng 20 minuto pagkatapos ng section 1523 01:18:12,290 --> 01:18:13,850 kung gusto mong magtanong rin. 1524 01:18:13,850 --> 01:18:16,330 Kahit sino ay may tunay maikling ba lamang tanong o haka-haka isyu 1525 01:18:16,330 --> 01:18:17,360 ang mga ito ay hindi maliwanag ang tungkol sa ngayon? 1526 01:18:17,360 --> 01:18:17,832 Oo? 1527 01:18:17,832 --> 01:18:19,720 >> Madla: Maaari kang makipag-usap sa isang maliit na kaunti tungkol sa bitwise operator? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESSOR: Oo. 1529 01:18:20,280 --> 01:18:22,446 Kaya bitwise operator ay isang bagay na ikaw ay malamang na 1530 01:18:22,446 --> 01:18:24,170 Maaaring gusto lamang upang ilagay sa iyong mga sheet. 1531 01:18:24,170 --> 01:18:27,540 Kaya quickly-- hindi ko gusto upang pumunta masyadong maraming malalalim 1532 01:18:27,540 --> 01:18:31,164 dahil Harvard, sa kanilang mga review session, tinakpan nang mahusay. 1533 01:18:31,164 --> 01:18:33,080 Bitwise operator, may limang ng mga ito, right? 1534 01:18:33,080 --> 01:18:41,370 >> May na ito, kung saan ay x o function, mayroong ampersand, na kung saan ay ang at. 1535 01:18:41,370 --> 01:18:44,050 Pipe, kung saan ay ang o. 1536 01:18:44,050 --> 01:18:46,790 At pagkatapos ay mayroon kang dalawang iba't ibang uri ng mga nagbabago. 1537 01:18:46,790 --> 01:18:50,610 >> Kung ako magbibigay sa iyo ng dalawang mga halaga, kung Ibinibigay ko sa iyo, i, isa at isa. 1538 01:18:50,610 --> 01:18:52,390 Ano ang gusto na suriin na? 1539 01:18:52,390 --> 01:18:55,490 Kung ako magbibigay sa iyo ng tunay at totoo, totoo? 1540 01:18:55,490 --> 01:18:56,930 Ano ang tungkol sa tama o mali? 1541 01:18:56,930 --> 01:18:57,830 Still true right,? 1542 01:18:57,830 --> 01:18:59,762 Dahil mayroong isang o. 1543 01:18:59,762 --> 01:19:01,220 Susubukan naming malamang na magbigay sa iyo ng mga numero. 1544 01:19:01,220 --> 01:19:03,780 Kaya tandaan, ang isa ay katumbas ng totoo, zero katumbas false. 1545 01:19:03,780 --> 01:19:07,407 At maaari naming ibigay sa inyo ang mga bagay na at hilingin sa iyo upang sabihin sa amin kung ano ang mangyayari. 1546 01:19:07,407 --> 01:19:10,240 Ito ay sumasakop sa Harvard sa loob ng unang 10 minuto ng kanilang mga session ng pag-aaral 1547 01:19:10,240 --> 01:19:11,230 tunay, tunay mabuti. 1548 01:19:11,230 --> 01:19:14,260 Kaya nais mong guys na gumawa Siguraduhin na tumingin ka pabalik sa mga iyon. 1549 01:19:14,260 --> 01:19:16,387 >> Madla: pisa5 magiging sa pagsusulit? 1550 01:19:16,387 --> 01:19:16,970 PROFESSOR: No. 1551 01:19:16,970 --> 01:19:18,240 Huwag kahit na tumingin sa pisa5 ngayon. 1552 01:19:18,240 --> 01:19:18,810 Mahirap. 1553 01:19:18,810 --> 01:19:22,830 Lamang ay hindi kahit na abala sa pagtingin sa pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Gayunpaman, tulad ng ilang mga pahiwatig at mga mungkahi, ako 1555 01:19:25,665 --> 01:19:28,320 Gusto iminumungkahi na simulan mo pisa5 sa oras na ang pagsusulit ay higit sa. 1556 01:19:28,320 --> 01:19:30,319 Ito ang magiging pinakamahirap linggo, ngunit pagkatapos ay sa iyo guys 1557 01:19:30,319 --> 01:19:34,590 maipapasa ito sa mga burol ng mga pagulong sa berde at Tuta, 1558 01:19:34,590 --> 01:19:36,115 at ito ay multa. 1559 01:19:36,115 --> 01:19:39,810 >> Makabuluhang klase na ito ay makakakuha ng mas madali matapos ang ika-limang pset. 1560 01:19:39,810 --> 01:19:41,560 Oras ng opisina: Madla mga araw ng Linggo, Lunes? 1561 01:19:41,560 --> 01:19:44,260 PROFESSOR: Oo, kaya oras ng opisina ay ang Linggo hanggang Lunes para sa pset. 1562 01:19:44,260 --> 01:19:47,009 Oras ngayong gabi Office mahalagang ay lamang ay review para sa mga pagsusulit. 1563 01:19:47,009 --> 01:19:50,350 Kung ang sinuman ay nagnanais na dumating sa at hilingin ang TAS ng isang katanungan, kami ay magiging doon. 1564 01:19:50,350 --> 01:19:53,220 >> Kukunin ko siguro isa pang tanong kung ang sinuman ay isang katanungan? 1565 01:19:53,220 --> 01:19:53,809 Oo? 1566 01:19:53,809 --> 01:19:55,850 Madla: Kapag handa ka pagtukoy nodes, [hindi marinig] 1567 01:19:55,850 --> 01:20:00,700 kung sabihin mo node star at pagkatapos ay susunod, awtomatikong gumagana ang computer 1568 01:20:00,700 --> 01:20:03,610 maunawaan na ikaw ay nagre-refer sa isa pang pointer? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSOR: No. 1570 01:20:04,580 --> 01:20:06,710 >> Madla: Mayroon kang relink ito [hindi marinig]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESSOR: Kaya talaga ang struct ng isang node ay, tandaan, 1572 01:20:09,270 --> 01:20:12,620 ito ay tulad ng sa iyo na lumikha ng mga node at pagkatapos ay mayroon kang isang pointer na tinatawag na susunod. 1573 01:20:12,620 --> 01:20:14,630 Lahat ng ginagawa mo ay nagkakaroon ang istraktura doon. 1574 01:20:14,630 --> 01:20:16,387 Ikaw ay may na magtalaga na pointer sa isang lugar. 1575 01:20:16,387 --> 01:20:18,470 Kaya ang mga computer ay hindi malaman kung ano pa ang ginagawa nito. 1576 01:20:18,470 --> 01:20:20,250 Ikaw ang tunay na italaga ito kapag ikaw ay lumilikha ng iyong listahan ng naka-link. 1577 01:20:20,250 --> 01:20:22,170 At iyan ang higit sa lahat pset 5 ay sa. 1578 01:20:22,170 --> 01:20:24,106 Kaya huwag mag-alala tungkol sa anuman sa mga iyon sa ngayon. 1579 01:20:24,106 --> 01:20:26,380 >> Madla: Kaya hindi namin kailangan upang focus masyado sa list link, lamang 1580 01:20:26,380 --> 01:20:27,440 ang pangkalahatang mga kuru-kuro? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESSOR: Just medyo marami stack, queues, mga listahan ng link, mga puno, hash talahanayan. 1582 01:20:30,980 --> 01:20:33,639 Basta ma-alam kung ano sila. 1583 01:20:33,639 --> 01:20:35,680 Hindi namin pagpunta upang hilingin gusto mo anumang bagay na tiyak 1584 01:20:35,680 --> 01:20:39,300 dahil hindi talaga kami ng isang pset na ang sumasakop sa anumang ng na pa. 1585 01:20:39,300 --> 01:20:45,540 >> Kaya sa huling dalawang minuto bago Inilagay ko sa iyo ng libreng upang patayin ang quiz. 1586 01:20:45,540 --> 01:20:49,370 Medyo marami, tulad ng, isipin ang tungkol sa kung paano malayo ka guys ay may dumating sa ganitong klase. 1587 01:20:49,370 --> 01:20:52,820 >> Tandaan ako kapag linggo dalawang ng klase, ang ilan sa iyo 1588 01:20:52,820 --> 01:20:55,720 gumastos ng tatlong oras ang pagsusulat ng tubig. 1589 01:20:55,720 --> 01:20:57,970 Gaano katagal ito ay magdadala sa iyo guys na magsulat ng tubig ngayon? 1590 01:20:57,970 --> 01:20:59,670 30 segundo, marahil? 1591 01:20:59,670 --> 01:21:01,810 Mag-isip tungkol sa kung magkano ka guys ay may natutunan. 1592 01:21:01,810 --> 01:21:04,320 CS ay isang tunay, tunay na mahirap na paksa. 1593 01:21:04,320 --> 01:21:06,190 Walang duda na iyon. 1594 01:21:06,190 --> 01:21:09,160 Ito ay mahirap, na kung bakit walang pag-aaral ng mga ito. 1595 01:21:09,160 --> 01:21:10,730 Ito lang ang mahirap. 1596 01:21:10,730 --> 01:21:11,650 At ito ay ganap fine. 1597 01:21:11,650 --> 01:21:14,150 >> At ako ay talagang maipagmamalaki na ay ginawa ang lahat ng ito ito malayo. 1598 01:21:14,150 --> 01:21:16,380 Psets ay hindi madali. 1599 01:21:16,380 --> 01:21:17,790 Nagsasagawa sila ng isang pulutong ng mga oras. 1600 01:21:17,790 --> 01:21:22,580 Ikaw guys, hindi ko hihilingin sa iyo na magsulat ang laro ng 15 o Vigenere sa pset. 1601 01:21:22,580 --> 01:21:24,160 Hindi na kailangang mag pambihira out lamang tungkol sa na. 1602 01:21:24,160 --> 01:21:28,080 Lahat ng sinusubok namin dito ay ang masuri ang iyong haka-haka kaalaman, pati na rin 1603 01:21:28,080 --> 01:21:31,524 gaya ng ilan sa iyong mga pangunahing kasanayan ng coding. 1604 01:21:31,524 --> 01:21:33,440 Ang pagsubok ay dinisenyo upang maging talagang mahirap. 1605 01:21:33,440 --> 01:21:36,180 Tulad ng, ito ay dinisenyo para hindi mo na makakuha ng 100. 1606 01:21:36,180 --> 01:21:39,880 Ito ay dinisenyo para sa iyo na marahil hindi mo magagawang upang matapos sa 75 minuto. 1607 01:21:39,880 --> 01:21:41,995 At iyon ay lubos na fine. 1608 01:21:41,995 --> 01:21:42,870 Ako ay isang mag-aaral sa sarili ko. 1609 01:21:42,870 --> 01:21:45,960 Alam ko, hate ko ito kapag ako maglakad sa labas ng isang pagsusulit ay tulad ng, tae. 1610 01:21:45,960 --> 01:21:47,044 Iyon ay talagang mahirap. 1611 01:21:47,044 --> 01:21:49,460 Marahil kung ano ang nangyayari sa happen-- at iyan ay ganap na multa, 1612 01:21:49,460 --> 01:21:50,751 Sinasabi ko sa iyo guys ngayon. 1613 01:21:50,751 --> 01:21:53,190 Ang ibig sabihin nito ay ang mga bagay na ay hindi mataas sa lahat. 1614 01:21:53,190 --> 01:21:55,360 >> At para sa mga mo na ay nakakakuha ng, tulad ng, 1615 01:21:55,360 --> 01:21:57,870 threes sa iyong hanay ng problema, na ay hindi nangangahulugan na ikaw ay 1616 01:21:57,870 --> 01:21:59,536 pagpunta upang makakuha ng isang 60 na bahagdan sa ganitong klase. 1617 01:21:59,536 --> 01:22:01,440 Kung makakakuha ka ng 60% sa pagsusulit, na hindi 1618 01:22:01,440 --> 01:22:03,330 ibig mo bang sabihin ay pagpunta sa makakuha ng isang D sa ganitong klase. 1619 01:22:03,330 --> 01:22:05,740 Nakakakita kami, lalo na ako, para sa sa mga ka sa aking seksyon, 1620 01:22:05,740 --> 01:22:07,406 Nakikita ko kung paano mahirap mo guys ay nagtatrabaho sa lahat. 1621 01:22:07,406 --> 01:22:09,190 At patuloy kong track na iyon. 1622 01:22:09,190 --> 01:22:11,420 >> Ikaw guys ay multa. 1623 01:22:11,420 --> 01:22:14,580 Walang institutional memory ng kaligayahan sa dulo ng semestre. 1624 01:22:14,580 --> 01:22:16,840 Dahil ang lahat ng Harvard bata ay nagsasabi kanilang mga kaibigan, oh, makikita mo fine. 1625 01:22:16,840 --> 01:22:18,381 Walang sinuman ay nagsasabi sa iyo guys na dito. 1626 01:22:18,381 --> 01:22:20,950 Kaya ko bang sabihin sa iyo guys na dito. 1627 01:22:20,950 --> 01:22:22,280 >> Ikaw guys ay multa. 1628 01:22:22,280 --> 01:22:24,080 Ako kaya maipagmamalaki ng lahat ng ka guys. 1629 01:22:24,080 --> 01:22:25,680 Ang pagsubok ay magiging mahirap. 1630 01:22:25,680 --> 01:22:28,140 Pag-aralan para sa mga ito, at pagkatapos ay lamang itapon. 1631 01:22:28,140 --> 01:22:31,280 Maghanda upang matuto ng mga bagong bagay. 1632 01:22:31,280 --> 01:22:33,990 At kumain ng kendi. 1633 01:22:33,990 --> 01:22:35,940 Hindi namin magkaroon ng maraming kendi. 1634 01:22:35,940 --> 01:22:37,760 >> Kumuha ng pagtulog ng isang magandang gabi. 1635 01:22:37,760 --> 01:22:40,420 Huwag hindi makatulog, dahil na nais maging ganap na hindi maayos. 1636 01:22:40,420 --> 01:22:41,490 CS ay isang pulutong ng logic. 1637 01:22:41,490 --> 01:22:44,960 Kung hindi mo makatulog, hindi ka maaaring gumana, at hindi maaaring gumana ang iyong utak. 1638 01:22:44,960 --> 01:22:48,780 At kukunin ko na dito para sa susunod na 20 minuto kung ang sinuman ay nais na mag-hang sa paligid. 1639 01:22:48,780 --> 01:22:51,150 Ikaw guys ay pagpunta upang patayin ito. 1640 01:22:51,150 --> 01:22:53,000 Good luck. 1641 01:22:53,000 --> 01:22:55,663