1 00:00:00,000 --> 00:00:03,944 >> [MUSIC nagpe-play] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 David MALAN: Lahat ng karapatan. 4 00:00:11,690 --> 00:00:14,674 Ito ay CS50, at ito ay ang katapusan ng linggo 2. 5 00:00:14,674 --> 00:00:16,840 Pasensya na hindi ko maaaring maging doon sa iyo ang lahat ng mga araw na ito, 6 00:00:16,840 --> 00:00:18,300 ngunit ikaw ay nasa napakahusay na mga kamay. 7 00:00:18,300 --> 00:00:21,710 Payagan ako upang ipakilala Sariling Rob Bowden CS50. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 Rob BOWDEN: At siyempre, pagkatapos ay na namin na gumawa ng masaya ng ang katunayan 10 00:00:31,730 --> 00:00:36,820 na siya ay nagpadala sa amin ng isang vertical video at ipakita ito. 11 00:00:36,820 --> 00:00:38,320 >> [Playback ng video] 12 00:00:38,320 --> 00:00:39,820 >> [MUSIC nagpe-play] 13 00:00:39,820 --> 00:00:42,350 >> [Yapak] 14 00:00:42,350 --> 00:00:44,730 >> -Ang Video ay hindi may upang tumingin sa ganitong paraan. 15 00:00:44,730 --> 00:00:46,570 Ito ay maaaring pumigil. 16 00:00:46,570 --> 00:00:49,070 Say hindi sa vertical mga video. 17 00:00:49,070 --> 00:00:53,310 >> Mangyari kapag ikaw -Vertical video hold ang iyong camera sa maling paraan. 18 00:00:53,310 --> 00:00:55,880 Tatapusin nito ang iyong video up naghahanap tulad ng crap. 19 00:00:55,880 --> 00:00:57,650 >> - [Ingit] 20 00:00:57,650 --> 00:01:02,240 >> -May Mga mas at mas maraming mga tao gumon sa paggawa ng vertical video araw-araw. 21 00:01:02,240 --> 00:01:06,240 Hindi ito pumutok o wala, ngunit pa rin ito ganap na hindi maayos. 22 00:01:06,240 --> 00:01:10,410 Mayroong dalawang mga iba't ibang uri ng mga tao na nagdadalamhati sa VVS. 23 00:01:10,410 --> 00:01:14,160 Tinatrato Ang unang grupo ng mga video shoot sila tulad ng mga larawan. 24 00:01:14,160 --> 00:01:15,850 Hindi nila ibig sabihin ng anumang pinsala. 25 00:01:15,850 --> 00:01:19,180 Sila lamang ay hindi maunawaan na ang habang maaari mong i-on ng isang larawan, 26 00:01:19,180 --> 00:01:20,880 talagang hindi mo maaaring i-isang video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [Mga tunog unggoy] 29 00:01:23,460 --> 00:01:27,540 >> -Ang Iba pang mga grupo ay mga tao na hindi magbigay ng isang [BLEEP]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertical Video Syndrome ay mapanganib. 31 00:01:31,090 --> 00:01:34,120 May mga larawan Motion palaging horizontal. 32 00:01:34,120 --> 00:01:35,990 Telebisyon ay pahalang. 33 00:01:35,990 --> 00:01:38,380 Screen ng Computer ay pahalang. 34 00:01:38,380 --> 00:01:41,580 Ang mga tao ay mga mata ay pahalang. 35 00:01:41,580 --> 00:01:45,170 Hindi namin ay binuo upang panoorin vertical video. 36 00:01:45,170 --> 00:01:47,600 >> Ibig -I vertical video. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Nagmamalasakit sa iyo. 38 00:01:50,410 --> 00:01:53,340 >> -Kung Ang problemang ito ni kaliwa malaya, masyado kang 39 00:01:53,340 --> 00:01:57,650 ay magsisimulang magpakita ng apat na mga video nang sabay-sabay upang i-save lamang ng bandwidth. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertical video gagawin ay ang laki ng isang selyo. 41 00:02:02,400 --> 00:02:04,920 >> -At Ito ay kumalat sa lahat ng dako. 42 00:02:04,920 --> 00:02:07,670 May screen Movie palaging horizontal. 43 00:02:07,670 --> 00:02:11,200 Kung ikaw ay naging vertical video tinanggap, sinehan 44 00:02:11,200 --> 00:02:13,930 ay kailangang maging matangkad at payat. 45 00:02:13,930 --> 00:02:17,710 >> -At Sa lahat ng mga sinehan ng pelikula gagawin may upang makakuha ng punit-punit down at itinayong muli. 46 00:02:17,710 --> 00:02:22,090 At sa oras na sila ay itinayong muli, Kunis ay luma at pangit. 47 00:02:22,090 --> 00:02:24,342 >> Makikita -Birds crash sa kanila at mamatay. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Lahat makakuha ng matigas leeg mula sa mga naghahanap up. 49 00:02:26,530 --> 00:02:29,800 >> -at Hindi isa ay umupo sa harap hilera kailanman muli. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas ay muling release Star Wars again-- ang paglangoy ng edition. 51 00:02:37,170 --> 00:02:41,860 >> Hindi talaga maaaring sabihin -I ay ang kuwento na nais kong sabihin. 52 00:02:41,860 --> 00:02:46,030 Ito ay isang mahusay na pagkakataon para sa akin upang eksperimento sa isang bagong teknolohiya. 53 00:02:46,030 --> 00:02:48,150 >> -You're Isang haltak. 54 00:02:48,150 --> 00:02:54,430 >> -Sa Bawat oras na ang isang mobile na aparato ay ginagamit upang record ng video, ang tukso ay doon. 55 00:02:54,430 --> 00:02:56,370 Sabihin lang no. 56 00:02:56,370 --> 00:03:00,116 Say hindi sa George Lucas. 57 00:03:00,116 --> 00:03:04,062 Say hindi sa lumang Kunis. 58 00:03:04,062 --> 00:03:06,600 Say hindi sa vertical mga video. 59 00:03:06,600 --> 00:03:12,511 >> -At Kung makita mo ang isang tao na ginagawa ito, sabihin, "Hindi ka shooting na kanang dummy!" 60 00:03:12,511 --> 00:03:15,433 >> [MUSIC nagpe-play] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END playback] 63 00:03:19,830 --> 00:03:23,702 >> [Palakpakan] 64 00:03:23,702 --> 00:03:27,598 >> [Audio out] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 Rob BOWDEN: --simple anyo ng cryptography, 67 00:03:45,790 --> 00:03:49,500 na talaga ang pag-encrypt at decryption ng mga lihim na mensahe. 68 00:03:49,500 --> 00:03:52,590 Kaya dito mayroon kaming isang napaka-simpleng laruan. 69 00:03:52,590 --> 00:03:56,900 At ang mga ideya ay ang panlabas na singsing umiikot sa paligid ng panloob na singsing. 70 00:03:56,900 --> 00:04:01,610 At makikita mo, siguro kung ako mag-zoom in, na- ito ay mahirap na makita. 71 00:04:01,610 --> 00:04:05,090 Subalit, tulad ng, ang bilang 1-- rin, na inilipat. 72 00:04:05,090 --> 00:04:09,120 >> Ang bilang 1 maps sa sulat X, number 2 na mga mapa sa sulat 73 00:04:09,120 --> 00:04:11,630 J. Hindi kapani-paniwalang mahirap hindi upang laktawan forward. 74 00:04:11,630 --> 00:04:16,100 Letter 2 mga mapa sa J. Number 3 mga mapa sa D. Kaya 75 00:04:16,100 --> 00:04:20,140 may singsing na ito maaari mong ibigay isang tao ng mensahe 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Para sa ilang mga dahilan kung bakit mo nais na sabihin sa kanila XJD. 77 00:04:22,624 --> 00:04:24,540 Ngunit maaari mong bigyan sila ng ang ilang mga mensahe ng mga numero, 78 00:04:24,540 --> 00:04:28,460 at hangga't sila ay may singsing na ito, ang mga ito maaaring i-decrypt kung ano ang iyong sinusubukan na sabihin. 79 00:04:28,460 --> 00:04:32,510 >> Kaya ikaw ay maaaring tumingin sa mga ito partikular na halimbawa ng cryptography 80 00:04:32,510 --> 00:04:36,640 bago kung buong panahon ng Pasko na iyong napanood A Christmas Story. 81 00:04:36,640 --> 00:04:38,520 Kung hindi mo pa nakikita ito bago, at pagkatapos lamang 82 00:04:38,520 --> 00:04:41,060 i-on TBS sa literal anumang oras sa Bisperas ng Pasko, 83 00:04:41,060 --> 00:04:44,510 dahil ipakita lang nila ito pabalik sa likod upang i-back i-back upang i-back ang buong araw. 84 00:04:44,510 --> 00:04:46,744 At ang mga kaugnay na video ay na ito. 85 00:04:46,744 --> 00:04:47,410 [Playback ng video] 86 00:04:47,410 --> 00:04:50,020 -Maging Ito kilala sa lahat at sari-sari na Ralph Parker ay sa pamamagitan nito 87 00:04:50,020 --> 00:04:52,850 itinalaga ng isang miyembro ng Little Ulila Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 at may karapatan sa lahat ng mga parangal at sa mga pakinabang na nagaganap dito. 89 00:04:56,490 --> 00:04:59,010 Signed Little ulila Annie. 90 00:04:59,010 --> 00:05:03,120 Countersigned Pierre Andre sa tinta! 91 00:05:03,120 --> 00:05:07,460 Mga parangal at mga benepisyo narito na sa edad na siyam! 92 00:05:07,460 --> 00:05:12,530 >> [Yelling mula RADIO] 93 00:05:12,530 --> 00:05:13,030 -Come On. 94 00:05:13,030 --> 00:05:14,000 Sabihin makakuha sa sa mga ito. 95 00:05:14,000 --> 00:05:18,274 Hindi ko kailangan ang lahat na jazz tungkol sa smugglers at pirates. 96 00:05:18,274 --> 00:05:20,440 -Listen Bukas ng gabi sa ang pangwakas na pakikipagsapalaran 97 00:05:20,440 --> 00:05:22,540 ng Black Pirate Ship. 98 00:05:22,540 --> 00:05:25,460 Ngayon, oras na para sa Lihim na mensahe Annie 99 00:05:25,460 --> 00:05:28,620 para sa inyo mga miyembro ng Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Tandaan mga bata, ang mga kasapi lamang ng Annie Secret Circle 101 00:05:32,370 --> 00:05:34,880 maaaring mabasa lihim na mensahe Annie. 102 00:05:34,880 --> 00:05:39,100 Tandaan, Annie ay depende sa iyo. 103 00:05:39,100 --> 00:05:41,660 Itakda ang iyong mga pin sa B2. 104 00:05:41,660 --> 00:05:43,960 Narito ang mensahe. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -ako Sa aking unang lihim na pulong. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> -Oh, Pierre ay sa malakas na tinig na ngayong gabi. 115 00:05:54,570 --> 00:05:57,490 Maaari ko bang sabihin na ngayong gabi mensahe ay talagang mahalaga. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Iyan ay isang mensahe mula sa Annie sarili. 119 00:06:01,580 --> 00:06:02,880 Tandaan, huwag sabihin sa kahit sino. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> Limang segundo mamaya, ako sa ang tanging kuwarto sa bahay kung saan ang isang batang lalaki ng siyam 122 00:06:11,130 --> 00:06:15,830 maaaring umupo sa privacy at mabasa. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Nagpunta ako sa susunod. 126 00:06:20,210 --> 00:06:23,300 E. Ang unang salita ay "maging." 127 00:06:23,300 --> 00:06:25,880 S. Ito ay darating na mas madali na ngayon. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Iyan ay R. 130 00:06:30,528 --> 00:06:31,278 -Come On, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Gotta na pumunta ako! 132 00:06:31,861 --> 00:06:33,182 -I'll Maging kanan down, Ma! 133 00:06:33,182 --> 00:06:36,038 GEE matalinong. 134 00:06:36,038 --> 00:06:42,840 T. O. "Maging sigurado na" - siguraduhin na kung ano? 135 00:06:42,840 --> 00:06:44,770 Ano ang Little ulila Annie sinusubukan mong sabihin? 136 00:06:44,770 --> 00:06:46,381 Maging sigurado sa kung ano? 137 00:06:46,381 --> 00:06:47,825 >> Ay nakuha -Randy puntahan 138 00:06:47,825 --> 00:06:48,866 Babaguhin ba ninyo ang mangyaring dumating out? 139 00:06:48,866 --> 00:06:49,783 >> -Ang Lahat ng mga karapatan, ina! 140 00:06:49,783 --> 00:06:51,786 Kukunin ko ang karapatan out! 141 00:06:51,786 --> 00:06:53,606 Ako ay nakakakuha ng mas malapit na ngayon. 142 00:06:53,606 --> 00:06:55,550 Malamig ang samahan ay napakahirap. 143 00:06:55,550 --> 00:06:57,050 Ano iyon? 144 00:06:57,050 --> 00:06:59,905 Ang kapalaran ng mga planeta Maaaring maging ang balanse! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy ay nakuha upang pumunta! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Maging karapatan out, para sa mga umiiyak nang malakas! 147 00:07:05,680 --> 00:07:07,170 Malapit na! 148 00:07:07,170 --> 00:07:08,150 Nagsakay aking mga daliri. 149 00:07:08,150 --> 00:07:09,980 Ang aking isip ay isang bakal bitag. 150 00:07:09,980 --> 00:07:11,496 Vibrated bawat napakaliit na butas. 151 00:07:11,496 --> 00:07:13,268 Ito ay halos malinaw! 152 00:07:13,268 --> 00:07:13,767 Oo. 153 00:07:13,767 --> 00:07:14,609 Oo. 154 00:07:14,609 --> 00:07:15,108 Oo. 155 00:07:15,108 --> 00:07:16,449 Oo. 156 00:07:16,449 --> 00:07:20,240 Siguraduhin na uminom ng iyong Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Isang pangit commercial? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Anak ng isang asong babae. 162 00:07:34,920 --> 00:07:35,890 >> [END playback] 163 00:07:35,890 --> 00:07:39,650 >> Rob BOWDEN: Kaya na kung paano Ovaltine kaugnayan sa cryptography. 164 00:07:39,650 --> 00:07:42,290 Talaga lang advertised CS50 Ovaltine, kaya maaaring namin 165 00:07:42,290 --> 00:07:44,400 maging isang pangit komersyal para Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Lahat tama. 167 00:07:44,900 --> 00:07:47,120 Kaya ngayon aktwal na computer science. 168 00:07:47,120 --> 00:07:50,670 Tandaan sa Lunes iniwanan namin off diving mas malalim sa mga string. 169 00:07:50,670 --> 00:07:52,820 Kaya tayo ay pagharap sa ang string "Zamyla." 170 00:07:52,820 --> 00:07:55,130 At kami ay makilala ang katunayan na maaari naming ituring 171 00:07:55,130 --> 00:07:57,510 "Zamyla" bilang isang pagkakasunod-sunod ng mga character. 172 00:07:57,510 --> 00:07:59,740 At tandaan na ang aming natutunan bracket pagtatanda. 173 00:07:59,740 --> 00:08:01,995 Kaya kung ito ay naka-imbak sa isang string "s," at pagkatapos ay 174 00:08:01,995 --> 00:08:05,860 kung sinabi namin s bracket 0, na gagawin ipahiwatig ang sulat capital Z. 175 00:08:05,860 --> 00:08:09,790 At kung sinabi namin s bracket 1, na nais ipahiwatig ang unang lowercase a, 176 00:08:09,790 --> 00:08:14,220 at iba pa hanggang sa s bracket 5, na kung saan ay nagpapahiwatig ng huling a. 177 00:08:14,220 --> 00:08:17,090 >> Ngayon tandaan na ang haba ng string na ito ay 6, 178 00:08:17,090 --> 00:08:23,220 ngunit ang mga indeks sa string ay 0 hanggang 5, Z sa pamamagitan ng na ang huling a. 179 00:08:23,220 --> 00:08:28,650 Kaya ito ngayon magkasya sa isang mas malaking larawan ng memory ng iyong computer, ang iyong RAM. 180 00:08:28,650 --> 00:08:32,020 Kaya tabi-tabi ang mga programa na ikaw ay nagpapatakbo ng iyong computer 181 00:08:32,020 --> 00:08:34,780 kailangang tandaan Zamyla lugar sa memorya. 182 00:08:34,780 --> 00:08:36,029 Kaya ako ay maaaring magkaroon ng isang volunteer? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Oo pakiusap. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 At kung ano ang pangalan mo? 187 00:08:51,500 --> 00:08:52,410 >> DEAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> Rob BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Masaya akong makilala kayo, Dean. 190 00:08:54,910 --> 00:08:58,240 Kaya dumating sa paglipas dito, at kami ay pagpunta sa mayroon kang gumuhit 191 00:08:58,240 --> 00:09:00,740 sa aming magandang nakakatawang layout ng memory. 192 00:09:00,740 --> 00:09:05,950 Ngayon gusto kong isipin ng memory bilang isa pang strip ng bytes, 193 00:09:05,950 --> 00:09:11,090 ngunit para lamang sa mga layunin ng display bibigyan namin ng lamang ay kaliwa hanggang kanan, itaas sa ibaba. 194 00:09:11,090 --> 00:09:11,590 SIGE? 195 00:09:11,590 --> 00:09:22,030 >> Kaya ako pagpunta upang ipakita ang isang program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 At sa gayon ang lahat ng programang ito ay ginagawa ay humihiling ng apat na string 197 00:09:25,760 --> 00:09:28,830 mula sa mga user na may GetString at pagkatapos ay pag-print 198 00:09:28,830 --> 00:09:30,950 kahit na ano na unang string ipinasok ay. 199 00:09:30,950 --> 00:09:32,840 Kami ay hindi papansin dalawang sa pamamagitan ng apat. 200 00:09:32,840 --> 00:09:33,610 SIGE. 201 00:09:33,610 --> 00:09:38,210 Kaya sa paglipas dito now-- kapag Una kong s1 kahilingan. 202 00:09:38,210 --> 00:09:39,740 Kaya ikaw ang computer. 203 00:09:39,740 --> 00:09:41,680 At ikaw ay pagpapatupad ng GetString. 204 00:09:41,680 --> 00:09:46,710 Kaya humiling ka ng isang string mula sa akin, at ako sabihin, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Bigyan ang string "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Kaya tabi-tabi sa memory mo kailangang tandaan "Dean." 207 00:09:50,300 --> 00:09:52,160 Kaya isulat ito sa memory sa isang lugar. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perpekto. 210 00:09:59,210 --> 00:09:59,880 SIGE. 211 00:09:59,880 --> 00:10:01,740 Kaya ngayon ay may s2 namin. 212 00:10:01,740 --> 00:10:03,869 At s2 ay magiging isang kahilingan sa GetString. 213 00:10:03,869 --> 00:10:05,160 Kaya ako pagpunta upang ipasok ang isang string. 214 00:10:05,160 --> 00:10:08,720 Pupunta ako upang ipasok ang "Hannah." 215 00:10:08,720 --> 00:10:10,586 Kaya ipasok "Hannah" sa isang lugar sa memorya. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Oo. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, kaya s3 ngayon. 220 00:10:25,550 --> 00:10:28,380 At ito ay pagpunta sa maging isa pang humiling na GetString. 221 00:10:28,380 --> 00:10:37,020 At kaya ngayon ipasok ang "Maria." 222 00:10:37,020 --> 00:10:37,520 Lahat tama. 223 00:10:37,520 --> 00:10:40,980 At pagkatapos ay may isang huling kahilingan sa GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Kaya, hindi ko alam. 225 00:10:42,580 --> 00:10:45,640 Paano ang tungkol sa pumunta kami sa antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Kaya ipasok na sa memory. 227 00:10:49,460 --> 00:10:50,400 Oo. 228 00:10:50,400 --> 00:10:53,970 Kaya gawin lamang "Rob." 229 00:10:53,970 --> 00:10:54,560 >> SIGE. 230 00:10:54,560 --> 00:10:58,410 Kaya ngayon explain-- kung bakit ginawa iniwan mo ang mga puwang? 231 00:10:58,410 --> 00:11:01,340 Bakit kailangan mo itong blangko space dito, dito, at hanggang dito? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Oo. 234 00:11:05,670 --> 00:11:09,450 Kaya paunawa kapag pumunta ako upang i-print s1-- kaya kung tayo 235 00:11:09,450 --> 00:11:11,890 ay may "Hannah" na tumatakbo karapatan up sa tabi ng "Dean," 236 00:11:11,890 --> 00:11:14,360 paano namin malalaman kung kailan ang string "Dean" ay nagtatapos? 237 00:11:14,360 --> 00:11:19,470 Kaya maaaring magkaroon ng pag-print ang string s1 lamang nakalimbag "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 kung ito ay hindi magkakaroon ng anumang mga palatandaan kapag "Dean" tunay na nagtatapos. 239 00:11:22,720 --> 00:11:23,240 >> Lahat tama. 240 00:11:23,240 --> 00:11:27,650 Kaya sa memory ang paraan namin ay talagang kumakatawan ito sa dulo ng isang string 241 00:11:27,650 --> 00:11:29,940 ay may backslash zero. 242 00:11:29,940 --> 00:11:32,620 Kaya ang puwang na ito ay eksakto kung ano ang aming nais. 243 00:11:32,620 --> 00:11:34,040 Dapat ito ay isang backslash zero. 244 00:11:34,040 --> 00:11:37,690 Ito ay magiging isang backslash zero, at ito ay magiging isang backslash zero. 245 00:11:37,690 --> 00:11:41,585 At maaari kang magkaroon ng isang hindi kapani-paniwala na premyo para sa pagiging isang perpektong volunteer. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Kumuha ng isang stress ball! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> SIGE. 250 00:11:49,700 --> 00:11:54,420 Kaya ito ng character backslash zero ay kung paano namin ipahiwatig ang katapusan ng isang string. 251 00:11:54,420 --> 00:11:57,120 Ito ay kung paano kapag ang anumang ibinigay na programa nais na i-print ang isang string, 252 00:11:57,120 --> 00:11:59,760 ito ay how-- tandaan namin natutunan ang strlen function na noong nakaraang linggo? 253 00:11:59,760 --> 00:12:00,940 Haba String? 254 00:12:00,940 --> 00:12:03,770 Ito ay kung paano length string ay may kakayahan upang matukoy kung gaano katagal ang isang string ay. 255 00:12:03,770 --> 00:12:05,810 Ito ay para mapigil lang iterating sa ibabaw ng mga letra 256 00:12:05,810 --> 00:12:08,217 hanggang nahahanap nito ang backslash zero character. 257 00:12:08,217 --> 00:12:11,050 Kaya ang mga mahalagang bagay upang mapagtanto tungkol sa backslash zero karakter 258 00:12:11,050 --> 00:12:14,950 ay ito ay kinakatawan sa pamamagitan ng lahat ng mga zero sa bits. 259 00:12:14,950 --> 00:12:18,980 Kaya mapapansin na ito ay naiiba mula sa zero character. 260 00:12:18,980 --> 00:12:23,010 Kaya ang zero character, kung tandaan mo sa halimbawa na ibinigay niya sa dulo 261 00:12:23,010 --> 00:12:27,360 ng panayam kung saan map character to-- tulad capital A mga mapa upang 65. 262 00:12:27,360 --> 00:12:29,130 Lowercase ng mga mapa sa 97. 263 00:12:29,130 --> 00:12:30,890 Lowercase b ay 98. 264 00:12:30,890 --> 00:12:35,220 Kaya ang numero ng 0 na mga mapa to-- hindi ako Alam off sa tuktok ng aking ulo. 265 00:12:35,220 --> 00:12:36,400 44 o 45. 266 00:12:36,400 --> 00:12:37,890 Sa isang lugar sa rehiyon na iyon. 267 00:12:37,890 --> 00:12:40,850 >> Kaya ang character 0 ay isang aktwal na numero. 268 00:12:40,850 --> 00:12:44,350 Ngunit backslash zero mga mapa sa lahat zero bits. 269 00:12:44,350 --> 00:12:46,380 Kaya mayroong isang pagkakaiba pagitan ng backslash zero, 270 00:12:46,380 --> 00:12:48,450 na kung saan kami ay tumawag ang null Terminator. 271 00:12:48,450 --> 00:12:53,210 Mayroong isang pagkakaiba sa pagitan ng backslash zero at ang character zero. 272 00:12:53,210 --> 00:12:54,350 >> Lahat tama. 273 00:12:54,350 --> 00:12:57,520 Kaya ang pakikipag-usap ng kaunti pa tungkol string. 274 00:12:57,520 --> 00:13:01,470 Kaya nga nakikita natin dito na ito ay kung paano ay ito ay inilatag sa memory. 275 00:13:01,470 --> 00:13:07,940 Kaya ang ideya na ito ng mga string bilang isang pagkakasunod-sunod ng characters-- kaya ang opisyal na computer 276 00:13:07,940 --> 00:13:10,750 sciency kataga para sa sequence ay isang array. 277 00:13:10,750 --> 00:13:13,790 Kaya gusto naming tumawag sa isang string isang hanay ng mga character. 278 00:13:13,790 --> 00:13:17,770 At may mga tunay ibang data uri na maaari naming gumawa ng mga array sa labas ng. 279 00:13:17,770 --> 00:13:19,975 >> Kaya upang mag-udyok ito, tumingin sa isang halimbawa. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Susubukan naming tumawag ito ages0.c idedetalye ko kopyahin at i-paste ang aming template. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 SIGE. 284 00:13:33,410 --> 00:13:39,378 Kaya sa programang ito kung ano ang aming gusto mong gawin ay grab ang edad 285 00:13:39,378 --> 00:13:45,160 ng tatlong mag-aaral sa kurso. 286 00:13:45,160 --> 00:13:49,240 Upang malaman namin ang int age-- at ngayon ako pagpunta sa sabihin sa 0. 287 00:13:49,240 --> 00:13:53,140 Kaya maaari mong sabihin age1, ngunit para sa mga layunin kami makita napaka ilang sandali, 288 00:13:53,140 --> 00:13:57,187 Sasabihin kong int age0 katumbas GetInt. 289 00:13:57,187 --> 00:13:59,270 Kaya ang parehong tawag sa GetInt na namin ang ginagamit ko 290 00:13:59,270 --> 00:14:01,561 hindi nangyari mang pagdikta sinasabi, "bigyan mo ako ng edad." 291 00:14:01,561 --> 00:14:03,120 Ngunit kahilingan lamang ito. 292 00:14:03,120 --> 00:14:06,510 >> At age1 katumbas GetInt. 293 00:14:06,510 --> 00:14:09,600 At int age2 katumbas GetInt. 294 00:14:09,600 --> 00:14:14,070 Kaya, muli, tatlong mag-aaral, ngunit sa huli ang variable indeks 295 00:14:14,070 --> 00:14:16,890 mga age0 pamamagitan age2. 296 00:14:16,890 --> 00:14:17,550 SIGE. 297 00:14:17,550 --> 00:14:23,960 Ganito rin ang gagawin sa programa na ito sa kahit anong gusto naming may age0, age1, at age2, 298 00:14:23,960 --> 00:14:27,670 ngunit ang program na ito sa huli gumagana para sa tatlong mag-aaral. 299 00:14:27,670 --> 00:14:28,380 >> SIGE. 300 00:14:28,380 --> 00:14:32,110 Kaya ngayon kung ano ang gusto ko ang apat na mga mag-aaral? 301 00:14:32,110 --> 00:14:36,000 Well, ako pagpunta sa may upang bumalik sa aking code, baguhin ang mga comment, 302 00:14:36,000 --> 00:14:39,840 at ngayon kami ay may isang int age3 katumbas GetInt. 303 00:14:39,840 --> 00:14:40,610 SIGE. 304 00:14:40,610 --> 00:14:43,660 Kaya kung sino ang makakakita ang problema dito? 305 00:14:43,660 --> 00:14:47,310 Ano ang problema na may ganitong uri ng setup? 306 00:14:47,310 --> 00:14:47,810 Oo. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Oo. 309 00:14:53,610 --> 00:14:56,360 Kaya kami ay ang paglikha ng isang variable para sa bawat mag-aaral. 310 00:14:56,360 --> 00:15:00,140 Ngayon na gumagana, ngunit sa huli kung ano kung ako ngayon 311 00:15:00,140 --> 00:15:06,500 sabihin, "Gusto kong i-grab ang edad ng walong mga mag-aaral o 16 mga mag-aaral 312 00:15:06,500 --> 00:15:11,340 o ang gayunpaman maraming mga mag-aaral ng ang daan-daang mga mag-aaral sa CS50 313 00:15:11,340 --> 00:15:16,750 o ang libu-libong mga mag-aaral sa campus o ang bilyun-bilyong tao sa mundo? 314 00:15:16,750 --> 00:15:19,130 Kaya sa huli ito ay hindi napapanatiling. 315 00:15:19,130 --> 00:15:21,990 Anumang oras na makita mo ang iyong sarili sa pagkopya at pag-paste ang code na ito, 316 00:15:21,990 --> 00:15:25,050 dapat mong maramdaman sa pangkalahatan na may isang mas mahusay na paraan. 317 00:15:25,050 --> 00:15:31,290 >> Kaya ito ay kung saan namin ipakilala isang array deklarasyon. 318 00:15:31,290 --> 00:15:34,564 Kaya kapag ipinapahayag sa iyo ng isang array, ito ay kung ano ang pangkalahatang format 319 00:15:34,564 --> 00:15:35,480 ay pagpunta sa hitsura. 320 00:15:35,480 --> 00:15:36,664 Kami ay pagpunta sa sabihin ang uri. 321 00:15:36,664 --> 00:15:38,830 at pagkatapos kami ay pagpunta sa ibigay ang pangalan ng na array, 322 00:15:38,830 --> 00:15:41,150 tulad namin tukuyin ang anumang ibinigay na variable. 323 00:15:41,150 --> 00:15:43,980 At pagkatapos ay sa wakas kami ay gumagamit ng ito bracket pagtatanda muli 324 00:15:43,980 --> 00:15:47,480 ngunit sa ibang konteksto mula sa kung paano namin ay ang paggamit nito ng mas maaga. 325 00:15:47,480 --> 00:15:51,860 >> Kaya dito ito ay mukhang isang normal variable na deklarasyon na nasaksihan namin. 326 00:15:51,860 --> 00:15:54,890 Kaya nakita namin na ang int x semi-colon bago. 327 00:15:54,890 --> 00:16:00,020 Well ngayon ay maaaring makita natin ang isang bagay tulad ng int x bracket 5. 328 00:16:00,020 --> 00:16:04,020 At sa paglagay ng mga ideya sa GetInt program na kami have-- 329 00:16:04,020 --> 00:16:08,850 upang maaari naming ipatupad ito sa parehong paraan. 330 00:16:08,850 --> 00:16:13,630 >> Sabihin natin sa CS namin madalas na gamitin ang n rin ang bilang ng isang bagay. 331 00:16:13,630 --> 00:16:16,150 Kaya dito kami ng pagpunta sa tindahan ng apat na estudyante. 332 00:16:16,150 --> 00:16:25,960 At ngayon maaari naming sabihin int edad bracket hindi n-- ganap kumuha ito yet-- 333 00:16:25,960 --> 00:16:32,210 upang magpahayag ng isang hanay ng mga apat na mga mag-aaral. 334 00:16:32,210 --> 00:16:38,050 Kaya kung paano ang magiging hitsura sa ito memory ay katulad na ito. 335 00:16:38,050 --> 00:16:39,570 I-clear ang mga ito. 336 00:16:39,570 --> 00:16:46,606 At kami ay pagpunta sa may tabi-tabi in na memorya makikita ko bang ilagay ito up doon. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> So lugar sa memorya. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Isa dalawa tatlo apat. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Mayroon kaming apat na integer sa isang hilera para sa mga ito ang dami ng mga apat na integer. 343 00:17:09,849 --> 00:17:13,820 Kaya, sa kasalukuyan, ano ang laki ng isa sa mga kahon? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Oo. 346 00:17:17,690 --> 00:17:18,390 Ito ay apat na bytes. 347 00:17:18,390 --> 00:17:19,690 Ito ay 32 bits. 348 00:17:19,690 --> 00:17:22,310 Kaya ngayon ito ay iba mula sa array na tayo 349 00:17:22,310 --> 00:17:24,020 Nakita mas maaga, ang hanay ng mga character. 350 00:17:24,020 --> 00:17:28,540 Sa isang string ang bawat kahon ay isa lamang byte, dahil ang isang karakter ay isa lamang byte. 351 00:17:28,540 --> 00:17:32,170 Ngunit sa isang array ng mga integer, ang bawat isa box ay dapat na apat bytes sa order 352 00:17:32,170 --> 00:17:34,060 upang magkasya ang isang buong integer. 353 00:17:34,060 --> 00:17:37,197 Kaya ito ay kung ano ang isang hanay ng mga apat ints ay ang hitsura. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> At pagkatapos ay bumalik sa code. 356 00:17:43,870 --> 00:17:47,460 Ngayon gusto naming aktwal na tindahan integer sa array. 357 00:17:47,460 --> 00:17:53,470 Kaya ngayon ito ay isang tunay, tunay, tunay karaniwang pattern na ay sa ilang mga punto 358 00:17:53,470 --> 00:17:54,680 maging kalamnan memorya. 359 00:17:54,680 --> 00:17:56,710 Kaya int i katumbas ng 0. 360 00:17:56,710 --> 00:17:57,940 i mas mababa sa n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Bracket Edad i katumbas GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Kaya na ito para sa loop, format na ito, makakuha ka dapat masyadong ginagamit sa. 364 00:18:15,100 --> 00:18:20,010 Kaya ito ay sa pangkalahatan ay kung paano namin ay umulit sa halos lahat ng anumang array. 365 00:18:20,010 --> 00:18:23,690 Ngayon pansinin ang ganitong uri ng nagpapaliwanag kung bakit mula sa simula 366 00:18:23,690 --> 00:18:29,870 hindi namin ay may para sa mga loop pagpunta para sa int i ay katumbas ng 1, i mas mababa sa o patas sa 10. 367 00:18:29,870 --> 00:18:34,200 Ang dahilan ay na nagsisimula mula sa zero gumagawa ng trabaho na ito ng maayos sa array. 368 00:18:34,200 --> 00:18:36,270 Kaya array ay zero-index. 369 00:18:36,270 --> 00:18:40,360 Kung ito array ay ng haba 4, ang indeks ay 0 hanggang 3. 370 00:18:40,360 --> 00:18:42,880 >> Kaya sa pamamagitan ng unang pag-ulit ng para sa loop 371 00:18:42,880 --> 00:18:49,930 kami ay pagpunta sa maging setting edad bracket 0 katumbas ng isang tawag sa GetInt. 372 00:18:49,930 --> 00:18:52,440 Kaya kahit anong ko ang nangyari na pumasok sa keyboard. 373 00:18:52,440 --> 00:18:56,970 Sa pangalawang pass, hindi namin pagtatakda age1 katumbas ng GetInt. 374 00:18:56,970 --> 00:18:58,230 Third pass, age2. 375 00:18:58,230 --> 00:18:59,880 Final pass age3. 376 00:18:59,880 --> 00:19:05,750 Kaya kung sa unang pass ng loop Ipasok ko ang number 4 sa keyboard, 377 00:19:05,750 --> 00:19:07,740 pagkatapos kami ay ipasok ang isang 4 dito. 378 00:19:07,740 --> 00:19:11,470 Kung sa ikalawang pass ipasok ko 50, maglalagay kami ng isang 50 dito. 379 00:19:11,470 --> 00:19:15,180 Sa ikatlong pass maaari ko ipasok ang negatibong 1, negatibong 1, 380 00:19:15,180 --> 00:19:21,810 at pagkatapos ay sa wakas kung ipasok ko 0-- at ngayon tandaan na ito ay index tatlo. 381 00:19:21,810 --> 00:19:25,350 >> Pagkatapos naming loop back, i ay pagpunta sa incremented sa 4. 382 00:19:25,350 --> 00:19:27,770 i ay hindi na mas mababa kaysa n, kung saan ay 4. 383 00:19:27,770 --> 00:19:29,840 At break namin sa labas ng loop. 384 00:19:29,840 --> 00:19:32,578 Kaya kung ano ang magiging mali sa mga ito? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Hindi marinig]? 387 00:19:38,729 --> 00:19:39,604 Madla: [hindi marinig] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Oo. 390 00:19:46,400 --> 00:19:51,550 Kaya lamang ay may apat na mga lugar ng array, na nangangahulugan ng mga indeks na 0 hanggang 3. 391 00:19:51,550 --> 00:19:55,630 Kaya kung ito ay ang kaso, gusto ko kumuha sa ang halaga ng 4 sa ilang mga punto. 392 00:19:55,630 --> 00:20:00,910 edad bracket 4 ay setting ano man ang mangyayari sa paglipas dito 393 00:20:00,910 --> 00:20:02,920 sa kung ano ang kailangan kong sabihin, ipasok 6. 394 00:20:02,920 --> 00:20:05,010 Na kailangan maging setting ito sa 6. 395 00:20:05,010 --> 00:20:06,560 >> Ngunit hindi namin alam kung ano ang sa dito. 396 00:20:06,560 --> 00:20:08,836 Ito ay hindi memory na nagkaroon kami ng access sa. 397 00:20:08,836 --> 00:20:10,710 Kaya kung iyong naaalala mula ang nakaraang panayam, 398 00:20:10,710 --> 00:20:14,350 siya ay pag-print out mga halaga ng Zamyla at sa ilang mga punto siya hit ito segmentation 399 00:20:14,350 --> 00:20:17,990 kasalanan. Kaya ikaw ay maaaring maging nakakakita maraming segmentation faults bilang ka 400 00:20:17,990 --> 00:20:20,530 ipatupad ang ilan sa mga hanay ng problema. 401 00:20:20,530 --> 00:20:24,950 Ngunit ito ay isa sa mga paraan kung saan ang maaari kang makakita ng isang segmentation 402 00:20:24,950 --> 00:20:28,540 kasalanan, kapag nagsimula ka sa pag-access memory sa mga paraan na hindi mo dapat. 403 00:20:28,540 --> 00:20:34,117 Kaya hindi namin ay may access sa ang lokasyon na ito at ito ay isang bug. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Kaya ito ay mas mahusay. 406 00:20:40,190 --> 00:20:45,820 Ngayon ay may isang maliit pa rin isyu sa code na ito. 407 00:20:45,820 --> 00:20:50,720 At iyon ay isa lamang na hindi namin mapagmataas pa rin sa apat na mga mag-aaral. 408 00:20:50,720 --> 00:20:52,940 Ngayon kung gusto kong gumamit ng walong mga mag-aaral, OK. 409 00:20:52,940 --> 00:20:54,350 Ito ay hindi na isang malaking pakikitungo. 410 00:20:54,350 --> 00:20:58,120 Maaari ba akong pumunta sa, baguhin ang magkomento, at baguhin n. 411 00:20:58,120 --> 00:20:59,760 Ngayon na ito ay gagana sa walong mag-aaral. 412 00:20:59,760 --> 00:21:02,190 Kung ako sumulat ng libro na ito at patakbuhin ito, ito ay magpapakita me-- 413 00:21:02,190 --> 00:21:07,870 ito ay humiling ng integer para sa walong mag-aaral at ito ay gumagana lamang. 414 00:21:07,870 --> 00:21:11,850 Ngunit ito ay mas mababa kaysa sa ideal na kailangan upang recompile sa programa ng lahat ng oras 415 00:21:11,850 --> 00:21:15,960 Gusto kong baguhin ang bilang ng mga mag-aaral na gusto kong ipasok ang edad para. 416 00:21:15,960 --> 00:21:22,990 >> Kaya ang huling pagpapabuti sa ito, dahil kakailanganin namin makita here-- hindi namin 417 00:21:22,990 --> 00:21:26,177 pagpunta sa hilingin ang bilang ng mga tao. 418 00:21:26,177 --> 00:21:28,010 Narito kami ay may isang numero ng mga tao sa mga kuwarto 419 00:21:28,010 --> 00:21:29,880 o anumang mga edad ng tao sa kuwarto. 420 00:21:29,880 --> 00:21:33,300 Ngunit kami ay pagpunta upang hilingin ang numero ng mga tao sa kuwarto mula sa user. 421 00:21:33,300 --> 00:21:36,171 Kaya ito ay ang eksaktong parehong do-habang loop na nasaksihan namin bago. 422 00:21:36,171 --> 00:21:37,920 Ito ay ang eksaktong parehong gawin-habang loop na kayo 423 00:21:37,920 --> 00:21:40,050 maaaring pagpapatupad sa hanay problema. 424 00:21:40,050 --> 00:21:43,102 Kaya't hangga't ang mga ito ay pagpasok ng isang n mas mababa sa 1, 425 00:21:43,102 --> 00:21:45,310 upang doon ay nakuha na sa bababa sa isang tao sa kuwarto. 426 00:21:45,310 --> 00:21:47,407 Hangga't ang mga ito pagpasok ng isang n mas mababa sa 1, 427 00:21:47,407 --> 00:21:48,990 pagkatapos kami ay pagpunta upang panatilihin ang pagtatanong muli. 428 00:21:48,990 --> 00:21:50,906 Mangyaring ipasok ang numero ng ng mga tao sa room. 429 00:21:50,906 --> 00:21:53,550 Ngayon, sa sandaling mayroon kaming ang bilang ng mga tao sa room-- 430 00:21:53,550 --> 00:21:58,020 kaya maaaring ipasok ko na may ay 200 mga tao sa kuwartong ito. 431 00:21:58,020 --> 00:22:05,480 Pagkatapos pababa dito kami ay pagpunta sa dumating at ipinapahayag ng isang array ng laki 200. 432 00:22:05,480 --> 00:22:10,220 Kami ay deklarasyon array na malaki sapat na humawak 200 edad. 433 00:22:10,220 --> 00:22:15,370 Pagdating down, ito ay ang para sa loop na makakakuha ka ng masyadong ginagamit sa. 434 00:22:15,370 --> 00:22:19,490 Kaya iterating sa array na ito, pagtatalaga sa bawat lokasyon 435 00:22:19,490 --> 00:22:23,020 sa array na isang integer, at pagkatapos ay sa huli dito hindi namin 436 00:22:23,020 --> 00:22:28,340 pagkuha lamang ng isang halimbawa ng iterating sa paglipas na array, hindi upang magtalaga ng mga halaga, 437 00:22:28,340 --> 00:22:30,150 ngunit upang ma-access ang mga halaga. 438 00:22:30,150 --> 00:22:33,810 >> Kaya sa paglipas dito nakita namin na kami ay ang sinasabi, isang taon mula ngayon, 439 00:22:33,810 --> 00:22:40,470 tao% ay i% i na taong gulang, kung saan ang unang% i ay i plus 1. 440 00:22:40,470 --> 00:22:43,010 Kaya ako ay index variable na ito. 441 00:22:43,010 --> 00:22:49,420 At ang pangalawang% i ay magiging ang halaga na naka-imbak sa mga kapanahunan ng array plus 1. 442 00:22:49,420 --> 00:22:54,217 Kaya ito plus 1 ay dahil lamang hindi namin saying-- ito plus 1, edad i plus 1. 443 00:22:54,217 --> 00:22:57,050 Ito plus 1 ay dahil lamang hindi namin sinasabi, isang taon mula ngayon tao ang 444 00:22:57,050 --> 00:22:58,280 ay ito old. 445 00:22:58,280 --> 00:23:01,080 >> Kaya bakit ito ay i plus 1? 446 00:23:01,080 --> 00:23:04,064 Bakit kami ay may isang plus 1 doon? 447 00:23:04,064 --> 00:23:04,564 Oo. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Oo. 450 00:23:07,930 --> 00:23:10,510 Kaya tandaan array ay zero-index. 451 00:23:10,510 --> 00:23:14,840 Kaya kung pag-print namin ay ito ang para sa isang tao na basahin lamang ang output, 452 00:23:14,840 --> 00:23:19,380 pagkatapos ay marahil gusto nilang makita ang isang bagay tulad ng isang tao, ang taong numero ng isa, 453 00:23:19,380 --> 00:23:21,160 ay 20 years old. 454 00:23:21,160 --> 00:23:23,570 Taong dalawang numero ay 15 years old. 455 00:23:23,570 --> 00:23:27,420 Gusto nila sa halip hindi makita tao numerong zero ay 15 years old. 456 00:23:27,420 --> 00:23:36,460 >> Kaya ipon na ito at lamang kung ano ang nakikita ito ay mukhang like-- Lumikha ng ilang espasyo. 457 00:23:36,460 --> 00:23:43,560 Gumawa ng edad compiles. 458 00:23:43,560 --> 00:23:45,080 Pagpapatakbo ng edad. 459 00:23:45,080 --> 00:23:46,580 Nakakakita kami ng bilang ng mga tao sa kuwarto. 460 00:23:46,580 --> 00:23:48,850 Kaya Sasabihin kong may mga tatlong tao sa kuwarto. 461 00:23:48,850 --> 00:23:54,000 Edad ng tao bilang isa, sabihin natin 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 At ngayon sasabihin ko ng isang taon mula sa ngayon ang mga ito ay 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Tayo'y makita na ito ay gumagana sa Ipaalam isang n iyon ay hindi katumbas ng 3. 464 00:24:02,900 --> 00:24:07,940 Kaya kung sinasabi ko bilang ng mga tao ay 5, isa, dalawa, tatlo, dalawa, isa, isang taon mula ngayon 465 00:24:07,940 --> 00:24:11,170 ang mga ito ay dalawa, tatlo, apat, tatlo, dalawang taong gulang. 466 00:24:11,170 --> 00:24:16,500 Kaya maaari ko lamang bilang madaling magkaroon n maging 10,000. 467 00:24:16,500 --> 00:24:21,270 Ngayon ay ako ay nakaupo dito para sa ganap isang habang nagpapasok ng edad, ngunit ito ay gumagana. 468 00:24:21,270 --> 00:24:26,000 >> Kaya ngayon sa memory sa tabi-tabi namin magkaroon ng isang hanay ng mga laki 10,000, 469 00:24:26,000 --> 00:24:28,830 kaya sa huli 40,000 bytes, dahil may mga 470 00:24:28,830 --> 00:24:31,222 apat na bytes para sa bawat isa sa mga integer. 471 00:24:31,222 --> 00:24:33,180 Kaya mayroong isang hanay ng mga size 10,000 kung saan maaari naming 472 00:24:33,180 --> 00:24:36,201 tindahan ng mga edad ng mga 10,000 mga tao. 473 00:24:36,201 --> 00:24:36,700 Lahat tama. 474 00:24:36,700 --> 00:24:40,070 Mga tanong tungkol sa anuman sa mga ito? 475 00:24:40,070 --> 00:24:41,892 Oo. 476 00:24:41,892 --> 00:24:43,350 Paano kung nagbigay ka ng isang negatibong numero? 477 00:24:43,350 --> 00:24:44,870 Tingnan natin kung ano ang mangyayari. 478 00:24:44,870 --> 00:24:49,320 Kaya sa ganitong partikular na numero case-- ng mga tao sa room, negatibong isa. 479 00:24:49,320 --> 00:24:52,580 Tinanggihan, na, dahil dito namin mangyari 480 00:24:52,580 --> 00:24:57,180 na paghawak sa katotohanan na kung ang n ay mas mababa sa isang kami ng pagpunta sa magtanong muli. 481 00:24:57,180 --> 00:25:01,780 Kung susubukan mong magpahayag ng isang ang dami ng mga negatibong laki, 482 00:25:01,780 --> 00:25:03,950 ito sa pangkalahatan ay hindi gumagana. 483 00:25:03,950 --> 00:25:05,570 >> Kaya sabihin subukan. 484 00:25:05,570 --> 00:25:08,000 Sabihin na huwag pansinin ang anumang halaga ng mga ito input para n 485 00:25:08,000 --> 00:25:10,571 at sabihin lamang int edad negatibong isa. 486 00:25:10,571 --> 00:25:12,410 Tayo'y makita kung ito kahit na compiles Hayaan. 487 00:25:12,410 --> 00:25:14,100 Hindi ako sigurado. 488 00:25:14,100 --> 00:25:14,920 Hindi. 489 00:25:14,920 --> 00:25:18,280 Kaya edad ay ipinahayag bilang isang array na may isang negatibong laki. 490 00:25:18,280 --> 00:25:22,540 Kaya upfront kinikilala nito ang isang array ay maaaring hindi maging ng mga negatibong laki at tumatanggi ito. 491 00:25:22,540 --> 00:25:26,840 Ngayon, kung kami ay hindi mahawakan ito gawin-habang loop nang tama, 492 00:25:26,840 --> 00:25:28,810 kung hindi namin checking kung n ay mas mababa sa 1-- 493 00:25:28,810 --> 00:25:32,690 sabihin nating namin lamang ay hindi na ito sa lahat ng 494 00:25:32,690 --> 00:25:35,940 at sa halip ay grab lamang kami ng isang integer. 495 00:25:35,940 --> 00:25:40,710 Hindi mahalaga kung ano na ang integer ay, ipinahahayag namin ang isang hanay ng mga laki na iyon. 496 00:25:40,710 --> 00:25:44,250 >> Kaya ang tagatala ay hindi maaaring posibleng magreklamo ngayon. 497 00:25:44,250 --> 00:25:48,780 Kung ako sumulat ng libro this-- kaya hindi ito maaaring magreklamo, 498 00:25:48,780 --> 00:25:51,480 dahil hindi ito maaaring malaman na ako pagpunta sa ipasok ang isang negatibong numero, 499 00:25:51,480 --> 00:25:52,550 na maaaring maging hindi wasto. 500 00:25:52,550 --> 00:25:54,633 Para sa lahat ng alam ito, maaari ko ipasok ang isang positibong numero, 501 00:25:54,633 --> 00:25:56,000 na kung saan ay ganap na wasto. 502 00:25:56,000 --> 00:26:01,090 Kaya kong isipin kung ipasok ko negatibong 1 mga tao sa kuwarto, segmentation fault. 503 00:26:01,090 --> 00:26:06,040 >> So, OK. 504 00:26:06,040 --> 00:26:13,160 Kaya sabihin maidagdag ito bumalik lamang panatilihin ito sa kung ano ang orihinal na ito ay. 505 00:26:13,160 --> 00:26:15,640 Kaya gumawa ng edad. 506 00:26:15,640 --> 00:26:18,120 Ngayon kung gusto kong subukan ang isang negatibong age-- kaya sabihin 507 00:26:18,120 --> 00:26:19,710 sabihin may mga limang tao sa kuwarto. 508 00:26:19,710 --> 00:26:23,180 Edad ng tao bilang isa ay negatibo 4, ang taong tatlong 509 00:26:23,180 --> 00:26:26,500 ay zero, ang taong three-- OK. 510 00:26:26,500 --> 00:26:29,850 Kaya dito, isang taon mula ngayon, ang bilang na tao isa ay negatibo 3 taong gulang. 511 00:26:29,850 --> 00:26:32,830 Kaya marahil ay hindi magkaroon ng kahulugan. 512 00:26:32,830 --> 00:26:37,220 Dahil Ngunit ito lamang ay naghahanap sa code sa lahat ng aming ginagawa 513 00:26:37,220 --> 00:26:40,260 Humihiling GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Ngayon, kung kami ay nagkaroon ng GetPositiveInt function na 515 00:26:44,110 --> 00:26:49,690 o kami ay lamang na lamang tapos na ito uri ng parehong habang loop down doon, 516 00:26:49,690 --> 00:26:52,340 pagkatapos na ito ay gumagana ganap na multa. 517 00:26:52,340 --> 00:26:54,200 Ngunit sa partikular kaso, gawin lang namin hindi 518 00:26:54,200 --> 00:26:57,772 mangyari na paghawak negatibong halaga. 519 00:26:57,772 --> 00:26:59,147 Anumang iba pang mga katanungan tungkol sa array? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 SIGE. 522 00:27:03,250 --> 00:27:09,380 >> Kaya makikita na ngayon na namin ang mga array. 523 00:27:09,380 --> 00:27:12,500 At kami ay pagpunta sa kailangan upang gamitin na ito para sa command-line argumento. 524 00:27:12,500 --> 00:27:14,680 Kaya sa hanay ng problema two-- Alam ko marami sa inyo 525 00:27:14,680 --> 00:27:18,040 maaari pa rin ang pagtatrabaho sa hanay problema isa, ngunit problema magtakda ng dalawang ay paparating na. 526 00:27:18,040 --> 00:27:22,260 Sa set ng problema sa dalawa, ikaw ay pagpunta sa kailangan na pakikitungo sa mga string, array, 527 00:27:22,260 --> 00:27:23,950 at command-line argumento. 528 00:27:23,950 --> 00:27:26,270 >> Kaya ano ang mga argumento command line? 529 00:27:26,270 --> 00:27:29,570 Ngayon, maaari mong makita ang down dito ng isang maliit na teaser para sa eksakto kung ano ang 530 00:27:29,570 --> 00:27:30,950 pupunta na nangyayari. 531 00:27:30,950 --> 00:27:32,950 Nakakakita kami ng int main, Inc. argc, string argv brackets. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Kaya sabihin subukan upang bigyang-kahulugan ang unang hayaan kung ano na sinusubukan mong sabihin. 534 00:27:38,130 --> 00:27:40,800 Ngayon, OK. 535 00:27:40,800 --> 00:27:44,637 >> Kaya sa command line ay dapat ikaw ay pagkuha ng ginagamit sa ilan sa mga utos 536 00:27:44,637 --> 00:27:48,580 ngayon, at marahil patakbuhin mo cd sa terminal bago. 537 00:27:48,580 --> 00:27:52,100 Kaya kung sinasabi namin cd pset1, alam mo na na dapat 538 00:27:52,100 --> 00:27:55,050 maging ang pagbabago sa direktoryo ng pset1. 539 00:27:55,050 --> 00:27:59,120 >> Paunawa Ngayon na hindi mo nakasulat sa isang programa tulad nito bago. 540 00:27:59,120 --> 00:28:03,120 Ang bawat programa na iyong isinulat, Gusto mong tumakbo, sabihin nating, tuldok slash Mario, 541 00:28:03,120 --> 00:28:06,779 dot slash sakim, at pagkatapos nito maaaring i-prompt ka para sa input. 542 00:28:06,779 --> 00:28:08,570 Ngayon, na hindi kung ano palitan ang directory ay. 543 00:28:08,570 --> 00:28:12,770 Kapag nagpatakbo ka ng cd, ito ay hindi pagkatapos ay sabihin, na direktoryo ang gusto mong cd sa? 544 00:28:12,770 --> 00:28:17,200 Sa halip, sinasabi mo lang, cd pset1, at ito lamang ay pumunta sa direktoryo ng pset1. 545 00:28:17,200 --> 00:28:20,430 >> Kaya parehas kami ng iba pang mga halimbawa. 546 00:28:20,430 --> 00:28:21,540 gumawa ng halo. 547 00:28:21,540 --> 00:28:25,760 Kapag nagpatakbo ka ng gumawa, ito ay hindi pagkatapos ay sabihin, kung aling mga programa ang nais mong gawin? 548 00:28:25,760 --> 00:28:29,620 Sabihin mo lamang, sa command line gumawa ng halo. 549 00:28:29,620 --> 00:28:31,060 >> Ilipat ay isa pang halimbawa. 550 00:28:31,060 --> 00:28:34,840 Ito ang isa sa paglipat namin ay ang mario.c maghain up isang direktoryo. 551 00:28:34,840 --> 00:28:38,060 Kaya ngayon ay alam namin na may mga halimbawa na ito talagang kami ay pagpasa ng dalawang argumento. 552 00:28:38,060 --> 00:28:42,090 May mario.c bilang unang argumento, at tuldok tuldok ay ang pangalawang argumento. 553 00:28:42,090 --> 00:28:46,140 At pagkatapos ay kapag ikaw ay tatakbo gumawa, ikaw makita na talagang mahaba utos line-- 554 00:28:46,140 --> 00:28:50,580 na tunay na matagal na command naka-print sa command line. 555 00:28:50,580 --> 00:28:53,590 Kaya na long command-- ito ay isang maikling bahagi lamang ng mga ito, 556 00:28:53,590 --> 00:28:56,090 ngunit ngayon kami ay may tatlong command-line argumento. 557 00:28:56,090 --> 00:28:59,750 Dot dash zero, hello, at hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Kaya ito ang mga command-line argumento, argumento 559 00:29:03,497 --> 00:29:05,580 na ikaw ay pagpasa sa command line upang ito 560 00:29:05,580 --> 00:29:08,680 ay hindi na-prompt kapag tumakbo ang program. 561 00:29:08,680 --> 00:29:13,090 Gusto Ito ay nakakabigo kung kailan mo ran kalatungin ito sinabi, "OK, 562 00:29:13,090 --> 00:29:15,630 saan program-- saan file ikaw ay kino-compile? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Ano flags ng ginagawa mo ay nais na pumasok? dash o. 565 00:29:19,440 --> 00:29:21,190 Anong gusto mo ang file na tinatawag? 566 00:29:21,190 --> 00:29:21,690 Kamusta. 567 00:29:21,690 --> 00:29:25,290 Hindi, ikaw lang tumakbo clang gitling o kumusta hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Kaya naghahanap bumalik sa ito. 569 00:29:28,820 --> 00:29:32,920 Ngayon argc argc ay ang mga bilang argument. 570 00:29:32,920 --> 00:29:36,620 Ito ay ang bilang ng mga command-line argumento pumasok sa linya ng command. 571 00:29:36,620 --> 00:29:39,720 Well, argv-- technically ang v nakatayo para sa vector, 572 00:29:39,720 --> 00:29:41,460 kung saan talaga ay nangangahulugan array. 573 00:29:41,460 --> 00:29:42,680 Ngunit maaari mong huwag pansinin iyon. 574 00:29:42,680 --> 00:29:47,540 Argv-- mayroon kaming string argv, kaya string argv brackets. 575 00:29:47,540 --> 00:29:50,150 Kaya ito ay isa pang porma ng bracket hindi mo pa nakikita dati. 576 00:29:50,150 --> 00:29:52,300 Kaya nasaksihan namin bracket notation kapag kami ay nagsabi, 577 00:29:52,300 --> 00:29:53,970 tulad ng, string s ay katumbas Zamyla. 578 00:29:53,970 --> 00:29:56,910 s bracket 0 access ang character Z. 579 00:29:56,910 --> 00:30:00,720 >> Nasaksihan din namin ang mga bracket kapag sinabi namin int edad bracket 5. 580 00:30:00,720 --> 00:30:03,160 Na ipinahayag ng isang hanay ng mga laki 5. 581 00:30:03,160 --> 00:30:06,280 Kaya dito ay isang bersyon ng bracket hindi namin nakita bago. 582 00:30:06,280 --> 00:30:09,630 Kaya ito uri ng mga string argv na ay magiging ganap na pamilyar 583 00:30:09,630 --> 00:30:12,050 na ito ay magiging lamang ng isang string. 584 00:30:12,050 --> 00:30:14,520 Ngayon ang mga bracket ipahiwatig na ito ay isang array. 585 00:30:14,520 --> 00:30:19,920 Kaya string argv bracket paraan na argv ay isang array ng mga string. 586 00:30:19,920 --> 00:30:22,540 Ngayon technically isang string ay isang hanay ng mga character. 587 00:30:22,540 --> 00:30:26,400 Kaya ito ay ngayon ng isang array ng isang hanay ng mga character. 588 00:30:26,400 --> 00:30:31,490 Ngunit ito ay lubhang mas madaling mag-isip tungkol ito bilang lamang ng isang hanay ng mga string. 589 00:30:31,490 --> 00:30:34,900 >> Kaya bakit maaaring ang mga bracket ay walang laman? 590 00:30:34,900 --> 00:30:38,170 Tulad ng, kung bakit hindi maaari naming sabihin, bracket 5, bracket n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Oo. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Oo. 595 00:30:44,230 --> 00:30:46,396 Hindi namin alam kung gaano karaming input may mga pagpunta sa maging. 596 00:30:46,396 --> 00:30:53,560 Kaya't kung tiningnan namin sa clang halimbawa, sinasabi namin kalatungin dash o kumusta hello.c. 597 00:30:53,560 --> 00:30:56,710 Sa partikular na kasong, may mangyayari upang maging tatlong command-line argumento. 598 00:30:56,710 --> 00:31:00,522 At upang ang mga brackets-- kami makita sa isang segundo hindi ito magiging tatlo. 599 00:31:00,522 --> 00:31:01,730 Ito technically ay magiging apat. 600 00:31:01,730 --> 00:31:04,030 Ngunit ang mga bracket, gagawin namin sabihin nating, may tatlong. 601 00:31:04,030 --> 00:31:08,220 Ngunit ngayon kung kami ay tumingin sa ilipat mario.c tuldok tuldok, ang mga bracket 602 00:31:08,220 --> 00:31:09,760 Gusto namin nais na ilagay ang dalawang sa mga ito. 603 00:31:09,760 --> 00:31:12,884 >> At doon ay isang pulutong ng mga command na may isang variable na bilang ng mga command line 604 00:31:12,884 --> 00:31:13,620 argumento. 605 00:31:13,620 --> 00:31:17,430 Kaya kung ano ang bersyon na ito ng bracket pagtatanda nagpapahiwatig 606 00:31:17,430 --> 00:31:20,820 ay na argv ay isang array ng mga string. 607 00:31:20,820 --> 00:31:24,360 Ngunit hindi pa namin alam kung gaano karaming string ay sa na array. 608 00:31:24,360 --> 00:31:27,090 At paano pagkatapos ay alam namin kung paano maraming mga string ay sa array? 609 00:31:27,090 --> 00:31:28,870 Iyon ang buong point argc. 610 00:31:28,870 --> 00:31:32,300 Sinasabi sa amin ng argc gaano katagal argv ay. 611 00:31:32,300 --> 00:31:36,500 >> Kaya ang huling bagay na dapat isip na, technically, 612 00:31:36,500 --> 00:31:40,820 ang utos mismo maituturing bilang isa sa mga argumento command-line. 613 00:31:40,820 --> 00:31:45,330 Kaya cd pset1, mayroong dalawang command-line argumento. 614 00:31:45,330 --> 00:31:50,260 Ang programa sa kanyang sarili, cd, at pagkatapos ay ang aktwal na bahagi argument ng mga ito, pset1. 615 00:31:50,260 --> 00:31:54,490 Ang anumang programa na iyong nakasulat sa gayon ay malayo ay nagkaroon ng dot isa command-line argument-- 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 Iyon ay ang tanging command-line argumento. 618 00:31:57,350 --> 00:32:00,900 >> Kaya ngayon ay naghahanap sa clang gitling o kumusta hello.c. 619 00:32:00,900 --> 00:32:01,905 Kaya kung ano ang argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Kaya argc ay 4. 623 00:32:08,140 --> 00:32:12,140 Clang, kaya argv bracket 0 ay kumalatong. 624 00:32:12,140 --> 00:32:15,630 argv bracket 1 ay dash 0. 625 00:32:15,630 --> 00:32:21,870 argv bracket 2 ay hello, at argv bracket 3 ay hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, kaya mga katanungan sa mga ito, at pagkatapos ay makikita natin tingnan ang mga ilang halimbawa programmatic. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> SIGE. 629 00:32:30,480 --> 00:32:36,260 Kaya kami ay kumuha ng isang pagtingin sa hello3.c. 630 00:32:36,260 --> 00:32:41,890 Kaya ito ay dapat na pamilyar sa isa sa mga unang c halimbawa 631 00:32:41,890 --> 00:32:45,800 nagkaroon kami kung saan kami lang sabihin, hello mundo, ngunit ngayon ito ay mas pangkalahatang. 632 00:32:45,800 --> 00:32:52,300 Kaya dito kami ay sinasabi kumusta % s backslash n argv bracket 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- kaya up hanggang sa puntong ito, ito ay kung ano ang aking mga template file ay mukhang. 634 00:32:57,440 --> 00:33:01,800 Nagkaroon na ako int pangunahing (walang bisa), at pagkatapos ay gagawin ko gawin ang isang bagay sa pangunahing pag-andar. 635 00:33:01,800 --> 00:33:05,100 Sa halip Ngayon, sa sandaling simulan namin pakikitungo may mga argumento command-line, 636 00:33:05,100 --> 00:33:07,890 kailangan namin sa estado ng isang iba't ibang anyo ng main. 637 00:33:07,890 --> 00:33:11,930 >> Kaya naghahanap sa hello3 muli, ang mga pangunahing ay pagpunta 638 00:33:11,930 --> 00:33:15,990 upang kumuha ng dalawang argumento now-- int argc, ang bilang ng mga argumento command-line, 639 00:33:15,990 --> 00:33:20,970 at string argv bracket, ang aktwal na string ipinasok sa linya ng command. 640 00:33:20,970 --> 00:33:26,560 Kaya ako ng pagpunta upang baguhin na template para mapakita na ang katotohanan. 641 00:33:26,560 --> 00:33:29,060 Ngayon kapag mong isulat isang programa, kung hindi mo gusto 642 00:33:29,060 --> 00:33:33,720 kailangang gumawa ng anumang command-line argumento, pagkatapos ay gamitin lamang int pangunahing (walang bisa). 643 00:33:33,720 --> 00:33:37,070 Ngunit ngayon kapag sumusulat ka programs argument command-line, na 644 00:33:37,070 --> 00:33:40,350 ikaw ay pupunta sa paggawa para sa mga problemang itakda two-- kaya ngayon na ikaw ay nagpapatakbo ng 645 00:33:40,350 --> 00:33:42,630 mga programa na kailangan na kumuha ng argumento command-line, 646 00:33:42,630 --> 00:33:45,250 kailangan mong magkaroon ng pangunahing ng form na ito. 647 00:33:45,250 --> 00:33:51,290 >> Kaya here-- ito ay ang malaking paggamit ng argumento command-line. 648 00:33:51,290 --> 00:33:54,100 Kaya sa pag-print argv 1. 649 00:33:54,100 --> 00:33:59,180 OK ni compile kaya hayaan at patakbuhin ang program na ito. 650 00:33:59,180 --> 00:34:02,440 Gumawa hello3. 651 00:34:02,440 --> 00:34:03,570 Compiles. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 At sabihin natin, "Rob." 654 00:34:08,920 --> 00:34:10,760 Kamusta Rob. 655 00:34:10,760 --> 00:34:14,940 Kung aking sabihin, "hello Maria," hello Maria. 656 00:34:14,940 --> 00:34:15,719 Kamusta Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah pa rin nagsasabing, "hello Maria, "dahil hindi ako 658 00:34:18,639 --> 00:34:21,340 paggawa ng anumang bagay sa aming argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 ngayon ay magiging "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc ay 3. 661 00:34:25,030 --> 00:34:27,735 Paano kung ginawa ko ito? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 So kumusta null. 664 00:34:34,679 --> 00:34:38,760 >> Sa madaling sabi niya hinawakan sa katunayan na, technically, GetString 665 00:34:38,760 --> 00:34:42,429 maaaring bumalik null, ngunit kami ay kumuha ng isang pulutong ng higit sa kung ano null ay tunay. 666 00:34:42,429 --> 00:34:47,449 Ngunit dalhin ito bilang isang bagay ng katunayan na walang ay karaniwang masama. 667 00:34:47,449 --> 00:34:50,179 Ginawa namin ang isang bagay na mali kung ito ay pag-print "hello null." 668 00:34:50,179 --> 00:34:52,179 At ang dahilan ng ginawa namin sira is-- rin, 669 00:34:52,179 --> 00:34:56,179 kapag nagpatakbo ako tuldok slash hello3, argc ay 1. 670 00:34:56,179 --> 00:34:59,680 Kaya ito ay nangangahulugan na ang haba ng argv ay 1. 671 00:34:59,680 --> 00:35:05,110 Kung ang isang array ay haba ng 1, ang tanging wastong index ay zero. 672 00:35:05,110 --> 00:35:08,550 At kaya dito argv 1 ay nasa labas ang hanay ng array na ito. 673 00:35:08,550 --> 00:35:13,410 Ito ay katulad sa bago kapag sinubukan ko sa tindahan ng 6 sa labas ng dulo ng array. 674 00:35:13,410 --> 00:35:18,100 Kaya ako sinusubukang i-access ang isang bagay sa labas ng mga bilang argv, 675 00:35:18,100 --> 00:35:21,340 at kami ay nakakakuha null. 676 00:35:21,340 --> 00:35:24,360 >> Kaya ang isang mas mahusay na bersyon ng ito, isang pagpapabuti, 677 00:35:24,360 --> 00:35:27,010 ay tahasang pagsuri argc. 678 00:35:27,010 --> 00:35:33,580 Kaya kung argc katumbas ng 2, na ang ibig sabihin namin ang bumangga isang bagay tulad ng tuldok slash hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 At ito ay i-print "hello Rob." 680 00:35:36,840 --> 00:35:39,850 Kung argc ay hindi katumbas ng 2, pagkatapos ito ay lamang ang pagpunta 681 00:35:39,850 --> 00:35:42,560 upang huwag pansinin ang anumang ilagay mo sa argument command-line 682 00:35:42,560 --> 00:35:43,960 bilang argumento command-line. 683 00:35:43,960 --> 00:35:47,168 O kung hindi mo ilagay ang anumang sa lahat, ito ay lamang ang pagpunta upang huwag pansinin iyon at sabihin lamang, 684 00:35:47,168 --> 00:35:47,960 "hello sa inyo." 685 00:35:47,960 --> 00:35:51,490 >> Kaya ipon na ito. 686 00:35:51,490 --> 00:35:54,500 Gumawa hello4. 687 00:35:54,500 --> 00:35:56,790 At sa pagtakbo hello4. 688 00:35:56,790 --> 00:36:00,010 Tumatakbo ito sa ganitong paraan, kung ano ang dapat na ipi-print? 689 00:36:00,010 --> 00:36:01,330 "Hello sa inyo." 690 00:36:01,330 --> 00:36:02,810 Kamusta ka. 691 00:36:02,810 --> 00:36:05,870 Ano ang tungkol hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hello Rob." 693 00:36:06,950 --> 00:36:10,580 At sa wakas, hello Rob Maria ay lamang ng "Ikaw hello" muli, 694 00:36:10,580 --> 00:36:13,677 dahil ikaw ay hindi tunay na ipasok isang bagay na ito ay inaasahan. 695 00:36:13,677 --> 00:36:15,510 Nagpasok ka ng higit pang mga pangalan kaysa sa maaaring hawakan ito, 696 00:36:15,510 --> 00:36:19,500 kaya naka-default lang na ang hello mo pag-uugali. 697 00:36:19,500 --> 00:36:23,040 Kaya mga katanungan sa mga ito? 698 00:36:23,040 --> 00:36:26,290 O argumento command-line? 699 00:36:26,290 --> 00:36:28,690 >> OK, kaya ang pagkuha ng isang pagtingin sa isang ilang higit pang mga halimbawa ng paggamit ng 700 00:36:28,690 --> 00:36:34,230 unang command-line arguments-- may argv namin dash 1 dot c. 701 00:36:34,230 --> 00:36:38,510 Kaya ang mga komento bigyan ang layo ng kung ano ang dapat na ginagawa ng programang ito. 702 00:36:38,510 --> 00:36:42,460 Ngunit mapansin now-- ito para sa loop, ito ay tumutugma sa eksaktong pattern 703 00:36:42,460 --> 00:36:43,390 Ang sinasabi ko dati. 704 00:36:43,390 --> 00:36:46,240 Mangyari lang namin na maging gamit argc halip ng n. 705 00:36:46,240 --> 00:36:48,880 Ngayon argc ay talagang ang n. 706 00:36:48,880 --> 00:36:51,260 Ito ay ang haba ng argv array. 707 00:36:51,260 --> 00:36:59,600 Kaya ikaw ay iterating sa ibabaw ng argv array printf-ing bawat halaga argv. 708 00:36:59,600 --> 00:37:04,730 >> Kaya kapag gumawa ako ito. 709 00:37:04,730 --> 00:37:08,232 Gumawa argv 1. 710 00:37:08,232 --> 00:37:09,940 Compiles ito. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Tumatakbo na ito lamang, ito prints dot slash argv 1 713 00:37:15,530 --> 00:37:18,500 dahil na ay ang tanging command-line argument-- ang pangalan ng programa. 714 00:37:18,500 --> 00:37:22,080 Palaging may sa least-- argc hindi maaaring mas mababa kaysa sa isa, 715 00:37:22,080 --> 00:37:25,910 dahil doon ay palaging hindi bababa sa ang pangalan ng programa upang tumakbo. 716 00:37:25,910 --> 00:37:32,040 Kaya argv 1 Rob ay i-print argv 1 at pagkatapos ay sa bagong line "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Kaya sa unang pag-ulit ng loop na ito, i ay 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 ay ang pangalan ng programa. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 At pagkatapos argv 1 ay ang aking unang argument command-line, na kung saan ay Rob. 721 00:37:43,770 --> 00:37:45,920 Sa puntong ito, kami ay pantay-pantay sa argc. 722 00:37:45,920 --> 00:37:48,210 Masira namin sa labas ng loop at tapos na kami. 723 00:37:48,210 --> 00:37:53,940 Kaya ito ay gumagana para sa isang arbitrary bilang ng mga argumento command-line. 724 00:37:53,940 --> 00:37:58,550 Pansinin ito ng mga kopya argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 At walang argv 5. 726 00:38:00,150 --> 00:38:01,460 argc ay katumbas ng 5. 727 00:38:01,460 --> 00:38:06,960 Kaya sa argc sa katumbas i 5, break namin sa labas ng loop. 728 00:38:06,960 --> 00:38:07,950 SIGE. 729 00:38:07,950 --> 00:38:11,315 Kaya katanungan sa na bago tayo tumingin sa isang mas kumplikadong halimbawa? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Kaya argv 2. 732 00:38:16,860 --> 00:38:17,830 Lahat tama. 733 00:38:17,830 --> 00:38:20,610 Kaya kami ay pa rin sa pag-print ang command-line argumento. 734 00:38:20,610 --> 00:38:23,170 Ngunit mapansin ngayon kami ay may isang nested para sa loop. 735 00:38:23,170 --> 00:38:24,670 Kaya kung ano ito ginagawa? 736 00:38:24,670 --> 00:38:28,430 Kaya ang unang loop ay ginagawa kung ano mismo ang mga ito ay bago. 737 00:38:28,430 --> 00:38:30,950 Pa rin kami looping sa ibabaw bawat argument command-line, 738 00:38:30,950 --> 00:38:34,260 ngunit ngayon ito pangalawang loop-- na namin nakita rin ng isang bagay na tulad nito bago. 739 00:38:34,260 --> 00:38:38,600 Kapag siya ay iterating sa paglipas ng Zamyla print out Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Kaya ito pangalawang loop para sa int j katumbas 0, n katumbas strlen ng argv bracket i. 741 00:38:44,816 --> 00:38:49,170 >> Kaya sabihin unang tingin para sa the-- ni maglakad sa pamamagitan ng ipaalam. 742 00:38:49,170 --> 00:38:53,560 Isipin kung ano ang gagawin sa computer Ipaalam gawin kung nagpatakbo ako ng programang ito bilang tuldok lang 743 00:38:53,560 --> 00:38:56,030 slash argv dash 2. 744 00:38:56,030 --> 00:39:03,590 Kaya kung nagpatakbo ako ng code, at pagkatapos ay argc ay magiging katumbas ng 1. 745 00:39:03,590 --> 00:39:07,050 At string argv-- mayroon lamang magiging isa index sa argv, 746 00:39:07,050 --> 00:39:12,370 at na ang nangyayari na maging patas sa tuldok slash argv 2-- ang pangalan ng programa. 747 00:39:12,370 --> 00:39:19,170 >> OK, kaya ngayon i katumbas ng 0, i mas mababa sa 1, i plus plus para sa int j katumbas ng 0, 748 00:39:19,170 --> 00:39:23,880 n ay katumbas ng strlen ng argv bracket 0, para sa unang pag-ulit ng loop na ito. argv 749 00:39:23,880 --> 00:39:27,250 bracket 0 ay tuldok slash argv 2. 750 00:39:27,250 --> 00:39:29,320 Kaya kung ano ang haba ng na string? 751 00:39:29,320 --> 00:39:32,480 Well, tuldok slash A-R-G-V dash 2. 752 00:39:32,480 --> 00:39:35,020 Kaya strlen ng iyon ay magiging 8. 753 00:39:35,020 --> 00:39:37,500 Kaya j katumbas ng 0, n katumbas 8. 754 00:39:37,500 --> 00:39:39,530 Hangga't j ay mas mababa sa 8, j ++. 755 00:39:39,530 --> 00:39:44,080 At kasama na namin ang pagpunta sa maging pag-print ng isang solong character, na 756 00:39:44,080 --> 00:39:47,350 ay argv bracket bracket i j. 757 00:39:47,350 --> 00:39:49,826 >> Kaya ang tanging i ay zero. 758 00:39:49,826 --> 00:39:51,700 Kami ay pa rin magkaroon ng isa lamang argument command-line. 759 00:39:51,700 --> 00:39:53,890 Sa unang pag-ulit ng para sa loop, hindi namin 760 00:39:53,890 --> 00:39:56,950 magiging printing argv bracket 0 bracket 0. 761 00:39:56,950 --> 00:39:58,325 At pagkatapos j ay pagpunta sa dagdagan. 762 00:39:58,325 --> 00:40:01,650 At kami ay pagpunta sa pag-print argv bracket 0 bracket 1. 763 00:40:01,650 --> 00:40:04,150 At pagkatapos argv bracket 0 bracket 2. 764 00:40:04,150 --> 00:40:09,030 >> Kaya ito ay ang aming unang nakatagpo ng multi-dimensional array. 765 00:40:09,030 --> 00:40:12,770 Tandaan na mas maaga na sinabi ko na argv ay technically 766 00:40:12,770 --> 00:40:15,950 isang array ng mga array ng mga character. 767 00:40:15,950 --> 00:40:24,360 Kaya dito kung sinabi ko ang isang bagay tulad ng string s ay katumbas argv bracket i, 768 00:40:24,360 --> 00:40:29,590 at pagkatapos ay sinabi ko, s bracket j, ito ay tinutupad ang mga parehong bagay. 769 00:40:29,590 --> 00:40:31,960 Ngayon, nakita mo na s bracket j bago. 770 00:40:31,960 --> 00:40:36,680 Na-access lamang ng ika-j ang katangian ng ang string na ito. 771 00:40:36,680 --> 00:40:48,010 Kaya sa mga ito, kami ay ang pagkuha ng j-ika na katangian ng i-ika argv. 772 00:40:48,010 --> 00:40:51,450 >> Kaya kung ano ang dapat na ito sa huli output? 773 00:40:51,450 --> 00:40:53,210 Gumawa argv 2. 774 00:40:53,210 --> 00:40:54,730 Compiles ito. 775 00:40:54,730 --> 00:40:56,340 Dot slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," at bigyan kami ng ilang mga kuwarto. 777 00:41:03,790 --> 00:41:07,050 Kaya makikita natin na ito ay outputting dot sa sarili nitong linya at slash 778 00:41:07,050 --> 00:41:08,920 sa sarili nitong linya at ang isang sa sarili nitong linya. 779 00:41:08,920 --> 00:41:11,260 Ito ay pag-print out ang bawat indibidwal na mga character 780 00:41:11,260 --> 00:41:12,950 ng bawat argument command-line. 781 00:41:12,950 --> 00:41:15,960 At pagkatapos ay sa pagitan ng mga ito, dahil sa ito bagong linya 782 00:41:15,960 --> 00:41:19,380 kami ay pag-print down dito, sa sa pagitan nila makikita ito i-print ang isang bagong linya. 783 00:41:19,380 --> 00:41:24,540 >> Kaya ito ay katulad ng sa ang naunang argv dash 1, 784 00:41:24,540 --> 00:41:26,459 na inilalathala bawat argument command-line, 785 00:41:26,459 --> 00:41:28,500 ngunit ngayon kami ay sa pag-print ang mga argumento command-line 786 00:41:28,500 --> 00:41:31,950 at pagkatapos iterating sa pamamagitan ng bawat karakter ng bawat argument command-line 787 00:41:31,950 --> 00:41:35,400 upang makuha ang output. 788 00:41:35,400 --> 00:41:36,870 SIGE? 789 00:41:36,870 --> 00:41:40,570 Kaya mga katanungan sa mga ito? 790 00:41:40,570 --> 00:41:45,130 >> Ang isang bagay na kailangang tandaan na command-line arguments-- 791 00:41:45,130 --> 00:41:49,990 kaya sila ay pinaghihiwalay ng puwang bilang Gusto mong natural inaasahan sa kanila na maging. 792 00:41:49,990 --> 00:41:53,050 Kaya ang isang string ay maaaring magkaroon ng mga puwang sa loob nito. 793 00:41:53,050 --> 00:41:57,380 Ito ay hindi sobrang mahalaga, ngunit kung ako Nais ikatlong command-line argument 794 00:41:57,380 --> 00:42:01,226 na magkaroon ng isang puwang sa loob nito, pagkatapos ay ako maaaring sabihin ng isang bagay tulad nito. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 SIGE? 797 00:42:05,550 --> 00:42:12,190 Kaya ito pa rin ngayon ay may lamang tatlong command-line arguments-- well 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv dash 2, Rob, Maria, at Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 SIGE. 800 00:42:18,320 --> 00:42:19,310 Tanong sa mga ito? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> May walang espesyal ay tungkol sa mga puwang ng character. 803 00:42:24,894 --> 00:42:27,810 Ito ay nangyayari lamang upang maging na ang itinuturing ng command-line mga puwang ng character 804 00:42:27,810 --> 00:42:29,226 ng kung paano ihiwalay mo ang bawat argumento. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Lahat tama. 807 00:42:33,000 --> 00:42:39,950 Kaya nga ang Problema set two-- ka na magiging 808 00:42:39,950 --> 00:42:43,240 pagtingin sa lihim-susi cryptography. 809 00:42:43,240 --> 00:42:47,700 Kaya, katulad ng halimbawa na Nakita namin mula A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 ikaw ay pupunta sa pagpapatupad ng ilang algorithm na, na ibinigay ng isang mensahe, 811 00:42:52,840 --> 00:42:55,560 ikaw ay pagpunta sa ma upang i-encrypt na mensahe na 812 00:42:55,560 --> 00:42:58,730 na lamang ng isang tao na may na lihim key, na may na decoder ring, 813 00:42:58,730 --> 00:43:01,090 dapat ma-decrypt. 814 00:43:01,090 --> 00:43:04,839 >> Kaya na ang standard edition. 815 00:43:04,839 --> 00:43:07,130 Ikaw ay pagpunta sa pagpapatupad dalawang magkaibang mga bersyon. 816 00:43:07,130 --> 00:43:09,620 Kung mangyari sa iyo upang tingnan sa hacker Edition ngayon, 817 00:43:09,620 --> 00:43:12,600 kami ay pagpunta sa magbibigay ikaw ay isang string na tulad nito, 818 00:43:12,600 --> 00:43:15,240 na kung saan ay kumakatawan sa isang naka-encrypt na password. 819 00:43:15,240 --> 00:43:19,990 Kaya ang iyong layunin ay upang malaman kung ano ang decrypted password ay. 820 00:43:19,990 --> 00:43:26,950 Ngayon, ito ay tunay na kung paano ang mga password ay naka-imbak sa isang pulutong ng mga computer, 821 00:43:26,950 --> 00:43:31,290 at nag-iimbak ng mga ito ito lamang random string ng mga character. 822 00:43:31,290 --> 00:43:34,440 Kailangan mong malaman kung paano makakuha ng na ito mula sa random string ng mga character 823 00:43:34,440 --> 00:43:36,140 sa kung ano ang orihinal na password ay. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> At sa wakas, matapos na ito itakda ang problema, dapat mong 826 00:43:43,290 --> 00:43:46,100 maaaring maunawaan kung ano ang ibig sabihin nito. 827 00:43:46,100 --> 00:43:51,650 Kaya ikaw ay matuto kung paano i-decrypt ito uri ng mga random na string. 828 00:43:51,650 --> 00:43:56,390 Katulad nito, kung tandaan mo mula sa linggo 0, maaaring nakakita ka ng URL na ito. 829 00:43:56,390 --> 00:44:00,210 At dapat mo na decrypt ito sa kalaunan. 830 00:44:00,210 --> 00:44:04,810 Ikaw ay hindi maaaring maging masaya kapag ikaw decrypt ito at i-click ang link. 831 00:44:04,810 --> 00:44:05,700 Lahat tama. 832 00:44:05,700 --> 00:44:06,591 Iyon lang para sa araw na ito. 833 00:44:06,591 --> 00:44:12,095 Kaya tingnan mo sa susunod na linggo! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC MUSIC nagpe-play] 835 00:44:18,315 --> 00:47:15,619