1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [MUSIC Playing] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 DAVID J. Malan: Në rregull. 5 00:00:12,230 --> 00:00:16,440 Kjo është CS50, dhe kjo është fundi i Javës 2. 6 00:00:16,440 --> 00:00:18,480 Pra sot, ne jemi duke shkuar për të vazhduar sy tonë 7 00:00:18,480 --> 00:00:21,150 se si ne përfaqësojmë gjëra nën hood-- duke u larguar 8 00:00:21,150 --> 00:00:23,520 nga numrat si numra të plotë dhe lundrues vlerat pikë 9 00:00:23,520 --> 00:00:26,810 dhe duke u fokusuar në vargjet dhe Programet në fund të fundit më shumë interesante. 10 00:00:26,810 --> 00:00:30,140 Por ne do të hedhim një vështrim në një Disa domain-e të Caktuar problems-- 11 00:00:30,140 --> 00:00:33,620 e para e cila do të të jetë i përfshirë kriptografi, 12 00:00:33,620 --> 00:00:36,570 arti i përpiqen informacion, në të cilën ju të shihni më sipër këtu 13 00:00:36,570 --> 00:00:41,480 është një foto e Radio Jetim Annie-së unazë sekret decoder nga kaluar. 14 00:00:41,480 --> 00:00:46,490 >> Kjo është në fakt forma shumë primitive dhe forma e cryptopgraphy fëmijë-miqësore 15 00:00:46,490 --> 00:00:50,590 ku kjo unazë ka dy disks-- një brenda dhe një jashtë. 16 00:00:50,590 --> 00:00:54,740 Dhe nga e rradhës një nga ata, ju mund të në thelb të vijë deri shkronja si një 17 00:00:54,740 --> 00:00:59,520 nëpërmjet Z me shkronja të tjera si B përmes A. Me fjalë të tjera, 18 00:00:59,520 --> 00:01:03,730 ju mund të vërtetë të rrotullohen alfabetin, në këtë mënyrë vjen me një hartë nga 19 00:01:03,730 --> 00:01:07,820 letrat letrat në mënyrë që, në qoftë se ju kërkuar për të dërguar një mesazh të fshehtë 20 00:01:07,820 --> 00:01:11,820 për dikë si Annie, ju mund të shkruani poshtë mesazhin tuaj dhe pastaj rrotullohen 21 00:01:11,820 --> 00:01:15,370 letra, ku, në qoftë se ju do të thotë për të thënë "A," ju në vend që të thonë "B" 22 00:01:15,370 --> 00:01:17,280 ju do të thotë për të thënë "B" ju në vend që të thonë "C" - 23 00:01:17,280 --> 00:01:20,240 ose diçka pak më të zgjuar se that-- dhe pastaj, në fund të fundit, 24 00:01:20,240 --> 00:01:24,630 aq kohë sa Annie ka këtë decoder ring, ajo mund të deshifroj mesazhin. 25 00:01:24,630 --> 00:01:28,540 Tani, ju mund të kujtojnë, në fakt, se kjo është përdorur në një film shumë i njohur që 26 00:01:28,540 --> 00:01:31,140 luan nauseum ad gjatë Sezoni i Krishtlindjeve. 27 00:01:31,140 --> 00:01:32,650 Le të marrin një sy këtu. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 RALPHIE Parker: "Do të bëhet njohur për të gjithë në përmbledhje 30 00:01:37,210 --> 00:01:41,000 që Ralph Parker caktohet me anë të kësaj një anëtar i Jetimëve pak Annie Sekret 31 00:01:41,000 --> 00:01:44,860 Rrethi dhe ka të drejtë për të gjithë nderon dhe përfitimet ndodhur me to. " 32 00:01:44,860 --> 00:01:47,410 >> RALPHIE Parker (duke transmetuar): Nënshkruar Pak Jetim Annie. 33 00:01:47,410 --> 00:01:50,070 Bashkënënshkruara, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 Në bojë. 35 00:01:51,490 --> 00:01:55,494 Nderon dhe përfitimet, tashmë në moshën nëntë. 36 00:01:55,494 --> 00:01:57,402 >> [MUSIC Playing] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO bërbëlit] 38 00:02:00,470 --> 00:02:01,470 RALPHIE Parker: Eja. 39 00:02:01,470 --> 00:02:02,344 Le të marrin më me të. 40 00:02:02,344 --> 00:02:06,029 Unë nuk kanë nevojë për të gjitha që jazz për kontrabandistët dhe piratët. 41 00:02:06,029 --> 00:02:08,820 RADIO Folësi: Dëgjoni nesër natë të aventurë përmbyllës 42 00:02:08,820 --> 00:02:11,060 i Pirate Ship The Black. 43 00:02:11,060 --> 00:02:14,740 Tani, është koha për Annie-së Fshehurazi anëtarëve 44 00:02:14,740 --> 00:02:17,110 i rrethit Sekret. 45 00:02:17,110 --> 00:02:20,700 Mos harroni fëmijët, vetëm anëtarët e Rrethit Annie Sekret 46 00:02:20,700 --> 00:02:23,270 mund të deshifroj mesazhin sekret Annie. 47 00:02:23,270 --> 00:02:27,270 >> Mos harroni, Annie është në varësi të ju. 48 00:02:27,270 --> 00:02:30,060 Set këmbët tuaja për B-2. 49 00:02:30,060 --> 00:02:34,004 Këtu është message-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 RALPHIE Parker (duke transmetuar): I Jam në takimin tim të parë të fshehtë. 51 00:02:36,503 --> 00:02:40,041 RADIO Folësi: --25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 RALPHIE Parker (duke transmetuar): Oh, Pierre ishte në sonte zë të madh. 53 00:02:42,790 --> 00:02:46,110 Unë mund të them që sonte të Mesazhi ishte me të vërtetë e rëndësishme. 54 00:02:46,110 --> 00:02:47,930 >> RADIO Folësi: --3, 25. 55 00:02:47,930 --> 00:02:49,940 Ky është një mesazh nga Annie veten. 56 00:02:49,940 --> 00:02:52,182 Mos harroni, mos i thoni askujt. 57 00:02:52,182 --> 00:02:55,077 >> [Gulçim] 58 00:02:55,077 --> 00:02:57,285 RALPHIE Parker (duke transmetuar): Nëntëdhjetë sekonda më vonë, unë jam i 59 00:02:57,285 --> 00:03:00,090 në dhomë vetëm në shtëpi ku një djalë i nëntë 60 00:03:00,090 --> 00:03:04,380 mund të ulen në jetën private dhe deshifroj. 61 00:03:04,380 --> 00:03:04,990 Ah. 62 00:03:04,990 --> 00:03:05,680 "B." 63 00:03:05,680 --> 00:03:06,524 >> [Chuckles] 64 00:03:06,524 --> 00:03:08,684 >> RALPHIE Parker (duke transmetuar): Unë shkova për të ardhshëm. 65 00:03:08,684 --> 00:03:09,610 "E." 66 00:03:09,610 --> 00:03:11,641 Fjala e parë është "të jetë." 67 00:03:11,641 --> 00:03:12,140 Po! 68 00:03:12,140 --> 00:03:14,293 Ajo po vinte më e lehtë tani. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [Chuckles] 71 00:03:16,225 --> 00:03:18,157 >> Randy PARKER: Aw, eja, Ralphie. 72 00:03:18,157 --> 00:03:19,606 I Gotta shkoni! 73 00:03:19,606 --> 00:03:21,538 >> RALPHIE Parker: Do të jetë e drejtë poshtë, Ma. 74 00:03:21,538 --> 00:03:22,504 Kampion Gee. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "Të jetë i sigurt për të. "" Të jetë i sigurt për të "çfarë? 77 00:03:31,220 --> 00:03:33,981 Cili ishte pak Jetim Annie duke u përpjekur për të thënë? "Të jetë i sigurt për të" çfarë? 78 00:03:33,981 --> 00:03:35,522 NËNA: Ralphie, Randy ka marrë për të shkuar. 79 00:03:35,522 --> 00:03:36,735 Ju lutem do të dalë? 80 00:03:36,735 --> 00:03:38,190 >> RALPHIE Parker: Në rregull, mami! 81 00:03:38,190 --> 00:03:39,787 Unë do të jetë jashtë të drejtë! 82 00:03:39,787 --> 00:03:41,995 RALPHIE Parker (duke transmetuar): Unë kam qenë duke marrë më afër tani. 83 00:03:41,995 --> 00:03:43,370 Tensioni ishte e tmerrshme. 84 00:03:43,370 --> 00:03:44,794 Çfarë ishte ajo? 85 00:03:44,794 --> 00:03:47,656 Fati i planetit mund të ul receptorin e telefonit në bilancin. 86 00:03:47,656 --> 00:03:50,518 >> NËNA: Ralphie, Randy së ​​marrë për të shkuar! 87 00:03:50,518 --> 00:03:53,635 >> RALPHIE Parker: Do të jetë e drejtë jashtë, për të qarë me zë të lartë! 88 00:03:53,635 --> 00:03:55,343 RALPHIE Parker (Rrëfen): Pothuajse atje! 89 00:03:55,343 --> 00:03:56,520 Gishtat e mi fluturoi! 90 00:03:56,520 --> 00:03:58,500 Mendja ime ishte një kurth çeliku. 91 00:03:58,500 --> 00:03:59,850 Çdo pore vibrated. 92 00:03:59,850 --> 00:04:01,806 Ishte pothuajse e qartë! 93 00:04:01,806 --> 00:04:02,773 Po! 94 00:04:02,773 --> 00:04:03,273 Po! 95 00:04:03,273 --> 00:04:03,773 Po! 96 00:04:03,773 --> 00:04:04,740 Po! 97 00:04:04,740 --> 00:04:10,250 >> RALPHIE Parker: "Të jetë i sigurt për të pirë Ovaltine tuaj. " 98 00:04:10,250 --> 00:04:10,750 Ovaltine? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 Një tregtar i pavlerë? 101 00:04:17,539 --> 00:04:19,439 >> [MUSIC Playing] 102 00:04:19,439 --> 00:04:21,724 >> RALPHIE Parker: Bir kurve. 103 00:04:21,724 --> 00:04:23,460 >> [Qesh] 104 00:04:23,460 --> 00:04:27,070 >> DAVID J. Malan: Pra, që atëherë është një paraqitje e shkurtër në atë kriptografisë 105 00:04:27,070 --> 00:04:29,880 mund të jetë për this-- a pini nga kaluar. 106 00:04:29,880 --> 00:04:30,900 Pra një njoftimi të shpejtë. 107 00:04:30,900 --> 00:04:33,410 Nëse ju jeni të lirë këtë Premte në 13:15 dhe do të 108 00:04:33,410 --> 00:04:36,610 donte të bashkohen me ne për CS50 drekë, kreu në këtë URL këtu. 109 00:04:36,610 --> 00:04:38,080 Vijë të parë, së pari të shërbejë si zakonisht. 110 00:04:38,080 --> 00:04:41,840 Por me kalimin e kohës, ne do të sigurohemi që dikush më të cilët do të donim për të marrë pjesë 111 00:04:41,840 --> 00:04:43,640 mund të planifikojë-mençur. 112 00:04:43,640 --> 00:04:45,170 >> Pra vargjet. 113 00:04:45,170 --> 00:04:47,940 Ne kemi Zamyla-- cilëve ju keni takuar tani më e mundshme 114 00:04:47,940 --> 00:04:50,750 në Problem Set 1-- cilit emri është shkruar në këtë mënyrë. 115 00:04:50,750 --> 00:04:53,570 Dhe mendoj që keni shtypur emrin e saj në një program kompjuterik që është 116 00:04:53,570 --> 00:04:55,710 duke përdorur diçka si getString. 117 00:04:55,710 --> 00:04:57,890 Në mënyrë që të rifitoj ato tasteve, si 118 00:04:57,890 --> 00:05:01,620 do të shkojmë në lidhje me përfaqësimin e një varg, një fjalë, një paragraf, 119 00:05:01,620 --> 00:05:03,960 ose letra të shumta si këto këtu? 120 00:05:03,960 --> 00:05:06,790 >> Ne biseduam për herë të fundit në lidhje me integers dhe problemet 121 00:05:06,790 --> 00:05:09,960 që lindin me del nga shtrati numër i plotë dhe lundrues vlerat pikë 122 00:05:09,960 --> 00:05:12,190 dhe problemet që lindin brenda saktësi. 123 00:05:12,190 --> 00:05:16,080 Me vargjet, ne të paktën të ketë pak më shumë fleksibilitet 124 00:05:16,080 --> 00:05:17,970 sepse strings-- vetëm në world-- reale 125 00:05:17,970 --> 00:05:19,790 mund të jetë një gjatësi mjaft arbitrare. 126 00:05:19,790 --> 00:05:21,055 Pretty i shkurtër, goxha të gjatë. 127 00:05:21,055 --> 00:05:23,680 Por edhe atëherë, ne do të gjeni se kompjuterat mund të ndonjëherë 128 00:05:23,680 --> 00:05:27,200 dalë jashtë kujtesës dhe jo edhe ruajtur një varg të madh të mjaftueshme. 129 00:05:27,200 --> 00:05:30,840 >> Por tani për tani, le të fillojë të kujtoj një varg si diçka në këto kuti 130 00:05:30,840 --> 00:05:31,340 këtu. 131 00:05:31,340 --> 00:05:36,410 Pra, gjashtë kuti të tilla, secila prej të cilave paraqet një karakter ose "char". 132 00:05:36,410 --> 00:05:40,646 Pra, kujtoj se "char" - c-h-a-r-- është një nga ndërtuar në lloje të të dhënave në C. 133 00:05:40,646 --> 00:05:43,520 Dhe çfarë është e bukur është se ju mund të përdorni se lloj i si një bllok ndërtimi, 134 00:05:43,520 --> 00:05:47,880 një copë mister, nëse do, për të formuar një lloji më i madh i të dhënave që ne do të vazhdojmë 135 00:05:47,880 --> 00:05:49,410 për të thirrur një "varg." 136 00:05:49,410 --> 00:05:53,650 >> Tani, ajo që është e dobishme për të menduarit në lidhje me gjëra të tilla si vargjeve në këtë mënyrë? 137 00:05:53,650 --> 00:05:57,720 E pra, ajo rezulton se ne mund në të vërtetë levave këtë strukturë 138 00:05:57,720 --> 00:06:01,420 që në fakt të hyrë karaktere individuale në një mënyrë mjaft të drejtpërdrejtë. 139 00:06:01,420 --> 00:06:04,099 Unë jam duke shkuar për të shkuar përpara dhe për të krijuar një file i quajtur "stringzero.c," 140 00:06:04,099 --> 00:06:05,765 por ju mund të telefononi atë çdo gjë që ju dëshironi. 141 00:06:05,765 --> 00:06:08,500 Dhe në faqen e internetit të kursit është tashmë ky shembull më parë, 142 00:06:08,500 --> 00:06:10,430 kështu që ju nuk keni nevojë që të shkruani çdo gjë jashtë. 143 00:06:10,430 --> 00:06:13,820 >> Dhe unë jam duke shkuar për të shkuar përpara dhe së pari bëni boshllëk int kryesore. 144 00:06:13,820 --> 00:06:15,980 Dhe brenda pak ditësh, ne do të fillojnë të vë në lojë përveç 145 00:06:15,980 --> 00:06:19,070 çfarë pavlefshëm është këtu, pse është e int pranë kryesore, e kështu me radhë. 146 00:06:19,070 --> 00:06:21,180 Por tani për tani, le të vazhdojë të kopjoni paste se. 147 00:06:21,180 --> 00:06:23,455 >> Unë jam duke shkuar për të deklaruar një varg të quajtur s. 148 00:06:23,455 --> 00:06:26,920 Dhe unë jam duke shkuar për të kthyer nga GetString çfarëdo përdoruesi lloje në. 149 00:06:26,920 --> 00:06:29,170 Kjo do të jetë e thjeshtë program, nuk ka udhëzime, 150 00:06:29,170 --> 00:06:31,336 Unë jam vetëm duke shkuar për të verbërisht presin që përdoruesit e di 151 00:06:31,336 --> 00:06:32,600 çfarë duhet të bëni për të mbajtur atë të thjeshtë. 152 00:06:32,600 --> 00:06:34,220 >> Dhe tani unë jam do të ketë një për lak. 153 00:06:34,220 --> 00:06:37,450 Dhe brenda për lak tim unë jam do të ketë int i merr zero. 154 00:06:37,450 --> 00:06:40,660 Dhe i është, përsëri, vetëm një konventë, një variabël indeksin për numërim, 155 00:06:40,660 --> 00:06:42,350 por unë mund të telefononi këtë çdo gjë që unë dua. 156 00:06:42,350 --> 00:06:46,275 Unë jam duke shkuar për të bërë unë është më pak than-- mirë Emri Zamyla është gjashtë letra e gjatë. 157 00:06:46,275 --> 00:06:48,150 Kështu që unë jam duke shkuar për të vështirë Kodi që ka tani për tani. 158 00:06:48,150 --> 00:06:49,730 >> Dhe pastaj i ++. 159 00:06:49,730 --> 00:06:53,190 Dhe tani brenda këtyre kaçurrel formatimin e teksteve unë jam duke shkuar për të bërë printf, 160 00:06:53,190 --> 00:06:55,460 dhe unë dua të shtypura një karakter në një kohë. 161 00:06:55,460 --> 00:06:58,227 Kështu që unë jam duke shkuar për të përdorur% c për ndoshta hera e parë. 162 00:06:58,227 --> 00:07:00,560 Dhe atëherë unë dua të shtypura çdo karakter në linjën e vet. 163 00:07:00,560 --> 00:07:02,550 Kështu që unë jam duke shkuar për të vënë një pak backslash n atje. 164 00:07:02,550 --> 00:07:03,640 Mbylle kuotë. 165 00:07:03,640 --> 00:07:06,250 >> Dhe tani unë dua të bëj diçka këtu. 166 00:07:06,250 --> 00:07:10,610 Unë dua të shtypura nga letër specifike në vargun, 167 00:07:10,610 --> 00:07:13,670 s, si unë jam iterating nga zero në deri në gjashtë. 168 00:07:13,670 --> 00:07:17,150 Me fjalë të tjera, unë dua të shtypura karakterin i'th të s. 169 00:07:17,150 --> 00:07:18,420 Tani si mund ta bëni këtë? 170 00:07:18,420 --> 00:07:21,550 >> Mirë shumë si kutive në ky përfaqësim këtu, 171 00:07:21,550 --> 00:07:25,560 lloj, sjell në mendje deri nocionin e boksit letra në, në mënyrë të ngjashme ju mund të bëni që 172 00:07:25,560 --> 00:07:32,630 sintaksore në C nga thjesht specifikuar, Unë dua të shtypura nga S i'th karakter. 173 00:07:32,630 --> 00:07:35,640 Duke përdorur kllapa katrore në tastierën e kompjuterit tuaj 174 00:07:35,640 --> 00:07:38,910 që në një tastierë të SHBA janë përgjithësisht mbi kyçe tuaj të kthimit. 175 00:07:38,910 --> 00:07:42,630 >> Pra, kjo nuk është mjaft e drejtë megjithatë, si ju mund të keni vënë re. 176 00:07:42,630 --> 00:07:44,780 Por unë jam duke shkuar për të llojit të verbërisht ecur përpara këtu. 177 00:07:44,780 --> 00:07:47,020 Dhe unë jam duke shkuar për të bërë të bërë varg 0. 178 00:07:47,020 --> 00:07:50,860 Por, para se ta bëjë këtë, le të shohim nëse ne nuk mund të parashikojnë disa gabime të zakonshme. 179 00:07:50,860 --> 00:07:52,844 A është ky do të hartojë? 180 00:07:52,844 --> 00:07:54,510 Jo, unë jam humbur një bandë e tërë e gjërave. 181 00:07:54,510 --> 00:07:55,280 Bibliotekat kam dëgjuar. 182 00:07:55,280 --> 00:07:58,480 >> Pra cilat header fotografi mund të unë dua të shtoj këtu? 183 00:07:58,480 --> 00:07:59,205 Po. 184 00:07:59,205 --> 00:08:01,580 >> Audienca: Ju duhet I standarde / O [padëgjueshme] 185 00:08:01,580 --> 00:08:02,663 >> DAVID J. Malan: Excellent. 186 00:08:02,663 --> 00:08:06,060 Kështu që unë duhet standarde I / O. Për çfarë Qëllimi nuk dua I standarde / O? 187 00:08:06,060 --> 00:08:06,670 Për printf. 188 00:08:06,670 --> 00:08:09,220 Pra përfshijnë stdio.h. 189 00:08:09,220 --> 00:08:13,490 Dhe ju gjithashtu propozon që unë të përfshijë biblioteka CS50 për çfarë arsye? 190 00:08:13,490 --> 00:08:14,650 Për të kanë strings. 191 00:08:14,650 --> 00:08:17,780 Pra, ne do të shohim se çfarë Biblioteka CS50-së është duke bërë 192 00:08:17,780 --> 00:08:19,260 për të krijuar këtë nocion të një varg. 193 00:08:19,260 --> 00:08:21,930 Por tani për tani, ju mund të mendoni atë si një lloj të dhënave aktuale. 194 00:08:21,930 --> 00:08:23,596 >> Kështu që duket të jetë pak pastrohen. 195 00:08:23,596 --> 00:08:27,060 Dhe tani unë jam duke shkuar për të shkuar përpara dhe në të vërtetë do të bëjë string 0. 196 00:08:27,060 --> 00:08:27,700 Hartuar. 197 00:08:27,700 --> 00:08:28,370 Pra, kjo është e mirë. 198 00:08:28,370 --> 00:08:32,799 Pra ./string0 lejoni të zoom në në mënyrë që ne mund të shikoni më nga afër se çfarë po ndodh. 199 00:08:32,799 --> 00:08:33,850 Shkruani. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-A hyjë. 201 00:08:37,789 --> 00:08:39,440 Dhe ne kemi të shtypura jashtë për emrin Zamyla-së. 202 00:08:39,440 --> 00:08:40,409 >> Pra, kjo është shumë e mirë. 203 00:08:40,409 --> 00:08:43,220 Pra, tani le të shkojnë përpara dhe të të drejtuar këtë program përsëri, 204 00:08:43,220 --> 00:08:45,659 dhe shkruani emrin e plotë Daven-së. 205 00:08:45,659 --> 00:08:46,450 Surprise, surprizë. 206 00:08:46,450 --> 00:08:48,021 Shkruani. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 Ne nuk kemi të shtypura Daven-së Emri i plotë e parë të saktë. 209 00:08:51,750 --> 00:08:54,250 Tani kjo duhet të jetë e qartë në prapavështrim shkak të asaj, 210 00:08:54,250 --> 00:08:57,010 lloj, vendimi budalla dizajn? 211 00:08:57,010 --> 00:08:59,590 >> Po, unë e vështirë koduar gjashtë brenda e mia për lak. 212 00:08:59,590 --> 00:09:01,610 Tani kam bërë që vetëm për shkak E dija emrin Zamyla-së 213 00:09:01,610 --> 00:09:02,776 do të ishte gjashtë letra. 214 00:09:02,776 --> 00:09:04,720 Por sigurisht kjo nuk është një zgjidhje të përgjithshme. 215 00:09:04,720 --> 00:09:07,720 Pra, ajo rezulton ne mund dinamike kuptoj se gjatësinë e një varg 216 00:09:07,720 --> 00:09:10,440 duke e quajtur një funksion të quajtur strlen. 217 00:09:10,440 --> 00:09:12,840 >> Përsëri, me qëllim quajtur shkurtimisht vetëm 218 00:09:12,840 --> 00:09:14,450 për ta bërë atë më të përshtatshëm për të tipit. 219 00:09:14,450 --> 00:09:17,170 Por kjo është sinonim me duke marrë gjatësinë e një varg. 220 00:09:17,170 --> 00:09:23,190 Unë jam duke shkuar për të shkuar mbrapa në terminalin e mia dritare dhe ri-drejtuar përpiluesit. 221 00:09:23,190 --> 00:09:24,170 Por kjo është yelling në mua. 222 00:09:24,170 --> 00:09:29,130 Implicite deklaruar funksionin e bibliotekës strlen me tip unsigned int const-- 223 00:09:29,130 --> 00:09:29,780 Unë jam i humbur. 224 00:09:29,780 --> 00:09:30,590 Plotësisht. 225 00:09:30,590 --> 00:09:32,940 >> Pra, sidomos si tuaj Sytë fillojnë të bëhem i lëmuar mbi 226 00:09:32,940 --> 00:09:36,000 me mesazhet e gabimit si kjo, fokus ndershmëri në fjalët e para. 227 00:09:36,000 --> 00:09:38,590 Ne e dimë se problemi është në Linja 8, siç tregohet këtu. 228 00:09:38,590 --> 00:09:40,500 Dhe kjo është në string-0.c. 229 00:09:40,500 --> 00:09:43,580 Implicite deklaruar Funksioni bibliotekë strlen. 230 00:09:43,580 --> 00:09:47,000 Kështu që në përgjithësi do të të jetë një model i mesazhet e gabimit. 231 00:09:47,000 --> 00:09:49,190 Implicite deklaruar diçka. 232 00:09:49,190 --> 00:09:53,250 >> Pra me pak fjalë, ajo që kam dukej të kanë bërë në lidhje me vijë 8, këtu. 233 00:09:53,250 --> 00:09:56,880 Cila mund të jetë zgjidhja të jetë edhe në qoftë se ju kurrë nuk kam përdorur strlen veten tuaj? 234 00:09:56,880 --> 00:09:58,907 >> Audienca: Pjesë e një biblioteke të ndryshme? 235 00:09:58,907 --> 00:10:00,740 DAVID J. Malan: Pjesa i një biblioteke të ndryshme. 236 00:10:00,740 --> 00:10:02,400 Pra, ajo është e deklaruar, në mënyrë që të flasin. 237 00:10:02,400 --> 00:10:07,510 Ajo është përmendur në disa file përveç stdio.h dhe CS50.h. 238 00:10:07,510 --> 00:10:09,179 Tani ku është ajo e përcaktuar? 239 00:10:09,179 --> 00:10:12,220 Për të qenë i sinqertë, ju ose duhet të vetëm e di se kjo pjesa e sipërme e kokës, 240 00:10:12,220 --> 00:10:13,640 ose ju Google dhe për të gjetur jashtë. 241 00:10:13,640 --> 00:10:18,150 Ose e di këtë, unë e kam hapur në CS50 aplikim programin terminali, i cili 242 00:10:18,150 --> 00:10:22,200 është vetëm i madh, version ekran të plotë të çfarë është në pjesën e poshtme të dritares gedit-së. 243 00:10:22,200 --> 00:10:24,970 >> Dhe kjo rezulton se ka një komandën në mënyrë të ngjashme ngjeshur, të quajtur 244 00:10:24,970 --> 00:10:29,280 njeriu për manual, ku në qoftë se ju shkruani në emri i funksionit dhe hit Enter, 245 00:10:29,280 --> 00:10:32,240 ju do të kthehet në mënyrë të drejtë Dokumentacioni misterioz. 246 00:10:32,240 --> 00:10:35,299 Është vetëm teksti që në përgjithësi duket një diçka të vogël si kjo. 247 00:10:35,299 --> 00:10:37,090 Është pak e madhe në shikim të parë. 248 00:10:37,090 --> 00:10:39,048 Por sinqerisht unë jam duke shkuar për të sytë e mi të bëhem i lëmuar mbi 249 00:10:39,048 --> 00:10:41,930 dhe vetëm të përqëndrohet në pjesën Më intereson për momentin. 250 00:10:41,930 --> 00:10:42,780 >> Cili është ky. 251 00:10:42,780 --> 00:10:45,470 Cili duket strukturore si diçka që unë jam njohur me të. 252 00:10:45,470 --> 00:10:48,080 Në të vërtetë faqja njeriu, kështu për të folur, do të thoni ju 253 00:10:48,080 --> 00:10:51,590 në çfarë header paraqesë një funksion si strlen është përcaktuar. 254 00:10:51,590 --> 00:10:54,170 Kështu që unë jam duke shkuar për të shkuar mbrapa tani për gedit. 255 00:10:54,170 --> 00:10:59,070 Dhe unë jam duke shkuar për të shkuar përpara dhe të shtoni në këtu # Include 256 00:10:59,070 --> 00:11:00,480 dhe ruajtur kartelën. 257 00:11:00,480 --> 00:11:04,300 >> Unë jam duke shkuar për të pastruar në ekran me Kontrolli L Nëse ju keni qenë të pyesin. 258 00:11:04,300 --> 00:11:08,210 Dhe unë jam duke shkuar për të ri-kandiduar make string.0, përpilon këtë herë. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Kjo dukej për të punuar lejoni të shkoj përpara dhe përsëritje atë me Davenport. 261 00:11:15,020 --> 00:11:15,860 Shkruani. 262 00:11:15,860 --> 00:11:17,730 Dhe që, gjithashtu, dukej për të punuar. 263 00:11:17,730 --> 00:11:21,220 >> Pra, ne mund të bëjmë pak më mirë se kjo, edhe pse, ne mund të fillojnë të gjërave të pastra 264 00:11:21,220 --> 00:11:23,257 deri vetëm pak. 265 00:11:23,257 --> 00:11:25,590 Dhe unë jam duke shkuar për të vërtetë të futur një gjë tjetër tani. 266 00:11:25,590 --> 00:11:28,930 Unë jam duke shkuar për të shkuar përpara dhe të ruani këtë në një dosje të ndryshme. 267 00:11:28,930 --> 00:11:31,770 Dhe unë jam duke shkuar për të thirrur këtë fotografi string1.c vetëm 268 00:11:31,770 --> 00:11:34,620 të jenë në përputhje me kodin ju do të jetë në gjendje për të gjetur në internet. 269 00:11:34,620 --> 00:11:37,050 >> Dhe le të përqëndrohet në më të njëjtë Kodi. 270 00:11:37,050 --> 00:11:39,000 Ajo rezulton se unë kam qenë lloj i marrjes 271 00:11:39,000 --> 00:11:42,600 të mirëqenë faktin se laptop tim, dhe nga ana tjetër, aplikim CS50 272 00:11:42,600 --> 00:11:47,450 ka një shumë të kujtesës, shumë RAM, shumë bytes të hapësirës 273 00:11:47,450 --> 00:11:48,920 në të cilën unë mund të ruajë vargjet. 274 00:11:48,920 --> 00:11:53,560 >> Por realiteti në qoftë se unë shtypur gjatë mjaftueshme, dhe të mjaftueshme tasteve, 275 00:11:53,560 --> 00:11:56,170 Unë mund të tipit teori në më shumë karaktere 276 00:11:56,170 --> 00:11:58,830 se kompjuterin tim fizikisht ka memorie për. 277 00:11:58,830 --> 00:11:59,830 Dhe kjo është problematike. 278 00:11:59,830 --> 00:12:03,050 Shumë si një int mund vetëm numërimin kaq e lartë, në teori, 279 00:12:03,050 --> 00:12:06,600 ju mund të mbushur vetëm kaq shumë karaktere në RAM të kompjuterit tuaj ose të rastësishme 280 00:12:06,600 --> 00:12:07,920 Access Memory. 281 00:12:07,920 --> 00:12:11,140 >> Kështu që unë kisha më mirë të parashikojnë ky problem, madje edhe 282 00:12:11,140 --> 00:12:13,660 edhe pse kjo mund të jetë një e rrallë rast qoshe, kështu që të flasin. 283 00:12:13,660 --> 00:12:15,670 A nuk ndodh që shpesh, mund të ndodhë. 284 00:12:15,670 --> 00:12:18,815 Dhe në qoftë se kjo ndodh dhe unë nuk e bëj parashikojnë dhe program për të, 285 00:12:18,815 --> 00:12:20,300 programi im mund të bëjë që e di se çfarë. 286 00:12:20,300 --> 00:12:22,220 Freeze, var, reboot, çfarëdo. 287 00:12:22,220 --> 00:12:24,490 Diçka parashikuar që mund të ndodhë. 288 00:12:24,490 --> 00:12:27,120 >> Pra, ajo që unë jam duke shkuar për të bërë tani, tani e tutje me të vërtetë, 289 00:12:27,120 --> 00:12:31,630 është para se unë kurrë verbërisht përdorni një ndryshore si s që 290 00:12:31,630 --> 00:12:36,790 ka qenë e caktuar vlerën e kthimit të disa funksion tjetër si getstring, 291 00:12:36,790 --> 00:12:40,200 Unë jam duke shkuar për të siguruar që vlera e tij është e vlefshme. 292 00:12:40,200 --> 00:12:44,280 Kështu që unë e di vetëm nga që ka lexuar Dokumentacioni CS50 për getstring, 293 00:12:44,280 --> 00:12:49,020 të cilat në fund të fundit ne do të ju pikë në, që getstring kthen një simbol të veçantë 294 00:12:49,020 --> 00:12:53,610 quajtur NULL, N-U-L-L në gjithë kapele, nëse diçka shkon keq. 295 00:12:53,610 --> 00:12:55,650 >> Pra, normalisht, ajo kthen një varg. 296 00:12:55,650 --> 00:12:59,700 Por ndryshe në qoftë se ajo kthehet N-U-L-L-- ne përfundimisht do të shohim se çka me të vërtetë 297 00:12:59,700 --> 00:13:01,790 means-- se vetëm mjete ndodhi diçka e keqe. 298 00:13:01,790 --> 00:13:05,560 Tani kjo do të thotë, ashtu si në Scratch, Unë mund të shikoni një kusht këtu në C, 299 00:13:05,560 --> 00:13:08,830 në qoftë se s nuk NULL barabartë. 300 00:13:08,830 --> 00:13:11,930 Pra, nëse ju nuk e keni parë këtë më parë, kjo thjesht do të thotë nuk ka të barabartë. 301 00:13:11,930 --> 00:13:15,290 >> Pra, kjo është e kundërta e barabartë të barabarta, të cilat, kujtojnë, 302 00:13:15,290 --> 00:13:18,940 është e ndryshme nga single barabartë, e cila është detyrë. 303 00:13:18,940 --> 00:13:23,030 Pra, nëse s nuk ka të barabartë NULL, vetëm pastaj të bëjë 304 00:13:23,030 --> 00:13:25,980 Unë dua për të ekzekutuar këto rreshta të kodit. 305 00:13:25,980 --> 00:13:28,080 Pra, me fjalë të tjera, para se të zhyten në verbërisht 306 00:13:28,080 --> 00:13:30,919 dhe të fillojnë iterating mbi s, dhe e trajtuar atë 307 00:13:30,919 --> 00:13:33,710 sikur ajo është një sekuencë e karaktere, unë jam duke shkuar për të parë të kontrolluar, 308 00:13:33,710 --> 00:13:37,900 prisni një minutë, është s definitivisht nuk barabartë me këtë vlerë të veçantë, NULL? 309 00:13:37,900 --> 00:13:40,030 >> Sepse në qoftë se ajo është, gjëra të këqija mund të ndodhë. 310 00:13:40,030 --> 00:13:43,080 Dhe tani për tani, të marrë gjërat që të këqija ndodh të thotë crashes tuaj e programit, 311 00:13:43,080 --> 00:13:45,070 dhe ju nuk mund domosdoshmërisht të shërohen. 312 00:13:45,070 --> 00:13:46,800 Pra sinqerisht, duket shëmtuar. 313 00:13:46,800 --> 00:13:48,660 Kjo është lloj i konfuze tani për shikim në. 314 00:13:48,660 --> 00:13:50,780 Por kjo do të bëhet më njohur para se të gjatë. 315 00:13:50,780 --> 00:13:52,920 >> Por unë jam duke shkuar për të propozuar tani një përmirësim tjetër. 316 00:13:52,920 --> 00:13:54,660 Kjo është një përmirësim për korrektesën. 317 00:13:54,660 --> 00:13:58,800 Programi ime tani është më e saktë, për shkak se në rastet e rralla që kujtesa nuk mjafton 318 00:13:58,800 --> 00:14:01,180 ekziston, unë do ta trajtojë atë, dhe unë do të bëj vetëm asgjë. 319 00:14:01,180 --> 00:14:02,680 Unë të paktën nuk do të rrëzimit. 320 00:14:02,680 --> 00:14:05,000 >> Por le të bëjmë një version përfundimtar këtu. 321 00:14:05,000 --> 00:14:07,690 Dhe një file i quajtur string2.c. 322 00:14:07,690 --> 00:14:10,190 Unë jam duke shkuar për të ngjitur që njëjtë Kodi për vetëm një moment, 323 00:14:10,190 --> 00:14:14,210 dhe unë jam duke shkuar për të nxjerrë në pah këtë line, 11, këtu, për vetëm një moment. 324 00:14:14,210 --> 00:14:18,179 Tani realiteti është se hartuesit zgjuar si tingëllimë mund të rregullojmë këtë për ne 325 00:14:18,179 --> 00:14:19,970 prapa skenave pa tonë ditur ndonjëherë. 326 00:14:19,970 --> 00:14:24,670 Por le të mendojnë për këtë krejtësisht si një dizajn problematike. 327 00:14:24,670 --> 00:14:29,010 >> Kjo linjë e kodit është, natyrisht, duke thënë, nisja disa ndryshore i të 0. 328 00:14:29,010 --> 00:14:30,260 Kjo është shumë i thjeshtë. 329 00:14:30,260 --> 00:14:34,691 Dhe ajo që përsëri është ky deklaratë, këtu, unë ++, duke bërë? 330 00:14:34,691 --> 00:14:37,066 Ne e kemi parë atë më parë, por ne me të vërtetë nuk flasin për këtë. 331 00:14:37,066 --> 00:14:37,900 >> Audienca: rrisim i. 332 00:14:37,900 --> 00:14:39,191 >> DAVID J. Malan: rrisim i. 333 00:14:39,191 --> 00:14:41,890 Pra, në çdo përsëritje nëpërmjet kjo loop, çdo cikli, 334 00:14:41,890 --> 00:14:43,570 ju jeni rrisim i nga një. 335 00:14:43,570 --> 00:14:45,740 Pra, ajo merr më të mëdha, dhe më të mëdha, dhe më e madhe deri lak përfundon. 336 00:14:45,740 --> 00:14:46,810 Si e bën atë të përfundojë? 337 00:14:46,810 --> 00:14:49,430 E pra nuk është kjo e mesme kusht të cilin ne kemi përdorur më parë. 338 00:14:49,430 --> 00:14:52,500 Ju keni parë dhe në walkthroughs në setin P. 339 00:14:52,500 --> 00:14:53,880 >> Por çfarë është kjo thënie? 340 00:14:53,880 --> 00:14:58,352 A lak e mëposhtme në mënyrë kohë që i është më pak se çfarë? 341 00:14:58,352 --> 00:14:59,810 Audienca: Gjatësia e vargut. 342 00:14:59,810 --> 00:15:01,518 DAVID J. Malan: Gjatësia e vargut. 343 00:15:01,518 --> 00:15:04,300 Pra, kjo përkthehet shumë e pastër në anglisht në atë kuptim. 344 00:15:04,300 --> 00:15:08,810 Tani problemi është se çdo herë që unë iterate nëpër këtë lak në teori, 345 00:15:08,810 --> 00:15:10,000 Unë jam duke kërkuar këtë pyetje. 346 00:15:10,000 --> 00:15:12,250 A është i më pak se gjatësia string të s? 347 00:15:12,250 --> 00:15:14,500 A është i më pak se gjatësia string të s? 348 00:15:14,500 --> 00:15:18,380 >> Tani po i ndryshon në çdo përsëritje? 349 00:15:18,380 --> 00:15:18,880 Ajo është. 350 00:15:18,880 --> 00:15:19,629 Për shkak të ++. 351 00:15:19,629 --> 00:15:21,700 Pra, çdo përsëritje unë po bëhet më e madhe. 352 00:15:21,700 --> 00:15:25,411 Por është e bëhet më e madhe, ose më të vogla, apo të ndryshuar në të gjitha? 353 00:15:25,411 --> 00:15:25,910 Nr 354 00:15:25,910 --> 00:15:30,240 Pra, në aspektin e dizajnit, një prej akseve së bashku të cilat ne përpiqemi për të vlerësuar kodin 355 00:15:30,240 --> 00:15:32,610 në klasë, kjo ndjehet lloj budalla. 356 00:15:32,610 --> 00:15:34,690 >> Ashtu si ju jeni fjalë për fjalë, në çdo përsëritje 357 00:15:34,690 --> 00:15:37,110 i këtij lak kërkuar njëjta pyetje mallkuar përsëri, 358 00:15:37,110 --> 00:15:40,770 dhe përsëri, dhe përsëri, dhe fjalë për fjalë ajo kurrë nuk do të ndryshojë. 359 00:15:40,770 --> 00:15:44,220 Së paku në qoftë se unë nuk jam prekur s dhe duke u përpjekur për të ndryshuar përmbajtjen e s. 360 00:15:44,220 --> 00:15:46,610 Kështu që unë mund të bëjë një pak më të mirë se kjo. 361 00:15:46,610 --> 00:15:49,530 >> Dhe ajo që unë jam duke shkuar për të bërë nuk është deklarojnë vetëm një i ndryshueshme, 362 00:15:49,530 --> 00:15:53,330 por një variabël e dytë unë do të në mënyrë arbitrare, por konvencionale, e quajti atë n. 363 00:15:53,330 --> 00:15:55,940 Cakton n barabartë tek Gjatësia varg s. 364 00:15:55,940 --> 00:15:59,090 Dhe pastaj mbi këtu, unë jam duke shkuar për të të bëjë një optimization zgjuar pak, kështu që 365 00:15:59,090 --> 00:16:03,460 te flasin, që në fund të ditës jo më shumë e saktë ose jo më pak i saktë është 366 00:16:03,460 --> 00:16:04,260 se më parë. 367 00:16:04,260 --> 00:16:05,500 Por kjo është një dizajn të mirë. 368 00:16:05,500 --> 00:16:09,480 Në faktin se unë jam duke përdorur më pak kohë, më pak CPU cikle, në mënyrë 369 00:16:09,480 --> 00:16:14,040 për të folur, për t'iu përgjigjur të njëjtën pyetje, por vetëm një herë. 370 00:16:14,040 --> 00:16:17,870 >> Çdo pyetje mbi atë të përgjithshëm parimi i përmirësimit, 371 00:16:17,870 --> 00:16:21,294 thonë, efikasitetit të një programi? 372 00:16:21,294 --> 00:16:21,991 Po? 373 00:16:21,991 --> 00:16:23,699 Audienca: Pse ju përdorni [e padëgjueshme]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 DAVID J. Malan: Pyetje e mirë. 376 00:16:27,010 --> 00:16:30,690 Pra, pse nuk kemi vënë ++ në fund të Unë në vend të në fillim të i? 377 00:16:30,690 --> 00:16:33,070 Në këtë rast, ajo ka asnjë ndikim funksionale. 378 00:16:33,070 --> 00:16:36,670 Dhe në përgjithësi, unë priren të përdorni operatorin Postfix 379 00:16:36,670 --> 00:16:41,750 kështu që kjo është një pak më të qartë si që kur operacioni po ndodh. 380 00:16:41,750 --> 00:16:46,670 >> Për ata të panjohur, ka një tjetër Deklaratat ku ju mund të bëni ++ i. 381 00:16:46,670 --> 00:16:48,747 Këto janë funksionalisht ekuivalente në këtë rast 382 00:16:48,747 --> 00:16:51,080 sepse nuk ka asgjë tjetër rreth asaj incrementation. 383 00:16:51,080 --> 00:16:54,435 Por ju mund të dalë me rastet dhe rreshta të kodit 384 00:16:54,435 --> 00:16:55,810 në të cilën që bën një dallim. 385 00:16:55,810 --> 00:16:57,810 Pra, në përgjithësi, ne nuk bëjmë edhe të flasim për këtë një të tillë. 386 00:16:57,810 --> 00:17:00,690 Sepse sinqerisht, kjo e bën tuaj Kodi sexier, dhe lloj pardesy, 387 00:17:00,690 --> 00:17:01,776 dhe më pak karaktere. 388 00:17:01,776 --> 00:17:04,859 Por realiteti është se është shumë e vështirë, Unë mendoj se, edhe për mua të përfundojë mendjen time 389 00:17:04,859 --> 00:17:07,319 rreth tij disa herë, rendi i operacioneve. 390 00:17:07,319 --> 00:17:09,750 Pra, si një mënjanë, në qoftë se ju me të vërtetë nuk më pëlqen kjo, 391 00:17:09,750 --> 00:17:14,650 edhe pse kjo është lloj sexy kërkoni, ju gjithashtu mund të bëjë i + = 1, 392 00:17:14,650 --> 00:17:18,880 cila është version uglier i njëjtën ide për Postfix incrementation. 393 00:17:18,880 --> 00:17:22,250 >> E them këtë dhe ju duhet të bëjë fun e saj, 394 00:17:22,250 --> 00:17:25,140 por ju do të vijnë për të parë kodin si diçka të bukur para se të gjatë. 395 00:17:25,140 --> 00:17:27,160 >> [Qeshura] 396 00:17:27,160 --> 00:17:28,410 >> DAVID J. Malan: E drejta? 397 00:17:28,410 --> 00:17:29,360 Po. 398 00:17:29,360 --> 00:17:30,480 Pyetje në mes. 399 00:17:30,480 --> 00:17:32,146 >> Audienca: A keni nevojë për të thënë int n? 400 00:17:32,146 --> 00:17:34,020 DAVID J. Malan: Ju bëni nuk duhet të them int n. 401 00:17:34,020 --> 00:17:37,670 Pra, për shkak se ne kemi thënë tashmë int, ju nuk keni nevojë që të thonë se ai përsëri. 402 00:17:37,670 --> 00:17:41,820 Kapur është se n ka për të të njejta të dhënave si i. 403 00:17:41,820 --> 00:17:43,310 Pra, kjo është vetëm një lehtësi këtu. 404 00:17:43,310 --> 00:17:44,058 Po. 405 00:17:44,058 --> 00:17:47,806 >> Audienca: A mund të shkoni mbi karakterin Printo s kllapa i përsëri? 406 00:17:47,806 --> 00:17:48,930 DAVID J. Malan: Absolutisht. 407 00:17:48,930 --> 00:17:52,110 Pra% c, kujtohet nga të fundit Ora, është vetëm një placeholder. 408 00:17:52,110 --> 00:17:53,930 Kjo do të thotë të vënë një char këtu. 409 00:17:53,930 --> 00:17:56,780 backslash n, natyrisht, vetëm Mjetet vënë një pushim linjë këtu. 410 00:17:56,780 --> 00:17:59,540 Kështu që vetëm të lë, tani, kjo pjesë e sintaksës së re. 411 00:17:59,540 --> 00:18:03,730 Dhe kjo është fjalë për fjalë duke thënë, kap string quajtur s dhe shkoni merrni saj 412 00:18:03,730 --> 00:18:06,050 karakter i'th, mënyrë që të flasin. 413 00:18:06,050 --> 00:18:10,590 >> Dhe unë mbaj duke thënë karakter i'th sepse në çdo përsëritje të këtij lak 414 00:18:10,590 --> 00:18:14,540 kjo është sikur ne jemi shtypjen jashtë, s pari kllapa 0, 415 00:18:14,540 --> 00:18:15,780 si mund të thonë se një programues. 416 00:18:15,780 --> 00:18:18,680 Pastaj s kllapa 1, atëherë s kllapa 2, pastaj 3, pastaj 4. 417 00:18:18,680 --> 00:18:21,610 Por sigurisht kjo është një variabël, kështu që unë vetëm të shprehin atë me i. 418 00:18:21,610 --> 00:18:23,900 >> Key, megjithatë, është për të realizuar, veçanërisht nëse ju nuk keni 419 00:18:23,900 --> 00:18:26,358 qenë acclimating në këtë botë të programimit, ku ne të gjithë 420 00:18:26,358 --> 00:18:28,950 duket për të numëruar nga zero, gotta të fillojë numërimi nga zero tani. 421 00:18:28,950 --> 00:18:35,130 Sepse vargjet, karakteri i parë, z në Zamyla është për mirë apo për keq 422 00:18:35,130 --> 00:18:40,490 duke shkuar për të jetuar në lokacionit numrin zero. 423 00:18:40,490 --> 00:18:48,210 >> Në rregull, kështu që më lejoni të sjell na përsëri këtu për të Zamyla 424 00:18:48,210 --> 00:18:50,746 dhe të shohim se çfarë është me të vërtetë do në nën kapuç. 425 00:18:50,746 --> 00:18:52,370 Pra, ka ky nocion e tipit hedh. 426 00:18:52,370 --> 00:18:53,800 Ju mund të keni në të vërtetë luajtur me këtë tashmë, 427 00:18:53,800 --> 00:18:55,970 ndoshta për haker Edicioni i P të vendosur një të tillë. 428 00:18:55,970 --> 00:19:00,320 Por lloji hedh vetëm i referohet aftësia në C dhe disa gjuhë të tjera 429 00:19:00,320 --> 00:19:03,170 për të kthyer një lloj të dhënave në një tjetër. 430 00:19:03,170 --> 00:19:05,450 >> Tani se si mund të shohim këtë goxha të drejpërdrejtë? 431 00:19:05,450 --> 00:19:08,530 Pra kjo, kujtojnë, është fillimi e alfabetit anglisht. 432 00:19:08,530 --> 00:19:11,265 Dhe konteksti, kujtoj, nga si një javë më parë është ASCII. 433 00:19:11,265 --> 00:19:13,790 Kodi American Standard për Informacionit shkëmbimi. 434 00:19:13,790 --> 00:19:17,080 E cila është vetëm një mënyrë me të vërtetë e gjatë për të thënë një hartë nga letra 435 00:19:17,080 --> 00:19:19,370 për numrat, dhe nga numra të letrave. 436 00:19:19,370 --> 00:19:22,940 >> Pra, Një anë M këtu, dot dot dot, linjat deri me, kujtojnë, 437 00:19:22,940 --> 00:19:25,582 Numri dhjetor 65 më lart. 438 00:19:25,582 --> 00:19:27,290 Dhe ne nuk flasim në lidhje me këtë në mënyrë të qartë, 439 00:19:27,290 --> 00:19:29,850 por me siguri nuk ka të ngjashme numrat për shkronja të vogla. 440 00:19:29,850 --> 00:19:30,820 Dhe me të vërtetë, ka. 441 00:19:30,820 --> 00:19:33,730 Bota vendosi disa vjet më parë që pak a, jo kapitale një, 442 00:19:33,730 --> 00:19:35,020 do të jetë 97. 443 00:19:35,020 --> 00:19:38,010 Dhe pak b po shkon të jetë 98, e kështu me radhë. 444 00:19:38,010 --> 00:19:40,200 >> Dhe për cilindo çelës në tastierës tuaj, ka 445 00:19:40,200 --> 00:19:42,190 do të jetë një model i ngjashëm i bit. 446 00:19:42,190 --> 00:19:44,540 Ose ekuivalente, një numër decimal. 447 00:19:44,540 --> 00:19:47,110 Pra, pyetja në dorë, atëherë, është se si mund të 448 00:19:47,110 --> 00:19:49,400 në të vërtetë e shohin këtë nën kapuç? 449 00:19:49,400 --> 00:19:51,539 Kështu që unë jam duke shkuar për të shkuar tek gedit përsëri. 450 00:19:51,539 --> 00:19:53,330 Dhe në vend se llojin kjo nga e para, 451 00:19:53,330 --> 00:19:55,330 Unë jam duke shkuar për të shkuar përpara dhe të vetëm të hapur diçka 452 00:19:55,330 --> 00:19:58,350 nga kodi sotme quhet ASCII zero. 453 00:19:58,350 --> 00:20:01,210 >> Dhe ASCII zero duket si ky. 454 00:20:01,210 --> 00:20:02,710 Pra, le të përfundojë mendjen tonë rreth kësaj. 455 00:20:02,710 --> 00:20:04,969 Pra, së pari, unë kam komentuar kodi, e cila është e bukur. 456 00:20:04,969 --> 00:20:07,010 Për shkak se kjo është fjalë për fjalë thënë mua se çfarë të presin, 457 00:20:07,010 --> 00:20:08,950 shfaqur një hartë për letra uppercase. 458 00:20:08,950 --> 00:20:13,690 Tani unë nuk e mjaft e di se çfarë kam të them se, kështu që le të tregoj. 459 00:20:13,690 --> 00:20:16,870 >> Në anglisht, ndoshta disi techie Anglisht, 460 00:20:16,870 --> 00:20:20,660 ajo që e bën linja 18 duket të jetë bërë për ne? 461 00:20:20,660 --> 00:20:21,500 Vetëm linjë 18. 462 00:20:21,500 --> 00:20:22,430 Çfarë është ajo inducing? 463 00:20:22,430 --> 00:20:25,192 Çfarë është ajo do të fillojë këtu? 464 00:20:25,192 --> 00:20:26,100 >> Audienca: Një lak. 465 00:20:26,100 --> 00:20:26,630 >> DAVID J. Malan: Një lak. 466 00:20:26,630 --> 00:20:28,463 Dhe sa herë është që do të iterate? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 Audienca: [bashkëvendosur Voices] gjashtë herë. 469 00:20:33,270 --> 00:20:34,830 DAVID J. Malan: Jo gjashtë herë. 470 00:20:34,830 --> 00:20:35,840 Audienca: 26 herë. 471 00:20:35,840 --> 00:20:36,560 DAVID J. Malan: 26 herë. 472 00:20:36,560 --> 00:20:37,060 Po, keq. 473 00:20:37,060 --> 00:20:37,960 26 herë. 474 00:20:37,960 --> 00:20:38,460 Pse? 475 00:20:38,460 --> 00:20:41,590 E pra, kjo është pak i çuditshëm, por Unë e kam filluar duke numëruar nga 65. 476 00:20:41,590 --> 00:20:43,300 E cila është e pazakontë, por jo i gabuar. 477 00:20:43,300 --> 00:20:44,610 Kjo nuk është e keqe per thonë. 478 00:20:44,610 --> 00:20:46,980 Dhe unë jam duke bërë që vetëm sepse, për këtë shembull, 479 00:20:46,980 --> 00:20:50,455 Unë jam lloj i parashikuar që kapitali A ishte 65. 480 00:20:50,455 --> 00:20:53,330 Tani kjo nuk është më elegante mënyrë për të bërë këtë, për lloj të kodit vështirë 481 00:20:53,330 --> 00:20:56,130 Vlerat e fshehtë se askush nuk pritet ndonjëherë për të kujtuar. 482 00:20:56,130 --> 00:21:00,155 >> Por tani për tani, vini re se unë jam duke bërë këtë deri me 65 plus 26. 483 00:21:00,155 --> 00:21:03,030 Sepse me sa duket unë nuk dua edhe për të bërë aritmetikë në kokën time. 484 00:21:03,030 --> 00:21:04,440 Kështu që unë do të le përpiluesit të bëjë atë. 485 00:21:04,440 --> 00:21:08,600 Por pastaj në çdo lak, çdo përsëritje i lak, unë jam e rrisim i. 486 00:21:08,600 --> 00:21:10,196 >> Deri tani kjo duket pak i fshehtë. 487 00:21:10,196 --> 00:21:13,320 Por ne duhet të kemi ndërtesën themelore blloqe me të cilin për të kuptuar këtë. 488 00:21:13,320 --> 00:21:15,510 % C është vetëm një placeholder për një char. 489 00:21:15,510 --> 00:21:19,010 % I është një placeholder për një int. 490 00:21:19,010 --> 00:21:23,310 Dhe kjo rezulton se duke përdorur këtë Sintaksa e re, kjo në kllapa, në mënyrë 491 00:21:23,310 --> 00:21:26,100 për të folur, kështu një lloj të dhënave brenda një kllapa, 492 00:21:26,100 --> 00:21:32,270 Unë mund të detyrojë përpiluesit për të trajtuar i nuk është një numër i plotë, por si një shkrumb. 493 00:21:32,270 --> 00:21:35,520 >> Në këtë mënyrë duke treguar mua karakterin ekuivalente e këtij numri. 494 00:21:35,520 --> 00:21:37,986 Tani këtu, ky kod është shumë e shumë identike. 495 00:21:37,986 --> 00:21:39,860 Unë vetëm të kërkuar për të bërë super qartë fakti 496 00:21:39,860 --> 00:21:42,095 që unë jam duke filluar në 97, e cila është një jo kapitale. 497 00:21:42,095 --> 00:21:44,080 Më deri me 26 shkronja më shumë. 498 00:21:44,080 --> 00:21:46,970 Dhe unë jam doing-- përsëri, hedh i, kështu që të flasin. 499 00:21:46,970 --> 00:21:49,160 Ose hedh lloji i, kështu që të flasin. 500 00:21:49,160 --> 00:21:51,420 >> Nga një int për një char. 501 00:21:51,420 --> 00:21:55,760 Pra, rezultati përfundimtar do të jetë, sinqerisht, informacioni ne tashmë e dimë. 502 00:21:55,760 --> 00:21:59,411 Unë jam duke shkuar për të bërë ascii-0 nuk dot-- dot c. 503 00:21:59,411 --> 00:22:02,160 Njoftim, ju ndoshta e bëri që gabim si unë vetëm e bëri rastësisht. 504 00:22:02,160 --> 00:22:03,820 Bëni ascii-0. 505 00:22:03,820 --> 00:22:06,090 Tani unë jam duke shkuar për të bërë ./ascii-0. 506 00:22:06,090 --> 00:22:09,050 Unë do të zoom në, dhe për fat të keq ajo do të lëviz jashtë ekranit. 507 00:22:09,050 --> 00:22:15,060 Por ne shohim një tabelë të tërë ku një harta të 97, harta b në 98, 508 00:22:15,060 --> 00:22:18,931 dhe në qoftë se ne të shkoni deri tej Një, natyrisht, harta në 65. 509 00:22:18,931 --> 00:22:21,180 Pra, kjo është vetëm për të thënë se çfarë ne kemi qenë të predikuar, 510 00:22:21,180 --> 00:22:25,310 ka kjo ekuivalencë, është në të vërtetë ndodh në realitet. 511 00:22:25,310 --> 00:22:28,000 Pra, një modifikim të shpejtë për këtë. 512 00:22:28,000 --> 00:22:31,220 Më lejoni të hapur ASCII-1.c. 513 00:22:31,220 --> 00:22:38,070 Dhe vini re kjo zgjuar, lloj i, sqarim për këtë. 514 00:22:38,070 --> 00:22:41,770 Kjo është ascii-1.c, dhe vëreni këtë gjë të çmendur. 515 00:22:41,770 --> 00:22:45,120 >> Dhe kjo me të vërtetë merr në zemër e asaj që kompjuterat janë duke bërë. 516 00:22:45,120 --> 00:22:48,150 Edhe pse ne njerëzit do të nuk llogarisin në drejtim të letters-- 517 00:22:48,150 --> 00:22:50,380 Unë nuk do të fillojnë të menduarit, të gjithë të drejtë a pastaj b, 518 00:22:50,380 --> 00:22:52,590 dhe të përdorin ato për të numëruar objekte fizike. 519 00:22:52,590 --> 00:22:58,680 Ju me siguri mund të them se unë dua të nisja disa ndryshore të quajtur c-- 520 00:22:58,680 --> 00:23:03,220 por unë mund të kishte quajtur këtë anything-- kështu c është nisur të kapitalit A. 521 00:23:03,220 --> 00:23:07,560 >> Sepse në fund të ditës, kompjuter nuk kujdeset se çfarë ju jeni ruajtjen, 522 00:23:07,560 --> 00:23:10,170 ai vetëm kujdeset se si ju doni për të paraqitur këtë informacion. 523 00:23:10,170 --> 00:23:13,560 Si ju doni kompjuterin për interpretuar se model të bit? 524 00:23:13,560 --> 00:23:16,320 Pra, kjo nuk është diçka që unë përgjithësi do të rekomandojë bërë. 525 00:23:16,320 --> 00:23:19,500 Është me të vërtetë vetëm një shembull të përcjell që ju mund absolutisht 526 00:23:19,500 --> 00:23:22,049 nisja një numër të plotë në një char. 527 00:23:22,049 --> 00:23:24,090 Sepse nën kapuç e një char, natyrisht, 528 00:23:24,090 --> 00:23:26,170 është vetëm një numër 0-255. 529 00:23:26,170 --> 00:23:28,540 >> Kështu që ju mund të me siguri vënë atë brenda një int. 530 00:23:28,540 --> 00:23:30,890 Dhe ajo që kjo edhe tregon është se ne 531 00:23:30,890 --> 00:23:34,040 mund të konvertohet nga një shkruani në një tjetër, këtu, 532 00:23:34,040 --> 00:23:36,780 në fund të fundit shtypje të njëjtën gjë. 533 00:23:36,780 --> 00:23:44,760 Dhe në fakt, kjo unë do të rregullojmë online-- kishte për qëllim të thonë se kjo, përsëri, këtu. 534 00:23:44,760 --> 00:23:48,610 Më lejoni të pastruar këtë deri online, dhe ne do të shohin në një walkthrough në internet si të nevojshme, 535 00:23:48,610 --> 00:23:50,280 ajo që ishte menduar atje. 536 00:23:50,280 --> 00:23:50,960 >> OK. 537 00:23:50,960 --> 00:23:53,892 Shembull Deri fundit tani përfshin a-së dhe b-së dhe pastaj ne do 538 00:23:53,892 --> 00:23:54,850 marrë gjërat një nivel. 539 00:23:54,850 --> 00:23:58,330 Pra, me një-së dhe B-së dhe c-së në kapitalizimin 540 00:23:58,330 --> 00:24:01,560 dhe ekuivalenca e saj, le të hidhini një sy në këtë shembull, këtu. 541 00:24:01,560 --> 00:24:02,752 Një tjetër shembull kodi. 542 00:24:02,752 --> 00:24:04,460 Ne do të hapur një të tillë që është e bërë tashmë, kështu që ne 543 00:24:04,460 --> 00:24:06,440 nuk duhet të tipit atë të gjitha nga e para. 544 00:24:06,440 --> 00:24:09,420 >> Dhe njoftim pritje ne jemi duke përdorur header shumta 545 00:24:09,420 --> 00:24:13,240 fotografi, ndër të cilat është miku ynë i ri, string. 546 00:24:13,240 --> 00:24:15,597 Tani kjo duket, në fillim shikim, pak më i fshehtë. 547 00:24:15,597 --> 00:24:18,180 Por le të shohim nëse ne nuk mund të arsyetojë me atë që po ndodh këtu. 548 00:24:18,180 --> 00:24:21,150 Së pari unë të marrë një varg nga përdoruesit, dhe kam vënë atë varg në një variabël 549 00:24:21,150 --> 00:24:22,286 quajtur s. 550 00:24:22,286 --> 00:24:24,090 Copy paste nga para. 551 00:24:24,090 --> 00:24:27,250 Në përputhje 22, unë jam me sa duket duke bërë pikërisht atë 552 00:24:27,250 --> 00:24:30,760 Unë bëra një moment më parë, unë jam iterating mbi personazhet në s. 553 00:24:30,760 --> 00:24:34,780 >> Dhe truket e reja këtu janë duke përdorur Gjatësia string, optimization vogla 554 00:24:34,780 --> 00:24:37,930 e ruajtjen e gjatësisë string në n, në vend se e quajtur strlen përsëri, 555 00:24:37,930 --> 00:24:38,850 dhe përsëri, dhe përsëri. 556 00:24:38,850 --> 00:24:41,120 Dhe vetëm duke kontrolluar se i është më pak se n. 557 00:24:41,120 --> 00:24:43,330 Tani këtu, gjërat pak interesante. 558 00:24:43,330 --> 00:24:45,980 Por kjo është vetëm një aplikim i këtij njëjtën ide të re. 559 00:24:45,980 --> 00:24:48,470 Çfarë në anglisht bën s kllapa i përfaqësojnë? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> Audienca: Numërimi çdo karakter [e padëgjueshme]. 562 00:24:54,260 --> 00:24:55,926 >> DAVID J. Malan: Numërimi çdo karakter. 563 00:24:55,926 --> 00:24:58,680 Dhe edhe më shumë në mënyrë të përmbledhur, s kllapa i përfaqësuar atë? 564 00:24:58,680 --> 00:25:00,950 A do të thoni. 565 00:25:00,950 --> 00:25:04,084 Jo për të ju vë në vend këtu. 566 00:25:04,084 --> 00:25:06,375 >> Audienca: Well-- 567 00:25:06,375 --> 00:25:09,500 DAVID J. Malan: Pra, nëse fjala is-- nëse string është Zamyla, e cila starts-- 568 00:25:09,500 --> 00:25:12,380 Audienca: --you merren me personazhet separately-- 569 00:25:12,380 --> 00:25:13,690 DAVID J. Malan: Mirë. 570 00:25:13,690 --> 00:25:14,190 Pikërisht. 571 00:25:14,190 --> 00:25:17,940 Katror kllapa Simbol ju lejon të hyni në çdo karakter individualisht, 572 00:25:17,940 --> 00:25:21,120 kështu s kllapa 0 do të jetë karakteri i parë në string. 573 00:25:21,120 --> 00:25:24,110 s kllapa 1 do të jetë dytë, e kështu me radhë. 574 00:25:24,110 --> 00:25:28,050 Pra, pyetja që unë jam duke kërkuar, këtu, në këtë gjendje është ajo? 575 00:25:28,050 --> 00:25:33,984 A është karakteri i'th e s Madhe se ose e barabartë jo kapitale a? 576 00:25:33,984 --> 00:25:36,400 Dhe çfarë do të thotë kjo, këtu, me ampersands dyfishtë? 577 00:25:36,400 --> 00:25:36,800 Audienca (BASHKU): Dhe. 578 00:25:36,800 --> 00:25:37,210 DAVID J. Malan: Dhe. 579 00:25:37,210 --> 00:25:38,418 Është vetëm e barabartë me këtë. 580 00:25:38,418 --> 00:25:42,310 Dhe nuk është një fjalen në C, ju duhet të përdorimi, annoyingly, simbol simbol. 581 00:25:42,310 --> 00:25:47,520 Dhe kjo, anasjelltas, është duke i kërkuar është s së i'th karakter pak se ose e barabartë 582 00:25:47,520 --> 00:25:49,030 jo kapitale z? 583 00:25:49,030 --> 00:25:52,440 Dhe përsëri, këtu është ku të kuptuarit themelor 584 00:25:52,440 --> 00:25:54,550 zbatimi i një kompjuter ka kuptim. 585 00:25:54,550 --> 00:25:57,330 Vini re se, edhe pse unë kam dot dot dot atje, 586 00:25:57,330 --> 00:26:04,410 duket si një anë të z në Fjala janë të gjitha vlerat puqur deri nga 97 deri. 587 00:26:04,410 --> 00:26:07,820 >> Dhe njëjtë për të uppercase duke filluar nga ora 65. 588 00:26:07,820 --> 00:26:10,410 Pra takeaway, atëherë, është se në anglisht, 589 00:26:10,410 --> 00:26:12,760 si do ta përshkruanit ajo që linja 24 është duke bërë? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Po? 592 00:26:16,728 --> 00:26:21,575 >> Audienca: Më 24 është e kontrolluar për të parë nëse çdo karakter është Fjala. 593 00:26:21,575 --> 00:26:24,700 DAVID J. Malan: Është kontrolluar nëse çdo karakter është një letër me të vogla. 594 00:26:24,700 --> 00:26:28,590 Pra, edhe më shumë shkurtimisht, është Karakteri i'th e s Fjala? 595 00:26:28,590 --> 00:26:30,690 Kjo është e gjitha ne jemi shprehur këtu logjikisht, 596 00:26:30,690 --> 00:26:33,750 pak cryptically, por në fund të fundit shumë e pa pengesa. 597 00:26:33,750 --> 00:26:36,480 A është s së i'th Fjala karakter? 598 00:26:36,480 --> 00:26:40,130 >> Nëse është kështu, dhe këtu e ku gjërat merrni një mendje pak bending 599 00:26:40,130 --> 00:26:44,760 për vetëm një moment, nëse po, shkoni përpara dhe të shtypura nga një karakter. 600 00:26:44,760 --> 00:26:47,360 Pra, kjo është vetëm një placeholder, por çfarë karakteri? 601 00:26:47,360 --> 00:26:53,710 Pse jam unë duke bërë s kllapa i minus kjo shprehje këtu? 602 00:26:53,710 --> 00:26:55,110 >> Well njoftim modelin këtu. 603 00:26:55,110 --> 00:26:57,380 Shifrat aktuale nuk kanë rëndësi aq shumë. 604 00:26:57,380 --> 00:27:02,700 Por vini re se 97 është sa larg larg nga 65? 605 00:27:02,700 --> 00:27:03,560 >> Audienca: 32. 606 00:27:03,560 --> 00:27:04,480 >> DAVID J. Malan: 32. 607 00:27:04,480 --> 00:27:06,890 Sa larg është 98 nga 66? 608 00:27:06,890 --> 00:27:07,740 >> Audienca: 32. 609 00:27:07,740 --> 00:27:09,890 >> DAVID J. Malan: Pak c nga C e madhe? 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 Pra, ka 32 HOPS nga një letër në një tjetër. 612 00:27:14,550 --> 00:27:17,790 Pra sinqerisht unë, mund të lehtësuar këtë se. 613 00:27:17,790 --> 00:27:20,400 Por pastaj unë jam lloj i vështirë kodim ky nivel kuptuarit ulët 614 00:27:20,400 --> 00:27:21,740 që asnjë lexues është kurrë do të kuptojnë. 615 00:27:21,740 --> 00:27:25,080 Kështu që unë jam duke shkuar për të përgjithësuar atë si, unë e di se shkronjat janë më të mëdha. 616 00:27:25,080 --> 00:27:28,400 Unë e di shkronjat kapitale janë Vlerat më të vogla, për ironi. 617 00:27:28,400 --> 00:27:33,216 >> Por kjo është në mënyrë efektive ekuivalente me duke thënë zbres 32 nga s kllapa i. 618 00:27:33,216 --> 00:27:35,430 Pra, në kontekstin e këtyre letra, nëse letër 619 00:27:35,430 --> 00:27:38,950 ndodh që të jetë një, të vogla një, dhe unë zbres 32, 620 00:27:38,950 --> 00:27:43,442 çfarë efekti ka që kanë, matematikisht, në jo kapitale a? 621 00:27:43,442 --> 00:27:44,400 Audienca: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 DAVID J. Malan: kapitalizon atë. 623 00:27:45,691 --> 00:27:48,440 Dhe në të vërtetë, kjo është arsyeja pse tonë Programi quhet germa zero. 624 00:27:48,440 --> 00:27:51,590 Ky program ose kapitalizon një letër, 625 00:27:51,590 --> 00:27:54,580 pas kontrollimit në qoftë se ajo është e vërtetë një letër me të vogla. 626 00:27:54,580 --> 00:27:59,810 Përndryshe, në përputhje 30, çfarë të bëj në qoftë se kjo nuk është një letër me të vogla që unë jam 627 00:27:59,810 --> 00:28:02,852 duke kërkuar në në një mënyrë të veçantë përsëritje në lak. 628 00:28:02,852 --> 00:28:03,890 Vetëm print it out. 629 00:28:03,890 --> 00:28:07,010 >> Pra, nuk do të ndryshojë gjëra që nuk është edhe me të vogla. 630 00:28:07,010 --> 00:28:10,790 Kufizo veten të pak a me pak z. 631 00:28:10,790 --> 00:28:12,730 Tani kjo është mjaft misterioze. 632 00:28:12,730 --> 00:28:15,230 Por në fund të ditës, kjo është se si ne, një herë e një kohë, 633 00:28:15,230 --> 00:28:16,460 kishte për të zbatuar gjërat. 634 00:28:16,460 --> 00:28:19,780 Nëse unë në vend të kësaj të hapë germa një, oh falenderoj zot. 635 00:28:19,780 --> 00:28:22,320 Ka një funksion thirrur të sipërme që mund të 636 00:28:22,320 --> 00:28:25,410 bëjmë gjithçka vetëm e bëri në një nivel mjaft të ulët. 637 00:28:25,410 --> 00:28:28,752 >> Tani të sipërme është interesante për shkak se ajo është deklaruar në një skedar, 638 00:28:28,752 --> 00:28:31,210 dhe ju vetëm do të dini këtë duke kontrolluar dokumentacionin, 639 00:28:31,210 --> 00:28:35,730 ose duke u thënë, të themi, në klasë, ku ajo ekziston, në një skedar të quajtur ctype.h. 640 00:28:35,730 --> 00:28:37,630 Pra, kjo është një tjetër mik i ri i yni. 641 00:28:37,630 --> 00:28:40,750 Dhe të sipërme e bën pikërisht ajo që tregon emrin e saj. 642 00:28:40,750 --> 00:28:44,860 >> Ju mund të kalojë në, si një argument, në mes të këto kllapa, disa karakter. 643 00:28:44,860 --> 00:28:48,390 Unë jam duke shkuar për të kaluar në karakterin i'th i është duke përdorur simbol tonë dashuroj re 644 00:28:48,390 --> 00:28:49,870 përfshirë kllapa katrore. 645 00:28:49,870 --> 00:28:53,391 Dhe të marrë me mend, se çfarë është kthimi vlera e të sipërme me sa duket do 646 00:28:53,391 --> 00:28:53,890 të jetë? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 Një letër e kapitalit. 649 00:28:57,770 --> 00:28:58,620 Një letër e kapitalit. 650 00:28:58,620 --> 00:29:02,330 >> Pra, nëse unë të kalojë në Fjala a, me shpresë, nga përkufizimi i të sipërme, 651 00:29:02,330 --> 00:29:05,600 ajo do të kthehet një uppercase A. Përndryshe, 652 00:29:05,600 --> 00:29:08,590 në qoftë se kjo nuk është një letër me të vogla në vendi i parë, unë vetëm të shtypura it out. 653 00:29:08,590 --> 00:29:10,800 Dhe me të vërtetë, njoftim Miku i dytë këtu. 654 00:29:10,800 --> 00:29:13,840 Jo vetëm për të sipërme ekziston, por është më i ulët, i cili 655 00:29:13,840 --> 00:29:16,200 në fakt i përgjigjet se pyetja për mua. 656 00:29:16,200 --> 00:29:19,730 >> Tani ai që ka shkruar këto gjëra, 10s vjet më parë, ju e dini se çfarë? 657 00:29:19,730 --> 00:29:23,840 Zbatuar të sipërme dhe është të ulët duke përdorur kodin si kjo. 658 00:29:23,840 --> 00:29:27,270 Por përsëri, në përputhje me kjo ide e abstraguar larg, 659 00:29:27,270 --> 00:29:29,190 lloj, niveli më i ulët Detajet e zbatimit. 660 00:29:29,190 --> 00:29:32,600 Dhe duke qëndruar mbi supet e njerëzve që erdhën para nesh, duke përdorur funksionet 661 00:29:32,600 --> 00:29:36,300 si të sipërme dhe është më e ulët, të cilat mrekullisht mjaftueshme janë të bukur 662 00:29:36,300 --> 00:29:40,190 emëruar për të thënë atë që bëjnë ata, është një paradigmë e mrekullueshme për të miratuar. 663 00:29:40,190 --> 00:29:44,040 >> Tani, rezulton se në qoftë se kam lexuar faqja njeriu për të, të themi, të sipërme, 664 00:29:44,040 --> 00:29:45,010 Kam mësuar diçka tjetër. 665 00:29:45,010 --> 00:29:46,890 Pra njeriu toUpper. 666 00:29:46,890 --> 00:29:48,050 Është pak e madhe. 667 00:29:48,050 --> 00:29:51,110 Por njoftim, këtu është se përmendja e header fotografi që unë duhet të përdorin. 668 00:29:51,110 --> 00:29:54,460 Si një mënjanë, sepse kjo është mashtruese, funksioni 669 00:29:54,460 --> 00:29:59,070 përdor Ints vend të chars për arsye të error checking. 670 00:29:59,070 --> 00:30:01,260 Por ne do të vijë ndoshta përsëri në se në të ardhmen. 671 00:30:01,260 --> 00:30:05,910 >> Por vini re, këtu, për të konvertuarit e sipërme letër c ne kapitale nëse është e mundur. 672 00:30:05,910 --> 00:30:07,674 Pra, kjo është shumë i thjeshtë. 673 00:30:07,674 --> 00:30:09,340 Dhe tani le të jetë pak më specifik. 674 00:30:09,340 --> 00:30:12,750 Le të shikojmë në pjesën e Faqja njeri nën vlerën e kthimit. 675 00:30:12,750 --> 00:30:15,420 Vlera e kthyer është se e letrës konvertuar. 676 00:30:15,420 --> 00:30:18,690 Ose c, në rast se konvertimi nuk ishte e mundur, 677 00:30:18,690 --> 00:30:20,250 ku c është input origjinale. 678 00:30:20,250 --> 00:30:24,140 Që unë e di nga këtu, nga Argumenti për të sipërme. 679 00:30:24,140 --> 00:30:25,780 >> Pra, çfarë është kryefjala e kësaj? 680 00:30:25,780 --> 00:30:28,060 Vlera e kthyer është se e letrës konvertuar, 681 00:30:28,060 --> 00:30:32,110 ose c, letër origjinale, në qoftë se konvertimit nuk ishte e mundur. 682 00:30:32,110 --> 00:30:36,460 Çfarë përmirësim mund prandaj të bëjë të projektimit kodit tim? 683 00:30:36,460 --> 00:30:37,146 Po? 684 00:30:37,146 --> 00:30:38,810 >> Audienca: Ju mund të hiqni tjetër. 685 00:30:38,810 --> 00:30:40,810 DAVID J. Malan: Unë mund hiqni deklaratën tjetër, 686 00:30:40,810 --> 00:30:42,510 dhe jo vetëm deklarata tjetër. 687 00:30:42,510 --> 00:30:44,150 >> Audienca: Ju mund të hiqni [padëgjueshme]. 688 00:30:44,150 --> 00:30:46,310 >> DAVID J. Malan: Unë mund hequr të gjithë pirun 689 00:30:46,310 --> 00:30:48,209 në rrugë, nëse tjetër krejt. 690 00:30:48,209 --> 00:30:50,250 Pra me të vërtetë, më lejoni të hapur versioni përfundimtar i kësaj, 691 00:30:50,250 --> 00:30:55,540 germa-2 dhe të vini re se sa, nëse ju do të, sexy, kodi është tani duke marrë, 692 00:30:55,540 --> 00:31:00,040 në se unë kam reduktuar nga disa shtatë apo më shumë linja të vetëm katër, 693 00:31:00,040 --> 00:31:03,850 funksionalitetin që kam për qëllim nga thjesht duke bërë thirrje për të sipërme, 694 00:31:03,850 --> 00:31:09,410 duke kaluar në s kllapa i, dhe shtypje jashtë, me vendshënuesi% C, 695 00:31:09,410 --> 00:31:11,090 se karakteri të veçantë. 696 00:31:11,090 --> 00:31:14,560 >> Tani ndoshta, nuk është një bug, ose të paktën rreziku i një insekti, 697 00:31:14,560 --> 00:31:15,350 në këtë program. 698 00:31:15,350 --> 00:31:18,200 Pra, vetëm për të ardhur përsëri për një takeaway më parë, 699 00:31:18,200 --> 00:31:21,820 çfarë duhet të ndoshta të bëjë në ky program për të bërë atë më të fuqishme, 700 00:31:21,820 --> 00:31:24,974 kështu që nuk ka asnjë mënyrë ajo mund të përplasje, madje edhe në raste të rralla? 701 00:31:24,974 --> 00:31:26,390 Audienca: Sigurohuni që nuk është NULL. 702 00:31:26,390 --> 00:31:28,056 DAVID J. Malan: Sigurohuni që nuk është NULL. 703 00:31:28,056 --> 00:31:31,030 Pra me të vërtetë, për të bërë këtë super duhur, unë duhet të bëjë diçka si, 704 00:31:31,030 --> 00:31:35,300 në qoftë se s nuk është NULL, atëherë të shkojnë përpara dhe të ekzekutuar 705 00:31:35,300 --> 00:31:38,470 këto rreshta të kodit, të cilat Unë pastaj mund të porosit si kjo, 706 00:31:38,470 --> 00:31:39,870 dhe pastaj të vënë në mbajtëse tim të ngushtë. 707 00:31:39,870 --> 00:31:41,550 Pra, mirë i lidhur së bashku nga dy ide. 708 00:31:41,550 --> 00:31:42,429 Po? 709 00:31:42,429 --> 00:31:44,470 Audienca: Mund të përdorni a bëni ndërsa lak, në vend? 710 00:31:44,470 --> 00:31:47,270 DAVID J. Malan: Mund Unë bëj një për ta bërë, ndërsa loop? 711 00:31:47,270 --> 00:31:50,020 Audienca: --you të dëshironi të bëni të sigurtë që ju të vërtetë [padëgjueshme]. 712 00:31:50,020 --> 00:31:51,728 DAVID J. Malan: Mund ju përdorni një për ta bërë, ndërsa? 713 00:31:51,728 --> 00:31:52,450 Përgjigja e shkurtër, nr. 714 00:31:52,450 --> 00:31:54,700 Për shkak se ju jeni gati për të të futur një tjetër rast qoshe. 715 00:31:54,700 --> 00:31:56,660 Nëse vargu është i gjatësisë zero. 716 00:31:56,660 --> 00:31:59,600 Nëse për shembull, unë vetëm goditi Shkruani, ndonjëherë pa shtypur Zamyla. 717 00:31:59,600 --> 00:32:02,490 Unë jam duke shkuar për të dorëzuar ju prapa një aktuale string, si ne do të shohim në fund, 718 00:32:02,490 --> 00:32:03,780 se ka zero karaktere. 719 00:32:03,780 --> 00:32:05,630 Është ende një varg, kjo është vetëm super të shkurtër. 720 00:32:05,630 --> 00:32:07,960 Por në qoftë se ju përdorni një për ta bërë, ndërsa, ju jeni do të verbërisht 721 00:32:07,960 --> 00:32:10,050 të përpiqet të bëjë diçka me respektojnë për atë varg, 722 00:32:10,050 --> 00:32:12,537 dhe asgjë nuk do të jetë atje. 723 00:32:12,537 --> 00:32:18,607 >> Audienca: E pra, në qoftë se ju e bëri bëni [padëgjueshme] ndërsa s-- 724 00:32:18,607 --> 00:32:21,190 DAVID J. Malan: Oh unë shoh, të mbajtur duke marrë një varg nga përdoruesit. 725 00:32:21,190 --> 00:32:23,525 Përgjigje kaq të shkurtër, ju mund të, dhe për të mbajtur pestering 726 00:32:23,525 --> 00:32:26,150 ata që të ju jap një varg që është shkurtër sa të përshtaten në kujtesën. 727 00:32:26,150 --> 00:32:26,700 Absolutisht. 728 00:32:26,700 --> 00:32:27,630 Unë vetëm ka zgjedhur për të. 729 00:32:27,630 --> 00:32:30,505 Nëse ata nuk më japin string e I doni, unë jam ndalohet pirja e duhanit, unë jam duke i dhënë dorë. 730 00:32:30,505 --> 00:32:33,260 Por, absolutisht, për këtë qëllim, ju mund absolutisht të bëjë që. 731 00:32:33,260 --> 00:32:37,500 >> Pra header fotografi të bibliotekës që ne jemi tani të njohur me të janë këto, këtu. 732 00:32:37,500 --> 00:32:41,550 Standard I / O, CS50.h, string, ctype.h, dhe ka, me të vërtetë, të tjerët. 733 00:32:41,550 --> 00:32:44,460 Disa prej jush kanë zbuluar biblioteka matematikë në math.h. 734 00:32:44,460 --> 00:32:48,200 Por më lejoni të prezantoj ju, tani, për të ky burim që stafi CS50, Davin, 735 00:32:48,200 --> 00:32:50,630 dhe Rob, dhe Gabe veçanti kanë vënë së bashku. 736 00:32:50,630 --> 00:32:52,630 Se së shpejti do të lidhë në website Kursi-së. 737 00:32:52,630 --> 00:32:54,870 Ajo që quhet referencë CS50. 738 00:32:54,870 --> 00:32:58,230 >> Cili vetëm për të ju jap një të shpejtë shijen e saj, punon si vijon. 739 00:32:58,230 --> 00:33:00,740 Më lejoni të shkoj në reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Ju do të shihni në të majtë anën e një listë të madhe 741 00:33:02,990 --> 00:33:04,595 e funksioneve që vijnë me c. 742 00:33:04,595 --> 00:33:07,790 Por në qoftë se më intereson, për momentin, për diçka si strlen, 743 00:33:07,790 --> 00:33:08,746 Unë mund të shtypni atë atje. 744 00:33:08,746 --> 00:33:10,870 Ajo filtron poshtë në listë të vetëm atë që më intereson. 745 00:33:10,870 --> 00:33:11,940 Unë jam duke shkuar për të click it. 746 00:33:11,940 --> 00:33:14,740 Dhe tani në të majtë, ju do të shihni se çfarë ne shpresojmë 747 00:33:14,740 --> 00:33:18,290 është më e drejtpërdrejtë, e njeriut shpjegim miqësore se si 748 00:33:18,290 --> 00:33:19,170 ky funksion punon. 749 00:33:19,170 --> 00:33:20,600 >> Kthen gjatësinë e një varg. 750 00:33:20,600 --> 00:33:24,060 Ja një përmbledhje, këtu është se si ju përdorin atë në drejtim të të header file, 751 00:33:24,060 --> 00:33:27,430 dhe në drejtim të asaj që të funksionit duket si në aspektin e argumenteve të tij. 752 00:33:27,430 --> 00:33:30,250 Dhe pastaj këtu, kthimit Gjatësia e një varg. 753 00:33:30,250 --> 00:33:34,280 Por për ata prej jush më të rehatshme, në të vërtetë ju mund të klikoni më i qetë, 754 00:33:34,280 --> 00:33:37,070 dhe përmbajtja e këtij faqe, tani, do të ndryshojë 755 00:33:37,070 --> 00:33:41,660 të jenë vlerat e nënkuptuara të asaj ju merrni duke përdorur faqen e njeri. 756 00:33:41,660 --> 00:33:44,100 >> Me fjalë të tjera, CS50 referencë është një thjeshtësim 757 00:33:44,100 --> 00:33:46,220 i faqeve njeri nga stafi, për studentët. 758 00:33:46,220 --> 00:33:49,320 Veçanërisht, ata më pak të rehatshme dhe në mes, në mënyrë që ju të 759 00:33:49,320 --> 00:33:51,660 nuk duhet të përpiqen për të përfunduar mendjen tuaj rreth, sinqerisht, 760 00:33:51,660 --> 00:33:55,030 disa sintaksë mjaft i fshehtë dhe dokumentacioni diku. 761 00:33:55,030 --> 00:33:57,650 >> Pra, mbani në mend në ditët që do të vijnë. 762 00:33:57,650 --> 00:33:59,560 Pra këtu, përsëri, është një Zamyla. 763 00:33:59,560 --> 00:34:03,255 Le tani të kërkojë një pyetje që është pak më njerëzore të arritshme. 764 00:34:03,255 --> 00:34:05,380 Falë Chang, i cili ka qenë shtypjen më shumë elefantët 765 00:34:05,380 --> 00:34:07,090 vazhdimisht për disa ditëve të fundit. 766 00:34:07,090 --> 00:34:09,730 Ne kemi një mundësi për të dhënë të paktën një prej tyre larg. 767 00:34:09,730 --> 00:34:13,239 Nëse ne mund të marrë vetëm një vullnetar për të ardhur në dorë për të nxjerrë në ekran. 768 00:34:13,239 --> 00:34:14,530 Si për këtu? 769 00:34:14,530 --> 00:34:15,340 >> Eja lart. 770 00:34:15,340 --> 00:34:16,720 Cili është emri yt? 771 00:34:16,720 --> 00:34:17,219 ALEX: Alex. 772 00:34:17,219 --> 00:34:17,760 DAVID J. Malan: Alex. 773 00:34:17,760 --> 00:34:18,259 Të gjithë të drejtë. 774 00:34:18,259 --> 00:34:19,388 Alex, eja lart. 775 00:34:19,388 --> 00:34:21,679 Ne jemi gati të shohim tuaj shkrim dore në ekran këtu. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Në rregull, mirë që u njohëm. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Gëzohem që ju takova. 779 00:34:26,429 --> 00:34:27,512 >> DAVID J. Malan: Në rregull. 780 00:34:27,512 --> 00:34:28,969 Pra, stërvitje super e thjeshtë. 781 00:34:28,969 --> 00:34:31,440 Bar nuk është i lartë për të merrni një elefant sot. 782 00:34:31,440 --> 00:34:33,439 Ju jeni duke luajtur rolin e getstring. 783 00:34:33,439 --> 00:34:35,980 Dhe unë jam duke shkuar për të ju them vetëm string që ju keni marrë. 784 00:34:35,980 --> 00:34:38,080 Dhe mendoj se ju, getstring, janë thirrur. 785 00:34:38,080 --> 00:34:42,480 Dhe njerëzore, si unë, ka shtypur në Zamyla, Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 Vetëm të shkojnë përpara dhe të shkruani Zamyla në ekran sikur ju keni marrë atë 787 00:34:45,650 --> 00:34:47,250 dhe ruajtur atë diku në kujtesë. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Duke lënë vend për atë që do të jetë disa words-- tjetër kjo është në rregull, do të mbajë. 790 00:34:55,570 --> 00:34:59,620 >> [Qeshura] 791 00:34:59,620 --> 00:35:00,800 >> Pra Zamyla, Excellent. 792 00:35:00,800 --> 00:35:04,880 Deri tani mendoj se ju, getstring, janë quajtur përsëri. 793 00:35:04,880 --> 00:35:09,350 Dhe për këtë arsye, unë ju sigurojë, në tastierës, me një emër tjetër, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 Të gjithë të drejtë. 796 00:35:18,060 --> 00:35:22,380 Dhe tani herën tjetër getstring është quajtur, unë lloji në diçka si Gabe, 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. Ju jeni me të vërtetë duke marrë në zemër e gjallë kujtesën. 798 00:35:27,560 --> 00:35:29,631 Cili është tërhequr çdo gjë krejtësisht rastësisht. 799 00:35:29,631 --> 00:35:30,130 OK. 800 00:35:30,130 --> 00:35:31,104 >> [Qeshura] 801 00:35:31,104 --> 00:35:32,520 ALEX: Na vjen keq shkrimi im është i keq. 802 00:35:32,520 --> 00:35:33,770 DAVID J. Malan: Jo, kjo është në rregull. 803 00:35:33,770 --> 00:35:40,480 Dhe si për Rob, R-O-B. OK. 804 00:35:40,480 --> 00:35:41,020 Mirë. 805 00:35:41,020 --> 00:35:43,853 Kështu që unë nuk ju parashikojnë do të lloj i vë gjërat në këtë mënyrë. 806 00:35:43,853 --> 00:35:45,020 Por ne mund të bëjë këtë punë. 807 00:35:45,020 --> 00:35:48,810 Pra, si nuk ju shkoni në lidhje me hedhjen nga këto karaktere në kujtesë? 808 00:35:48,810 --> 00:35:51,310 Me fjalë të tjera, në qoftë se ne mendojmë për ky ekran drejtkëndëshe zi 809 00:35:51,310 --> 00:35:53,550 si përfaqësues i një RAM, ose kujtesës kompjuterit. 810 00:35:53,550 --> 00:35:55,850 >> Dhe kujtoj se RAM është vetëm një bandë e tërë e bytes, 811 00:35:55,850 --> 00:35:57,480 dhe bytes janë një bandë e tërë e bit. 812 00:35:57,480 --> 00:35:59,350 Dhe bit janë disi zbatuar, në përgjithësi 813 00:35:59,350 --> 00:36:01,119 me një formë të energjisë elektrike në hardware. 814 00:36:01,119 --> 00:36:03,160 Pra, kjo është lloj i layering kemi folur 815 00:36:03,160 --> 00:36:04,510 dhe tani mund të marrë për të dhënë. 816 00:36:04,510 --> 00:36:07,020 Si ju shkoni në lidhje me vendoset se ku për të shkruar 817 00:36:07,020 --> 00:36:11,634 Rob kundrejt Gabe kundrejt Belinda kundrejt Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> ALEX: Unë vetëm e bëri atë në urdhërojë që ju më tha. 819 00:36:14,020 --> 00:36:15,650 >> DAVID J. Malan: Dhe kjo është e vërtetë. 820 00:36:15,650 --> 00:36:20,100 Por ajo që qeveriset ku keni vënë Emri Belinda dhe emri Gabe-së? 821 00:36:20,100 --> 00:36:20,764 >> ALEX: Asgjë? 822 00:36:20,764 --> 00:36:22,930 DAVID J. Malan: [qesh] Kështu që punon, kjo është në rregull. 823 00:36:22,930 --> 00:36:25,290 Pra kompjuterat janë pak më të rregullt se kaq. 824 00:36:25,290 --> 00:36:29,000 Dhe kështu kur ne implement-- qëndrojnë atje për vetëm një moment-- kur ne fakt 825 00:36:29,000 --> 00:36:31,470 zbatojë diçka si getstring në një kompjuter, 826 00:36:31,470 --> 00:36:34,480 Zamyla mund të jenë të përcaktuara nga shumë e shumë të si ju e bëri në ekran, atje. 827 00:36:34,480 --> 00:36:36,660 >> Dhe çfarë është çelësi për njoftim këtu, çfarë bëri Alex, 828 00:36:36,660 --> 00:36:40,260 është atje është lloj i një demarkacionin në mesin e secilit prej këtyre fjalëve, e drejtë? 829 00:36:40,260 --> 00:36:46,580 Ju nuk shkruaj Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- 830 00:36:46,580 --> 00:36:49,740 me fjalë të tjera, ka disa lloj e demarkacionit e cila duket të jetë, 831 00:36:49,740 --> 00:36:52,370 lloj, ndarje të rastit mes të këtyre fjalëve të ndryshme. 832 00:36:52,370 --> 00:36:54,120 Por kjo është e mirë, sepse ne njerëzit mund tani 833 00:36:54,120 --> 00:36:56,470 kujtoj se këto janë katër vargjet e ndryshme. 834 00:36:56,470 --> 00:36:59,540 Kjo nuk është vetëm një sekuencë e shumë karaktereve. 835 00:36:59,540 --> 00:37:04,190 Pra, një kompjuter, atëherë, ndërkohë, mund të marrë një varg si Zamyla, 836 00:37:04,190 --> 00:37:07,220 vënë secilën prej këtyre letrave brenda një bajt e memories. 837 00:37:07,220 --> 00:37:10,400 Por ky numër është shumë më i madh, sigurisht, se gjashtë karaktere. 838 00:37:10,400 --> 00:37:11,690 >> Ka një bandë e tërë e RAM. 839 00:37:11,690 --> 00:37:15,330 Dhe kështu që tani e tutje, kjo Rrjeti i kutive do 840 00:37:15,330 --> 00:37:17,560 për të përfaqësuar atë Alex vetëm bëri këtu në ekran. 841 00:37:17,560 --> 00:37:20,937 Dhe tani, Alex, ne mund të ju ofrojnë një blu apo një elefant portokalli nga Chang. 842 00:37:20,937 --> 00:37:22,270 ALEX: Unë do të marrë një elefant blu. 843 00:37:22,270 --> 00:37:23,120 DAVID J. Malan: Një elefant blu. 844 00:37:23,120 --> 00:37:25,580 Pra, një raund i madh e duartrokitje, në qoftë se ne mund të, për Alex këtu. 845 00:37:25,580 --> 00:37:26,100 >> [Duartrokitje] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: Faleminderit. 847 00:37:26,766 --> 00:37:28,820 DAVID J. Malan: Faleminderit. 848 00:37:28,820 --> 00:37:36,230 Pra takeaway është se, edhe pse model lloj i ndryshuar me kalimin e kohës, këtu 849 00:37:36,230 --> 00:37:40,430 në bord, nuk ishte ky demarkacioni midis vargjet e ndryshme 850 00:37:40,430 --> 00:37:42,610 se Alex mori për ne. 851 00:37:42,610 --> 00:37:45,230 Tani kompjutera, sinqerisht, mund të bëjë të njëjtën gjë. 852 00:37:45,230 --> 00:37:48,210 Ata mund të lloj pllum vargjet kudo në RAM. 853 00:37:48,210 --> 00:37:50,710 Deri këtu, këtu, poshtë këtu, këtu poshtë. 854 00:37:50,710 --> 00:37:52,020 >> Ata mund të bëjë pikërisht këtë. 855 00:37:52,020 --> 00:37:54,280 Por, sigurisht, kjo është ndoshta nuk e planifikimit më të mirë. 856 00:37:54,280 --> 00:37:54,780 E drejta? 857 00:37:54,780 --> 00:37:57,340 Nëse unë mbajtur duke i kërkuar Alex për të të marrë emrat, ndoshta ai do të 858 00:37:57,340 --> 00:38:01,370 vënë disa më shumë këtu, ndoshta deri këtu, këtu, këtu, në fund 859 00:38:01,370 --> 00:38:02,211 mbi këtu. 860 00:38:02,211 --> 00:38:05,460 Por, me pak më shumë planifikim, sigurisht, ne mund të vënë gjërat më të pastër. 861 00:38:05,460 --> 00:38:07,350 Dhe me të vërtetë, kjo është ajo që e bën një kompjuter. 862 00:38:07,350 --> 00:38:10,720 >> Por kapur është se nëse vargu tjetër kam marrë 863 00:38:10,720 --> 00:38:14,050 pas Zamyla është diçka si Belinda, 864 00:38:14,050 --> 00:38:17,929 propozojë ku ne mund të shkruani letër b lidhje me këtë rrjet? 865 00:38:17,929 --> 00:38:18,720 Ku do të shkoni? 866 00:38:18,720 --> 00:38:21,480 Në të djathtë të a, nën z, nën a? 867 00:38:21,480 --> 00:38:23,204 Çfarë do të jetë instinktet tuaja të para? 868 00:38:23,204 --> 00:38:24,120 Audienca: Më poshtë z. 869 00:38:24,120 --> 00:38:25,100 DAVID J. Malan: Pra nën z. 870 00:38:25,100 --> 00:38:26,530 Dhe kjo është shumë e hapur, e drejtë? 871 00:38:26,530 --> 00:38:29,321 Kjo është lloj i zoti, kjo është ajo që ne bëjmë në një tastierë kur ne hit Enter, 872 00:38:29,321 --> 00:38:31,770 ose një email kur bën një lista bulleted e gjërave. 873 00:38:31,770 --> 00:38:34,310 Por realiteti është se kompjuterët të përpiqet të jetë më efikas, 874 00:38:34,310 --> 00:38:37,170 dhe sigurisht të mbushur sa më shumë Të dhënat në RAM të jetë e mundur, 875 00:38:37,170 --> 00:38:38,890 në mënyrë që ju nuk e humbni ndonjë bytes. 876 00:38:38,890 --> 00:38:41,545 Kështu që ju nuk e mbeturinave çdo pasurive të patundshme ekran. 877 00:38:41,545 --> 00:38:44,170 Dhe problemi, megjithatë, është se në qoftë se ne të vërtetë vënë në letër 878 00:38:44,170 --> 00:38:49,940 b pas një, si do të e di se ku mbaron emri Zamyla-së 879 00:38:49,940 --> 00:38:51,840 dhe emri i Belinda fillon? 880 00:38:51,840 --> 00:38:55,270 Pra, ju Njerëzit vetëm propozuar, mirë, hit Enter, në thelb. 881 00:38:55,270 --> 00:38:56,410 Vënë atë poshtë më poshtë. 882 00:38:56,410 --> 00:38:59,750 Ose ashtu si bëri edhe Alex, sapo filloni të shkruani emri tjetër nën atë të mëparshme, 883 00:38:59,750 --> 00:39:01,583 dhe më poshtë se një, dhe pastaj më poshtë se një. 884 00:39:01,583 --> 00:39:02,510 Kjo është një sugjerim vizuale. 885 00:39:02,510 --> 00:39:05,960 >> Kompjuter kanë një tjetër sugjerim vizuale, por kjo është pak më e ngjeshur. 886 00:39:05,960 --> 00:39:07,840 Është ky karakter i shokuar. 887 00:39:07,840 --> 00:39:11,890 Backslash 0, e cila është ndoshta kujton backslash n, 888 00:39:11,890 --> 00:39:12,640 dhe kështu me radhë, tani. 889 00:39:12,640 --> 00:39:14,120 Sekuenca të veçanta shpëtuar. 890 00:39:14,120 --> 00:39:19,120 Backslash 0 është mënyra e që përfaqëson tetë zero bit në një rresht. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Mënyrë që ju të shprehur se nuk të është goditur numrin zero në tastierën tuaj, 893 00:39:26,130 --> 00:39:28,140 sepse në të vërtetë që është një char ASCII. 894 00:39:28,140 --> 00:39:30,990 Ajo duket si një numër, por është në fakt një numër dhjetor 895 00:39:30,990 --> 00:39:35,910 që përfaqëson qarkore glyph, typeface rrethore. 896 00:39:35,910 --> 00:39:38,410 Ndërkohë, backslash zero do të thotë, fjalë për fjalë 897 00:39:38,410 --> 00:39:40,700 vënë tetë zero bytes këtu për mua. 898 00:39:40,700 --> 00:39:42,136 >> Pra, kjo është disi arbitrar. 899 00:39:42,136 --> 00:39:44,260 Ne mund të keni përdorur ndonjë model i bit, por bota 900 00:39:44,260 --> 00:39:46,610 vendosur disa vjet më parë, që të përfaqësojë 901 00:39:46,610 --> 00:39:49,710 fundi i një varg në kujtesë, vetëm vënë një bandë e tërë e zero. 902 00:39:49,710 --> 00:39:51,000 Sepse ne mund të zbulojë se. 903 00:39:51,000 --> 00:39:54,790 Tani që do të thotë se nuk ka letër alfabeti mund të përfaqësohet me zero. 904 00:39:54,790 --> 00:39:58,480 >> Por kjo është në rregull, ne kemi parë tashmë që ne jemi duke përdorur 65 për deri në 97 më lart. 905 00:39:58,480 --> 00:40:00,290 Ne nuk do të arrijë të mbyllur për të gjitha zero. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 Pra Belinda në kujtesë të kompjuterit është në të vërtetë do të shkoni këtu. 908 00:40:06,540 --> 00:40:09,764 Unë e kam tërhequr atë në të verdhë vetëm për të tërhequr vëmendjen tonë për të. 909 00:40:09,764 --> 00:40:11,680 Dhe vini re, gjithashtu, kjo është krejtësisht arbitrare. 910 00:40:11,680 --> 00:40:12,680 Unë e kam tërhequr atë si një rrjet. 911 00:40:12,680 --> 00:40:14,460 Si, RAM është vetëm disa objekt fizik. 912 00:40:14,460 --> 00:40:17,300 Ajo nuk do të ketë rreshtave dhe kolonave, në vetvete. 913 00:40:17,300 --> 00:40:20,490 Ajo e mori vetëm një bandë e tërë e bytes implementuar në hardware disi. 914 00:40:20,490 --> 00:40:22,817 Por nëse pas Belinda I shtypur në emër Gabe-së, 915 00:40:22,817 --> 00:40:25,650 ai do të përfundojë deri këtu në kujtesë, dhe në qoftë se kam shtypur në emër Daven-së, 916 00:40:25,650 --> 00:40:27,316 për shembull, ai do të përfundojnë këtu. 917 00:40:27,316 --> 00:40:29,310 Dhe unë mund të vazhdojë të shkruaj edhe më shumë emra. 918 00:40:29,310 --> 00:40:32,100 >> Për fat të keq, në qoftë se unë të përpiqet për të shkruani një emër super të gjatë, 919 00:40:32,100 --> 00:40:33,730 Unë përfundimisht mund të dalë jashtë kujtesës. 920 00:40:33,730 --> 00:40:37,810 Në të cilin rast, getstring është do të kthehen NULL, siç kemi thënë. 921 00:40:37,810 --> 00:40:41,720 Por fatmirësisht, të paktën në këtë vizuale këtu, nuk kemi marrë mjaft që tani. 922 00:40:41,720 --> 00:40:45,860 >> Tani ajo që është e bukur është se kjo Ideja e përgjithshme e trajtimit të gjërave 923 00:40:45,860 --> 00:40:49,720 si në kuti është përfaqësues i një tipar të C 924 00:40:49,720 --> 00:40:52,690 dhe shumë gjuhë, i njohur si një grup. 925 00:40:52,690 --> 00:40:55,490 Një grup është një lloj tjetër i të dhënave. 926 00:40:55,490 --> 00:40:57,380 Kjo është një strukturë e të dhënave, nëse ju do. 927 00:40:57,380 --> 00:41:01,160 Struktura në kuptimin e saj të vërtetë, lloj, duke kërkuar si një kuti, të paktën 928 00:41:01,160 --> 00:41:02,320 në sy mendjen tuaj. 929 00:41:02,320 --> 00:41:09,680 Një grup është një i afërt rend të llojeve të njëjta të dhënave, 930 00:41:09,680 --> 00:41:11,330 të kthyer prapa për të kthyer prapa. 931 00:41:11,330 --> 00:41:14,720 >> Pra, një varg, në të tjera fjalë, është një koleksion i karaktere. 932 00:41:14,720 --> 00:41:16,120 Një grup të karaktereve. 933 00:41:16,120 --> 00:41:19,070 Por kjo rezulton nga ju mund të keni vargjeve të bunches e gjërave. 934 00:41:19,070 --> 00:41:21,870 Në fakt, ne mund të vënë edhe numrat në një rrjet. 935 00:41:21,870 --> 00:41:23,920 Pra, formën në të cilën ne jemi duke shkuar për të filluar 936 00:41:23,920 --> 00:41:26,590 deklaruar këto të dhëna Struktura e njohur si një grup 937 00:41:26,590 --> 00:41:28,250 është gjithashtu do të përdorin kllapa katrore. 938 00:41:28,250 --> 00:41:31,500 Por këto kllapa katrore do të kanë kuptim të ndryshëm në këtë kontekst. 939 00:41:31,500 --> 00:41:33,450 >> Dhe le të shohim atë si më poshtë. 940 00:41:33,450 --> 00:41:36,780 Le të supozojmë se unë u hap deri një skedë të re këtu. 941 00:41:36,780 --> 00:41:38,535 Dhe unë ruani këtë si ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 Dhe unë do të ruaj këtë në dosjen time këtu. 944 00:41:43,470 --> 00:41:46,130 Dhe tani unë jam duke shkuar për të shkuar përpara dhe filloni të shtypni diçka 945 00:41:46,130 --> 00:41:53,940 si përfshijnë CS50.h, përfshijnë stdio.h, int boshllëk kryesor. 946 00:41:53,940 --> 00:41:57,370 Dhe pastaj brenda këtu, unë dua që së pari të ketë një int quajtur mosha. 947 00:41:57,370 --> 00:42:01,371 >> Dhe unë jam duke shkuar për të përdorur që për të marrë një int nga përdoruesit për moshën e tij ose të saj. 948 00:42:01,371 --> 00:42:04,620 Por ky program ka për qëllim të përdoret nga njerëzit të shumta, për çfarëdo kontekst. 949 00:42:04,620 --> 00:42:05,490 Unë kam marrë një linjë të njerëzve. 950 00:42:05,490 --> 00:42:08,281 Të gjithë ata duhet të shkruani në e tyre mosha për ndoshta disa, unë nuk e di, 951 00:42:08,281 --> 00:42:10,530 konkurrencës, apo ngjarje se ata kanë ardhur për të. 952 00:42:10,530 --> 00:42:13,030 Pra personi tjetër, unë nevojë për një tjetër ndryshore. 953 00:42:13,030 --> 00:42:15,790 >> Sepse në qoftë se unë vetëm të bëjë mosha merr getInt, që është 954 00:42:15,790 --> 00:42:18,500 shkuar për plaçkë, apo të prishësh mosha e personit të kaluar. 955 00:42:18,500 --> 00:42:19,760 Kështu që nuk është e mirë. 956 00:42:19,760 --> 00:42:21,790 Pra instinkti im i parë mund të jetë, oh, të gjithë të drejtë, 957 00:42:21,790 --> 00:42:26,260 në qoftë se unë dua të të marrë të shumta e njerëzve ages-- le të quajmë këtë age1, 958 00:42:26,260 --> 00:42:31,280 int age2 merr int, int age3 merr getInt. 959 00:42:31,280 --> 00:42:35,340 Dhe tani unë jam duke shkuar për të përdorur disa Kodi pseudokod këtu. 960 00:42:35,340 --> 00:42:37,679 >> A diçka me ato numra. 961 00:42:37,679 --> 00:42:40,470 Ne do të lënë për një ditë tjetër atë ne jemi duke bërë atje, sepse ne vetëm 962 00:42:40,470 --> 00:42:44,200 kujdesi për momentin për age1, age2, age3. 963 00:42:44,200 --> 00:42:46,450 Për fat të keq, një herë unë hartuar këtë program 964 00:42:46,450 --> 00:42:51,140 dhe e vënë atë në frontin e përdoruesit aktual, çfarë është dizajn krejtësisht të varfër 965 00:42:51,140 --> 00:42:53,890 Vendimi Unë duket se kanë bërë? 966 00:42:53,890 --> 00:42:54,624 Po? 967 00:42:54,624 --> 00:42:55,499 Audienca: [padëgjueshme] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 DAVID J. Malan: Po, Unë nuk e kanë provuar edhe 970 00:42:59,820 --> 00:43:02,028 të kuptoj se si shumë moshave duhet me të vërtetë e kujdesit për? 971 00:43:02,028 --> 00:43:05,380 Nëse unë kam më pak se tre njerëz këtu, dhe për këtë arsye më pak se tre moshave, 972 00:43:05,380 --> 00:43:07,260 Unë jam ende verbërisht pritur tre. 973 00:43:07,260 --> 00:43:08,720 Zoti na ruajt katër njerëzit shfaqen. 974 00:43:08,720 --> 00:43:10,990 Programi im thjesht nuk do të mbështesë ato. 975 00:43:10,990 --> 00:43:13,280 >> Dhe kështu kjo, histori e gjatë Me pak fjalë, nuk është një zakon i mirë. 976 00:43:13,280 --> 00:43:13,780 E drejta? 977 00:43:13,780 --> 00:43:16,530 Unë kam qenë në thelb kopjimi dhe pasting kodin dhe vetëm tweaking 978 00:43:16,530 --> 00:43:17,430 emrat e ndryshueshme. 979 00:43:17,430 --> 00:43:22,410 Dhe, Perëndia im, në qoftë se keni pasur, jo tre moshës, por 10, apo 100, apo edhe 6,500 980 00:43:22,410 --> 00:43:23,820 studentë, për shembull. 981 00:43:23,820 --> 00:43:26,950 Kjo nuk do të jetë veçanërisht e Kodi elegante, ose të qëndrueshme. 982 00:43:26,950 --> 00:43:29,200 Ju jeni do të duhet të rishkruaj programin deri çdo kohë 983 00:43:29,200 --> 00:43:30,760 Numri juaj i njerëzve ndryshimeve. 984 00:43:30,760 --> 00:43:35,090 >> Pra fatmirësisht, në aktuale tonë fotografi ages.c për sot, 985 00:43:35,090 --> 00:43:36,970 ne kemi një zgjidhje më të zgjuar. 986 00:43:36,970 --> 00:43:39,800 Së pari, unë jam duke shkuar për të marrë hua ndërtuar ne kemi përdorur disa herë, 987 00:43:39,800 --> 00:43:43,744 këtë bëni ndërsa lak, në mënyrë që të merrni numri i njerëzve në dhomë. 988 00:43:43,744 --> 00:43:46,910 Unë jam vetëm duke shkuar për të mërzit përdoruesit, përsëri dhe përsëri, derisa ai ose ajo jep mua 989 00:43:46,910 --> 00:43:49,260 një vlerë të n që është një numër i plotë pozitiv. 990 00:43:49,260 --> 00:43:51,590 >> Unë mund të ketë përdorur, fundit koha të merrni int pozitiv. 991 00:43:51,590 --> 00:43:53,720 Por ne nuk kemi se për të vërtetë, kështu që unë shkova përpara 992 00:43:53,720 --> 00:43:55,660 dhe jeni zbatuar këtë ide. 993 00:43:55,660 --> 00:43:58,410 Tani këtu poshtë, kjo është mashtrim i ri. 994 00:43:58,410 --> 00:44:02,260 Në përputhje 27, si komentet në linjë 26 sugjeron, 995 00:44:02,260 --> 00:44:05,180 të deklarojë një grup në të cilin për të ruajtur moshën gjithëve. 996 00:44:05,180 --> 00:44:09,320 >> Pra, nëse ju doni të merrni, jo një int, nuk dy Ints, por një bandë e tërë e ints. 997 00:44:09,320 --> 00:44:13,800 Në mënyrë të veçantë n integers, n ishin të mund jetë tre, mund të jetë 100, mund të jetë 1.000. 998 00:44:13,800 --> 00:44:17,570 Sintaksa, thjesht, është që të të themi, çfarë lloji të dhënat e doni? 999 00:44:17,570 --> 00:44:19,620 Çfarë doni të telefononi se copë e kujtesës? 1000 00:44:19,620 --> 00:44:23,530 Çfarë doni të telefononi rrjetit që duket si kjo në pikturë? 1001 00:44:23,530 --> 00:44:27,700 >> Dhe në kllapa këtu, ju thoni sa i madh ju doni array të jetë. 1002 00:44:27,700 --> 00:44:30,450 Dhe kështu më parë, kur kam thënë Sintaksa është pak më ndryshe këtu, 1003 00:44:30,450 --> 00:44:33,614 ne jemi ende duke përdorur kllapa katrore, por kur unë jam deklaruar një rrjet, 1004 00:44:33,614 --> 00:44:35,530 Numri brenda kllapa katrore mjete 1005 00:44:35,530 --> 00:44:37,610 sa i madh nuk ju duan array të jetë. 1006 00:44:37,610 --> 00:44:42,490 >> Në të kundërt, kur ne ishim duke përdorur s simboli i një moment më parë, s, një varg, 1007 00:44:42,490 --> 00:44:46,820 është me të vërtetë një grup i karaktere, por kur ju nuk jeni duke deklaruar një ndryshore, 1008 00:44:46,820 --> 00:44:49,760 si me këtë fjalen këtu, ju jeni thjesht duke marrë 1009 00:44:49,760 --> 00:44:54,280 një indeks të veçantë, një të veçantë element nga ky grup. 1010 00:44:54,280 --> 00:44:57,090 Pasi ne e dimë se, pjesa tjetër e kjo është e drejtpërdrejtë. 1011 00:44:57,090 --> 00:45:00,765 Nëse të ri unë jam duke e parë duke shkuar për të shtypur nga çfarë është mosha e numrit personi i. 1012 00:45:00,765 --> 00:45:03,890 Ku unë vetëm them numrin personi një të tillë, personi numër dy, personi numër tre. 1013 00:45:03,890 --> 00:45:06,306 >> Dhe unë jam vetëm duke bërë aritmetikë, në mënyrë që njerëz si normale, 1014 00:45:06,306 --> 00:45:09,030 ne numërimin nga një për këtë program, dhe jo nga zero. 1015 00:45:09,030 --> 00:45:13,620 Pastaj unë e quaj getint, por kam ruajtur përgjigja në moshat kllapa i. 1016 00:45:13,620 --> 00:45:16,610 Cila është mosha i'th në rrjet. 1017 00:45:16,610 --> 00:45:21,640 Pra, ndërsa herë të fundit ne kemi qenë të trajtuar këto kuti si karaktere për emrin Zamyla-së, 1018 00:45:21,640 --> 00:45:22,490 dhe të tjerët. 1019 00:45:22,490 --> 00:45:26,530 Tani, këto kuti përfaqësojnë 32 bit, ose katër bytes 1020 00:45:26,530 --> 00:45:29,510 në të cilën ne mund të ruajë një int, një int, një int. 1021 00:45:29,510 --> 00:45:31,890 Të gjitha të cilat, përsëri, janë të njëjta type dhënave. 1022 00:45:31,890 --> 00:45:33,890 >> Tani bëj diçka pa kuptim, si kalon koha, vetëm 1023 00:45:33,890 --> 00:45:35,510 për të justifikuar shkruar këtë program. 1024 00:45:35,510 --> 00:45:40,050 Dhe pastaj këtu poshtë, unë përsëri iterate mbi array thënë një vit nga tani, 1025 00:45:40,050 --> 00:45:43,090 Personi numër një vullnet jetë diçka vjeç. 1026 00:45:43,090 --> 00:45:45,010 Dhe të kuptoj se math-- Unë do të thotë, kjo 1027 00:45:45,010 --> 00:45:49,260 nuk është shumë e komplikuar arithmetic-- Unë vetëm të shtoni një për moshën e tyre. 1028 00:45:49,260 --> 00:45:51,240 Vetëm për të demonstruar, përsëri, kjo. 1029 00:45:51,240 --> 00:45:57,910 >> Ashtu si unë mund indeksin në një varg, s, kështu që mund të indeksit në një grup të moshave, 1030 00:45:57,910 --> 00:45:59,950 si se. 1031 00:45:59,950 --> 00:46:03,340 Pra, ku është ky do të jetë duke marrë na? 1032 00:46:03,340 --> 00:46:07,070 Pra, ne do të shohim, në fund të fundit, një disa gjëra në ditët që do të vijnë. 1033 00:46:07,070 --> 00:46:09,510 Një, e gjithë kjo kohë, kur shkrim programet tuaja, 1034 00:46:09,510 --> 00:46:11,239 si Mario, lakmitar, kredi. 1035 00:46:11,239 --> 00:46:13,780 Ju keni qenë të shtypni emrin e programi dhe goditur Enter. 1036 00:46:13,780 --> 00:46:15,610 Dhe pastaj duke marrë input të përdoruesit. 1037 00:46:15,610 --> 00:46:18,137 >> Me getString, getInt, getLongLong, ose si. 1038 00:46:18,137 --> 00:46:20,720 Por kjo rezulton se mbështet C diçka që quhet command line 1039 00:46:20,720 --> 00:46:25,740 argumente, të cilat do të na le në të vërtetë të marrë në fjalët që ju shkruani, 1040 00:46:25,740 --> 00:46:28,570 në ndriçon, e shpejtë, pas emrit të programit tuaj. 1041 00:46:28,570 --> 00:46:31,430 >> Pra, në ditët që do të vijnë, ju mund të shkruani diçka si Cezarit, 1042 00:46:31,430 --> 00:46:34,950 ose ./caesar numër 13, pas kësaj. 1043 00:46:34,950 --> 00:46:36,070 Ne do të shohim se si punon kjo. 1044 00:46:36,070 --> 00:46:37,550 Sepse me të vërtetë, në Problemi vendosur dy, ne jemi 1045 00:46:37,550 --> 00:46:39,383 do të prezantoj për një diçka të vogël 1046 00:46:39,383 --> 00:46:42,360 kujton Ralphie-së sfiduar më parë nga kartografi. 1047 00:46:42,360 --> 00:46:43,970 Arti i përpiqen informacion. 1048 00:46:43,970 --> 00:46:46,660 Kjo, në fakt, është shumë e kujton atë që bëri Ralphie. 1049 00:46:46,660 --> 00:46:51,380 >> Ky është një shembull i një encryption algoritmi quajtur rot13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Të cilat thjesht do të thotë rrotullohen shkronja në alfabetin 13 vende. 1051 00:46:54,910 --> 00:46:58,309 Dhe në qoftë se ju bëni këtë, ju do të shihni tani çfarë është, ndoshta, një frazë e njohur. 1052 00:46:58,309 --> 00:47:01,100 Por mënyra që ne jemi duke shkuar për të përdorur kjo, në fund të fundit, është më shumë në përgjithësi. 1053 00:47:01,100 --> 00:47:04,390 >> Në P vendosur dy, në edicionin e standarde, ju do të zbatojë disa shifra, 1054 00:47:04,390 --> 00:47:06,720 një i quajtur Cezari, e quajtur Vigenere. 1055 00:47:06,720 --> 00:47:10,090 Dy prej tyre janë rrotulluese ciphers, në se në një farë mënyre ju 1056 00:47:10,090 --> 00:47:11,826 kthehet një letër në një letër tjetër. 1057 00:47:11,826 --> 00:47:12,950 Dhe Caesar është super e thjeshtë. 1058 00:47:12,950 --> 00:47:16,220 Ju shtoni një, ju shtoni 13, apo ndonjë numër deri në 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenere bën që në një për letër bazë. 1060 00:47:19,570 --> 00:47:22,140 Pra Vigenere, si ju do të shihni në spekulim, është më i sigurt. 1061 00:47:22,140 --> 00:47:24,973 >> Por në fund të ditës ajo ju do të zbatimin dhe P vendosur dy, 1062 00:47:24,973 --> 00:47:29,050 është se çelësi që ju të përdorni të dy për encryption dhe decryption. 1063 00:47:29,050 --> 00:47:32,160 Duke iu referuar procesit të kthyer tekst i thjeshtë, disa mesazhi origjinal, 1064 00:47:32,160 --> 00:47:34,490 në tekst Cypher, e cila është diçka e koduar. 1065 00:47:34,490 --> 00:47:36,220 Dhe pastaj decrypting atë përsëri. 1066 00:47:36,220 --> 00:47:38,119 >> Në edicionin e hacker, Ndërkohë, ju do të jetë 1067 00:47:38,119 --> 00:47:40,660 ngarkuar me diçka të ngjashme në shpirt, ku ne do të ju jap 1068 00:47:40,660 --> 00:47:44,610 një fotografi, nga një Linux tipike, ose Mac, ose Unix kompjuter të quajtur Etsy 1069 00:47:44,610 --> 00:47:47,800 fjalëkalim, i cili përmban një tërësi bandë e përdoruesve dhe fjalëkalimet. 1070 00:47:47,800 --> 00:47:50,932 Dhe këto fjalëkalime të ketë të gjithë qenë i mbyllur, apo sheshuar, 1071 00:47:50,932 --> 00:47:53,140 mënyrë që të flasin, më duhet si ju do të shihni në spekulim. 1072 00:47:53,140 --> 00:47:57,090 >> Dhe edicioni hacker do të kundërshtojnë ju me marrjen e një input si kjo, 1073 00:47:57,090 --> 00:47:58,800 dhe plasaritje fjalëkalimin. 1074 00:47:58,800 --> 00:48:02,590 Kjo është, duke parafytyruar se çfarë fjalëkalimi njeriut e në të vërtetë ishte. 1075 00:48:02,590 --> 00:48:05,570 Sepse, me të vërtetë, fjalëkalimet janë përgjithësi nuk ruhen në të qartë, 1076 00:48:05,570 --> 00:48:08,260 dhe në përgjithësi passwords duhet të jetë e vështirë të mendoj. 1077 00:48:08,260 --> 00:48:09,610 Kjo nuk është shpesh rasti. 1078 00:48:09,610 --> 00:48:12,110 >> Dhe ajo që mendova që ne do të bëjmë është të përfunduar me disa minuta 1079 00:48:12,110 --> 00:48:15,160 shikim në një veçanërisht zgjedhje e dobët e fjalëkalimet 1080 00:48:15,160 --> 00:48:17,260 nga një film që ju mund të kujtojnë me dashuri. 1081 00:48:17,260 --> 00:48:18,915 Dhe në qoftë se jo, ju duhet të marr me qira. 1082 00:48:18,915 --> 00:48:20,070 >> [VIDEO Playback] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet, Ju dreq, çfarë po ndodh? 1084 00:48:22,320 --> 00:48:24,240 Çfarë jeni duke bërë për vajzën time? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Mua për të futur shkëlqyer kirurg i ri plastike, 1086 00:48:28,010 --> 00:48:30,010 Doktor Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 Më e madhe punë hundë njeri në tërë universi dhe Beverly Hills. 1088 00:48:35,020 --> 00:48:36,140 >> -Your Lartësia. 1089 00:48:36,140 --> 00:48:36,820 >> Punë -Nose? 1090 00:48:36,820 --> 00:48:37,700 Unë nuk e kuptoj. 1091 00:48:37,700 --> 00:48:39,070 Ajo tashmë kishte një punë hundë. 1092 00:48:39,070 --> 00:48:40,800 Ishte e saj e ëmbël 16 të pranishëm. 1093 00:48:40,800 --> 00:48:42,590 >> Jo, kjo nuk është ajo që ju mendoni. 1094 00:48:42,590 --> 00:48:44,490 Është shumë, shumë më keq. 1095 00:48:44,490 --> 00:48:48,160 Nëse ju nuk më japin kombinim me mburojë e ajrit, 1096 00:48:48,160 --> 00:48:52,748 Mjeku Schlotkin do jepni tuaj Vajza mbështetur hundën e saj të vjetër. 1097 00:48:52,748 --> 00:48:53,748 - [Gasps] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Ku e keni marrë këtë? 1100 00:48:59,652 --> 00:49:00,640 >> -Të gjitha të drejtë. 1101 00:49:00,640 --> 00:49:02,506 Unë do të them, unë do të tregoj. 1102 00:49:02,506 --> 00:49:03,498 >> Jo, Babi, nr. 1103 00:49:03,498 --> 00:49:04,490 Ju nuk duhet. 1104 00:49:04,490 --> 00:49:06,090 >> -Ti Je e drejtë i dashur im. 1105 00:49:06,090 --> 00:49:07,390 Unë do të humbasë hundën tuaj të re. 1106 00:49:07,390 --> 00:49:10,990 Por unë nuk do të them atyre të Kombinimi pa marrë parasysh çfarë. 1107 00:49:10,990 --> 00:49:12,450 >> -Shumë mirë. 1108 00:49:12,450 --> 00:49:14,830 Doktor Schlotkin, të bëjë më të keq e juaj. 1109 00:49:14,830 --> 00:49:15,744 >> Kënaqësi -My. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> -JO! 1112 00:49:20,800 --> 00:49:22,780 Prisni, prisni. 1113 00:49:22,780 --> 00:49:24,000 Unë do të tregoj. 1114 00:49:24,000 --> 00:49:25,830 Unë do të tregoj. 1115 00:49:25,830 --> 00:49:28,270 >> -Unë E dinte se do të punojë. 1116 00:49:28,270 --> 00:49:31,390 Në rregull, t'i jepte për mua. 1117 00:49:31,390 --> 00:49:36,220 >> , Partia kombinim është një. 1118 00:49:36,220 --> 00:49:36,740 >> -Një. 1119 00:49:36,740 --> 00:49:37,473 >> -Një. 1120 00:49:37,473 --> 00:49:37,972 -Dy. 1121 00:49:37,972 --> 00:49:38,471 -Dy. 1122 00:49:38,471 --> 00:49:39,800 -Dy. 1123 00:49:39,800 --> 00:49:40,300 -Tre. 1124 00:49:40,300 --> 00:49:40,800 -Tre. 1125 00:49:40,800 --> 00:49:41,800 -Tre. 1126 00:49:41,800 --> 00:49:42,300 -Four. 1127 00:49:42,300 --> 00:49:42,800 -Four. 1128 00:49:42,800 --> 00:49:44,707 -Four. 1129 00:49:44,707 --> 00:49:45,521 -Five. 1130 00:49:45,521 --> 00:49:46,430 -Five. 1131 00:49:46,430 --> 00:49:47,930 -Five. 1132 00:49:47,930 --> 00:49:53,480 -Pra Kombinim është një, dy, tre, katër, pesë. 1133 00:49:53,480 --> 00:49:56,140 Kjo është kombinimi budalla Kam dëgjuar ndonjëherë në jetën time. 1134 00:49:56,140 --> 00:49:58,640 Kjo është lloj i gjë AN idiot i do të ketë në bagazhin e tij. 1135 00:49:58,640 --> 00:50:00,000 >> -Faleminderit, Lartmadhëria juaj. 1136 00:50:00,000 --> 00:50:01,340 >> [Klikime Remote] 1137 00:50:01,340 --> 00:50:02,450 >> -Çfarë Bëtë? 1138 00:50:02,450 --> 00:50:03,800 >> -Unë Fikur murin. 1139 00:50:03,800 --> 00:50:05,010 >> Jo, ju nuk e keni, ju fikur të gjithë filmin. 1140 00:50:05,010 --> 00:50:06,220 >> Duhet të kem -Unë shtypur butonin e gabuar. 1141 00:50:06,220 --> 00:50:07,064 >> -Well, E vënë atë përsëri në! 1142 00:50:07,064 --> 00:50:07,910 Vendos filmin prapa! 1143 00:50:07,910 --> 00:50:08,300 >> Po, zotëri! 1144 00:50:08,300 --> 00:50:08,799 Po, zotëri. 1145 00:50:08,799 --> 00:50:09,660 -Le Të shkojmë, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Ejani, Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Sigurisht ju e dini se unë do të duhet të faturojë ju për këtë. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 -Well? 1150 00:50:17,220 --> 00:50:17,802 A atë punë? 1151 00:50:17,802 --> 00:50:18,510 Ku është mbreti? 1152 00:50:18,510 --> 00:50:20,218 >> -Ajo Punuar, zotëri, ne kemi kombinim. 1153 00:50:20,218 --> 00:50:20,740 -Great. 1154 00:50:20,740 --> 00:50:24,810 Tani ne mund të marrë çdo frymë e fundit e ajrit të freskët nga planetit Druidia. 1155 00:50:24,810 --> 00:50:25,890 Çfarë është kombinimi? 1156 00:50:25,890 --> 00:50:28,155 >> -Një, Dy, tre, katër, pesë. 1157 00:50:28,155 --> 00:50:29,890 >> -Një, Dy, tre, katër, pesë? 1158 00:50:29,890 --> 00:50:30,390 -Po. 1159 00:50:30,390 --> 00:50:31,110 -Kjo E mahnitshme. 1160 00:50:31,110 --> 00:50:34,550 Unë kam marrë të njëjtën gjë kombinim në bagazhet e mia. 1161 00:50:34,550 --> 00:50:37,160 Përgatitja Spaceball 1 për Largimi i menjëhershëm. 1162 00:50:37,160 --> 00:50:38,160 >> Po, zotëri. 1163 00:50:38,160 --> 00:50:40,745 >> -Dhe Ndryshojë kombinim në bagazhet e mia. 1164 00:50:40,745 --> 00:50:41,578 [DERE MBYLLJA Kthehu] 1165 00:50:41,578 --> 00:50:42,064 [Trokas E DYERT goditur përkrenare] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [VIDEO END rishikim] 1168 00:50:43,383 --> 00:50:46,700 DAVID J. Malan: Kjo është ajo për CS50, ne do të shihemi javën e ardhshme. 1169 00:50:46,700 --> 00:50:49,883 Transmetuesi: Dhe tani, Deep Mendimet, nga Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> DAVEN FARNHAM: kodim në C është aq shumë më e vështirë se e para. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch ishte një gënjeshtër. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [Qeshura SOUNDBITE] 1175 00:51:01,430 --> 00:51:02,486