1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [Muusika mängib] 3 00:00:11,210 --> 00:00:12,100 >> ROB Boden: Olgu. 4 00:00:12,100 --> 00:00:15,620 Niisiis, esimene asi, esimene video alates tuttav nägu. 5 00:00:15,620 --> 00:00:22,080 6 00:00:22,080 --> 00:00:22,560 >> [VIDEO PLAYBACK] 7 00:00:22,560 --> 00:00:23,370 >> Olgu. 8 00:00:23,370 --> 00:00:27,150 See on CS50, ja see on alguse nädal kolm. 9 00:00:27,150 --> 00:00:29,980 Vabandust, et ma ei saa olla koos teiega täna, kuid lubage mul tutvustada 10 00:00:29,980 --> 00:00:32,880 CS50 enda Rob Boden. 11 00:00:32,880 --> 00:00:33,872 >> [END VIDEO PLAYBACK] 12 00:00:33,872 --> 00:00:39,340 >> [APLAUS JA Terviseks] 13 00:00:39,340 --> 00:00:41,277 >> ROB Boden: filmograafia sisse et video on fantastiline. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Hea küll. 16 00:00:47,770 --> 00:00:50,960 Nii et esimene, seal on teine ​​lõuna. 17 00:00:50,960 --> 00:00:52,330 See on homme kell 01:15. 18 00:00:52,330 --> 00:00:54,480 Pole lunch see reede. 19 00:00:54,480 --> 00:00:55,810 On koos Quora. 20 00:00:55,810 --> 00:01:00,190 Ja Tommy pole siin veel, aga üks inimesed on endine juht CF, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Nii et ta on tore poiss. 23 00:01:02,730 --> 00:01:04,819 Sa peaksid tulema. 24 00:01:04,819 --> 00:01:05,900 >> Hea küll. 25 00:01:05,900 --> 00:01:11,360 Nii eelmisel nädalal alustasime murdumas mida string tegelikult on. 26 00:01:11,360 --> 00:01:14,830 Me oleme tuntud juba algusest peale, et see märgijada. 27 00:01:14,830 --> 00:01:18,130 Kuid eelmisel nädalal, me süvenes asjaolu seda, mis on tegelikult jada 28 00:01:18,130 --> 00:01:22,110 tegelased, samuti on meil nüüd massiive tähemärki. 29 00:01:22,110 --> 00:01:26,450 Ja me teame, et string on massiiv märke, päris lõpus, 30 00:01:26,450 --> 00:01:30,920 meil see eriline null byte, see kurakriips 0, mis näitab, et lõpuks 31 00:01:30,920 --> 00:01:32,230 string. 32 00:01:32,230 --> 00:01:36,970 >> Ja nii string on massiiv märki, kuid meil on rohkem kui 33 00:01:36,970 --> 00:01:39,530 lihtsalt massiivi tähtedega saame massiivi iga 34 00:01:39,530 --> 00:01:40,890 tüüpi asi, mida me soovime. 35 00:01:40,890 --> 00:01:51,570 Niisiis, kui te mäletate eelmisel nädalal Ages programmi, David tutvustas 36 00:01:51,570 --> 00:01:53,560 tõesti kiiresti. 37 00:01:53,560 --> 00:01:57,010 Nii et esimene asi, mida me teeme, on küsi kasutaja täisarv, 38 00:01:57,010 --> 00:01:58,800 inimeste arvu ruumis. 39 00:01:58,800 --> 00:02:01,260 Kui meil on see täisarv, me kuulutab massiivi. 40 00:02:01,260 --> 00:02:02,890 Pange tähele, see sulg süntaks. 41 00:02:02,890 --> 00:02:04,540 Sa lähed harjuda. 42 00:02:04,540 --> 00:02:09,430 >> Nii et me kuulutab massiivi täisarvud kutsus vanuses ja on n 43 00:02:09,430 --> 00:02:12,080 täisarvu massiivi. 44 00:02:12,080 --> 00:02:16,480 Nii et see muster siin, see 4 int i on 0, i on väiksem kui n, i pluss 45 00:02:16,480 --> 00:02:20,580 pluss, et on ka saab olema mudel et sa saad väga harjunud. 46 00:02:20,580 --> 00:02:24,000 Kuna see on päris palju, kuidas sa oled alati saab Käi massiivid. 47 00:02:24,000 --> 00:02:26,330 Seega pidage meeles, et n on pikkus meie massiivi. 48 00:02:26,330 --> 00:02:32,120 Ja siin me oleme korduvalt esitanud vanusele isikule i ruumis. 49 00:02:32,120 --> 00:02:36,640 >> Pärast seda, kui me minna alla ja võtta mis tahes suvalise põhjusel me siis 50 00:02:36,640 --> 00:02:40,220 printida, kui vanad nad lähevad olema aasta pärast. 51 00:02:40,220 --> 00:02:49,980 Ja töötab see programm, olgem teha vanuses dot kaldkriipsuga aegade. 52 00:02:49,980 --> 00:02:53,010 Nii inimeste arvu ruumis, Ütleme et on kolm. 53 00:02:53,010 --> 00:02:59,880 Ja öelda, esimene inimene, kes on 13, järgmine on 26, ja viimane on 30. 54 00:02:59,880 --> 00:03:05,080 Nii siis ma Käi need kolm inimesed, printida välja 14, 27, ja 31. 55 00:03:05,080 --> 00:03:16,060 >> Seega pidage meeles, et kui me tunnistada massiivi suurusest n, indeksid, mis 56 00:03:16,060 --> 00:03:19,950 massiiv, massiivi väärtusi ja indeksid 0, 1, 2, kõik viis 57 00:03:19,950 --> 00:03:21,680 kuni n miinus 1. 58 00:03:21,680 --> 00:03:26,255 Nii et kui me ütlesime, oli kolm inimest ruumis, ja me paneme siia 59 00:03:26,255 --> 00:03:29,850 esimese iteratsiooni kaudu loop, i saab olema 0. 60 00:03:29,850 --> 00:03:31,650 Nii indeks 0. 61 00:03:31,650 --> 00:03:34,540 Oleme määrates esimese vanusest kasutaja sisestab. 62 00:03:34,540 --> 00:03:38,870 Siis järgmise üks, me sisenemist teine ​​n kasutaja sisestab ja 63 00:03:38,870 --> 00:03:40,580 Järgmise kahe, viimane n. 64 00:03:40,580 --> 00:03:44,200 >> Nii teate, et massiivi suurus kolm ei ole midagi 65 00:03:44,200 --> 00:03:46,040 indeksis kolm. 66 00:03:46,040 --> 00:03:49,036 See ei ole õige. 67 00:03:49,036 --> 00:03:50,250 Hea küll. 68 00:03:50,250 --> 00:03:55,136 Nii, minnes tagasi siin. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Nüüd, kui oleme tegelenud massiivid meil on mõned tuttavad. 71 00:04:01,590 --> 00:04:03,780 Nüüd me ei kavatse liikuda käsk argumente, mis saab olema 72 00:04:03,780 --> 00:04:05,890 päris oluline selle probleemi komplekt. 73 00:04:05,890 --> 00:04:09,670 >> Seega seni, kui olete tunnistada oma põhifunktsiooni, oleme 74 00:04:09,670 --> 00:04:11,230 ütles int main tühine. 75 00:04:11,230 --> 00:04:14,070 Nii void lihtsalt tähendab, et me ei paneks ühtegi 76 00:04:14,070 --> 00:04:16,440 argumente selle funktsiooni. 77 00:04:16,440 --> 00:04:19,190 Nüüd me näeme, et peamine võib võtta mõned argumendid. 78 00:04:19,190 --> 00:04:22,470 Siin me kutsume neid int argc ja string argv sulgudes. 79 00:04:22,470 --> 00:04:26,930 Sulgudes jällegi näitab et me tegeleme massiivid. 80 00:04:26,930 --> 00:04:31,850 Nii et siin, string argv sulgudes, me oleme tegelevad massiivi stringe. 81 00:04:31,850 --> 00:04:35,360 Nii argc, et läheb näidata kui palju argumente me oleme 82 00:04:35,360 --> 00:04:37,580 läbinud selle programmi. 83 00:04:37,580 --> 00:04:46,050 Ja näha, mida see tähendab, Paneme selle. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Nii siiani oleme joosta iga programmi nagu dot kaldkriipsuga aegade. 86 00:04:50,790 --> 00:04:55,250 Saame ka, mida käsurea, varem edasi argumendid, seega perspektiivis käsk 87 00:04:55,250 --> 00:04:56,550 argumente. 88 00:04:56,550 --> 00:04:59,760 Nii et esimene argument, tere. 89 00:04:59,760 --> 00:05:03,350 Nii et siin, argc oleks kolm. 90 00:05:03,350 --> 00:05:07,720 See arv on argumendid at käsureal. 91 00:05:07,720 --> 00:05:12,840 Argc on alati vähemalt 1, kuna täpp kaldkriips vanuses ise, loeb üks 92 00:05:12,840 --> 00:05:14,490 käsurea argumente. 93 00:05:14,490 --> 00:05:17,010 >> Siis tere on esimene. 94 00:05:17,010 --> 00:05:20,460 Kui dot kaldkriipsuga vanuses on nullis, siis Tema on esimene ja maailm 95 00:05:20,460 --> 00:05:22,830 teine ​​käsurea argument. 96 00:05:22,830 --> 00:05:29,490 Nii string argv, me näeme, sisaldab stringid, dot kaldkriipsuga 97 00:05:29,490 --> 00:05:33,830 vanuses, tere ja maailma. 98 00:05:33,830 --> 00:05:38,945 Ja Taaveti palve, me mängida video sisse, et. 99 00:05:38,945 --> 00:05:42,486 100 00:05:42,486 --> 00:05:43,890 >> [VIDEO PLAYBACK] 101 00:05:43,890 --> 00:05:46,240 >> -Siiani programmides me oleme kirjutanud, oleme kuulutada 102 00:05:46,240 --> 00:05:48,500 Peamine nagu int main tühine. 103 00:05:48,500 --> 00:05:51,170 Ja kõik see aeg, et tühine on lihtsalt on täpsustada, et 104 00:05:51,170 --> 00:05:54,430 programm ei võta käsurea argumente. 105 00:05:54,430 --> 00:05:57,750 Teisisõnu, kui kasutaja käivitab programmi, siis ta võib anda käsk 106 00:05:57,750 --> 00:06:01,710 argumente kirjutades täiendavaid sõnad või fraasid pärast programmi 107 00:06:01,710 --> 00:06:03,000 nimi käsureale. 108 00:06:03,000 --> 00:06:06,550 >> Noh, kui sa tahad oma programmi võtab käsurea argumente, ühe või 109 00:06:06,550 --> 00:06:10,540 rohkem selliseid sõnu, peame asendama tühine paar argumenti. 110 00:06:10,540 --> 00:06:12,200 Teeme seda. 111 00:06:12,200 --> 00:06:15,750 Kaasa CS50.h. 112 00:06:15,750 --> 00:06:19,360 Kaasa standard io.h. 113 00:06:19,360 --> 00:06:20,760 Int main. 114 00:06:20,760 --> 00:06:26,330 Ja nüüd, selle asemel void, ma lähen täpsustada int nimega argc ja 115 00:06:26,330 --> 00:06:28,780 massiivi stringe kutsutakse argv. 116 00:06:28,780 --> 00:06:31,820 Nüüd argc ja argv on lihtsalt konventsioonidega. 117 00:06:31,820 --> 00:06:34,000 >> Võinuks me neid argumente Kõige midagi tahame. 118 00:06:34,000 --> 00:06:37,630 Aga oluline on see, et argc on int kuna määratlusest, on 119 00:06:37,630 --> 00:06:41,360 läheb sisaldama argument loota, Sõnade arv kokku, et 120 00:06:41,360 --> 00:06:43,380 kasutaja on kirjutate tema kiire. 121 00:06:43,380 --> 00:06:47,910 argv, vahepeal argument vektor on läheb tegelikult array ladustamiseks 122 00:06:47,910 --> 00:06:52,020 kõik need sõnad, mis on kasutajal kirjutate tema kiire. 123 00:06:52,020 --> 00:06:54,500 >> Lähme edasi teha midagi nüüd ühe või enama nimetatud 124 00:06:54,500 --> 00:06:55,660 käsurea argumente. 125 00:06:55,660 --> 00:07:00,070 Eriti, lähme edasi ja print mis iganes sõna kasutaja liigid 126 00:07:00,070 --> 00:07:03,960 pärast programmi nimi käsureale. 127 00:07:03,960 --> 00:07:04,730 Sulg. 128 00:07:04,730 --> 00:07:06,240 Sulg. 129 00:07:06,240 --> 00:07:10,510 Printf protsenti s kurakriips ja koma. 130 00:07:10,510 --> 00:07:14,550 Ja nüüd ma pean ütlema printf millist väärtust pistik, et kohatäide. 131 00:07:14,550 --> 00:07:18,600 Ma tahan, et esimene sõna, mis on kasutajal tipitud pärast programmi nimi, 132 00:07:18,600 --> 00:07:23,130 ja nii ma lähen täpsustada argv bracket 1 lähedal 133 00:07:23,130 --> 00:07:24,830 sulgudes semikooloniga. 134 00:07:24,830 --> 00:07:27,290 >> Nüüd, miks osad 1 ja mitte sulg 0? 135 00:07:27,290 --> 00:07:30,990 Noh, tuli välja, salvestatakse automaatselt aastal argv 0 saab olema 136 00:07:30,990 --> 00:07:32,620 Programmi tegelik nimi. 137 00:07:32,620 --> 00:07:36,180 Nii et esimene sõna, et kasutaja tüübid pärast programmi nimi on, mida 138 00:07:36,180 --> 00:07:38,990 Tavapäraselt läheb salvestatud argv 1. 139 00:07:38,990 --> 00:07:42,380 Olgem nüüd koguda ja käivitada see programm. 140 00:07:42,380 --> 00:07:47,780 >> Tee argv 0, dot kaldkriipsuga argv 0. 141 00:07:47,780 --> 00:07:50,520 Ja nüüd sõna nagu tere. 142 00:07:50,520 --> 00:07:51,670 Enter. 143 00:07:51,670 --> 00:07:53,520 Ja seal on meil siis, tere. 144 00:07:53,520 --> 00:07:55,750 >> [END VIDEO PLAYBACK] 145 00:07:55,750 --> 00:07:57,000 >> ROB Boden: Olgu. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Sulgege see. 148 00:08:01,230 --> 00:08:16,730 Nii võttes pilk, et programm, mis me lihtsalt tutvustas meile hästi, lihtsalt 149 00:08:16,730 --> 00:08:24,710 näidata, kui me printida argv 0, teha, nüüd Mis on see, argv 0, dot kaldkriipsuga argv 0. 150 00:08:24,710 --> 00:08:30,440 Niisiis, nagu oodati, et see prindib välja Programmi nimi, sest argv 0 on 151 00:08:30,440 --> 00:08:32,970 alati saab olema Programmi nimetus. 152 00:08:32,970 --> 00:08:35,640 Aga teeme midagi veidi huvitavamaks. 153 00:08:35,640 --> 00:08:42,080 >> Nii et probleem komplekti, saate tutvustatakse seda funktsiooni, atoi. 154 00:08:42,080 --> 00:08:44,440 Niisiis, mida me kasutame atoi eest? 155 00:08:44,440 --> 00:08:48,550 See saab teisendada string täisarv. 156 00:08:48,550 --> 00:08:53,280 Nii et kui ma pass string, üks, kaks, kolm, et atoi, et vilja, et 157 00:08:53,280 --> 00:08:56,910 täisarvuni, üks, kaks, kolm. 158 00:08:56,910 --> 00:09:01,480 Nii et me ei kavatse muuta esimese käsureaargumenti täisarv, 159 00:09:01,480 --> 00:09:05,690 ja siis lihtsalt printida, et täisarv. 160 00:09:05,690 --> 00:09:09,680 >> Ühesõnaga, me oleme omamoodi reimplementing getint, lihtsalt 161 00:09:09,680 --> 00:09:12,350 täisarv sisestatakse käsk line asemel programmis 162 00:09:12,350 --> 00:09:14,560 interaktiivselt. 163 00:09:14,560 --> 00:09:23,170 Niisiis, tegemist argv 0, teeme see siin, ja sulgege see. 164 00:09:23,170 --> 00:09:27,670 Nii töötab argv 0 ja olgem sisestada täisarv, üks kaks kolm neli üks kaks. 165 00:09:27,670 --> 00:09:30,840 Nii, et see prinditakse täisarv, üks kaks kolm neli üks kaks. 166 00:09:30,840 --> 00:09:35,500 Leidub nüansid et atoi et See peatab hooliv midagi 167 00:09:35,500 --> 00:09:39,040 kaugemale kehtiv numbrist, kuid see ei ole oluline. 168 00:09:39,040 --> 00:09:42,870 >> Mis sa arvad, juhtub kui ma seda teen? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Segmenteerimine süü. 171 00:09:47,050 --> 00:09:50,410 Miks see nii on? 172 00:09:50,410 --> 00:09:56,060 Kui te vaatate tagasi meie programmi me oleme konverteeriva argv 1 esimene argument 173 00:09:56,060 --> 00:09:59,610 pärast programmi nimi, et täisarv. 174 00:09:59,610 --> 00:10:03,350 Aga ei ole argument vastu pärast programmi nimi. 175 00:10:03,350 --> 00:10:08,060 Nii et siin me näeme, et see on lollakas programm, sest kui me üritame seda juhtida 176 00:10:08,060 --> 00:10:10,530 ilma argumente, see lihtsalt krahhi. 177 00:10:10,530 --> 00:10:16,950 >> Nii üks ühine muster näete on midagi, kui argc on vähem 178 00:10:16,950 --> 00:10:21,100 kui kaks, mis näitab, et seal ei olnud vähemalt programmi nimi ja 179 00:10:21,100 --> 00:10:29,100 Esimene argument, siis me teeme midagi nagu printf, ei piisa 180 00:10:29,100 --> 00:10:31,190 käsurea argumente. 181 00:10:31,190 --> 00:10:33,170 See ilmselt ei ole hea printida, see on ilmselt midagi, nagu 182 00:10:33,170 --> 00:10:35,440 tuleb sisestada täisarv at käsureal. 183 00:10:35,440 --> 00:10:37,450 Ma lihtsalt lõpetada seal. 184 00:10:37,450 --> 00:10:39,600 Ja siis tagasi 1. 185 00:10:39,600 --> 00:10:44,740 Nii mäleta et meie lõpp programm, kui me tagasi 0, et mingisugune 186 00:10:44,740 --> 00:10:47,060 näitab edu. 187 00:10:47,060 --> 00:10:50,940 Ja peamine ka automaatselt 0, kui sa seda ei tee. 188 00:10:50,940 --> 00:10:55,800 >> Nii et siin me oleme virittämistä 1 näitamiseks et see ei ole edu. 189 00:10:55,800 --> 00:11:01,000 Ja siis saad tagasi, mida tahad, lihtsalt, 0 näitab, edu ja 190 00:11:01,000 --> 00:11:03,390 midagi näitab riket. 191 00:11:03,390 --> 00:11:04,855 Teeme käivitada versioon asjad. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Nüüd, kui me ei sisesta käsurida argument, siis see õigesti öelda 194 00:11:16,600 --> 00:11:18,290 meile ei piisa käsurea. 195 00:11:18,290 --> 00:11:20,610 Ei lõpeta lause. 196 00:11:20,610 --> 00:11:24,950 Sest kui me tegelikult andke seda üks, see võib programm lõpule viia. 197 00:11:24,950 --> 00:11:27,920 Nii see on, kuidas sa kasutad argc sisse et kontrollida arvu 198 00:11:27,920 --> 00:11:30,630 käsurea argumente, mis antakse tegelikult edasi. 199 00:11:30,630 --> 00:11:39,360 >> Seega teeme seda programmi veidi rohkem keeruline, ja pilk teine 200 00:11:39,360 --> 00:11:42,180 iteratsiooni asju. 201 00:11:42,180 --> 00:11:46,310 Nüüd, me mitte ainult printimist kõigepealt käsurea argument. 202 00:11:46,310 --> 00:11:51,210 Siin me iterating alates int i võrdsete 0, i on väiksem kui argc, i pluss 203 00:11:51,210 --> 00:11:55,280 pluss, ja trükkimine argv, indeks i. 204 00:11:55,280 --> 00:11:59,300 Nii et see muster jällegi see on sama mustriga nagu enne, välja arvatud asemel 205 00:11:59,300 --> 00:12:02,600 helistaja muutuja n, mida me kasutame argc. 206 00:12:02,600 --> 00:12:09,520 >> Nii et see on iterating üle iga indeks massiivi ning iga printimist 207 00:12:09,520 --> 00:12:11,910 element selles massiivis. 208 00:12:11,910 --> 00:12:20,300 Ja nii, kui võtame selle programmi, noh, Ma ei sisestanud ühtegi käsurida 209 00:12:20,300 --> 00:12:22,540 argumente, nii see lihtsalt pildid programmi nimi. 210 00:12:22,540 --> 00:12:26,053 Kui ma sisestada hunnik asju, siis see printida üks iga oma rida. 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 Võtame selle ühe sammu edasi. 214 00:12:34,770 --> 00:12:38,890 Ja printimise asemel iga argument oma rida, lähme printida iga 215 00:12:38,890 --> 00:12:42,590 märgi iga argument oma rida. 216 00:12:42,590 --> 00:12:46,700 Seega pidage meeles, et argv on massiivi stringe. 217 00:12:46,700 --> 00:12:50,960 Mis on string, kuid array tähemärki? 218 00:12:50,960 --> 00:12:57,140 See tähendab, et argv on tõesti array array tähemärki. 219 00:12:57,140 --> 00:13:04,920 Nii ära, et eirame seda nüüd. 220 00:13:04,920 --> 00:13:08,190 Lihtsalt kaaluma string argv 0. 221 00:13:08,190 --> 00:13:14,170 >> Nii et kui me tahame, et tuua iga iseloomu argv 0 omal rida, siis ma tahan 222 00:13:14,170 --> 00:13:19,500 teha muster me oleme harjunud, i väiksem pikkus massiivi 223 00:13:19,500 --> 00:13:23,990 mis siin on strlen kohta, mis on mitte seda, mida ma tahan teha, string 224 00:13:23,990 --> 00:13:26,450 s võrdub argv 0. 225 00:13:26,450 --> 00:13:30,390 Niisiis i on väiksem kui pikkus meie massiiv, mis antud juhul on massiiv 226 00:13:30,390 --> 00:13:34,410 märke, i pluss pluss. 227 00:13:34,410 --> 00:13:41,040 Ja nii, nagu me nägime eelmisel nädalal, see on ideaalne kui astume et strlen väljaspool 228 00:13:41,040 --> 00:13:45,210 seisundi, kuna n on plaanis lisada strlen s iga kord kui läheme 229 00:13:45,210 --> 00:13:47,720 silmusest läbi, ja see on ei kavatse olla muutuv. 230 00:13:47,720 --> 00:13:50,230 Nii me seada võrdne n siia. 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 Nüüd, me iterating üle iga indeks array. 234 00:14:01,320 --> 00:14:05,630 Ja nii, kui me tahame, et printida iga märk, et massiivi protsenti c on 235 00:14:05,630 --> 00:14:06,880 lipu tahame kasutada jaoks märke. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 Ja nüüd sulg i saab olema string, indeks iseloomu i, nii et kui 238 00:14:19,770 --> 00:14:20,970 string oli tere. 239 00:14:20,970 --> 00:14:27,530 siis s 0 saab olema h, s sulg 1 on e, ja nii edasi. 240 00:14:27,530 --> 00:14:30,800 >> Nüüd me tahame ühendada need kaks asja. 241 00:14:30,800 --> 00:14:35,440 Me tahame, et trükkida iga märk iga käsurea argument. 242 00:14:35,440 --> 00:14:38,950 Nii et me ei kavatse olla nested loop. 243 00:14:38,950 --> 00:14:47,480 Ja tavaliselt esimene counter on i, järgmine saab olema j, n 244 00:14:47,480 --> 00:14:54,450 on strlen of argv i, i on väiksem kui n, i pluss pluss. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 Ja nüüd selle asemel trükkida argv i nii, argv sulg i läheb index - 247 00:15:06,870 --> 00:15:14,280 et see saab olema i-nda käsurea argument, argv i, j läheb 248 00:15:14,280 --> 00:15:16,925 olema nda iseloomu i-nda argumendi. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Ma vabaneda sellest siin nüüd kuna me seda ellu, et loop. 251 00:15:24,810 --> 00:15:33,900 Nii vastab string s võrdsete argv i ja siis s sulg j. 252 00:15:33,900 --> 00:15:36,980 >> Noh, meil ei ole vaja deklareerida Selle muutuja s. 253 00:15:36,980 --> 00:15:44,530 Selle asemel, me lihtsalt ühendada need kahe sisse, mis meil oli, ARGV i, j. 254 00:15:44,530 --> 00:15:45,780 >> SPEAKER 1: [kuuldamatu]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB Boden: Hea kõne. 257 00:15:49,680 --> 00:15:52,936 Nii et see on katki. 258 00:15:52,936 --> 00:15:55,510 Kui ma tegelikult jooksis ta, oleksime on seda mõistnud. 259 00:15:55,510 --> 00:16:01,210 Nii counter hoolin Käesoleva eelkõige 260 00:16:01,210 --> 00:16:05,410 silmus on j, iteraatoris. 261 00:16:05,410 --> 00:16:08,560 Nii et sa oleks sattunud küsimusi ilmselt lõputu silmuse, kui me 262 00:16:08,560 --> 00:16:09,540 ei olnud fikseeritud, et. 263 00:16:09,540 --> 00:16:12,220 Sellepärast me ka räägime umbes silumine täna. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Teeme programmi käivitada. 266 00:16:15,240 --> 00:16:21,200 Ja olgem tegelikult lisada eraldi printf siin, et lihtsalt printida 267 00:16:21,200 --> 00:16:27,480 teine ​​rida, sest see tähendab, et kui me käivitada programmi, siis tuleb tühi 268 00:16:27,480 --> 00:16:31,830 line vahel iga iseloomu iga käsurea argument. 269 00:16:31,830 --> 00:16:33,448 Noh, eks me näeme, mida see tähendab. 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 Sain mõned bug. 273 00:16:39,870 --> 00:16:42,860 Viga vaikimisi kuulutatakse raamatukogu funktsioon strlen. 274 00:16:42,860 --> 00:16:51,630 >> Nii läheb tagasi meie programmi I unustasin hash sisaldama string. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Nii string.h saab olema päisefailist mis kinnitab 277 00:16:57,730 --> 00:16:58,980 funktsioon strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK, see on koondatud. 280 00:17:06,060 --> 00:17:09,109 Nüüd saab kasutada seda. 281 00:17:09,109 --> 00:17:10,930 Nii lihtsalt see. 282 00:17:10,930 --> 00:17:17,790 See saab välja printida meie Programmi nimi, tere. 283 00:17:17,790 --> 00:17:23,510 See saab printida iga asi, iga iseloomu, on oma rida. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Nii et tegelikult on seda üks samm edasi. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Ja selle asemel string, olgem mõtle, kui me rakendada oma 288 00:17:39,700 --> 00:17:41,420 strlen funktsioon. 289 00:17:41,420 --> 00:17:45,600 Nii et ma kohe annan funktsioon allkirja. 290 00:17:45,600 --> 00:17:52,900 Teeme kõne my_strlen, ja see on kavatseme stringi argument, 291 00:17:52,900 --> 00:17:57,220 ja me ootame, et naasta pikkus, et string. 292 00:17:57,220 --> 00:18:03,430 Nii, kus see kutt? 293 00:18:03,430 --> 00:18:04,990 Jah. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Nii mäletan varasemast slaidile oli ka eelmisel nädalal, et 296 00:18:12,900 --> 00:18:18,890 array tähemärki hästi, string, ütleme, et see on meie string s. 297 00:18:18,890 --> 00:18:29,870 Nii et kui te ei string, tere siis H-E-L-L-O, mälu, mis läheb 298 00:18:29,870 --> 00:18:35,610 olema, ja siis see kurakriips 0 iseloomu. 299 00:18:35,610 --> 00:18:39,170 >> Niisiis, kuidas me saame pikkus s? 300 00:18:39,170 --> 00:18:43,190 Trikk on otsinud seda loks 0 iseloomu, see null 301 00:18:43,190 --> 00:18:44,380 terminaator. 302 00:18:44,380 --> 00:18:50,270 Nii algoritmi läheb olema näiteks mõne 303 00:18:50,270 --> 00:18:51,510 piisavalt märke, mis - 304 00:18:51,510 --> 00:18:56,180 ajame selle poolt on mõningad counter, olgem nimetame seda int pikkus. 305 00:18:56,180 --> 00:19:00,060 Niisiis, alates siin, me oleme läheb Käi meie string. 306 00:19:00,060 --> 00:19:04,100 >> Nii et esimene märk, see on H, ja see ei ole tagurpidi kaldkriipsu 0, seega 307 00:19:04,100 --> 00:19:05,170 pikkus on 1. 308 00:19:05,170 --> 00:19:08,050 Käi järgmine sümbol, E, ja see ei ole Längkriipsu 0. 309 00:19:08,050 --> 00:19:09,630 Pikkus on 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 Ja lõpuks jõuame kurakriips 0, ja nii, et vahend, noh, 314 00:19:16,690 --> 00:19:17,780 Selle stringi üle. 315 00:19:17,780 --> 00:19:20,130 Teeme tagasi 5. 316 00:19:20,130 --> 00:19:33,630 >> Nii tegelikult rakendatakse, et esiteks minu n pikkus võrdub 0, minu paremal käel. 317 00:19:33,630 --> 00:19:36,088 Ja me ei kavatse kinnitada, - 318 00:19:36,088 --> 00:19:38,000 >> SPEAKER 1: [kuuldamatu] 319 00:19:38,000 --> 00:19:38,640 >> ROB Boden: Oh, tulistada. 320 00:19:38,640 --> 00:19:39,870 Hea kõne. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Nii n pikkus on 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Nüüd, kui te pikkus ei võrdne ja siis kurakriips 0. 325 00:19:58,310 --> 00:20:04,660 Seega pidage meeles, see kurakriips 0, siis on tegelikku olemust, ja see näitab, 326 00:20:04,660 --> 00:20:05,820 stringi lõpuni. 327 00:20:05,820 --> 00:20:09,850 Just nagu ka kurakriips n on tegelik iseloom. 328 00:20:09,850 --> 00:20:14,040 Längkriipsu 0 läheb näidata lõpuks meie string. 329 00:20:14,040 --> 00:20:15,414 Ma ei taha panna, et on olemas. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Ja kui te indekseeritud pikkus ei ole võrdne null terminaator, siis 332 00:20:25,620 --> 00:20:27,130 me lihtsalt juurdekasvu pikkus. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Niisiis, lõpus meie programmi pikkus on lõpuks läheb 335 00:20:34,880 --> 00:20:37,610 olema 5 antud juhul. 336 00:20:37,610 --> 00:20:39,210 Ja me lihtsalt tagasi pikkus. 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 Nüüd siin, ma ei teha my_strlen. 340 00:20:48,290 --> 00:20:50,700 Olgem kompileerida veenduda kõik jookseb sujuvalt. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Kas ma teen 2? 343 00:20:58,210 --> 00:21:00,565 Või oli see 1? 344 00:21:00,565 --> 00:21:01,940 See peaks seda tegema. 345 00:21:01,940 --> 00:21:02,690 Hea küll. 346 00:21:02,690 --> 00:21:08,490 Nii et see on argv 2. 347 00:21:08,490 --> 00:21:11,585 Töötab nii nagu oodatud, kuigi oli see, et üks ma tegin seda? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Jah. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 See versioon asjad ei ole printf uus liin pärast, kuid see 352 00:21:21,820 --> 00:21:22,910 ei tee mingit vahet. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Nii töötas ootuspäraselt. 355 00:21:25,780 --> 00:21:34,750 >> Nüüd saame isegi ühendada see üks samm kaugemale, kui teade siit, noh, 356 00:21:34,750 --> 00:21:38,920 Esiteks me haarates strlen of argv i, ja siis me iterating üle 357 00:21:38,920 --> 00:21:41,450 iga märk, et string. 358 00:21:41,450 --> 00:21:47,480 Selle asemel, et teeme seda, mis siis, kui me lihtsalt ühendada see loogika ootab 359 00:21:47,480 --> 00:21:50,740 kuni me hit kurakriips 0 õigus sellesse kohta loop? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Nii itereerima samas argv i, j ei ei võrdu kurakriips 0. 362 00:22:07,490 --> 00:22:10,680 Teeme kestab see esimene. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Hea küll. 365 00:22:21,180 --> 00:22:27,655 Nii et siin, see tingimus on öelda - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 olgem selge, et. 368 00:22:40,060 --> 00:22:49,140 Nüüd, see olgu meie argv. 369 00:22:49,140 --> 00:22:55,290 Nii et kui ma jooksin, et programm enne, argv on massiivi stringe. 370 00:22:55,290 --> 00:23:03,100 Ja nii, kui ma saan seda dot kaldkriipsuga argv 2, tere, siis argv 371 00:23:03,100 --> 00:23:07,650 iseenesest on pikkus 3 jaoks argv null, tere ja maailma. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Ja sees kummagi indeksid on ise massiiv, kus see saab olema 374 00:23:19,660 --> 00:23:23,780 dot, see saab olema kaldkriips, ma ei tea kui see oli õiges suunas, I 375 00:23:23,780 --> 00:23:25,680 ei usu, et see oli. 376 00:23:25,680 --> 00:23:30,110 -R-V kriips, on vaja rohkem ruumi. 377 00:23:30,110 --> 00:23:32,570 Olgem lõigatakse see massiiv. 378 00:23:32,570 --> 00:23:38,230 -R-V kriips 0 ja seejärel kurakriips 0. 379 00:23:38,230 --> 00:23:43,160 Ja siis koristamata on tere. 380 00:23:43,160 --> 00:23:45,910 Oletame, H-E kurakriips 0. 381 00:23:45,910 --> 00:23:51,130 Ja lõpuks, W-O kurakriips 0. 382 00:23:51,130 --> 00:23:59,730 >> Nii algoritm, et me lihtsalt kirjutas, nested jaoks silmuseid, mida nad 383 00:23:59,730 --> 00:24:07,321 teeme, peame me ennekõike võidelda i ja siis j. 384 00:24:07,321 --> 00:24:15,206 See oleks lihtsam koodi ekraan, Lähme tagasi selle. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Nii teate, et ma ei iteraatoris see iterating üle iga käsk 387 00:24:24,600 --> 00:24:25,610 line argument. 388 00:24:25,610 --> 00:24:28,870 Ja j on iteraatoris iterating üle iga märk, et 389 00:24:28,870 --> 00:24:30,410 käsurea argument. 390 00:24:30,410 --> 00:24:46,755 Nii et mida see sisemine printf teeb on meil 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, kuid nüüd, argv 0 7 läheb 392 00:24:58,680 --> 00:25:00,670 võrdne kurakriips 0. 393 00:25:00,670 --> 00:25:05,730 >> Siis me väljuda, et loop, ja nüüd ma korratakse kuni 1. 394 00:25:05,730 --> 00:25:10,910 Ja nüüd me läheme print argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 Noh, kuna ma lõikasin hello lühike, argv 1 2 taas läheb 396 00:25:17,040 --> 00:25:18,170 kurakriips 0. 397 00:25:18,170 --> 00:25:25,050 Ja nii juurdekasvu i ja jätkata ja nii edasi, kuni me välja printida kõik 398 00:25:25,050 --> 00:25:28,580 maailmas, ja need on kolm käsurea argumente ja me väljuda 399 00:25:28,580 --> 00:25:31,670 äärepoolseimate loop, ja lõpeta meie programm. 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 >> Teeme siia tagasi tulla. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Nii saate omandada mõned tuttavad käsurea argumente selle 406 00:25:52,370 --> 00:25:54,460 eriti lahendamist. 407 00:25:54,460 --> 00:25:56,630 >> Nüüd, silumine. 408 00:25:56,630 --> 00:26:01,680 Nii siis ilmselt on juba pidanud tegema mõned silumine oma eelmist 409 00:26:01,680 --> 00:26:03,120 lahendamist. 410 00:26:03,120 --> 00:26:08,420 Ja üks väga lihtne viis silumine, Esiteks vaatame lollakas programmi. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Noh, jalgsi läbi selle programmi, me küsida kasutaja 413 00:26:23,830 --> 00:26:29,350 täisarv, ostke et täisarv, ja siis, omavoliliselt on meil samas silmus, mis 414 00:26:29,350 --> 00:26:32,280 lihtsalt läheb kahandab i kuni see on võrdne 10. 415 00:26:32,280 --> 00:26:35,820 Oletame, et ma sisenemist täisarv suurem kui 10. 416 00:26:35,820 --> 00:26:38,700 Nii kahandab i kuni see on võrdne 10. 417 00:26:38,700 --> 00:26:42,630 >> Ja siis on meil veel kuigi loop et kuigi ma ei ole võrdne 0, me oleme 418 00:26:42,630 --> 00:26:44,540 läheb kahandab i poolt 3. 419 00:26:44,540 --> 00:26:49,790 Nii et kui näete kavatsuste bug siin on see, et see siis kahandab I 420 00:26:49,790 --> 00:26:57,010 olema 10 ja siis kui silmus dekremendi i 10, 7, 4, 1, 421 00:26:57,010 --> 00:27:02,880 Negatiivse 2, negatiivsete 5, ja nii edasi, negatiivne lõpmatus, sest ma 422 00:27:02,880 --> 00:27:05,920 tegelikult kunagi võrdne 0. 423 00:27:05,920 --> 00:27:08,610 Ja siis lõpuks on see programm, meil foo funktsioon, mis on 424 00:27:08,610 --> 00:27:12,130 toimub välja printida, et i. 425 00:27:12,130 --> 00:27:16,520 >> Nii et see on lühike ja väga väikese programmi ja viga on ilmne, 426 00:27:16,520 --> 00:27:18,790 eriti kui ma lihtsalt räägitakse, mis viga oli. 427 00:27:18,790 --> 00:27:24,840 Aga tahtlus siin on, noh, see võiks tegelikult välja näeb mõne oma 428 00:27:24,840 --> 00:27:30,040 lahendusi ahne viimasest lahendamist, ja võib-olla sa ei pea 429 00:27:30,040 --> 00:27:32,800 mõned lõputult oma programmi, ja sul pole aimugi, 430 00:27:32,800 --> 00:27:34,100 Mis põhjustab seda. 431 00:27:34,100 --> 00:27:38,690 Nii väga kasulik silumine tehnika on lihtsalt lisada printfs 432 00:27:38,690 --> 00:27:40,180 kogu oma koodi. 433 00:27:40,180 --> 00:27:49,200 >> Nii et siin ma tahan printf väljaspool Esimene samas silmus. 434 00:27:49,200 --> 00:27:53,155 Ja siin ma tahan printf, ja ma lihtsalt printida i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Ma isegi ei esimene samas silmus, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Õues, teine ​​samas silmus. 439 00:28:09,040 --> 00:28:12,170 Taas printida sees siit väärtus i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 Ja olgem käivitada. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Nii dot kaldkriipsuga siluda. 444 00:28:24,800 --> 00:28:25,610 Sisestage täisarv. 445 00:28:25,610 --> 00:28:28,150 Teeme 13. 446 00:28:28,150 --> 00:28:28,760 Ja buumi. 447 00:28:28,760 --> 00:28:33,300 Me näeme, et meil on lõpmatu silmukoiminen sees teise samas silmus. 448 00:28:33,300 --> 00:28:36,305 Nüüd me teame, mis viga on. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Aga printf silumine on täiesti suurepärane, aga kui teie programmi saada 451 00:28:45,610 --> 00:28:50,560 pikem ja keerulisem on keerukamaid lahendusi 452 00:28:50,560 --> 00:28:51,705 saada asjad töötavad. 453 00:28:51,705 --> 00:28:52,955 Teeme kõrvaldada kõik need printfs. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 Ja olgem veendumaks, et ma ei teinud seda midagi katki. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Nii programmi me tutvustada nimetatakse 458 00:29:14,180 --> 00:29:16,715 GDB, GNU siluri. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Noh, tegelikult, olgem eemaldada silumise jaoks teine, ja teha silumise uuesti. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Noh, tegelikult esimene, hea õppetund käsurea argumente. 463 00:29:34,440 --> 00:29:37,780 Pange tähele, et see rõkkama käsk, mis on koostamise kõik on möödas 464 00:29:37,780 --> 00:29:41,300 käsurida, need käsurea argumente. 465 00:29:41,300 --> 00:29:46,250 Niisiis, kuidas täpselt ei kavatse olla kasutades käsurea argumente, nagu me 466 00:29:46,250 --> 00:29:51,500 oli enne, ja kui te sisse Erksa 2, mis on, kuidas rõkkama kasutab neid. 467 00:29:51,500 --> 00:30:00,070 >> Nii teate, et see esimene lipp, kriips ggdb3, mida see ütleb on, rõkkama, 468 00:30:00,070 --> 00:30:03,790 sa peaksid koostama selle faili tahtlus, et me lõpuks 469 00:30:03,790 --> 00:30:05,380 vaja siluda ta. 470 00:30:05,380 --> 00:30:13,840 Nii kaua, kui teil on, et lipp, siis saame GDB siluda. 471 00:30:13,840 --> 00:30:17,380 Ja see saab avada GNU siluri. 472 00:30:17,380 --> 00:30:22,920 >> Seega on palju käske et teil on vaja harjuda. 473 00:30:22,920 --> 00:30:27,100 Esiteks üks, mis teil ilmselt kohe on vaja joosta. 474 00:30:27,100 --> 00:30:28,200 Niisiis, mida juhivad teha kavatsed? 475 00:30:28,200 --> 00:30:30,910 See saab alustada oma programmi. 476 00:30:30,910 --> 00:30:36,180 Nii kestab, alates programmi, küsib meilt täisarv, 13. 477 00:30:36,180 --> 00:30:39,170 Ja siis on see lõpmatu silmukoiminen kui eeldatakse, välja arvatud I eemaldatud 478 00:30:39,170 --> 00:30:40,500 printfs, et me isegi ei näe seda. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Lahkutakse tavaliselt. 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 On võimalik, et see on pakitud kõik teistpidi tagasi - ignoreerides seda. 484 00:30:53,640 --> 00:30:55,170 Oletame, et tal ei väljuda tavaliselt. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 On keeruline vastust. 487 00:31:03,370 --> 00:31:07,890 >> Nüüd, see ei ole väga kasulik. 488 00:31:07,890 --> 00:31:11,480 Nii lihtsalt töötab meie programmi sees see siluri ei aita meid igal 489 00:31:11,480 --> 00:31:15,610 Muide, kuna me oleks lihtsalt teha dot kärpida siluda välistest GDB. 490 00:31:15,610 --> 00:31:21,250 Nii üks käsk, mis Sa ilmselt - 491 00:31:21,250 --> 00:31:22,970 ja ma lõpetan selle. 492 00:31:22,970 --> 00:31:25,850 Kontroll-d või sulgeda, nii töö. 493 00:31:25,850 --> 00:31:29,550 Teeme avada see uuesti. 494 00:31:29,550 --> 00:31:31,130 >> Teine käsk, mis on teil tõenäoliselt kohe taha 495 00:31:31,130 --> 00:31:33,600 harjuda ei Break. 496 00:31:33,600 --> 00:31:37,120 Nii et me murrame peamiste nüüd, ja siis ma seletan seda. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Noh, siin näeme me seada murdepunkti selles rida debug.c. 499 00:31:46,370 --> 00:31:50,160 Mis siis break tähendab, et kui ma kirjuta run programm läheb 500 00:31:50,160 --> 00:31:53,560 jätkab sõitu kuni I hit murdepunkti. 501 00:31:53,560 --> 00:31:59,390 Nii et kui ma tabanud perspektiivis programm käivitub, ja siis see puruneb, niipea kui see 502 00:31:59,390 --> 00:32:01,940 siseneb põhiülesanne. 503 00:32:01,940 --> 00:32:06,930 Break peamine saab olema midagi sa päris sageli teha. 504 00:32:06,930 --> 00:32:11,340 >> Ja nüüd, et tutvustada teile et mõned käsud. 505 00:32:11,340 --> 00:32:14,330 Pange tähele siin, et see on selge, et me purunesid liin 11, mis on 506 00:32:14,330 --> 00:32:16,230 printf sisestada täisarv. 507 00:32:16,230 --> 00:32:21,260 Nii käsk Järgmine saab olema, kuidas me minna järgmisele rida koodi. 508 00:32:21,260 --> 00:32:24,810 See läheb meile võimaluse astuda meie programmi rida-realt. 509 00:32:24,810 --> 00:32:26,260 Nii et järgmine. 510 00:32:26,260 --> 00:32:29,820 >> Nüüd joon 12, me saada täisarv. 511 00:32:29,820 --> 00:32:30,450 Next. 512 00:32:30,450 --> 00:32:34,290 Ja kui sa lihtsalt vajuta Enter uuesti, siis see Redo viimane asi, mida tegin. 513 00:32:34,290 --> 00:32:36,480 Nii et ma ei pea kirjutama Järgmine iga kord. 514 00:32:36,480 --> 00:32:40,100 Nii sisestada täisarv, 13. 515 00:32:40,100 --> 00:32:46,940 Nüüd, joon 14, kui i on suurem kui 10, ja ma teen järgmine. 516 00:32:46,940 --> 00:32:48,685 Ja me näeme, et me läheme kahandab i. 517 00:32:48,685 --> 00:32:50,210 Nii et me läheme kahandab i uuesti. 518 00:32:50,210 --> 00:32:53,620 >> Nüüd, teise kasulik käsk Prindi. 519 00:32:53,620 --> 00:32:55,750 Nii Print läheb välja trükkida väärtus muutuja. 520 00:32:55,750 --> 00:32:57,825 Toome välja väärtus muutuja i. 521 00:32:57,825 --> 00:32:58,705 Olgem printida i. 522 00:32:58,705 --> 00:33:00,910 See saab öelda, et ma ei 11. 523 00:33:00,910 --> 00:33:03,330 Nüüd Järgmine kord, kui i on suurem kui 10. 524 00:33:03,330 --> 00:33:05,590 Nii et ma ikkagi suurem kui 10, kuna see on 11. 525 00:33:05,590 --> 00:33:06,920 i miinus miinus. 526 00:33:06,920 --> 00:33:08,250 Olgem printida i uuesti. 527 00:33:08,250 --> 00:33:10,950 Nagu oodatud, on 10. 528 00:33:10,950 --> 00:33:12,510 >> Nüüd kõrval. 529 00:33:12,510 --> 00:33:16,250 See läheb tagasi tingimusel, i suurem kui 10, kuid mul on nüüd 10, nii et 530 00:33:16,250 --> 00:33:20,040 see ei ole suurem kui 10, nii et ootame see kukkuda samas silmus. 531 00:33:20,040 --> 00:33:22,220 Ja nüüd me oleme allpool seda rida koodi. 532 00:33:22,220 --> 00:33:28,750 Ja teine ​​käsk List, lihtsalt läheb kuvada eelmise ja järgmise 533 00:33:28,750 --> 00:33:31,240 paar rida koodi, on Kui sa kaotasid ise. 534 00:33:31,240 --> 00:33:35,420 Nii et me lihtsalt lahkus see samas loop, ja nüüd oleme jõudnud selle 535 00:33:35,420 --> 00:33:37,080 samas loop, joon 18. 536 00:33:37,080 --> 00:33:39,860 Niisiis, kui ma ei võrdu 0. 537 00:33:39,860 --> 00:33:46,570 Ja seejärel, i võrdub i miinus 3, ja me teate, see muudkui läheb. 538 00:33:46,570 --> 00:33:48,270 Ja meil on võimalik printida i. 539 00:33:48,270 --> 00:33:49,990 >> Iga käsu omamoodi on otseteed. 540 00:33:49,990 --> 00:33:51,720 Seega p on lühike Print. 541 00:33:51,720 --> 00:33:53,400 Seega saame p i. 542 00:33:53,400 --> 00:33:57,550 Pea kellel n, või hoida seda Next. 543 00:33:57,550 --> 00:33:58,340 Trüki i uuesti. 544 00:33:58,340 --> 00:34:00,380 Näed nüüd on see negatiivne 167. 545 00:34:00,380 --> 00:34:06,030 Nii see läheb igavesti, kuid mitte tõesti igavesti, sest sa lihtsalt nägin seda 546 00:34:06,030 --> 00:34:09,330 tegelikult lõpeb mingil ajahetkel. 547 00:34:09,330 --> 00:34:15,699 >> Nii et on hakanud GDB. 548 00:34:15,699 --> 00:34:19,504 Aga teeme ühe asja GDB. 549 00:34:19,504 --> 00:34:20,754 Uh, siluda. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Niisiis, sel juhul, lõputu silmuse juhtus olema sees 552 00:34:28,534 --> 00:34:30,050 põhiülesanne. 553 00:34:30,050 --> 00:34:35,779 Ja nüüd, ainult nõustuda, et ma olen kavatse minna lõputult sisse 554 00:34:35,779 --> 00:34:37,029 foo funktsioon. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Lihtsalt meeles pidada, et lõpus seda programm, noh, see oli algselt 557 00:34:43,730 --> 00:34:46,210 kutsudes suva, mis oli lihtsalt trükkimineku i. 558 00:34:46,210 --> 00:34:51,880 Aga nüüd me kutsudes suva, mis on läheb kahandab i kuni see on 0, ja 559 00:34:51,880 --> 00:34:54,548 seejärel printida, et muutuja. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Säästa seda. 562 00:34:57,970 --> 00:35:00,175 Tee siluda. 563 00:35:00,175 --> 00:35:03,310 Ja nüüd, gdb siluda. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Seega kui ma joosta siis ma ei kavatse saab tegelikult läbiastumise minu 566 00:35:10,580 --> 00:35:11,730 programmi rida-realt. 567 00:35:11,730 --> 00:35:19,820 Teeme poolita peamine, ja siis kirjuta perspektiivis. 568 00:35:19,820 --> 00:35:28,160 Nii et minge läbi selle, printf, sisestage täisarv, saada täisarv, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Nii et me hoida decrementing kuni i on suurem kui 10. 571 00:35:37,490 --> 00:35:42,840 Siis me läbi kukkuda samas loop, ja saada liin - 572 00:35:42,840 --> 00:35:44,364 olgem selle avada eraldi aknas. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Nii me decremented kuni ma ei olnud enam suurem kui 10 ja siis 575 00:35:53,300 --> 00:35:55,700 nimetatakse funktsiooni foo. 576 00:35:55,700 --> 00:36:01,340 >> Mis siis juhtus nii kiiresti kui ma tabanud funktsioon suva, noh, ma helistasin suva, ja 577 00:36:01,340 --> 00:36:04,030 siis ei pidanud ma enam üle GDB. 578 00:36:04,030 --> 00:36:10,230 Seega niipea, kui ma tabanud Next selles rida, asjad jätkata kuni see juhtus, 579 00:36:10,230 --> 00:36:12,400 kus programmi väljuda - 580 00:36:12,400 --> 00:36:14,450 eeldada, et see ei olnud lõpuks. 581 00:36:14,450 --> 00:36:16,390 Sa nägid seda pausi natuke küll. 582 00:36:16,390 --> 00:36:22,040 Nii et miks ma kaotan kontrolli programm sel hetkel? 583 00:36:22,040 --> 00:36:27,540 Noh, kui ma tüüp kõrval, mis läheb sõnasõnaline järgmine rida koodi mis 584 00:36:27,540 --> 00:36:28,850 täidab. 585 00:36:28,850 --> 00:36:35,950 Nii et pärast rida 21, siis järgmine rida koodi võttev on line 22, 586 00:36:35,950 --> 00:36:38,520 mis on väljuva peamine. 587 00:36:38,520 --> 00:36:43,810 Nii et ma ei taha lihtsalt minna Järgmise koodirida. 588 00:36:43,810 --> 00:36:48,170 Ma tahan minna funktsioon, foo, ja siis ka sammult läbi 589 00:36:48,170 --> 00:36:49,830 nende rida koodi. 590 00:36:49,830 --> 00:36:53,726 >> Nii, et meil on alternatiiv. 591 00:36:53,726 --> 00:36:56,770 Olgem quit uuesti. 592 00:36:56,770 --> 00:36:58,020 Break peamine. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, järgmine, järgmine, 13, järgmine, Järgmine, järgmine, hoolikalt, 595 00:37:06,370 --> 00:37:09,820 enne kui me tabanud rida suva. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Nüüd, me oleme real 21, kui me kutsume suva. 598 00:37:13,700 --> 00:37:17,100 Me ei taha, et järgmisena, sest see lihtsalt helistada funktsiooni foo ja 599 00:37:17,100 --> 00:37:18,710 minna järgmisele rida koodi. 600 00:37:18,710 --> 00:37:20,840 Mida me tahame kasutada, on samm. 601 00:37:20,840 --> 00:37:25,690 Nii et seal on vahe etapp ja Next, kus Step astub 602 00:37:25,690 --> 00:37:28,190 toimida ja Järgmine läheb üle funktsioon. 603 00:37:28,190 --> 00:37:32,830 See lihtsalt täidab kogu funktsioon ja peab minema. 604 00:37:32,830 --> 00:37:37,210 >> Nii samm läheb toob meile arvesse funktsiooni foo. 605 00:37:37,210 --> 00:37:41,160 Ja me näeme siin, nüüd oleme tagasi see samas silmus, mis on teoreetiliselt 606 00:37:41,160 --> 00:37:44,190 jätkub igavesti. 607 00:37:44,190 --> 00:37:50,420 Ja kui vajutad etapp, kui see ei ole isegi funktsioon helistada, siis on 608 00:37:50,420 --> 00:37:51,720 identne Next. 609 00:37:51,720 --> 00:37:55,320 Nii et see on ainult siis, kui sa oled line, et nõuab funktsiooni, et sammu 610 00:37:55,320 --> 00:37:56,970 läheb erineda Next. 611 00:37:56,970 --> 00:37:57,930 Nii samm viib meid siia. 612 00:37:57,930 --> 00:38:02,100 Samm, samm, samm, samm, samm, samm, ja Me lihtsalt lõputult igavesti. 613 00:38:02,100 --> 00:38:06,810 >> Nii võite harjuda, et teie välja selgitada lõpmatu silmad, on 614 00:38:06,810 --> 00:38:08,960 lihtsalt hoides seda sisestusklahvi vaata, kui te jänni. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 On paremaid viise seda teha, kuid nüüd, see on täiesti piisav. 617 00:38:14,780 --> 00:38:17,967 Ja stiililiselt, et need vastaksid Style 50, ma oleks seda teinud. 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 >> Nii et üks viimase käsu tutvustada. 621 00:38:28,400 --> 00:38:30,810 Noh, gdb siluda sisse 622 00:38:30,810 --> 00:38:35,580 Selle asemel, et murda juures peamine, kui ma tean foo funktsioon on ka 623 00:38:35,580 --> 00:38:39,230 probleem, siis ma oleks lihtsalt ütles, poolita foo asemel. 624 00:38:39,230 --> 00:38:42,310 Ütleme, et ma murdumine nii põhi-ja foo. 625 00:38:42,310 --> 00:38:45,390 Niisiis saab nii palju murdepunktid kui soovite. 626 00:38:45,390 --> 00:38:49,230 Kui ma kirjutada perspektiivis, siis läheb peatuma - 627 00:38:49,230 --> 00:38:52,180 ooh, lähme kompileerida, sest Muutsin asju. 628 00:38:52,180 --> 00:38:55,950 Näete seda joont, Hoiatus, allikas fail on hilisemad kui käivitatav. 629 00:38:55,950 --> 00:38:59,680 See tähendab, et ma lihtsalt läksin siin ja muuta need vastavaks, Style 630 00:38:59,680 --> 00:39:03,100 50, aga ma ei kompileeri programmi. 631 00:39:03,100 --> 00:39:04,870 Nii GDB paneb mind teadlikud. 632 00:39:04,870 --> 00:39:10,130 Ma lahkun, teha silumise jälle hit gdb siluda. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Nüüd, tagasi, mida ma tegin. 635 00:39:12,800 --> 00:39:15,720 Break peamine, break suva. 636 00:39:15,720 --> 00:39:20,680 Nüüd, kui ma käivitada programmi, nii et see on jätkub kuni tabamust 637 00:39:20,680 --> 00:39:21,320 murdepunkti. 638 00:39:21,320 --> 00:39:24,680 See murdepunkti juhtub olla esimene juures peamine. 639 00:39:24,680 --> 00:39:28,630 Nüüd, selle asemel et teha järgmine, järgmine, järgmine, Järgmine, järgmine, kuni ma tabanud suva, ma 640 00:39:28,630 --> 00:39:35,230 tippida jätkata, mis jätkab kuni vajutad taas murdepunkti. 641 00:39:35,230 --> 00:39:37,200 Ma pean sisestama täisarv esimene. 642 00:39:37,200 --> 00:39:40,570 Jätka jätkub kuni I hit Järgmine murdepunkti, mis seisneb selles, et 643 00:39:40,570 --> 00:39:43,320 funktsiooni foo. 644 00:39:43,320 --> 00:39:50,130 >> Nii Run kestab kuni vajutad murdepunkt, aga sa ainult kirjutad käivitumise 645 00:39:50,130 --> 00:39:54,060 sa oled hakanud programmi ja seejärel sellest ajast alates, see jätkub. 646 00:39:54,060 --> 00:40:01,950 Kui ma just tegin murda põhi-ja siis jooksis see murran juures 647 00:40:01,950 --> 00:40:03,670 Peamine ja seejärel jätkata. 648 00:40:03,670 --> 00:40:10,050 Kuna mul ei ole murdepunkt at suva, sisestada täisarv, siis nüüd olen 649 00:40:10,050 --> 00:40:11,380 ei kavatse murda at suva. 650 00:40:11,380 --> 00:40:16,318 See lihtsalt läheb lõpmatusse loop kuni seda. 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 >> Nii et see tutvustus GDB. 654 00:40:24,420 --> 00:40:27,790 Sa peaksid kasutama hakata Teie probleem komplekti. 655 00:40:27,790 --> 00:40:30,550 See võib olla väga kasulik, selgitada vead. 656 00:40:30,550 --> 00:40:35,280 Kui sa tegelikult lihtsalt rida-realt, minge läbi oma kood, ja võrrelda, mida on 657 00:40:35,280 --> 00:40:39,740 tegelikult juhtub see, mida te ootate juhtuma, siis on päris 658 00:40:39,740 --> 00:40:41,060 raske jäta oma vead. 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 >> Nii eelmisel nädalal David tõid selle saladus-võtme krüptograafia kraami 663 00:40:54,040 --> 00:40:59,350 Esmakordselt kui me ei taha, paroolid lihtsalt hoitakse meie 664 00:40:59,350 --> 00:41:03,210 arvuti mõnes tekstifaili, kus keegi ei tule ja lihtsalt 665 00:41:03,210 --> 00:41:04,660 selle avada ja lugeda. 666 00:41:04,660 --> 00:41:07,530 Ideaalis peaksid nad krüpteeritud mingil moel. 667 00:41:07,530 --> 00:41:13,340 Ja Ülesanded 2, siis saad tegelevad üks meetod krüpteerimine 668 00:41:13,340 --> 00:41:16,520 või, noh, kaks meetodit, kuid nad ei ole nii suur. 669 00:41:16,520 --> 00:41:20,050 Kui sa häkker väljaanne, oled ka läheb tegelevad 670 00:41:20,050 --> 00:41:22,150 krüpteerimiseks mõned asjad. 671 00:41:22,150 --> 00:41:29,770 >> Seega küsimus on praegu hästi, isegi kui meil on tugevaim krüpteerimise 672 00:41:29,770 --> 00:41:34,830 algoritm maailmas, kui valite eriti halb salasõna, siis on 673 00:41:34,830 --> 00:41:37,720 ei aita sind väga palju, sest inimesed on endiselt võimalik, et sellest aru saada. 674 00:41:37,720 --> 00:41:41,530 Isegi kui näeme krüptitud string ja tundub jama prügi 675 00:41:41,530 --> 00:41:44,760 mis ei tähenda neile midagi, kui nad veel on vaja proovida mõned paroolid 676 00:41:44,760 --> 00:41:50,560 et sellest aru saada, siis ei ole väga turvaline. 677 00:41:50,560 --> 00:41:55,890 Nii vaadates video, mis teeb sel hetkel. 678 00:41:55,890 --> 00:41:59,587 679 00:41:59,587 --> 00:42:00,970 >> [VIDEO PLAYBACK] 680 00:42:00,970 --> 00:42:02,100 >> -Helmet, sa paharet. 681 00:42:02,100 --> 00:42:03,370 Mis toimub? 682 00:42:03,370 --> 00:42:05,170 Mida sa teed, et mu tütar? 683 00:42:05,170 --> 00:42:09,910 >> -Lubage mul tutvustada hiilgav noor plastist kirurg dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin suurimaks nina töö mees kogu 685 00:42:13,730 --> 00:42:16,080 universum ja Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Teie Kõrgeausus. 687 00:42:17,210 --> 00:42:18,070 >> -Nina? 688 00:42:18,070 --> 00:42:18,670 Ma ei saa aru. 689 00:42:18,670 --> 00:42:20,090 Ta oli juba nina. 690 00:42:20,090 --> 00:42:21,910 See oli magus kuusteist kohal. 691 00:42:21,910 --> 00:42:22,140 >> -Nr. 692 00:42:22,140 --> 00:42:23,690 See ei ole see, mida sa arvad. 693 00:42:23,690 --> 00:42:25,420 See on palju, palju hullem. 694 00:42:25,420 --> 00:42:30,300 Kui te ei ütle mulle, et air shield dr Schlotkin tahe 695 00:42:30,300 --> 00:42:34,226 anna oma tütart tagasi oma vana nina. 696 00:42:34,226 --> 00:42:35,476 >> -Nr. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Kust sa selle said? 699 00:42:40,516 --> 00:42:41,440 >> Olgu. 700 00:42:41,440 --> 00:42:42,180 Ma ütlen. 701 00:42:42,180 --> 00:42:43,381 Ma ütlen. 702 00:42:43,381 --> 00:42:44,263 Ei, isa. 703 00:42:44,263 --> 00:42:45,590 Ei, sa ei tohi. 704 00:42:45,590 --> 00:42:46,860 >> -Sul on õigus, mu kallis. 705 00:42:46,860 --> 00:42:48,450 Ma igatsen su uus nina. 706 00:42:48,450 --> 00:42:52,090 Aga ma ei ütle talle, kombinatsioon, ükskõik mida. 707 00:42:52,090 --> 00:42:53,680 >> -Väga hea. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, tee oma halvim. 709 00:42:55,685 --> 00:42:56,914 >> Mu rõõm. 710 00:42:56,914 --> 00:43:00,690 >> [Töövahendid teritatud] 711 00:43:00,690 --> 00:43:01,910 >> -Nr. 712 00:43:01,910 --> 00:43:02,520 Oota. 713 00:43:02,520 --> 00:43:03,836 Oota. 714 00:43:03,836 --> 00:43:05,300 Ma ütlen. 715 00:43:05,300 --> 00:43:06,880 Ma ütlen. 716 00:43:06,880 --> 00:43:09,130 >> Ma teadsin, et see töötaks. 717 00:43:09,130 --> 00:43:09,900 Hea küll. 718 00:43:09,900 --> 00:43:12,850 Anna see mulle. 719 00:43:12,850 --> 00:43:16,918 >> -Kombinatsioon on üks. 720 00:43:16,918 --> 00:43:17,406 >> -One. 721 00:43:17,406 --> 00:43:18,382 >> -One. 722 00:43:18,382 --> 00:43:19,358 >> Kaks. 723 00:43:19,358 --> 00:43:19,846 >> Kaks. 724 00:43:19,846 --> 00:43:20,822 >> Kaks. 725 00:43:20,822 --> 00:43:21,310 >> Kolm. 726 00:43:21,310 --> 00:43:21,798 >> Kolm. 727 00:43:21,798 --> 00:43:22,774 >> Kolm. 728 00:43:22,774 --> 00:43:23,262 >> Neli. 729 00:43:23,262 --> 00:43:23,750 >> Neli. 730 00:43:23,750 --> 00:43:26,150 >> Neli. 731 00:43:26,150 --> 00:43:27,010 >> Viis. 732 00:43:27,010 --> 00:43:27,670 >> Viis. 733 00:43:27,670 --> 00:43:29,010 >> Viis. 734 00:43:29,010 --> 00:43:34,770 >> -Nii kombinatsioon on see, kaks, kolm, neli, viis. 735 00:43:34,770 --> 00:43:37,460 See on kõige lollim kombinatsioon Ma kunagi kuulnud olen. 736 00:43:37,460 --> 00:43:39,710 See on selline asi, idioot oleks oma pagasi. 737 00:43:39,710 --> 00:43:42,000 >> -Tänan teid, teie kõrgeausus. 738 00:43:42,000 --> 00:43:43,530 >> Mida sa tegid? 739 00:43:43,530 --> 00:43:44,490 >> -Keerasin maha seina. 740 00:43:44,490 --> 00:43:45,420 >> -Ei, sa ei teinud seda. 741 00:43:45,420 --> 00:43:45,840 Sa välja lülitatud kogu filmi. 742 00:43:45,840 --> 00:43:46,930 >> Ma vist vale nupp. 743 00:43:46,930 --> 00:43:48,265 >> Noh, pane see tagasi. 744 00:43:48,265 --> 00:43:49,110 Pane film tagasi. 745 00:43:49,110 --> 00:43:49,510 >> -Jah, sir. 746 00:43:49,510 --> 00:43:49,917 Jah, sir. 747 00:43:49,917 --> 00:43:50,324 >> Lähme, Arnold. 748 00:43:50,324 --> 00:43:51,140 Tule, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Muidugi, sa tead, et ma ikka pean teile arve selle eest. 750 00:43:53,060 --> 00:43:53,440 >> [END VIDEO PLAYBACK] 751 00:43:53,440 --> 00:43:54,690 >> ROB Boden: Olgu. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Nüüd, et me oleme juba rääkinud turvalisus mõnes mõttes kena 754 00:44:08,430 --> 00:44:16,050 vähe filmi plakat, nii et viimastel päeva, need teemad on NSA 755 00:44:16,050 --> 00:44:17,300 järelevalve kõike. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 See võib olla raske tunne, nagu sa on mingisugune privaatsuse 758 00:44:26,930 --> 00:44:34,540 online maailmas, kuigi ma ei saa öelda, sa kõige üksikasjadest PRISM. 759 00:44:34,540 --> 00:44:42,130 Nii liigub kaugemale PRISM, me ei kavatse et rääkida, et nüüd 760 00:44:42,130 --> 00:44:44,030 mõtle oma sülearvuti. 761 00:44:44,030 --> 00:44:48,360 Nii siin, ma tahan minna minu tegelik konto 762 00:44:48,360 --> 00:44:50,370 minu väike pingviin. 763 00:44:50,370 --> 00:44:57,310 Nii et mul on määratud parool ja et parool, mida tahan, et see oleks. 764 00:44:57,310 --> 00:45:02,430 >> Kuid pidage meeles, et see, mida ma metsaraie sisse, nii et see login 765 00:45:02,430 --> 00:45:04,850 kiire, on mõned programmi. 766 00:45:04,850 --> 00:45:07,910 See on mingi programm, mis oli kirjutas mõned isik. 767 00:45:07,910 --> 00:45:13,250 Ja nii, et inimene, kui nad on eriti pahatahtlikud, võiksid nad 768 00:45:13,250 --> 00:45:17,780 on öelnud, kõik korras, nii et kui parool et ma sisestan võrdub minu 769 00:45:17,780 --> 00:45:22,800 tegelik parool, või see on võrdne et mingi eriline password - 770 00:45:22,800 --> 00:45:25,550 David on fantastiline või midagi - 771 00:45:25,550 --> 00:45:27,190 siis lase neid sisse 772 00:45:27,190 --> 00:45:33,760 Nii pahatahtlik programmeerija võiks olla juurdepääs kõikidele oma Mac või 773 00:45:33,760 --> 00:45:36,150 Windows, või midagi. 774 00:45:36,150 --> 00:45:41,980 >> Nii et ei ole palju muret, sest Ma mõtlen, et see on login programmi 775 00:45:41,980 --> 00:45:48,720 mis on tarnitud OS X sadu või tuhandeid inimesi 776 00:45:48,720 --> 00:45:50,020 vaadatakse see kood. 777 00:45:50,020 --> 00:45:55,330 Ja nii, kui, oma koodi kuskil, siis öelda, kui see string on võrdne võrdsete 778 00:45:55,330 --> 00:45:58,860 David on fantastiline, login, siis keegi on saab olema, nagu, oota. 779 00:45:58,860 --> 00:45:59,800 See ei ole õige. 780 00:45:59,800 --> 00:46:01,790 See ei peaks siin olema. 781 00:46:01,790 --> 00:46:06,650 Nii et üks viis, kuidas me asju olema selline turvaline. 782 00:46:06,650 --> 00:46:10,300 >> Aga mõtle isegi programmid mis sa kirjutad. 783 00:46:10,300 --> 00:46:13,000 Oletame, et sa kirjutasid login programmi. 784 00:46:13,000 --> 00:46:20,440 Nii et see login programmi, mis sa kirjutasid, Nii et ilmselt sa oled hea 785 00:46:20,440 --> 00:46:21,210 programmeerija. 786 00:46:21,210 --> 00:46:25,610 Sa ei kavatse panna pahatahtlik kui x võrdub võrdub David on fantastiline 787 00:46:25,610 --> 00:46:27,860 oma koodi. 788 00:46:27,860 --> 00:46:31,930 Aga see programm, mida sa kasutada kompileerida selle programmiga? 789 00:46:31,930 --> 00:46:34,180 Midagi rõkkama. 790 00:46:34,180 --> 00:46:38,460 Mis siis, kui isik, kes juhtus kirjuta rõkkama eriline ääretule rõkkama 791 00:46:38,460 --> 00:46:44,310 midagi, kui ma koostamisel sisene programm, siis sisestage see kood 792 00:46:44,310 --> 00:46:49,720 sisse login programm, mis ütleb, et kui x võrdub võrdub David on fantastiline? 793 00:46:49,720 --> 00:46:59,890 Nii et mitte päris veel, aga meil on sama asjas, kus rõkkama, noh, 794 00:46:59,890 --> 00:47:03,790 tuhandeid, kui mitte tuhandeid inimesed, oleme otsinud rõkkama, on 795 00:47:03,790 --> 00:47:07,160 vaatasin oma rida koodi ja ütles: Olgu, pole midagi paha siin. 796 00:47:07,160 --> 00:47:10,680 Ilmselt keegi ei tee midagi see pahatahtlik. 797 00:47:10,680 --> 00:47:15,780 >> Aga mis on rõkkama ise, nagu, Mis siis, kui ma kompileerida rõkkama? 798 00:47:15,780 --> 00:47:20,900 Mis siis, kui mul on koostaja, et koostab rõkkama mis lisab arvesse rõkkama 799 00:47:20,900 --> 00:47:25,610 seda erilist hack, mis ütleb, eks, kui ma kompileerida rõkkama, siis 800 00:47:25,610 --> 00:47:31,290 käivitatava saan peaks spetsiaalselt otsima sees login programm ja sisesta 801 00:47:31,290 --> 00:47:34,230 Parooli võrdne võrdsete Dave on fantastiline? 802 00:47:34,230 --> 00:47:37,990 Seega pidage meeles, et teie tõlkija ise On vaja koostada mingil ajahetkel. 803 00:47:37,990 --> 00:47:42,810 Nii et kui see, mida te otsustate koostada rõkkama koos, ise on pahatahtlik, siis 804 00:47:42,810 --> 00:47:45,580 võiks keeras kogu viis sätestatakse rida. 805 00:47:45,580 --> 00:47:49,630 >> Nii et siin on meil Ken Thompson ja Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Nii et see on ikooniks foto. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie on õige. 808 00:47:55,470 --> 00:47:58,740 Ta on suurte - 809 00:47:58,740 --> 00:48:03,640 päris palju kirjutas C. Nii saate Tänan teda selle klassi. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson on vasakul. 811 00:48:04,840 --> 00:48:07,780 Kaks neist põhiliselt kirjutas UNIX. 812 00:48:07,780 --> 00:48:10,140 Noh, need olid peamised toetajad UNIX. 813 00:48:10,140 --> 00:48:11,310 Seal olid mõned teised. 814 00:48:11,310 --> 00:48:16,240 Nii Ken Thompson, mingil hetkel, ta võidab Turingi auhinna. 815 00:48:16,240 --> 00:48:20,860 Ja Turingi auhinna, olen alati kuulnud see viidata sel moel, et see on 816 00:48:20,860 --> 00:48:23,100 Nobeli arvutiteadus. 817 00:48:23,100 --> 00:48:27,500 >> Nii et Turingi auhinna, peab ta anda oma tänukõnes. 818 00:48:27,500 --> 00:48:31,790 Ja ta annab see väga kuulsa kõne nüüd nimega Mõtteid usaldamine 819 00:48:31,790 --> 00:48:35,620 Trust, mis me oleme seotud et kursuse kodulehel. 820 00:48:35,620 --> 00:48:41,670 Ja selles kõnes ütleb ta, et kõik on korras, Ma kirjutasin UNIX, ja nüüd on kõik 821 00:48:41,670 --> 00:48:43,320 te inimesed kasutavad UNIX. 822 00:48:43,320 --> 00:48:46,960 Nüüd, pea meeles, täna, et Linux on otsene järeltulija UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X otse kasutab UNIX. 824 00:48:50,140 --> 00:48:53,810 Windows ei ole nii palju, kuid palju ideid võeti UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Nii ta läheb kuni lavale ja ütleb, Olgu, ma kirjutasin UNIX. 826 00:48:59,220 --> 00:49:03,940 Ja just nii, et te teate, ma olen sisse logida iga 827 00:49:03,940 --> 00:49:05,590 ühe ühes arvutis. 828 00:49:05,590 --> 00:49:14,280 Kuna panin mõnda nendest spetsiaalseid kui x võrdub võrdub Ken Thomson on fantastiline, 829 00:49:14,280 --> 00:49:16,350 siis mul on lubatud sisse logida. 830 00:49:16,350 --> 00:49:18,370 Nii et inimesed on nagu, noh, Kuidas sa seda tegid? 831 00:49:18,370 --> 00:49:21,090 Vaatasime login programmi ja midagi on seal. 832 00:49:21,090 --> 00:49:24,700 Ta on nagu, noh, ma muutsin koostaja sisse login programmi 833 00:49:24,700 --> 00:49:30,490 nii et login programmi nüüd on et x võrdub võrdub Ken Thompson 834 00:49:30,490 --> 00:49:31,700 on fantastiline. 835 00:49:31,700 --> 00:49:33,120 >> Ja nad ütlevad, noh, see pole tõsi. 836 00:49:33,120 --> 00:49:35,740 Otsime koostaja ja kompilaator ei ole mingit rida 837 00:49:35,740 --> 00:49:36,400 kood niimoodi. 838 00:49:36,400 --> 00:49:40,540 Ta on nagu OK, aga mida sa koostamise kompilaator? 839 00:49:40,540 --> 00:49:44,810 Ja nad arvavad, ja ta on nagu hästi, Mina olen see, kes andis sulle koostaja 840 00:49:44,810 --> 00:49:50,580 te kasutate kompileerida koostaja, nii kompileerid koostaja, et 841 00:49:50,580 --> 00:49:56,390 ise on pahatahtlik ning peavad murda login programmi. 842 00:49:56,390 --> 00:49:59,360 Ühesõnaga, sel hetkel, seal on no kuidas sa võiksid vaadata allikat 843 00:49:59,360 --> 00:50:02,450 kood sisselogimisprogrammi et näha, mis on valesti. 844 00:50:02,450 --> 00:50:04,220 Sa isegi ei vaata lähtekoodi kompilaator 845 00:50:04,220 --> 00:50:06,790 et näha, mis on valesti. 846 00:50:06,790 --> 00:50:11,940 >> Sa oleks vaja vaadata masin kood, tegelik binaarne kohta 847 00:50:11,940 --> 00:50:16,760 koostatud kogumiku koostaja, et näha, oota, need rida koodi ei tohiks siin olla. 848 00:50:16,760 --> 00:50:22,130 Aga Ken Thompson oli see üks samm edasi ja ütles ka, seal on 849 00:50:22,130 --> 00:50:25,980 neid erilisi programme, mis tegelikult aitab teil lugeda binaarne programmide 850 00:50:25,980 --> 00:50:29,340 ja nii kui keegi kasutada, et programmi loe binaarne, nad näeksid neid 851 00:50:29,340 --> 00:50:30,490 rida koodi. 852 00:50:30,490 --> 00:50:34,020 Ta muudeti nende programmide öelda, kõik Hästi, kui te vaatate 853 00:50:34,020 --> 00:50:38,460 koostaja, ei näita seda eriti kogum binaarne. 854 00:50:38,460 --> 00:50:42,830 >> Siis pead võtma, et sammu edasi ja põhimõtteliselt, millel võib olla 855 00:50:42,830 --> 00:50:46,210 võtta mitmel tasandil indirection, ning mingil hetkel, keegi on tegelikult 856 00:50:46,210 --> 00:50:47,990 saab olema kontroll. 857 00:50:47,990 --> 00:50:52,590 Nii loo moraal on, et sa oled ei kavatse kirjalikult 858 00:50:52,590 --> 00:50:54,340 Rõkkama selles klassis. 859 00:50:54,340 --> 00:50:57,020 Sa kavatsed kasutada ronimine Rõkkama palju selles klassis. 860 00:50:57,020 --> 00:51:00,490 Sest kõik, mida tean, rõkkama on pahatahtlik programm, mis on tühjaks iga 861 00:51:00,490 --> 00:51:03,520 ühe programmi olete kunagi koostatud. 862 00:51:03,520 --> 00:51:08,206 Ja jäta sind sellel väga pahaendeline tähele, näeme kolmapäeval. 863 00:51:08,206 --> 00:51:10,030 >> [APLAUS] 864 00:51:10,030 --> 00:51:12,935 >> SPEAKER 2: Järgmisel CS50. 865 00:51:12,935 --> 00:51:14,580 >> SPEAKER 3: Kas sa ei julge öelda. 866 00:51:14,580 --> 00:51:15,930 Sa suudad seda. 867 00:51:15,930 --> 00:51:19,440 Sa oled seda varem teinud, siis saad seda teha täna, siis saad seda teha homme. 868 00:51:19,440 --> 00:51:20,930 Sa oled teinud seda juba aastaid. 869 00:51:20,930 --> 00:51:22,790 Lihtsalt mine sinna ja tee seda. 870 00:51:22,790 --> 00:51:24,310 Sa suudad seda. 871 00:51:24,310 --> 00:51:26,102 >> [Muusika mängib]