1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [Tónlist spila] 3 00:00:11,210 --> 00:00:12,100 >> ROB BODEN: Allt í lagi. 4 00:00:12,100 --> 00:00:15,620 Svo, fyrsta sem fyrst, af vídeó úr kunnuglega andlit. 5 00:00:15,620 --> 00:00:22,080 6 00:00:22,080 --> 00:00:22,560 >> [Video spilun] 7 00:00:22,560 --> 00:00:23,370 >> -Allt í lagi. 8 00:00:23,370 --> 00:00:27,150 Þetta er CS50, og þetta er byrjunin á viku þrjú. 9 00:00:27,150 --> 00:00:29,980 Fyrirgefðu að ég gat ekki verið þarna með þér í dag, en leyfa mér að kynna 10 00:00:29,980 --> 00:00:32,880 Eigin CS50 er Rob Boden. 11 00:00:32,880 --> 00:00:33,872 >> [END vídeó spilun] 12 00:00:33,872 --> 00:00:39,340 >> [Lófaklapp og Skál] 13 00:00:39,340 --> 00:00:41,277 >> ROB BODEN: The Viðtöl í þessi vídeó er frábær. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Allt í lagi. 16 00:00:47,770 --> 00:00:50,960 Svo fyrst það er önnur hádegismat. 17 00:00:50,960 --> 00:00:52,330 Það er á morgun á 01:15. 18 00:00:52,330 --> 00:00:54,480 Það er engin hádegismatur föstudaginn. 19 00:00:54,480 --> 00:00:55,810 Það er með Quora. 20 00:00:55,810 --> 00:01:00,190 Tommy er ekki hér enn, en eitt af fólk það er fyrrum yfirmaður CF, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Svo er hann skemmtilegur gaur. 23 00:01:02,730 --> 00:01:04,819 Þú ættir að koma. 24 00:01:04,819 --> 00:01:05,900 >> Allt í lagi. 25 00:01:05,900 --> 00:01:11,360 Svo í síðustu viku, við byrjuðum að brjóta sundur um hvað streng raunverulega er. 26 00:01:11,360 --> 00:01:14,830 Við höfum vitað frá upphafi að það er röð af stöfum. 27 00:01:14,830 --> 00:01:18,130 En í síðustu viku, delved við í raun að það er í raun röð 28 00:01:18,130 --> 00:01:22,110 stafir, vel, við höfum nú fylki af stöfum. 29 00:01:22,110 --> 00:01:26,450 Og við vitum að a band, er það fylki stafi, aftast, 30 00:01:26,450 --> 00:01:30,920 við höfum þetta sérstaka null bæti, þetta sviga 0, sem gefur til kynna lok 31 00:01:30,920 --> 00:01:32,230 band. 32 00:01:32,230 --> 00:01:36,970 >> Og svo er band fylki af stafir, en við getum haft meira en 33 00:01:36,970 --> 00:01:39,530 bara fylki af stöfum, við getum haft fjölda af einhverju 34 00:01:39,530 --> 00:01:40,890 tegund af hlutur sem við viljum. 35 00:01:40,890 --> 00:01:51,570 Svo, ef þú manst frá síðustu viku, Ages forrit sem Davíð kynnt 36 00:01:51,570 --> 00:01:53,560 mjög fljótt. 37 00:01:53,560 --> 00:01:57,010 Svo fyrsta sem við ætlum að gera er að spyrja notandann um heiltala, sem 38 00:01:57,010 --> 00:01:58,800 fjöldi fólks í herberginu. 39 00:01:58,800 --> 00:02:01,260 Þegar við höfum sem heiltölu, við erum að lýsa fylki. 40 00:02:01,260 --> 00:02:02,890 Taka þessa krappi setningafræði. 41 00:02:02,890 --> 00:02:04,540 Þú ert að fara að venjast því. 42 00:02:04,540 --> 00:02:09,430 >> Þannig að við erum að lýsa fjölda heiltalna kallað aldur, og það eru n 43 00:02:09,430 --> 00:02:12,080 heiltölur í þessu fylki. 44 00:02:12,080 --> 00:02:16,480 Þannig að þetta mynstur hérna, þetta 4 INT Ég er jafnt og 0, I er minni en n, ég auk 45 00:02:16,480 --> 00:02:20,580 plús, það er líka að fara að vera hægt að að þú færð mjög venjast. 46 00:02:20,580 --> 00:02:24,000 Því það er ansi mikið hvernig þú ert alltaf að fara að iterate yfir fylki. 47 00:02:24,000 --> 00:02:26,330 Svo muna að n er lengd array okkar. 48 00:02:26,330 --> 00:02:32,120 Og svo hér erum við ítrekað að biðja fyrir aldri sem ég í herberginu. 49 00:02:32,120 --> 00:02:36,640 >> Eftir þetta förum við niður, og fyrir hvað handahófskennt ástæða, við þá 50 00:02:36,640 --> 00:02:40,220 prenta út hversu gamall þeir eru að fara að vera á ári héðan í frá. 51 00:02:40,220 --> 00:02:49,980 Og keyra þessi forrit, skulum gera aldri, punktur rista aldri. 52 00:02:49,980 --> 00:02:53,010 Svo fjöldi fólks í herberginu, skulum segja að það eru þrír. 53 00:02:53,010 --> 00:02:59,880 Og segja, fyrst maður er 13, Næsta er 26, og síðasta er 30.. 54 00:02:59,880 --> 00:03:05,080 Svo þá er það mun kunnugt er yfir þeim þremur fólk, prenta út 14, 27, og 31. 55 00:03:05,080 --> 00:03:16,060 >> Svo muna að þegar við lýsa Fylki af stærðinni N, Vísitölurnar í því 56 00:03:16,060 --> 00:03:19,950 array, fylki hefur gildi og vísitölur 0, 1, 2, alla leið 57 00:03:19,950 --> 00:03:21,680 allt að n mínus 1. 58 00:03:21,680 --> 00:03:26,255 Svo þegar ég sagði það voru þrjár manneskjur í herberginu, og við setjum hér 59 00:03:26,255 --> 00:03:29,850 fyrsta endurtekning í gegnum þetta lykkja, ég er að fara að vera 0. 60 00:03:29,850 --> 00:03:31,650 Svo í vísitölunni 0. 61 00:03:31,650 --> 00:03:34,540 Við erum að framselja fyrsta aldri sem notandi slær inn. 62 00:03:34,540 --> 00:03:38,870 Þá í the næstur einn, við erum að slá inn Seinni n notandinn slær, og í 63 00:03:38,870 --> 00:03:40,580 við hliðina á tveimur, síðustu n. 64 00:03:40,580 --> 00:03:44,200 >> Svo eftir því að fylki af stærð þrjú hefur ekki neitt 65 00:03:44,200 --> 00:03:46,040 í vísitölunni þremur. 66 00:03:46,040 --> 00:03:49,036 Þetta er ekki gild. 67 00:03:49,036 --> 00:03:50,250 Allt í lagi. 68 00:03:50,250 --> 00:03:55,136 Svo, að fara aftur hingað. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Svo nú er að við höfum brugðist við fylki, við höfum einhverja þekkingu. 71 00:04:01,590 --> 00:04:03,780 Nú ætlum við að fara á stjórn lína rifrildi, sem eru að fara að vera 72 00:04:03,780 --> 00:04:05,890 laglegur viðeigandi að þetta vandamál setja. 73 00:04:05,890 --> 00:04:09,670 >> Svo allt þar til nú, þegar þú hefur lýst meginhlutverki þitt höfum við 74 00:04:09,670 --> 00:04:11,230 sagði Int helstu ógilt. 75 00:04:11,230 --> 00:04:14,070 Svo ógilt bara þýðir að við erum ekki liggur einhver 76 00:04:14,070 --> 00:04:16,440 rök til þessa aðgerð. 77 00:04:16,440 --> 00:04:19,190 Nú erum við að fara að sjá að helstu getur tekið nokkrar rök. 78 00:04:19,190 --> 00:04:22,470 Hér við köllum þá INT argc og band argv sviga. 79 00:04:22,470 --> 00:04:26,930 The sviga, enn og aftur, sem bendir til að við erum að fást við fylki. 80 00:04:26,930 --> 00:04:31,850 Svo hér, band argv sviga, við erum að takast á við fjölda strengi. 81 00:04:31,850 --> 00:04:35,360 Svo argc, það er að fara að kynna hversu margir rök við höfum 82 00:04:35,360 --> 00:04:37,580 samþykkt til þessarar áætlunar. 83 00:04:37,580 --> 00:04:46,050 Og til að sjá hvað það þýðir, skulum loka þessu. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Svo allt þar til nú höfum við keyrt á hverjum program eins punktur skástrik aldri. 86 00:04:50,790 --> 00:04:55,250 Við getum líka, í stjórn lína, framhjá standast rök, þannig að hugtakið, stjórn 87 00:04:55,250 --> 00:04:56,550 lína rifrildi. 88 00:04:56,550 --> 00:04:59,760 Svo fyrsta rifrildi, halló heimur. 89 00:04:59,760 --> 00:05:03,350 Svo hér, argc væri þrír. 90 00:05:03,350 --> 00:05:07,720 Það er telja á rökum í stjórn lína. 91 00:05:07,720 --> 00:05:12,840 Argc er alltaf að minnsta kosti 1, þar sem punktur rista aldri, sig, telst eitt af 92 00:05:12,840 --> 00:05:14,490 the stjórn lína rifrildi. 93 00:05:14,490 --> 00:05:17,010 >> Þá er halló fyrst. 94 00:05:17,010 --> 00:05:20,460 Ef punktur rista aldur er 0, þá Halló er fyrst og heimurinn er 95 00:05:20,460 --> 00:05:22,830 Seinni stjórn lína rifrildi. 96 00:05:22,830 --> 00:05:29,490 Svo band argv, við erum að fara að sjá, inniheldur strengi, punktur skástrik 97 00:05:29,490 --> 00:05:33,830 aldur, halló, og heimurinn. 98 00:05:33,830 --> 00:05:38,945 Og, eftir beiðni Davíðs, við erum að fara til að spila myndskeið kynna það. 99 00:05:38,945 --> 00:05:42,486 100 00:05:42,486 --> 00:05:43,890 >> [Video spilun] 101 00:05:43,890 --> 00:05:46,240 >> -Hingað til í áætlunum sem við höfum skrifað, höfum við lýst því yfir 102 00:05:46,240 --> 00:05:48,500 Helstu og int helstu ógilt. 103 00:05:48,500 --> 00:05:51,170 Og allan þennan tíma, sem ógilt hefur einfaldlega verið að tilgreina að 104 00:05:51,170 --> 00:05:54,430 program hjartarskinn ekki taka allir stjórn lína rifrildi. 105 00:05:54,430 --> 00:05:57,750 Með öðrum orðum, þegar notandi rekur program, hann eða hún getur veitt stjórn 106 00:05:57,750 --> 00:06:01,710 lína rifrildi með því að skrifa til viðbótar orð eða setningar eftir að forritið er 107 00:06:01,710 --> 00:06:03,000 nafn þegar beðið er um. 108 00:06:03,000 --> 00:06:06,550 >> Jæja, ef þú vilt þú forrit til að taka stjórn lína rifrildi, einn eða 109 00:06:06,550 --> 00:06:10,540 fleiri slík orð, þurfum við að skipta ógilt með nokkrum rökum. 110 00:06:10,540 --> 00:06:12,200 Svo skulum gera það. 111 00:06:12,200 --> 00:06:15,750 Fela CS50.h. 112 00:06:15,750 --> 00:06:19,360 Hafa Standard io.h. 113 00:06:19,360 --> 00:06:20,760 Int helstu. 114 00:06:20,760 --> 00:06:26,330 Og nú, í stað þess að ógilt, ég ætla að tilgreina við int heitir argc, og 115 00:06:26,330 --> 00:06:28,780 array strengi kallast argv. 116 00:06:28,780 --> 00:06:31,820 Nú, argc og argv eru einfaldlega samninga. 117 00:06:31,820 --> 00:06:34,000 >> Við gætum hafa kallað þessi rök flest allt sem við viljum. 118 00:06:34,000 --> 00:06:37,630 En hvað er mikilvægt er að argc er int vegna þess, samkvæmt skilgreiningu, er það 119 00:06:37,630 --> 00:06:41,360 fara að innihalda rök telja, að fjöldi orða í heild að 120 00:06:41,360 --> 00:06:43,380 notandi hefur slegið hvetja hans eða hennar. 121 00:06:43,380 --> 00:06:47,910 argv, á meðan, rifrildi vektor, er að fara til raunverulega vera fylki geyma 122 00:06:47,910 --> 00:06:52,020 öll orðin sem notandinn hefur slegið hvetja hans eða hennar. 123 00:06:52,020 --> 00:06:54,500 >> Við skulum halda áfram að gera eitthvað núna með einum eða fleiri af þessum 124 00:06:54,500 --> 00:06:55,660 stjórn lína rifrildi. 125 00:06:55,660 --> 00:07:00,070 Einkum skulum fara á undan og prenta hvað orð notandinn slær 126 00:07:00,070 --> 00:07:03,960 eftir nafni forritsins þegar beðið er um. 127 00:07:03,960 --> 00:07:04,730 Open krappi. 128 00:07:04,730 --> 00:07:06,240 Loka krappi. 129 00:07:06,240 --> 00:07:10,510 Printf prósent s sviga og komma. 130 00:07:10,510 --> 00:07:14,550 Og nú þarf ég að segja printf hvaða gildi að stinga inn í þessi tákn. 131 00:07:14,550 --> 00:07:18,600 Ég vil fyrsta orðið sem notandinn hefur slegið eftir nafni forritsins, 132 00:07:18,600 --> 00:07:23,130 og svo ég ætla að tilgreina argv krappi 1, loka 133 00:07:23,130 --> 00:07:24,830 sviga, semíkommu. 134 00:07:24,830 --> 00:07:27,290 >> Nú, hvers vegna krappi 1 og ekki krappi 0? 135 00:07:27,290 --> 00:07:30,990 Jæja, það kemur í ljós, sjálfkrafa vistuð í argv 0 er að fara að vera 136 00:07:30,990 --> 00:07:32,620 raunverulegt nafn áætlunarinnar. 137 00:07:32,620 --> 00:07:36,180 Þannig að fyrsta orðið sem notandinn slær eftir nafn forritsins er með 138 00:07:36,180 --> 00:07:38,990 venju, að fara að vera geymd í argv 1. 139 00:07:38,990 --> 00:07:42,380 Skulum nú saman og keyra þetta forrit. 140 00:07:42,380 --> 00:07:47,780 >> Gerðu argv 0, punktur skástrik argv 0. 141 00:07:47,780 --> 00:07:50,520 Og nú orð eins halló. 142 00:07:50,520 --> 00:07:51,670 Enter. 143 00:07:51,670 --> 00:07:53,520 Og þar höfum við það, halló. 144 00:07:53,520 --> 00:07:55,750 >> [END vídeó spilun] 145 00:07:55,750 --> 00:07:57,000 >> ROB BODEN: Allt í lagi. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Loka það. 148 00:08:01,230 --> 00:08:16,730 Svo taka a líta á þessi forrit sem við kynntum bara okkur vel, bara 149 00:08:16,730 --> 00:08:24,710 til að sýna, ef við prentað argv 0, gera, nú hvað er það, argv 0, punktur rista argv 0. 150 00:08:24,710 --> 00:08:30,440 Svo, eins og búist, það er prentun út nafn af the program, þar argv 0 er 151 00:08:30,440 --> 00:08:32,970 alltaf að fara til vera the nafn af the program. 152 00:08:32,970 --> 00:08:35,640 En við skulum gera eitthvað aðeins meira áhugavert. 153 00:08:35,640 --> 00:08:42,080 >> Svo í Heimadæmi, youll 'vera kynna þessa virkni, atoi. 154 00:08:42,080 --> 00:08:44,440 Og hvað þurfum við notum atoi fyrir? 155 00:08:44,440 --> 00:08:48,550 Það er að fara að breyta band til heiltala. 156 00:08:48,550 --> 00:08:53,280 Þannig að ef ég geng framhjá band, eitt tvö þrjú, til atoi, sem munum breyta því 157 00:08:53,280 --> 00:08:56,910 til tölunnar, einn tveir þrír. 158 00:08:56,910 --> 00:09:01,480 Þannig að við erum að fara að breyta fyrsta stjórn lína rifrildi heiltala, 159 00:09:01,480 --> 00:09:05,690 og þá bara prenta það heiltölu. 160 00:09:05,690 --> 00:09:09,680 >> Svo í grundvallaratriðum, við erum konar reimplementing GetInt, bara 161 00:09:09,680 --> 00:09:12,350 heiltala er slegið á stjórn lína í stað í áætluninni 162 00:09:12,350 --> 00:09:14,560 gagnvirkt. 163 00:09:14,560 --> 00:09:23,170 Svo, gera argv 0, við skulum gera það hér, og loka því. 164 00:09:23,170 --> 00:09:27,670 Svo gangi argv 0, og við skulum slá inn heiltala, einn tveir þrír fjórir einn tveir. 165 00:09:27,670 --> 00:09:30,840 Svo það verður að prenta heiltala, einn Tveir Þrír Four einn tveir. 166 00:09:30,840 --> 00:09:35,500 There ert sumir næmi til atoi að það mun hætta að umhyggja um neitt 167 00:09:35,500 --> 00:09:39,040 utan gilt tölugildi staf, en það skiptir ekki máli. 168 00:09:39,040 --> 00:09:42,870 >> Svo hvað finnst þér gerist ef ég að gera þetta? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Skiptingu kenna. 171 00:09:47,050 --> 00:09:50,410 Svo hvers vegna er það? 172 00:09:50,410 --> 00:09:56,060 Ef þú horfir aftur á dagskrá okkar, við erum umbreyta argv 1, fyrsta rifrildi 173 00:09:56,060 --> 00:09:59,610 Eftir að forritið heiti, heiltala. 174 00:09:59,610 --> 00:10:03,350 En það er engin rök liðin Eftir að forritið nafn. 175 00:10:03,350 --> 00:10:08,060 Svo hér sjáum við að þetta er þrjótur program, þar sem, ef við reynum að keyra hana 176 00:10:08,060 --> 00:10:10,530 án rök, það verður bara hrun. 177 00:10:10,530 --> 00:10:16,950 >> Svo annar sameiginlegur mynstur sem þú munt sjá er eitthvað eins og, ef argc er minna 178 00:10:16,950 --> 00:10:21,100 en tveir, sem gefur til kynna að það var ekki að minnsta kosti program nafn og 179 00:10:21,100 --> 00:10:29,100 fyrsta rifrildi, þá munum við gera eitthvað eins printf, ekki nóg 180 00:10:29,100 --> 00:10:31,190 stjórn lína rifrildi. 181 00:10:31,190 --> 00:10:33,170 Það er líklega ekki góð til að prenta, það er líklega eitthvað, eins og 182 00:10:33,170 --> 00:10:35,440 þú ættir að slá inn heiltölu í stjórn lína. 183 00:10:35,440 --> 00:10:37,450 Ég verð bara að enda það þar. 184 00:10:37,450 --> 00:10:39,600 Og síðan aftur 1. 185 00:10:39,600 --> 00:10:44,740 Svo muna að í lok okkar program, ef við aftur 0, þessi tegund af 186 00:10:44,740 --> 00:10:47,060 sýnir árangur. 187 00:10:47,060 --> 00:10:50,940 Og helstu einnig sjálfkrafa skilar 0 ef þú hefur ekki. 188 00:10:50,940 --> 00:10:55,800 >> Svo hér erum við retuning 1 til kynna að það er ekki árangur. 189 00:10:55,800 --> 00:11:01,000 Og þú getur aftur hvað sem þú vilt, bara, 0 sýnir árangur, og 190 00:11:01,000 --> 00:11:03,390 eitthvað annað til kynna bilun. 191 00:11:03,390 --> 00:11:04,855 Svo skulum keyra þessa útgáfu af hlutum. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Svo nú, ef við ekki inn a stjórn lína rök, verður það rétt að segja 194 00:11:16,600 --> 00:11:18,290 okkur, ekki nógu stjórn lína. 195 00:11:18,290 --> 00:11:20,610 Náði ekki að klára setninguna. 196 00:11:20,610 --> 00:11:24,950 Annars, ef við fara í raun það eina, það geta ljúka verkefninu. 197 00:11:24,950 --> 00:11:27,920 Svo er þetta hvernig þú myndir nota argc í skyni að sannreyna fjölda 198 00:11:27,920 --> 00:11:30,630 stjórn lína rifrildi sem eru í raun liðin. 199 00:11:30,630 --> 00:11:39,360 >> Svo skulum gera þetta forrit aðeins meira flókið, og líta á sekúndu 200 00:11:39,360 --> 00:11:42,180 endurtekning á hlutum. 201 00:11:42,180 --> 00:11:46,310 Svo nú, við erum ekki bara prentun á Fyrsta stjórn lína rifrildi. 202 00:11:46,310 --> 00:11:51,210 Hér erum við iterating frá int i jafningjar 0, I er minni en argc, ég auk 203 00:11:51,210 --> 00:11:55,280 plús, og prentun argv, vísitölu i. 204 00:11:55,280 --> 00:11:59,300 Þannig að þetta mynstur, aftur, þetta er sú sama mynstur eins og áður, nema í stað 205 00:11:59,300 --> 00:12:02,600 um að hringja í breytu n, við erum að nota argc. 206 00:12:02,600 --> 00:12:09,520 >> Þannig að þetta er iterating yfir hverri vísitölu í fylkinu, og prentun hvor 207 00:12:09,520 --> 00:12:11,910 þáttur í þeirri fylking. 208 00:12:11,910 --> 00:12:20,300 Og svo, þegar við hlaupa þetta forrit, vel, Ég vissi ekki að slá inn hvaða stjórn lína 209 00:12:20,300 --> 00:12:22,540 rök, svo það bara prentar the program nafn. 210 00:12:22,540 --> 00:12:26,053 Ef ég inn helling af hlutum, verður það prenta einn, hvor á sinni línu. 211 00:12:26,053 --> 00:12:31,213 212 00:12:31,213 --> 00:12:32,210 >> OK. 213 00:12:32,210 --> 00:12:34,770 Þannig að við skulum taka þetta einu skrefi lengra. 214 00:12:34,770 --> 00:12:38,890 Og í stað þess að prenta hvert rifrildi á eigin línu, við skulum prenta hvert 215 00:12:38,890 --> 00:12:42,590 eðli hvers rifrildi í sér línu. 216 00:12:42,590 --> 00:12:46,700 Svo muna að argv er fylki af strengjum. 217 00:12:46,700 --> 00:12:50,960 Svo er það band, en fylki af stöfum? 218 00:12:50,960 --> 00:12:57,140 Svo það þýðir að argv er í raun array af fylki af stöfum. 219 00:12:57,140 --> 00:13:04,920 Svo að taka kostur af því, skulum hunsa þetta fyrir nú. 220 00:13:04,920 --> 00:13:08,190 Skulum íhuga bara strenginn argv 0. 221 00:13:08,190 --> 00:13:14,170 >> Þannig að ef við viljum koma hvert eðli argv 0 á eigin línu, þá vil ég 222 00:13:14,170 --> 00:13:19,500 að gera mynstur sem við erum að nota til, ég er minni en lengd array, 223 00:13:19,500 --> 00:13:23,990 sem hér er strlen af, það er ekki það sem ég vil gera, band 224 00:13:23,990 --> 00:13:26,450 s jafngildir argv 0. 225 00:13:26,450 --> 00:13:30,390 Svo er i minni en lengd af okkar array, sem í þessu tilfelli er fylki 226 00:13:30,390 --> 00:13:34,410 af stöfum, ég plús plús. 227 00:13:34,410 --> 00:13:41,040 Og svo, eins og við sáum í síðustu viku, það er tilvalið ef við færa þetta strlen utan 228 00:13:41,040 --> 00:13:45,210 á ástandi, þar sem n verður að bæta að strlen af ​​s hvert sinn sem við förum 229 00:13:45,210 --> 00:13:47,720 gegnum lykkjuna, og það er ekki að fara að breytast. 230 00:13:47,720 --> 00:13:50,230 Þannig að við munum setja það jafnt n hérna. 231 00:13:50,230 --> 00:13:54,260 232 00:13:54,260 --> 00:13:55,170 >> OK. 233 00:13:55,170 --> 00:14:01,320 Svo nú erum við iterating yfir hverri vísitölu í array. 234 00:14:01,320 --> 00:14:05,630 Og svo, ef við viljum prenta hvert eðli í því fylki, prósent c er 235 00:14:05,630 --> 00:14:06,880 fáni við viljum að nota fyrir stafi. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 Og nú brík ég er að fara að vera band, vísitölu eðli i, þannig að ef 238 00:14:19,770 --> 00:14:20,970 band voru halló. 239 00:14:20,970 --> 00:14:27,530 þá er 0 er að fara að vera H, s krappi 1 mun vera E, og svo framvegis. 240 00:14:27,530 --> 00:14:30,800 >> Svo nú viljum að sameina þessir tveir hlutir. 241 00:14:30,800 --> 00:14:35,440 Við viljum að prenta hvern staf hvers stjórn lína rifrildi. 242 00:14:35,440 --> 00:14:38,950 Þannig að við ætlum að hafa hreiður fyrir lykkja. 243 00:14:38,950 --> 00:14:47,480 Og á hefðbundinn hátt, í fyrsta gegn er i, næsta er að fara að vera J, n 244 00:14:47,480 --> 00:14:54,450 verður strlen af ​​argv Ég, ég er minna en n, ég auk plús. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 Og nú í stað þess að prentun argv i, svo argv krappi ég er að fara að kemba - 247 00:15:06,870 --> 00:15:14,280 það er að fara að vera i-th stjórn lína rök, argv i, j er að fara að 248 00:15:14,280 --> 00:15:16,925 vera jth eðli i-th rök. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Ég losna við þetta upp hér nú þar sem við setja það inn í þessi lykkja. 251 00:15:24,810 --> 00:15:33,900 Svo jafngildir String s jafningjar argv i, og þá s krappi j. 252 00:15:33,900 --> 00:15:36,980 >> Jæja, þurfum við ekki að lýsa Þessi breyta s. 253 00:15:36,980 --> 00:15:44,530 Í staðinn munum við bara sameina þessar tveimur í það sem við þurftum, argv i, j. 254 00:15:44,530 --> 00:15:45,780 >> Ræðumaður 1: [inaudible]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB BODEN: gott símtal. 257 00:15:49,680 --> 00:15:52,936 Þannig að þetta er brotinn. 258 00:15:52,936 --> 00:15:55,510 Ef ég hljóp í raun það, við myndum hafa áttað sig á þessu. 259 00:15:55,510 --> 00:16:01,210 Svo gegn mér þykir vænt um í þessu tiltekna fyrir 260 00:16:01,210 --> 00:16:05,410 lykkja er J, Iterator. 261 00:16:05,410 --> 00:16:08,560 Svo þú myndi hafa rekið inn í mál, sennilega óendanlegur lykkja, ef við 262 00:16:08,560 --> 00:16:09,540 hafði ekki að laga það. 263 00:16:09,540 --> 00:16:12,220 Þessi 'hvers vegna við erum líka að tala um kembiforrit dag. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Svo skulum keyra þetta forrit. 266 00:16:15,240 --> 00:16:21,200 Og við skulum raunverulega bæta sérstakt printf hérna sem vilja bara prenta 267 00:16:21,200 --> 00:16:27,480 aðra línu, þar sem þetta þýðir að þegar við hlaupa the program, það verður að vera autt 268 00:16:27,480 --> 00:16:31,830 lína á milli hverrar eðli Hver stjórn lína rifrildi. 269 00:16:31,830 --> 00:16:33,448 Jæja, munum við sjá hvað það þýðir. 270 00:16:33,448 --> 00:16:37,310 271 00:16:37,310 --> 00:16:37,790 OOP. 272 00:16:37,790 --> 00:16:39,870 Got sumir galla. 273 00:16:39,870 --> 00:16:42,860 Villa óbeint lýsa virka bókasafn strlen. 274 00:16:42,860 --> 00:16:51,630 >> Svo fara aftur inn í kerfi okkar, ég gleymdi að kjötkássa fela string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Svo string.h er að fara að vera hausaskrár sem lýsir 277 00:16:57,730 --> 00:16:58,980 fallið strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK, safnar það. 280 00:17:06,060 --> 00:17:09,109 Nú, við skulum hlaupa það. 281 00:17:09,109 --> 00:17:10,930 Svo bara það. 282 00:17:10,930 --> 00:17:17,790 Það er að fara að prenta út okkar Forritið, halló heimur. 283 00:17:17,790 --> 00:17:23,510 Það er að fara að prenta hvert hlutur, hvert eðli, á eigin línu. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Þannig að við skulum taka í raun þetta einu skrefi lengra. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Og í stað þess að nota string.h, við skulum hugsa um hvernig við myndum framkvæma okkar eigin 288 00:17:39,700 --> 00:17:41,420 strlen virka. 289 00:17:41,420 --> 00:17:45,600 Þannig að ég ætla strax að gefa fall undirskrift. 290 00:17:45,600 --> 00:17:52,900 Svo skulum kalla á my_strlen, og það er að fara að taka a band sem rök, 291 00:17:52,900 --> 00:17:57,220 og við gerum ráð fyrir að fara aftur á lengd strengsins. 292 00:17:57,220 --> 00:18:03,430 Svo, hvar er þessi gaur? 293 00:18:03,430 --> 00:18:04,990 Já. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Svo muna frá fyrri renna að var einnig frá síðustu viku, að 296 00:18:12,900 --> 00:18:18,890 array af stöfum, heilbrigður, a band, þannig að við skulum segja að þetta er band s okkar. 297 00:18:18,890 --> 00:18:29,870 Þannig að ef s er strengurinn, halló, þá, H-E-L-L-O, í minni, sem er að fara að 298 00:18:29,870 --> 00:18:35,610 vera, og þá er þetta sviga 0 staf. 299 00:18:35,610 --> 00:18:39,170 >> Svo hvernig fáum við lengd s? 300 00:18:39,170 --> 00:18:43,190 Jæja, the bragð er að leita að þessu Bakslag 0 staf þennan null 301 00:18:43,190 --> 00:18:44,380 Ljúka. 302 00:18:44,380 --> 00:18:50,270 Svo reiknirit er að fara að vera eitthvað eins fáir 303 00:18:50,270 --> 00:18:51,510 nóg stafir að - 304 00:18:51,510 --> 00:18:56,180 skulum hafa þetta hönd fulltrúar sumir gegn, skulum kalla þetta int lengd. 305 00:18:56,180 --> 00:19:00,060 Svo, frá hérna, erum við fara að iterate yfir band okkar. 306 00:19:00,060 --> 00:19:04,100 >> Þannig að fyrsta staf, það er H, og það er ekki aftur rista 0, svo 307 00:19:04,100 --> 00:19:05,170 lengd er 1. 308 00:19:05,170 --> 00:19:08,050 Iterate að næsta staf, E, og það er ekki sviga 0. 309 00:19:08,050 --> 00:19:09,630 Lengd er 2. 310 00:19:09,630 --> 00:19:10,960 L, 3. 311 00:19:10,960 --> 00:19:11,850 L, 4. 312 00:19:11,850 --> 00:19:13,050 O, 5. 313 00:19:13,050 --> 00:19:16,690 Og að lokum, ná við sviga 0, og svo það þýðir, vel, 314 00:19:16,690 --> 00:19:17,780 Þessi strengur er yfir. 315 00:19:17,780 --> 00:19:20,130 Svo skulum skila 5. 316 00:19:20,130 --> 00:19:33,630 >> Svo í raun útfæra það, fyrst, n lengd minn jafngildir 0, hægri hönd mín. 317 00:19:33,630 --> 00:19:36,088 Og við erum að fara að iterate - 318 00:19:36,088 --> 00:19:38,000 >> Ræðumaður 1: [inaudible] 319 00:19:38,000 --> 00:19:38,640 >> ROB BODEN: Oh, skjóta. 320 00:19:38,640 --> 00:19:39,870 Gott símtal. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Svo n lengd jafngildir 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Svo nú, á meðan s lengd ekki jafnt og þá, sviga 0. 325 00:19:58,310 --> 00:20:04,660 Svo man, þetta sviga 0, er það Raunveruleg eðli, og það gefur til kynna 326 00:20:04,660 --> 00:20:05,820 enda strengsins. 327 00:20:05,820 --> 00:20:09,850 Rétt eins og, einnig, sviga n er í raun eðli. 328 00:20:09,850 --> 00:20:14,040 Sviga 0 er að fara að kynna í lok band okkar. 329 00:20:14,040 --> 00:20:15,414 Ég vil ekki að setja það þar. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Og á meðan s við lengd er ekki jafnt og núll Ljúka, þá 332 00:20:25,620 --> 00:20:27,130 við erum bara að fara að hækka lengd. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Svo, í lok áætlunarinnar okkar, lengd er loksins að fara að 335 00:20:34,880 --> 00:20:37,610 vera 5 í þessu tilviki. 336 00:20:37,610 --> 00:20:39,210 Og við verðum bara að fara aftur lengd. 337 00:20:39,210 --> 00:20:42,570 338 00:20:42,570 --> 00:20:43,530 >> OK. 339 00:20:43,530 --> 00:20:48,290 Svo nú hérna, ég er ekki gera my_strlen. 340 00:20:48,290 --> 00:20:50,700 Skulum taka saman það til að tryggja allt sé klárt. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Var ég að gera í 2? 343 00:20:58,210 --> 00:21:00,565 Eða var það 1? 344 00:21:00,565 --> 00:21:01,940 Það ætti að gera. 345 00:21:01,940 --> 00:21:02,690 Allt í lagi. 346 00:21:02,690 --> 00:21:08,490 Svo er þetta argv 2. 347 00:21:08,490 --> 00:21:11,585 Virkar eins og vænst, þrátt var að sá sem ég gerði það í? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Já. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Þessi útgáfa af hlutur ekki hafa á printf nýja línu eftir, en það 352 00:21:21,820 --> 00:21:22,910 skiptir ekki máli. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Svo vann eins og vænta. 355 00:21:25,780 --> 00:21:34,750 >> Nú getum við jafnvel sameina þetta einu skrefi frekar, þar sem tilkynning hér, vel, 356 00:21:34,750 --> 00:21:38,920 fyrst, við erum að grabbing strlen af ​​argv i, og þá erum við iterating yfir 357 00:21:38,920 --> 00:21:41,450 Hver stafur í þeirri band. 358 00:21:41,450 --> 00:21:47,480 Svo í stað þess að gera það, hvað ef við bara sameinað þetta rökfræði bíða 359 00:21:47,480 --> 00:21:50,740 þangað til við högg sviga 0 rétt þetta fyrir lykkju? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Svo iterate meðan argv i, j er ekki jafn sviga 0. 362 00:22:07,490 --> 00:22:10,680 Svo skulum hlaupa það fyrst. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Allt í lagi. 365 00:22:21,180 --> 00:22:27,655 Svo hér, þetta ástand er að segja - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 skulum hreinsa þetta. 368 00:22:40,060 --> 00:22:49,140 Svo nú, láta þetta vera argv okkar. 369 00:22:49,140 --> 00:22:55,290 Svo þegar ég hljóp bara þessi forrit áður, argv er fylki af strengjum. 370 00:22:55,290 --> 00:23:03,100 Og svo, ef ég keyra það með punktur slash argv 2, halló heimur, þá argv 371 00:23:03,100 --> 00:23:07,650 sjálft er lengd 3, fyrir argv núll, halló, og heimurinn. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Og innan hvers þessara vísitalna er, sjálft fylki, þar sem þetta verður 374 00:23:19,660 --> 00:23:23,780 punktur, þetta mun vera slash, ég veit ekki ef það var í rétta átt, ég 375 00:23:23,780 --> 00:23:25,680 held ekki það var. 376 00:23:25,680 --> 00:23:30,110 A-R-V þjóta, þarf meira pláss. 377 00:23:30,110 --> 00:23:32,570 Skulum skera í þessu fylki. 378 00:23:32,570 --> 00:23:38,230 A-R-V Dash 0, og þá sviga 0. 379 00:23:38,230 --> 00:23:43,160 Og síðan í lamasessi verður halló. 380 00:23:43,160 --> 00:23:45,910 Segjum, H-E sviga 0. 381 00:23:45,910 --> 00:23:51,130 Og að lokum, W-O sviga 0. 382 00:23:51,130 --> 00:23:59,730 >> Svo reiknirit sem við skrifuðum bara, hreiður fyrir lykkjur, hvað þeir eru 383 00:23:59,730 --> 00:24:07,321 að gera er, verðum við fyrst að gegn i og þá j. 384 00:24:07,321 --> 00:24:15,206 Þetta væri auðveldara með kóða á skjár, Förum aftur til þessa. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Svo eftir að ég er Iterator sem er iterating yfir hverja skipun 387 00:24:24,600 --> 00:24:25,610 lína rifrildi. 388 00:24:25,610 --> 00:24:28,870 Og j er Iterator iterating yfir hvern staf í því 389 00:24:28,870 --> 00:24:30,410 stjórn lína rifrildi. 390 00:24:30,410 --> 00:24:46,755 Svo er það þetta innsti printf er að gera er, höfum við printf argv 0 0, printf 391 00:24:46,755 --> 00:24:58,680 argv 0 1, printf argv 0 2, 0 3, 0 4, 0 5, 0 6, en nú, argv 0 7 er að fara að 392 00:24:58,680 --> 00:25:00,670 jafn sviga 0. 393 00:25:00,670 --> 00:25:05,730 >> Svo þá erum við hættir að fyrir lykkju, og nú ég iterates í 1. 394 00:25:05,730 --> 00:25:10,910 Og nú erum við að fara að prenta argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 Jæja, nú, þar sem ég skera halló stutt, argv 1 2 er aftur að fara að vera 396 00:25:17,040 --> 00:25:18,170 sviga 0. 397 00:25:18,170 --> 00:25:25,050 Og svo, vöxtur i og halda áfram, og svo á, þar til við að prenta út allar 398 00:25:25,050 --> 00:25:28,580 heimurinn og þeir eru þrír stjórn lína rök, og við munum hætta út af 399 00:25:28,580 --> 00:25:31,670 að ysta lykkja, og klára áætlun okkar. 400 00:25:31,670 --> 00:25:38,390 401 00:25:38,390 --> 00:25:39,640 OK. 402 00:25:39,640 --> 00:25:43,903 403 00:25:43,903 --> 00:25:46,795 >> Svo skulum við koma aftur hingað. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Svo þú munt öðlast þekkingu við stjórn lína rifrildi um þetta 406 00:25:52,370 --> 00:25:54,460 einkum Heimadæmi. 407 00:25:54,460 --> 00:25:56,630 >> Nú, kembiforrit. 408 00:25:56,630 --> 00:26:01,680 Svo þú hefur sennilega nú þegar þurfti að gera sumir kembiforrit með fyrri þín 409 00:26:01,680 --> 00:26:03,120 Heimadæmi. 410 00:26:03,120 --> 00:26:08,420 Og eitt mjög auðvelt leið kembiforrit, fyrst, við skulum líta á þrjótur program. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Jæja, ganga í gegnum þetta forrit, við erum að fara að spyrja notandann um 413 00:26:23,830 --> 00:26:29,350 heiltala, grípa þessi heiltala, og þá, geðþótta, höfum við while lykkju sem 414 00:26:29,350 --> 00:26:32,280 er bara að fara að lækka I þar til það er jafnt og 10. 415 00:26:32,280 --> 00:26:35,820 Skulum gera ráð bara ég slá heiltala stærri en 10. 416 00:26:35,820 --> 00:26:38,700 Svo lækka ég þar til það er jafnt og 10.. 417 00:26:38,700 --> 00:26:42,630 >> Og þá höfum við aðra en lykkja að á meðan ég er ekki jafn 0, við erum 418 00:26:42,630 --> 00:26:44,540 fara að lækka i um 3. 419 00:26:44,540 --> 00:26:49,790 Þannig að ef þú sérð ásetningi galla hér, það er að þetta verður lækka ég til 420 00:26:49,790 --> 00:26:57,010 vera 10, og þá er þetta á meðan lykkja mun lækka I frá 10, til 7, til 4, til að 1, 421 00:26:57,010 --> 00:27:02,880 neikvæða 2, í neikvæðar 5, og svo framvegis, neikvæðra óendanlegu, þar sem ég mun 422 00:27:02,880 --> 00:27:05,920 aldrei jafn 0. 423 00:27:05,920 --> 00:27:08,610 Og þá í lok þessarar áætlunar, við höfum foo virka sem er 424 00:27:08,610 --> 00:27:12,130 fara á prenti út að ég. 425 00:27:12,130 --> 00:27:16,520 >> Þannig að þetta er stutt og léttvæg program, og villan er augljós, 426 00:27:16,520 --> 00:27:18,790 sérstaklega eftir að ég bara sagði hvað villan var. 427 00:27:18,790 --> 00:27:24,840 En ætlunin hér er vel, þetta gæti raun líta út sumir af þinn 428 00:27:24,840 --> 00:27:30,040 lausnir frá gráðugur frá síðasta Heimadæmi, og kannski þú þarft 429 00:27:30,040 --> 00:27:32,800 sumir óendanlegur lykkja í forritinu, og þú hefur ekki hugmynd 430 00:27:32,800 --> 00:27:34,100 hvað veldur því. 431 00:27:34,100 --> 00:27:38,690 Svo mjög gagnlegur kembiforrit tækni er bara að bæta við printfs 432 00:27:38,690 --> 00:27:40,180 allan kóðann þinn. 433 00:27:40,180 --> 00:27:49,200 >> Svo hér er ég vil printf utan fyrst meðan lykkja. 434 00:27:49,200 --> 00:27:53,155 Og hér ég vil printf, og ég verð bara prenta i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Ég ætla jafnvel að gera fyrst en lykkja, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Utan, annað en lykkja. 439 00:28:09,040 --> 00:28:12,170 Enn og aftur, prenta inni af hér, gildi i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 Og við skulum hlaupa þetta. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Svo punktur slash kemba. 444 00:28:24,800 --> 00:28:25,610 Sláðu inn heiltölu. 445 00:28:25,610 --> 00:28:28,150 Skulum gera 13. 446 00:28:28,150 --> 00:28:28,760 Og búmm. 447 00:28:28,760 --> 00:28:33,300 Sjáum við að við erum óendanlega lykkja inni á sekúndu á meðan lykkja. 448 00:28:33,300 --> 00:28:36,305 Svo nú vitum við hvað villan er. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 En printf kembiforrit er fullkomlega frábært, en þegar áætlanir þínar fá 451 00:28:45,610 --> 00:28:50,560 lengri og flóknari, eru flóknari lausnir 452 00:28:50,560 --> 00:28:51,705 fá hlutina virka. 453 00:28:51,705 --> 00:28:52,955 Svo skulum við fjarlægja öll þessi printfs. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 Og við skulum vera viss að ég gerði ekki brjóta neitt. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Þannig að forritið sem við erum að fara til kynna er kallað 458 00:29:14,180 --> 00:29:16,715 GDB, fyrir GNU Debugger. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Ja, reyndar, við skulum fjarlægja kemba fyrir annað, og gera kemba aftur. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Ja, reyndar fyrst, góð lexía í stjórn lína rifrildi. 463 00:29:34,440 --> 00:29:37,780 Takið eftir að þessi Clang stjórn sem er saman allt er að fara framhjá 464 00:29:37,780 --> 00:29:41,300 í stjórn lína, þessir stjórn lína rifrildi. 465 00:29:41,300 --> 00:29:46,250 Svo nákvæmlega hvernig þú ert að fara að nota stjórn lína rifrildi, eins og við 466 00:29:46,250 --> 00:29:51,500 gerði áður, og eins og þú munt í PSET 2, það er hvernig Clang er að nota þær. 467 00:29:51,500 --> 00:30:00,070 >> Svo eftir því að þetta fyrsta fána, þjóta ggdb3, hvað það er að segja er, Clang, 468 00:30:00,070 --> 00:30:03,790 þú ættir að safna saman þessa skrá með ætlunin að við munum að lokum 469 00:30:03,790 --> 00:30:05,380 þarf að kemba það. 470 00:30:05,380 --> 00:30:13,840 Svo eins lengi og þú hafa þessi fána, Þá getum við gdb kemba. 471 00:30:13,840 --> 00:30:17,380 Og það verður opnað upp GNU Debugger. 472 00:30:17,380 --> 00:30:22,920 >> Þannig að það eru fullt af skipunum sem þú þarft að venjast. 473 00:30:22,920 --> 00:30:27,100 Fyrsta sem þú munt sennilega strax þörf er Run. 474 00:30:27,100 --> 00:30:28,200 Svo hvað er rekið að fara að gera? 475 00:30:28,200 --> 00:30:30,910 Það er að fara að byrja kerfi okkar. 476 00:30:30,910 --> 00:30:36,180 Svo hlaupa, byrjar program, the program biður okkur um heiltala, 13. 477 00:30:36,180 --> 00:30:39,170 Og þá er það óendanlega lykkja sem ráð, nema ég fjarlægt 478 00:30:39,170 --> 00:30:40,500 printfs, svo við gerum ekki einu sinni að sjá það. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Lauk venjulega. 481 00:30:44,600 --> 00:30:45,850 Oh. 482 00:30:45,850 --> 00:30:48,570 483 00:30:48,570 --> 00:30:53,640 Það er hugsanlegt að það vafði alla leið um, aftur til - hunsa það. 484 00:30:53,640 --> 00:30:55,170 Ráð fyrir að það var ekki hætta venjulega. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Það er flókið svar við þessu. 487 00:31:03,370 --> 00:31:07,890 >> Svo nú, það er ekki mjög nytsamleg. 488 00:31:07,890 --> 00:31:11,480 Svo bara að keyra forritið okkar inni þetta aflúsara er ekki að hjálpa okkur í einhverju 489 00:31:11,480 --> 00:31:15,610 leið, þar sem við gætum hafa bara gert punktur rista kemba utan gdb. 490 00:31:15,610 --> 00:31:21,250 Svo sá stjórn sem Þú munt sennilega - 491 00:31:21,250 --> 00:31:22,970 og ég ætla að hætta þessu. 492 00:31:22,970 --> 00:31:25,850 Control-D eða hætta, bæði vinna. 493 00:31:25,850 --> 00:31:29,550 Svo skulum opna það upp aftur. 494 00:31:29,550 --> 00:31:31,130 >> Annar stjórn sem þú munt sennilega langar strax að 495 00:31:31,130 --> 00:31:33,600 venjast er Break. 496 00:31:33,600 --> 00:31:37,120 Þannig að við munum brjóta á helstu fyrir nú, og svo skal ég útskýra það. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Jæja, hér sjáum við sett breakpoint á þessari línu í debug.c. 499 00:31:46,370 --> 00:31:50,160 Svo það brot þýðir að þegar ég tegund hlaupa, the program er að fara að 500 00:31:50,160 --> 00:31:53,560 halda áfram að birtast þar Ég lenti breakpoint. 501 00:31:53,560 --> 00:31:59,390 Svo þegar ég lenti hlaupa, the program byrjun, og þá brýtur það um leið og það 502 00:31:59,390 --> 00:32:01,940 fer inn í helstu hlutverk. 503 00:32:01,940 --> 00:32:06,930 Brjóta helsta er að fara að vera eitthvað þú gerir nokkuð algengt. 504 00:32:06,930 --> 00:32:11,340 >> Og nú, til að kynna þér til fleiri skipanir. 505 00:32:11,340 --> 00:32:14,330 Eftir hér, að það er að segja að við brotnaði á línu 11, er þannig 506 00:32:14,330 --> 00:32:16,230 printf, sláðu inn integer. 507 00:32:16,230 --> 00:32:21,260 Svo að stjórn Næsta er að fara að vera hvernig við förum í næstu línu af kóða. 508 00:32:21,260 --> 00:32:24,810 Þetta er að fara að leyfa okkur að stíga gegnum línu áætlun okkar fyrir línu. 509 00:32:24,810 --> 00:32:26,260 Svo næst. 510 00:32:26,260 --> 00:32:29,820 >> Nú lína 12, við erum að fara að fá heiltölu. 511 00:32:29,820 --> 00:32:30,450 Next. 512 00:32:30,450 --> 00:32:34,290 Og ef þú högg bara inn aftur, verður það endurtaka the síðastur hlutur þú gerðir. 513 00:32:34,290 --> 00:32:36,480 Þannig að ég þarf ekki að slá næst í hvert skipti. 514 00:32:36,480 --> 00:32:40,100 Svo sláðu inn integer, 13.. 515 00:32:40,100 --> 00:32:46,940 Svo nú, lína 14, en ég er meiri en 10, og ég ætla að gera næst. 516 00:32:46,940 --> 00:32:48,685 Og við sjáum að við erum að fara að lækka i. 517 00:32:48,685 --> 00:32:50,210 Þannig að við ætlum að lækka ég aftur. 518 00:32:50,210 --> 00:32:53,620 >> Svo nú, annað gagnlegt stjórn er Print. 519 00:32:53,620 --> 00:32:55,750 Svo Print er að fara að prenta út gildi breytu. 520 00:32:55,750 --> 00:32:57,825 Skulum koma út gildi á breytilegum i. 521 00:32:57,825 --> 00:32:58,705 Skulum prenta i. 522 00:32:58,705 --> 00:33:00,910 Það er að fara að segja að ég er 11. 523 00:33:00,910 --> 00:33:03,330 Nú erum við aftur á Next meðan i er meiri en 10. 524 00:33:03,330 --> 00:33:05,590 Svo er enn meiri en ég 10, þar sem það er 11. 525 00:33:05,590 --> 00:33:06,920 Ég mínus mínus. 526 00:33:06,920 --> 00:33:08,250 Skulum prenta ég aftur. 527 00:33:08,250 --> 00:33:10,950 Eins og vænta, það er 10. 528 00:33:10,950 --> 00:33:12,510 >> Svo nú, næst. 529 00:33:12,510 --> 00:33:16,250 Það er að fara aftur til the ástand, ég er meiri en 10, en ég er nú 10, svo 530 00:33:16,250 --> 00:33:20,040 það er ekki meiri en 10, þannig að við reiknum það að falla úr while lykkju. 531 00:33:20,040 --> 00:33:22,220 Og nú erum við hér þessi lína af kóða. 532 00:33:22,220 --> 00:33:28,750 Og annar stjórn, List, er bara að fara til að sýna fyrri og næsta 533 00:33:28,750 --> 00:33:31,240 par af línum af kóða, í Ef þú tapað sjálfur. 534 00:33:31,240 --> 00:33:35,420 Þannig að við lauk bara þessa meðan lykkja, og nú höfum við gert þetta 535 00:33:35,420 --> 00:33:37,080 meðan lykkja, línu 18. 536 00:33:37,080 --> 00:33:39,860 Svo á meðan ég er ekki jafn 0. 537 00:33:39,860 --> 00:33:46,570 Og næst, ég er jafnt i mínus 3, og við munum taka eftir, þetta verður bara að halda áfram. 538 00:33:46,570 --> 00:33:48,270 Og við getum prentað i. 539 00:33:48,270 --> 00:33:49,990 >> Hver stjórn konar hefur flýtileiðir. 540 00:33:49,990 --> 00:33:51,720 Svo er p stutt fyrir prentun. 541 00:33:51,720 --> 00:33:53,400 Þannig að við getum p i. 542 00:33:53,400 --> 00:33:57,550 Bara halda halda n, eða halda að gera næst. 543 00:33:57,550 --> 00:33:58,340 Prenta ég aftur. 544 00:33:58,340 --> 00:34:00,380 Þú sérð nú að það er neikvætt 167. 545 00:34:00,380 --> 00:34:06,030 Þannig að þetta mun halda áfram að eilífu, en ekki virkilega að eilífu, því að þú sást bara það 546 00:34:06,030 --> 00:34:09,330 mun í raun enda á einhverjum tímapunkti. 547 00:34:09,330 --> 00:34:15,699 >> Þannig að er farin gdb. 548 00:34:15,699 --> 00:34:19,504 En við skulum gera eitt í viðbót í gdb. 549 00:34:19,504 --> 00:34:20,754 Uh, kemba. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Svo, í þessu tilviki, að óendanlegur lykkja varð að vera inni 552 00:34:28,534 --> 00:34:30,050 The aðalæð virka. 553 00:34:30,050 --> 00:34:35,779 Og fyrir nú, bara að samþykkja það sem ég er fara að færa óendanlega lykkju í 554 00:34:35,779 --> 00:34:37,029 á foo virka. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Mundu bara að, við lok þessa program vel, þetta var upphaflega 557 00:34:43,730 --> 00:34:46,210 starf foo, sem var bara að fara að prenta i. 558 00:34:46,210 --> 00:34:51,880 En nú erum við að kalla foo, sem er fara að lækka i þar til það er 0, og 559 00:34:51,880 --> 00:34:54,548 þá prenta þá breytu. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Vista það. 562 00:34:57,970 --> 00:35:00,175 Gerðu kemba. 563 00:35:00,175 --> 00:35:03,310 Og nú, gdb kemba. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Þannig að ef ég keyrt bara þá sem ég ætla ekki að að vera fær um að í raun skref í gegnum minn 566 00:35:10,580 --> 00:35:11,730 program línu-við-línu. 567 00:35:11,730 --> 00:35:19,820 Svo skulum brjóta á helstu, og þá tegund hlaupa. 568 00:35:19,820 --> 00:35:28,160 Svo fara í gegnum þetta, printf, sláðu heiltala, fá heiltala, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Þannig að við ætlum að halda decrementing þar sem i er meiri en 10. 571 00:35:37,490 --> 00:35:42,840 Þá erum við að fara að falla í gegnum meðan lykkja, og fá til the lína - 572 00:35:42,840 --> 00:35:44,364 skulum opna það upp í öðrum glugga. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Svo við decremented þangað til ég var ekki lengur meiri en 10, og síðan við 575 00:35:53,300 --> 00:35:55,700 kallaði aðgerðina, foo. 576 00:35:55,700 --> 00:36:01,340 >> Svo hvað gerðist um leið og ég lenti virka foo, vel, kallaði ég foo, og 577 00:36:01,340 --> 00:36:04,030 svo ég þurfti ekki lengur stjórn á gdb. 578 00:36:04,030 --> 00:36:10,230 Svo um leið og ég lenti næst í þessari línu, hlutir áfram þar til þetta gerðist, 579 00:36:10,230 --> 00:36:12,400 þar sem forritið lauk þegar - 580 00:36:12,400 --> 00:36:14,450 taka það ekki til staðar á endanum. 581 00:36:14,450 --> 00:36:16,390 Þú sást það hlé í smá þó. 582 00:36:16,390 --> 00:36:22,040 Svo hvers vegna gerði ég missa stjórn á Dagskráin á þeim tímapunkti? 583 00:36:22,040 --> 00:36:27,540 Jæja, þegar ég pikka næsta, sem fer til bókstaflegri næsta lína af kóða sem 584 00:36:27,540 --> 00:36:28,850 mun framkvæma. 585 00:36:28,850 --> 00:36:35,950 Svo eftir línu 21, næsta lína af kóða sem mun framkvæma er lína 22, 586 00:36:35,950 --> 00:36:38,520 sem er, sem kemur úr aðal. 587 00:36:38,520 --> 00:36:43,810 Svo ég vil ekki að fara bara í næstu línu af kóða. 588 00:36:43,810 --> 00:36:48,170 Ég vil fara inn í aðgerðina, foo, og þá einnig stíga í gegnum 589 00:36:48,170 --> 00:36:49,830 þeim línum af kóða. 590 00:36:49,830 --> 00:36:53,726 >> Svo fyrir það, höfum við val. 591 00:36:53,726 --> 00:36:56,770 Skulum hætta að aftur. 592 00:36:56,770 --> 00:36:58,020 Brjóta aðal. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, næst, næst, 13, við hliðina, næst, næst, vandlega, 595 00:37:06,370 --> 00:37:09,820 áður en við högg línu foo. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Svo nú erum við í línu 21, þar sem við köllum foo. 598 00:37:13,700 --> 00:37:17,100 Við viljum ekki að slá næsta, þar sem það verður bara að hringja í virka foo, og 599 00:37:17,100 --> 00:37:18,710 fara í næstu línu af kóða. 600 00:37:18,710 --> 00:37:20,840 Það sem við viljum að nota er Step. 601 00:37:20,840 --> 00:37:25,690 Svo er munur á þrepi og Next, þar skref stíga inn í 602 00:37:25,690 --> 00:37:28,190 virka, og Next fer yfir starfsemi. 603 00:37:28,190 --> 00:37:32,830 Það keyrir bara um alla virka og heldur áfram. 604 00:37:32,830 --> 00:37:37,210 >> Svo skref er að fara að koma okkur í aðgerðina, foo. 605 00:37:37,210 --> 00:37:41,160 Og við sjáum hér, nú erum við aftur á þetta á meðan lykkja sem er, í orði, 606 00:37:41,160 --> 00:37:44,190 fara að halda áfram að eilífu. 607 00:37:44,190 --> 00:37:50,420 Og ef þú högg skref, þegar það er ekki einu sinni aðgerð til að hringja, þá er það 608 00:37:50,420 --> 00:37:51,720 eins Next. 609 00:37:51,720 --> 00:37:55,320 Svo er það bara þegar þú ert á línu sem er að kalla á aðgerð þessi skref 610 00:37:55,320 --> 00:37:56,970 er að fara að vera mismunandi frá Next. 611 00:37:56,970 --> 00:37:57,930 Svo skref mun færa okkur hér. 612 00:37:57,930 --> 00:38:02,100 Skref, skref, skref, skref, skref, skref, og við verðum bara óendanlegur lykkja eilífu. 613 00:38:02,100 --> 00:38:06,810 >> Svo þú might venjast því eins og að leið til að auðkenna óendanlega lykkjur, er 614 00:38:06,810 --> 00:38:08,960 bara halda þessu Enter hnappinn til sjá hvar þú færð fastur. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 Það eru betri leiðir til að gera það, en nú, það er fullkomlega nægileg. 617 00:38:14,780 --> 00:38:17,967 Og stylistically, í samræmi við Style 50, ætti ég að hafa gert þetta. 618 00:38:17,967 --> 00:38:21,550 619 00:38:21,550 --> 00:38:24,030 OK. 620 00:38:24,030 --> 00:38:28,400 >> Svo eitt síðasta stjórn til kynna. 621 00:38:28,400 --> 00:38:30,810 Jæja, við skulum gdb kemba inn 622 00:38:30,810 --> 00:38:35,580 Svo í stað þess að brjóta á helstu, ef ég vita foo virka er einnig 623 00:38:35,580 --> 00:38:39,230 vandamál, þá gæti ég bara sagði, brjóta á foo, í staðinn. 624 00:38:39,230 --> 00:38:42,310 Segjum að ég brjóta á bæði aðal-og foo. 625 00:38:42,310 --> 00:38:45,390 Svo er hægt að setja eins margar Rofstaðir eins og þú vilt. 626 00:38:45,390 --> 00:38:49,230 Hvenær ÉG tegund hlaupa, það er að fara að hætta á - 627 00:38:49,230 --> 00:38:52,180 ooh, við skulum laun, þar Ég breytti hluti. 628 00:38:52,180 --> 00:38:55,950 Þú munt sjá þessa línu, viðvörun, uppspretta skrá er nýleg en executable. 629 00:38:55,950 --> 00:38:59,680 Svo það þýðir að ég fór bara í hér og breytt þeim í samræmi við Style 630 00:38:59,680 --> 00:39:03,100 50, en ég vissi ekki laun forritið. 631 00:39:03,100 --> 00:39:04,870 Svo gerir GDB mig meðvitaðir um það. 632 00:39:04,870 --> 00:39:10,130 Ég hætta, gera kemba aftur, högg gdb kemba. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Svo nú, aftur að það sem ég var að gera. 635 00:39:12,800 --> 00:39:15,720 Brjóta helstu, brjóta foo. 636 00:39:15,720 --> 00:39:20,680 Nú ef ég hlaupa the program, svo það er að fara að halda áfram þar hits á 637 00:39:20,680 --> 00:39:21,320 Rofstaður. 638 00:39:21,320 --> 00:39:24,680 Það Rofstaður gerist að vera sá fyrsti á helstu. 639 00:39:24,680 --> 00:39:28,630 Nú, í stað þess að gera næst, næst, næst, næst, næst, þangað til ég lenti foo, ég 640 00:39:28,630 --> 00:39:35,230 getur slegið haldið áfram, sem mun halda áfram þangað til þú högg næsta breakpoint. 641 00:39:35,230 --> 00:39:37,200 Ég verð að slá inn heiltölu fyrst. 642 00:39:37,200 --> 00:39:40,570 Halda áfram mun halda áfram þar til ég lenti á Næsta Rofstaður, sem er að 643 00:39:40,570 --> 00:39:43,320 virka foo. 644 00:39:43,320 --> 00:39:50,130 >> Svo keyra mun keyra þar til þú högg a Rofstaður, en þú bara slærð keyra þegar 645 00:39:50,130 --> 00:39:54,060 þú ert að byrja forritið, og þá, frá því, það er að halda áfram. 646 00:39:54,060 --> 00:40:01,950 Ef ég gerði bara brjóta helstu og þá hljóp, munum það brot á 647 00:40:01,950 --> 00:40:03,670 helstu, og þá halda áfram. 648 00:40:03,670 --> 00:40:10,050 Þar sem ég hef ekki brjóta benda á foo, slá inn heiltölu, þá nú er ég 649 00:40:10,050 --> 00:40:11,380 ekki að fara að brjóta á foo. 650 00:40:11,380 --> 00:40:16,318 Það er bara að fara að óendanlega lykkja þar sem. 651 00:40:16,318 --> 00:40:17,568 OK. 652 00:40:17,568 --> 00:40:19,500 653 00:40:19,500 --> 00:40:24,420 >> Svo er það Inngangur að gdb. 654 00:40:24,420 --> 00:40:27,790 Þú ættir að byrja að nota það í vandamál setur þinn. 655 00:40:27,790 --> 00:40:30,550 Það getur verið mjög gagnlegt til að greina galla. 656 00:40:30,550 --> 00:40:35,280 Ef þú í raun bara, lína-við-línu, fara gegnum númerið þitt, og bera saman hvað er 657 00:40:35,280 --> 00:40:39,740 raunverulega að gerast með það sem þú átt von að gerast, þá er það nokkuð 658 00:40:39,740 --> 00:40:41,060 erfitt að missa galla þínum. 659 00:40:41,060 --> 00:40:45,280 660 00:40:45,280 --> 00:40:46,530 OK. 661 00:40:46,530 --> 00:40:48,310 662 00:40:48,310 --> 00:40:54,040 >> Svo í síðustu viku Davíð kom upp þetta leyndarmál-lykill dulmál efni fyrir 663 00:40:54,040 --> 00:40:59,350 fyrsta skipti, þar sem við viljum ekki lykilorð bara verið geymd á okkar 664 00:40:59,350 --> 00:41:03,210 tölva í sumum látlaus textaskrá, þar einhver getur komið aftur og bara 665 00:41:03,210 --> 00:41:04,660 opna það upp og lesa þær. 666 00:41:04,660 --> 00:41:07,530 Best væri að þeir vera dulkóðuð á einhvern hátt. 667 00:41:07,530 --> 00:41:13,340 Og í Heimadæmi 2, munt þú vera að takast með einni aðferð við dulkóðun, 668 00:41:13,340 --> 00:41:16,520 eða, vel, tvær aðferðir, en þeir eru ekki svo mikill. 669 00:41:16,520 --> 00:41:20,050 Ef þú gerir á spjallþráð útgáfa, þú ert líka að fara að vera að takast á við 670 00:41:20,050 --> 00:41:22,150 Afkóðun sumt. 671 00:41:22,150 --> 00:41:29,770 >> Svo nú er málið, vel, jafnvel þótt við höfum sterkasta dulkóðun 672 00:41:29,770 --> 00:41:34,830 reiknirit í heiminum, ef þú velur sérlega léleg lykilorð, þá er það 673 00:41:34,830 --> 00:41:37,720 mun ekki hjálpa þér mjög mikið, þar sem fólk vilja enn vera fær um að reikna það út. 674 00:41:37,720 --> 00:41:41,530 Jafnvel þótt að sjá the brengla band og það lítur út eins og óreiðu af rusli 675 00:41:41,530 --> 00:41:44,760 það þýðir ekkert að þeim, ef þeir samt bara þurft að reyna nokkrum lykilorð 676 00:41:44,760 --> 00:41:50,560 að reikna það út, þá þú eru ekki mjög örugg. 677 00:41:50,560 --> 00:41:55,890 Svo horfa á myndskeið sem gerir þeim tímapunkti. 678 00:41:55,890 --> 00:41:59,587 679 00:41:59,587 --> 00:42:00,970 >> [Video spilun] 680 00:42:00,970 --> 00:42:02,100 >> -Hjálm, fiend þú. 681 00:42:02,100 --> 00:42:03,370 Hvað er að gerast? 682 00:42:03,370 --> 00:42:05,170 Hvað ertu að gera dóttur mína? 683 00:42:05,170 --> 00:42:09,910 >> -Leyfa mér að kynna ljómandi ungur lýtalæknir, Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, mesta nefið starf maður í öllu 685 00:42:13,730 --> 00:42:16,080 alheiminum og Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Your hátign. 687 00:42:17,210 --> 00:42:18,070 >> -Nef starf? 688 00:42:18,070 --> 00:42:18,670 Ég skil ekki. 689 00:42:18,670 --> 00:42:20,090 Hún er nú þegar haft nef vinnu. 690 00:42:20,090 --> 00:42:21,910 Það var sætur sextán staðar. 691 00:42:21,910 --> 00:42:22,140 >> -Nei. 692 00:42:22,140 --> 00:42:23,690 Það er ekki hvað þér finnst. 693 00:42:23,690 --> 00:42:25,420 Það er miklu, miklu verri. 694 00:42:25,420 --> 00:42:30,300 Ef þú gefur mér ekki samsetningu til loftið skjöldur, Dr Schlotkin mun 695 00:42:30,300 --> 00:42:34,226 gefa dóttur þína til baka gömlu nef hennar. 696 00:42:34,226 --> 00:42:35,476 >> -Nei. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Hvar fékkstu þetta? 699 00:42:40,516 --> 00:42:41,440 >> -Allt í lagi. 700 00:42:41,440 --> 00:42:42,180 Ég segi. 701 00:42:42,180 --> 00:42:43,381 Ég segi. 702 00:42:43,381 --> 00:42:44,263 Nei, pabbi. 703 00:42:44,263 --> 00:42:45,590 Nei, þú mátt ekki. 704 00:42:45,590 --> 00:42:46,860 >> -Þú ert rétt, minn kæri. 705 00:42:46,860 --> 00:42:48,450 Ég mun sakna nýja nefið. 706 00:42:48,450 --> 00:42:52,090 En ég mun ekki segja honum samsetningu, sama hvað. 707 00:42:52,090 --> 00:42:53,680 >> -Gott og vel. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, gera versta þinn. 709 00:42:55,685 --> 00:42:56,914 >> -My ánægja. 710 00:42:56,914 --> 00:43:00,690 >> [Verkfæri sem skerpti] 711 00:43:00,690 --> 00:43:01,910 >> -Nei. 712 00:43:01,910 --> 00:43:02,520 Bíddu. 713 00:43:02,520 --> 00:43:03,836 Bíddu. 714 00:43:03,836 --> 00:43:05,300 Ég segi. 715 00:43:05,300 --> 00:43:06,880 Ég segi. 716 00:43:06,880 --> 00:43:09,130 >> -Ég vissi að það myndi vinna. 717 00:43:09,130 --> 00:43:09,900 Allt í lagi. 718 00:43:09,900 --> 00:43:12,850 Gefðu mér hana. 719 00:43:12,850 --> 00:43:16,918 >> -Sameiningin er einn. 720 00:43:16,918 --> 00:43:17,406 >> -Einn. 721 00:43:17,406 --> 00:43:18,382 >> -Einn. 722 00:43:18,382 --> 00:43:19,358 >> -Tveir. 723 00:43:19,358 --> 00:43:19,846 >> -Tveir. 724 00:43:19,846 --> 00:43:20,822 >> -Tveir. 725 00:43:20,822 --> 00:43:21,310 >> -Þrír. 726 00:43:21,310 --> 00:43:21,798 >> -Þrír. 727 00:43:21,798 --> 00:43:22,774 >> -Þrír. 728 00:43:22,774 --> 00:43:23,262 >> Fjögurra. 729 00:43:23,262 --> 00:43:23,750 >> Fjögurra. 730 00:43:23,750 --> 00:43:26,150 >> Fjögurra. 731 00:43:26,150 --> 00:43:27,010 >> -Fimm. 732 00:43:27,010 --> 00:43:27,670 >> -Fimm. 733 00:43:27,670 --> 00:43:29,010 >> -Fimm. 734 00:43:29,010 --> 00:43:34,770 >> -Svo er samsetning einn, tveir, þrír, fjórir, fimm. 735 00:43:34,770 --> 00:43:37,460 Það er heimskasta samsetning Ég heyrði einhvern tíma í lífi mínu. 736 00:43:37,460 --> 00:43:39,710 Það er góður af hlutur hálfviti hefði á farangri sínum. 737 00:43:39,710 --> 00:43:42,000 >> -Þakka þér, yðar hátign. 738 00:43:42,000 --> 00:43:43,530 >> -Hvað gerðuð þið? 739 00:43:43,530 --> 00:43:44,490 >> -Ég slökkti á vegg. 740 00:43:44,490 --> 00:43:45,420 >> -Nei þú gerðir það ekki. 741 00:43:45,420 --> 00:43:45,840 Þú slökkt alla myndina. 742 00:43:45,840 --> 00:43:46,930 >> -Ég verð að hafa ýtt á rangan hnapp. 743 00:43:46,930 --> 00:43:48,265 >> -Jæja, setja það aftur á. 744 00:43:48,265 --> 00:43:49,110 Setja myndina aftur. 745 00:43:49,110 --> 00:43:49,510 >> -Já, herra. 746 00:43:49,510 --> 00:43:49,917 Já, herra. 747 00:43:49,917 --> 00:43:50,324 >> -Förum, Arnold. 748 00:43:50,324 --> 00:43:51,140 Komdu, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Auðvitað, þú veist að ég mun samt verða að senda þér reikning fyrir þessu. 750 00:43:53,060 --> 00:43:53,440 >> [END vídeó spilun] 751 00:43:53,440 --> 00:43:54,690 >> ROB BODEN: Allt í lagi. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Svo nú er að við erum nú þegar að tala um öryggi í sumum leiðum, nice 754 00:44:08,430 --> 00:44:16,050 litla bíómynd plakat, þannig að í nýlegri daga, þessi mál með NSA 755 00:44:16,050 --> 00:44:17,300 fylgjast með öllu. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Það getur verið erfitt að líða eins og þér hafa einhvers konar einkalífs í 758 00:44:26,930 --> 00:44:34,540 online heiminum, þó svo að ég gat ekki sagt þú mest um upplýsingar um Prisma. 759 00:44:34,540 --> 00:44:42,130 Svo að flytja út prisma, við erum ekki að fara að vera að tala um það, nú 760 00:44:42,130 --> 00:44:44,030 hugsa um fartölvuna þína. 761 00:44:44,030 --> 00:44:48,360 Svo hérna, ég vil skipta raunverulegum reikninginn minn, 762 00:44:48,360 --> 00:44:50,370 með litla mörgæs mína. 763 00:44:50,370 --> 00:44:57,310 Þannig að ég hef lykilorð sett, og að lykilorð er hvað ég vil það að vera. 764 00:44:57,310 --> 00:45:02,430 >> En mundu að það sem ég er að skrá þig með, þannig að þetta innskráningu 765 00:45:02,430 --> 00:45:04,850 hvetja, er eitthvað forrit. 766 00:45:04,850 --> 00:45:07,910 Það er eitthvað forrit sem var skrifað af einhverjum einstakling. 767 00:45:07,910 --> 00:45:13,250 Og svo, að maður, ef þeir eru sérstaklega illgjarn, þeir gátu 768 00:45:13,250 --> 00:45:17,780 hafa sagt, allt í lagi, þannig að ef lykilorðið sem ég slæ er jafn mínum 769 00:45:17,780 --> 00:45:22,800 Raunveruleg lykilorð, eða það er jafnt að einhverju sérstöku aðgangsorði - 770 00:45:22,800 --> 00:45:25,550 David er ógnvekjandi eða eitthvað - 771 00:45:25,550 --> 00:45:27,190 þá láta þær inn 772 00:45:27,190 --> 00:45:33,760 Svo illgjarn forritari gæti haft aðgangur að öllum Macs, eða 773 00:45:33,760 --> 00:45:36,150 Windows, eða eitthvað. 774 00:45:36,150 --> 00:45:41,980 >> Svo er það ekki mikið áhyggjuefni, þar sem, Ég meina, þetta er tenging program 775 00:45:41,980 --> 00:45:48,720 sem er flutt með OS X, hundruð eða þúsundir manna hafa 776 00:45:48,720 --> 00:45:50,020 yfir þetta númer. 777 00:45:50,020 --> 00:45:55,330 Og svo, ef, í kóðanum þínum einhvers staðar, þú segja ef þetta band jafngildir jafn 778 00:45:55,330 --> 00:45:58,860 David er ógnvekjandi, tenging, þá er einhver að fara að vera, eins og, bíddu. 779 00:45:58,860 --> 00:45:59,800 Þetta er ekki rétt. 780 00:45:59,800 --> 00:46:01,790 Þetta ætti ekki að vera hér. 781 00:46:01,790 --> 00:46:06,650 Svo er það ein leið við fáum hlutina að vera eins konar örugg. 782 00:46:06,650 --> 00:46:10,300 >> En hugsa um jafnvel forrit sem þú skrifar. 783 00:46:10,300 --> 00:46:13,000 Segjum að þú skrifaðir innskráningu program. 784 00:46:13,000 --> 00:46:20,440 Þannig að þetta innskráningu forrit sem þú skrifaðir, svo augljóslega, þú ert góður 785 00:46:20,440 --> 00:46:21,210 forritari. 786 00:46:21,210 --> 00:46:25,610 Þú ert ekki að fara að setja eitthvað illgjarn ef x er jafnt jafngildir David er ógnvekjandi 787 00:46:25,610 --> 00:46:27,860 inn kóðann þinn. 788 00:46:27,860 --> 00:46:31,930 En þetta forrit, hvað þú nota til að safna saman þetta forrit? 789 00:46:31,930 --> 00:46:34,180 Eitthvað eins Clang. 790 00:46:34,180 --> 00:46:38,460 Svo hvað ef sá sem varð um skrifa Clang sérstakt cased í Clang 791 00:46:38,460 --> 00:46:44,310 eitthvað eins og, ef ég er að setja saman tenging program, þá slá inn þennan kóða 792 00:46:44,310 --> 00:46:49,720 í the tenging program sem segir, ef x er jafnt og jafngildir David er ógnvekjandi? 793 00:46:49,720 --> 00:46:59,890 Svo ekki alveg enn, en við höfum það sama gefa hér, þar Clang, vel, 794 00:46:59,890 --> 00:47:03,790 þúsundir, ef ekki tugþúsundir fólk hefur horft á Clang, hafa 795 00:47:03,790 --> 00:47:07,160 horfði á línum af kóða og sagði, allt í lagi, það er ekkert slæmt hérna. 796 00:47:07,160 --> 00:47:10,680 Vitanlega, enginn er að gera nokkuð þessi illgjarn. 797 00:47:10,680 --> 00:47:15,780 >> En hvað er Clang sig, eins og, hvað ef ég safna saman Clang? 798 00:47:15,780 --> 00:47:20,900 Hvað ef ég hef einhverja þýðanda sem safnar Clang sem setur inn Clang 799 00:47:20,900 --> 00:47:25,610 þetta sérstaka hakk sem segir, allt í lagi, þegar ég safna saman Clang, þá 800 00:47:25,610 --> 00:47:31,290 Executable ég fá ætti sérstaklega að líta inni tenging program og settu 801 00:47:31,290 --> 00:47:34,230 þetta lykilorð, jafngildir jafn Dave er ógnvekjandi? 802 00:47:34,230 --> 00:47:37,990 Svo muna að þýðanda sjálfan þarf að vera saman á einhverjum tímapunkti. 803 00:47:37,990 --> 00:47:42,810 Þannig að ef það sem þú velur að taka saman Clang með, sjálft er illgjarn, þá 804 00:47:42,810 --> 00:47:45,580 gæti verið ruglaður öllu leið niður í línu. 805 00:47:45,580 --> 00:47:49,630 >> Svo hér höfum við Ken Thompson og Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Þannig að þetta er helgimynda mynd. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie er hægra megin. 808 00:47:55,470 --> 00:47:58,740 Hann er stórt - 809 00:47:58,740 --> 00:48:03,640 ansi mikið skrifaði C. Svo þú getur þakka honum fyrir þennan flokk. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson er á vinstri. 811 00:48:04,840 --> 00:48:07,780 Tveir af þeim skrifaði grundvallaratriðum UNIX. 812 00:48:07,780 --> 00:48:10,140 Jæja, þeir voru Major Höfundar í UNIX. 813 00:48:10,140 --> 00:48:11,310 Það voru sumir aðrir. 814 00:48:11,310 --> 00:48:16,240 Svo Ken Thompson, á einhverjum tímapunkti, hann vinnur Turing verðlaunin. 815 00:48:16,240 --> 00:48:20,860 Og Turing verðlaunin, hef ég alltaf heyrt það vísað þessum hætti, er það 816 00:48:20,860 --> 00:48:23,100 Nobel Prize tölvunarfræði. 817 00:48:23,100 --> 00:48:27,500 >> Svo á Turing Award, hefur hann að gefa þakkarræðu sinni. 818 00:48:27,500 --> 00:48:31,790 Og hann gefur þetta mjög fræga ræðu nú, heitir Hugleiðingar um traustið 819 00:48:31,790 --> 00:48:35,620 Traust, sem við höfum tengt Til á námskeiðinu website. 820 00:48:35,620 --> 00:48:41,670 Og í þessu máli, segir hann, allt í lagi, svo ég skrifaði UNIX, og nú er allt á 821 00:48:41,670 --> 00:48:43,320 þú fólk notar UNIX. 822 00:48:43,320 --> 00:48:46,960 Nú skaltu muna í dag að Linux er bein afkomandi UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X notar beint UNIX. 824 00:48:50,140 --> 00:48:53,810 Gluggakista hjartarskinn ekki svo mikið, en mikið hugmyndir voru teknar úr UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Svo fer hann upp á svið og segir, allt í lagi, ég skrifaði UNIX. 826 00:48:59,220 --> 00:49:03,940 Og bara svo þú krakkar vita, ég er fær til að skrá þig inn í hvert 827 00:49:03,940 --> 00:49:05,590 einn einn af þinn tölva. 828 00:49:05,590 --> 00:49:14,280 Þar sem ég setti einn af þessum sérstöku ef x jafngildir jafngildir Ken Thomson er ógnvekjandi, 829 00:49:14,280 --> 00:49:16,350 þá er ég leyft að skrá þig inn. 830 00:49:16,350 --> 00:49:18,370 Svo fólk eins vel, Hvernig fórstu að þessu? 831 00:49:18,370 --> 00:49:21,090 Við leit á the tenging program og ekkert er þar. 832 00:49:21,090 --> 00:49:24,700 Hann er eins og vel, ég breytt Þýðandinn að skrá þig inn í innskráningu program 833 00:49:24,700 --> 00:49:30,490 þannig að tenging program nú mun hafa sem x er jafnt jafngildir Ken Thompson 834 00:49:30,490 --> 00:49:31,700 er ógnvekjandi. 835 00:49:31,700 --> 00:49:33,120 >> Og þeir segja, vel, það er ekki satt. 836 00:49:33,120 --> 00:49:35,740 Við erum að horfa á þýðanda, og þýðandinn ekki hafa allir línur af 837 00:49:35,740 --> 00:49:36,400 númer svona. 838 00:49:36,400 --> 00:49:40,540 Hann er eins og, OK, en hvað ert þú söfnun þýðanda með? 839 00:49:40,540 --> 00:49:44,810 Og þeir hugsa, og hann er, eins, vel, Ég er sá sem gaf þér þýðanda 840 00:49:44,810 --> 00:49:50,580 þú ert að nota til að safna saman í þýðanda, svo þú ert að setja saman þýðanda, sem 841 00:49:50,580 --> 00:49:56,390 sjálft er illgjarn, og mun brjóta innskráningu program. 842 00:49:56,390 --> 00:49:59,360 Svo í grundvallaratriðum, á þeim tímapunkti, það er engin leið að þú getur litið á upptökum 843 00:49:59,360 --> 00:50:02,450 kóða tenging program til að sjá hvað er rangt. 844 00:50:02,450 --> 00:50:04,220 Þú gætir ekki einu sinni líta í kóðann á þýðanda 845 00:50:04,220 --> 00:50:06,790 til að sjá hvað er rangt. 846 00:50:06,790 --> 00:50:11,940 >> Þú vildi þörf til að líta á vél kóða, raunverulegt tvöfaldur af 847 00:50:11,940 --> 00:50:16,760 saman þýðanda til að sjá, bíddu, þetta línum af kóða ætti ekki að vera hér. 848 00:50:16,760 --> 00:50:22,130 En Ken Thompson tók það einu skrefi lengra og sagði, jæja, það eru 849 00:50:22,130 --> 00:50:25,980 Þessir sérstöku forrit sem raunverulega hjálpa þú lesið tvöfaldur forrit, 850 00:50:25,980 --> 00:50:29,340 og svo ef einhver notað þessi forrit til lesa tvöfaldur, myndu þeir sjá þetta 851 00:50:29,340 --> 00:50:30,490 línur af kóða. 852 00:50:30,490 --> 00:50:34,020 Hann breytt þeim áætlunum að segja, allir rétt, ef þú ert að leita á 853 00:50:34,020 --> 00:50:38,460 þýðanda, ekki sýna þetta tiltekna sett af tvöfaldur. 854 00:50:38,460 --> 00:50:42,830 >> Svo þá þarftu að taka þessi skref lengra og grundvallaratriðum, sem gæti haft 855 00:50:42,830 --> 00:50:46,210 teknar mörgum stigum indirection, og á einhverjum tímapunkti, enginn er í raun 856 00:50:46,210 --> 00:50:47,990 að fara að stöðva. 857 00:50:47,990 --> 00:50:52,590 Svo að boðskapur sögunnar er, þú ert ekki að fara að skrifa 858 00:50:52,590 --> 00:50:54,340 Clang í þessum flokki. 859 00:50:54,340 --> 00:50:57,020 Þú ert að fara að nota klifra Clang mikið í þessum flokki. 860 00:50:57,020 --> 00:51:00,490 Fyrir alla sem þú þekkir, Clang er illgjarn forrit sem er sabotaging hverjum 861 00:51:00,490 --> 00:51:03,520 eitt forrit sem þú hefur nokkurn tíma saman. 862 00:51:03,520 --> 00:51:08,206 Og til að láta þér á það mjög líkur huga, sjá þig á miðvikudag. 863 00:51:08,206 --> 00:51:10,030 >> [Applause] 864 00:51:10,030 --> 00:51:12,935 >> Ræðumaður 2: Á næsta CS50. 865 00:51:12,935 --> 00:51:14,580 >> Ræðumaður 3: Ert þú ekki þora að segja það. 866 00:51:14,580 --> 00:51:15,930 Þú getur gert þetta. 867 00:51:15,930 --> 00:51:19,440 Þú hefur gert þetta áður, getur þú gert þetta í dag, getur þú gert þetta á morgun. 868 00:51:19,440 --> 00:51:20,930 Þú hefur verið að gera þetta í mörg ár. 869 00:51:20,930 --> 00:51:22,790 Bara fara þangað upp og gera þetta. 870 00:51:22,790 --> 00:51:24,310 Þú getur gert þetta. 871 00:51:24,310 --> 00:51:26,102 >> [Tónlist spila]