1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [Daqq tal-mużika] 3 00:00:11,210 --> 00:00:12,100 >> ROB BODEN: Kull dritt. 4 00:00:12,100 --> 00:00:15,620 Għalhekk, l-ewwel ħaġa l-ewwel, ta 'video minn wiċċ familjari. 5 00:00:15,620 --> 00:00:22,080 6 00:00:22,080 --> 00:00:22,560 >> [VIDEO Daqq] 7 00:00:22,560 --> 00:00:23,370 >> -Id-dritt. 8 00:00:23,370 --> 00:00:27,150 Dan huwa CS50, u dan huwa il-bidu ta 'tliet ġimgħat. 9 00:00:27,150 --> 00:00:29,980 Jien sorry I ma jista 'jkun hemm miegħek llum, iżda ippermettili jintroduċu 10 00:00:29,980 --> 00:00:32,880 Stess Rob Boden CS50 tal. 11 00:00:32,880 --> 00:00:33,872 >> [Video daqq END] 12 00:00:33,872 --> 00:00:39,340 >> [Applause U Cheers] 13 00:00:39,340 --> 00:00:41,277 >> ROB BODEN: Il filmografija fl li l-video huwa meraviljuż. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Kull dritt. 16 00:00:47,770 --> 00:00:50,960 Allura l-ewwel, hemm lunch ieħor. 17 00:00:50,960 --> 00:00:52,330 Huwa għada fil 01:15. 18 00:00:52,330 --> 00:00:54,480 M'hemm l-ebda ikla din il-ġimgħa. 19 00:00:54,480 --> 00:00:55,810 Huwa ma Quora. 20 00:00:55,810 --> 00:01:00,190 U Tommy mhux hawn s'issa, iżda wieħed mill- il-poplu hemm eks CF ras, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Hekk hu gost Guy. 23 00:01:02,730 --> 00:01:04,819 Għandek ġejjin. 24 00:01:04,819 --> 00:01:05,900 >> Kull dritt. 25 00:01:05,900 --> 00:01:11,360 Allura aħħar ġimgħa, bdejna tkissir apparti dwar dak string hija verament. 26 00:01:11,360 --> 00:01:14,830 Imxejna magħrufa mill-bidu li huwa sekwenza ta 'karattri. 27 00:01:14,830 --> 00:01:18,130 Iżda aħħar ġimgħa, aħna delved fil-fatt li dak li huwa verament sekwenza ta ' 28 00:01:18,130 --> 00:01:22,110 karattri, ukoll, issa għandna arrays ta 'karattri. 29 00:01:22,110 --> 00:01:26,450 U nafu li string, huwa firxa ta 'karattri, fl-aħħar nett, 30 00:01:26,450 --> 00:01:30,920 aħna għandna dan byte null speċjali, dan backslash 0, li jindika t-tmiem ta ' 31 00:01:30,920 --> 00:01:32,230 l-sekwenza. 32 00:01:32,230 --> 00:01:36,970 >> U għalhekk string firxa ta ' karattri, imma aħna jista 'jkollu aktar minn 33 00:01:36,970 --> 00:01:39,530 biss firxa ta 'karattri, nistgħu jkollhom firxa ta 'kwalunkwe 34 00:01:39,530 --> 00:01:40,890 tip ta 'ħaġa li rridu. 35 00:01:40,890 --> 00:01:51,570 Għalhekk, jekk inti recall mill-aħħar ġimgħa, il- Etajiet programm li David introdotti 36 00:01:51,570 --> 00:01:53,560 verament malajr. 37 00:01:53,560 --> 00:01:57,010 Allura l-ewwel ħaġa li aħna qed tmur biex tagħmel hu issaqsi lill-utent għal integer, il- 38 00:01:57,010 --> 00:01:58,800 numru ta 'nies fil-kamra. 39 00:01:58,800 --> 00:02:01,260 Ladarba għandna li integer, aħna qed tiddikjara firxa. 40 00:02:01,260 --> 00:02:02,890 Avviż dan sintassi bracket. 41 00:02:02,890 --> 00:02:04,540 Int ser jidraw dan. 42 00:02:04,540 --> 00:02:09,430 >> Allura aħna qed tiddikjara firxa ta 'numri interi imsejħa etajiet, u hemm n 43 00:02:09,430 --> 00:02:12,080 interi f'dan array. 44 00:02:12,080 --> 00:02:16,480 Allura dan il-mudell dritt hawn, dan int 4 i egwali għal 0, i huwa inqas minn n, i plus 45 00:02:16,480 --> 00:02:20,580 plus, li huwa wkoll se tkun mudell li ikollok ħafna użati biex. 46 00:02:20,580 --> 00:02:24,000 Minħabba li pjuttost ħafna kif int dejjem se jtenni fuq arrays. 47 00:02:24,000 --> 00:02:26,330 Mela ftakar li n hija l- tul ta 'firxa tagħna. 48 00:02:26,330 --> 00:02:32,120 U hekk hawn, aħna ripetutament tistaqsi għall-età ta 'persuna i fil-kamra. 49 00:02:32,120 --> 00:02:36,640 >> Wara dan, aħna jinżlu, u għal kwalunkwe raġuni arbitrarja, aħna mbagħad 50 00:02:36,640 --> 00:02:40,220 jistampa kemm qodma dawn qed tmur tkun sena minn issa. 51 00:02:40,220 --> 00:02:49,980 U t-tmexxija dak il-programm, ejja jagħmlu etajiet, dot etajiet mmejla. 52 00:02:49,980 --> 00:02:53,010 Allura numru ta 'nies fil-kamra, ejja ngħidu hemm tlieta. 53 00:02:53,010 --> 00:02:59,880 U jgħidu, l-ewwel persuna tkun 13, jmiss huwa 26, u l-aħħar huwa 30. 54 00:02:59,880 --> 00:03:05,080 Mela allura dan ser jtenni matul dawk it-tliet nies, jistampa 14, 27, u 31. 55 00:03:05,080 --> 00:03:16,060 >> Mela ftakar li meta aħna jiddikjaraw firxa ta 'daqs n, l-indiċi f'dik 56 00:03:16,060 --> 00:03:19,950 firxa, il-firxa għandha valuri u indiċi 0, 1, 2, it-triq kollha 57 00:03:19,950 --> 00:03:21,680 sa n minus 1. 58 00:03:21,680 --> 00:03:26,255 Allura meta aħna qal kien hemm tliet persuni fil-kamra, u npoġġux fil hawn 59 00:03:26,255 --> 00:03:29,850 l-ewwel iterazzjoni permezz ta 'dan loop, i se tkun 0. 60 00:03:29,850 --> 00:03:31,650 Allura fl-indiċi 0. 61 00:03:31,650 --> 00:03:34,540 Aħna tassenja l-ewwel età l-utent jidħol. 62 00:03:34,540 --> 00:03:38,870 Imbagħad fil-wieħed li jmiss, aħna qed jidħlu fil- tieni n-utent jidħol, u b'mod 63 00:03:38,870 --> 00:03:40,580 jmiss għal tnejn, l-aħħar n. 64 00:03:40,580 --> 00:03:44,200 >> Allura avviż li firxa ta 'daqs tlieta ma jkollhom xejn 65 00:03:44,200 --> 00:03:46,040 fl-indiċi tlieta. 66 00:03:46,040 --> 00:03:49,036 Dan mhux validu. 67 00:03:49,036 --> 00:03:50,250 Kull dritt. 68 00:03:50,250 --> 00:03:55,136 Allura, li tmur lura hawn. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Allura issa li aħna ħadthom ttrattati arrays, għandna xi familjarità. 71 00:04:01,590 --> 00:04:03,780 Issa aħna qed tmur biex jimxu fuq kmand argumenti linja, li ser ikunu 72 00:04:03,780 --> 00:04:05,890 pretty rilevanti għal dan is-sett problema. 73 00:04:05,890 --> 00:04:09,670 >> Allura sa issa, kull meta inti ħadthom ddikjarat funzjoni prinċipali tiegħek, konna 74 00:04:09,670 --> 00:04:11,230 qal null prinċipali int. 75 00:04:11,230 --> 00:04:14,070 Allura vojt ifisser biss li aħna ma tgħaddi ebda 76 00:04:14,070 --> 00:04:16,440 argumenti għal din il-funzjoni. 77 00:04:16,440 --> 00:04:19,190 Issa aħna qed tmur biex tara li prinċipali tista 'tieħu xi argumenti. 78 00:04:19,190 --> 00:04:22,470 Here we jsejħulhom int argc u parentesi ARGV string. 79 00:04:22,470 --> 00:04:26,930 Il-parentesi, għal darb'oħra, li jindika li aħna qed jittrattaw ma 'arrays. 80 00:04:26,930 --> 00:04:31,850 So here, brackets ARGV string, aħna qed jittrattaw ma 'firxa ta' kordi. 81 00:04:31,850 --> 00:04:35,360 Allura argc, li għaddej biex jindikaw kemm argumenti konna 82 00:04:35,360 --> 00:04:37,580 mgħoddi lill dan il-programm. 83 00:04:37,580 --> 00:04:46,050 U biex tara dak li jfisser, ejja jagħlqu dan. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Allura sa issa, aħna ħadthom run kull programm bħal etajiet dot mmejla. 86 00:04:50,790 --> 00:04:55,250 Nistgħu wkoll, fil-linja tal-kmand, passat jgħaddu l-argumenti, u b'hekk it-terminu, l-iggwidar 87 00:04:55,250 --> 00:04:56,550 argumenti linja. 88 00:04:56,550 --> 00:04:59,760 Allura l-ewwel argument, bonjour dinja. 89 00:04:59,760 --> 00:05:03,350 Allura hawnhekk, argc ikun tlieta. 90 00:05:03,350 --> 00:05:07,720 Hu l-għadd tal-argumenti fil-linja tal-kmand. 91 00:05:07,720 --> 00:05:12,840 Argc huwa dejjem anqas 1, peress dot mmejla etajiet, hija stess, jgħodd bħala waħda mill- 92 00:05:12,840 --> 00:05:14,490 l-argumenti linja tal-kmand. 93 00:05:14,490 --> 00:05:17,010 >> Imbagħad bonjour hija l-ewwel. 94 00:05:17,010 --> 00:05:20,460 Jekk etajiet dot mmejla huwa l-0, allura bonjour hija l-ewwel, u fid-dinja huwa l- 95 00:05:20,460 --> 00:05:22,830 tieni argument linja tal-kmand. 96 00:05:22,830 --> 00:05:29,490 Allura l-ARGV string, aħna qed tmur biex tara, fih il-kordi, dot slash 97 00:05:29,490 --> 00:05:33,830 etajiet, hello, u fid-dinja. 98 00:05:33,830 --> 00:05:38,945 U, b'talba David, aħna qed tmur tilgħab video introduzzjoni li. 99 00:05:38,945 --> 00:05:42,486 100 00:05:42,486 --> 00:05:43,890 >> [VIDEO Daqq] 101 00:05:43,890 --> 00:05:46,240 >> -Sa issa fil-programmi Imxejna miktub, konna tiddikjara 102 00:05:46,240 --> 00:05:48,500 prinċipali null prinċipali kif int. 103 00:05:48,500 --> 00:05:51,170 U dan il-ħin, li null għandha sempliċiment tispeċifika li l- 104 00:05:51,170 --> 00:05:54,430 programm ma tieħu kwalunkwe argumenti linja tal-kmand. 105 00:05:54,430 --> 00:05:57,750 Fi kliem ieħor, meta utent runs programm, hu jew hi jista 'jipprovdi kmand 106 00:05:57,750 --> 00:06:01,710 argumenti linja billi tikteb addizzjonali kliem jew frażijiet wara tal-programm 107 00:06:01,710 --> 00:06:03,000 isem fil-prompt. 108 00:06:03,000 --> 00:06:06,550 >> Ukoll, jekk inti tixtieq program tiegħek biex jieħdu argumenti linja tal-kmand, wieħed jew 109 00:06:06,550 --> 00:06:10,540 aktar kliem bħal dawn, għandna bżonn biex jissostitwixxu null ma 'koppja ta' argumenti. 110 00:06:10,540 --> 00:06:12,200 Mela ejja tagħmel dan. 111 00:06:12,200 --> 00:06:15,750 Inkludi CS50.h. 112 00:06:15,750 --> 00:06:19,360 Inkludi io.h. standard 113 00:06:19,360 --> 00:06:20,760 Prinċipali Int. 114 00:06:20,760 --> 00:06:26,330 U issa, minflok null, jien ser jispeċifika int imsejħa argc, u 115 00:06:26,330 --> 00:06:28,780 firxa ta 'kordi imsejħa ARGV. 116 00:06:28,780 --> 00:06:31,820 Issa, argc u ARGV huma sempliċiment konvenzjonijiet. 117 00:06:31,820 --> 00:06:34,000 >> Nistgħu sejħu dawn l-argumenti xejn aktar li rridu. 118 00:06:34,000 --> 00:06:37,630 Imma dak li huwa importanti huwa li argc hija ta int għaliex, skond id-definizzjoni, huwa 119 00:06:37,630 --> 00:06:41,360 tmur fih il-kont argument, il- numru ta 'kliem b'kollox li l- 120 00:06:41,360 --> 00:06:43,380 utent ittajpjat fil tiegħu jew tagħha fil-pront. 121 00:06:43,380 --> 00:06:47,910 ARGV, sadanittant, argument vector, huwa ser fil-fatt tkun array ħażna 122 00:06:47,910 --> 00:06:52,020 kollha tal-kliem li l-utent ikollu ittajpjat fuq tiegħu jew tagħha fil-pront. 123 00:06:52,020 --> 00:06:54,500 >> Ejja tipproċedi biex tagħmel xi ħaġa issa ma 'wieħed jew aktar minn dawn 124 00:06:54,500 --> 00:06:55,660 argumenti linja tal-kmand. 125 00:06:55,660 --> 00:07:00,070 B'mod partikolari, ejja imorru quddiem u print kwalunkwe kelma t-tipi utent 126 00:07:00,070 --> 00:07:03,960 wara l-isem tal-programm fil-prompt. 127 00:07:03,960 --> 00:07:04,730 Bracket Open. 128 00:07:04,730 --> 00:07:06,240 Parentesi magħluqa. 129 00:07:06,240 --> 00:07:10,510 Mija printf backslash iu comma. 130 00:07:10,510 --> 00:07:14,550 U issa I bżonn li tgħid printf liema valur biex plagg fil dik placeholder. 131 00:07:14,550 --> 00:07:18,600 Irrid li l-ewwel kelma li l-utent ikollu ittajpjat wara isem tal-programm, 132 00:07:18,600 --> 00:07:23,130 u għalhekk jien ser tispeċifika ARGV bracket 1, qrib 133 00:07:23,130 --> 00:07:24,830 parentesi, virgola. 134 00:07:24,830 --> 00:07:27,290 >> Issa, għaliex bracket 1 u mhux bracket 0? 135 00:07:27,290 --> 00:07:30,990 Ukoll, jirriżulta, maħżuna awtomatikament fil ARGV 0 se tkun l- 136 00:07:30,990 --> 00:07:32,620 Isem attwali programm. 137 00:07:32,620 --> 00:07:36,180 Allura l-ewwel kelma li t-tipi utent wara l-isem tal-programm huwa, minnu 138 00:07:36,180 --> 00:07:38,990 konvenzjoni, se tkun maħżuna ARGV 1. 139 00:07:38,990 --> 00:07:42,380 Ejja issa jikkompilaw u run dan il-programm. 140 00:07:42,380 --> 00:07:47,780 >> Jagħmlu ARGV 0, dot slash ARGV 0. 141 00:07:47,780 --> 00:07:50,520 U issa kelma bħal bonjour. 142 00:07:50,520 --> 00:07:51,670 Ikteb. 143 00:07:51,670 --> 00:07:53,520 U hemm aħna għandna hija, bonjour. 144 00:07:53,520 --> 00:07:55,750 >> [Video daqq END] 145 00:07:55,750 --> 00:07:57,000 >> ROB BODEN: Kull dritt. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Agħlaq din. 148 00:08:01,230 --> 00:08:16,730 Allura tieħu ħarsa lejn dak il-programm li aħna biss introdotti lilna, ukoll, biss 149 00:08:16,730 --> 00:08:24,710 li juru, jekk aħna istampar ARGV 0, jagħmlu, issa x'inhu, ARGV 0, dot slash ARGV 0. 150 00:08:24,710 --> 00:08:30,440 Allura, kif mistenni, huwa istampar l- isem tal-programm, peress ARGV 0 hija 151 00:08:30,440 --> 00:08:32,970 dejjem se tkun il- isem tal-programm. 152 00:08:32,970 --> 00:08:35,640 Imma ejja nagħmlu xi ħaġa ta ' daqsxejn aktar interessanti. 153 00:08:35,640 --> 00:08:42,080 >> Allura fis-sett problema, inti ser tkun introdott biex din il-funzjoni, atoi. 154 00:08:42,080 --> 00:08:44,440 Allura dak li nużaw atoi għall? 155 00:08:44,440 --> 00:08:48,550 Li għaddej biex jikkonverti string għal integer. 156 00:08:48,550 --> 00:08:53,280 Hekk jekk I jgħaddu l-string, wieħed tnejn tlieta, li atoi, li ser tikkonverti dak 157 00:08:53,280 --> 00:08:56,910 għall-eqreb numru sħiħ, wieħed tnejn tlieta. 158 00:08:56,910 --> 00:09:01,480 Allura aħna qed tmur biex jikkonvertu l-ewwel kmand argument linja li integer, 159 00:09:01,480 --> 00:09:05,690 u mbagħad biss print li numru sħiħ. 160 00:09:05,690 --> 00:09:09,680 >> Allura bażikament, aħna qed tip ta ' reimplementing getint, biss il- 161 00:09:09,680 --> 00:09:12,350 integer hija mdaħħla fil-kmand linja minflok fil-programm 162 00:09:12,350 --> 00:09:14,560 interattiv. 163 00:09:14,560 --> 00:09:23,170 Mela allura, jagħmlu ARGV 0, ejja nagħmlu fil hawn, u tagħlaq dik. 164 00:09:23,170 --> 00:09:27,670 Allura running ARGV 0, u ejja jidħlu fil- numru sħiħ, wieħed tnejn tlieta erba wieħed tnejn. 165 00:09:27,670 --> 00:09:30,840 Għalhekk ser jistampaw il-numru sħiħ, wieħed tnejn tlieta erba wieħed tnejn. 166 00:09:30,840 --> 00:09:35,500 Hemm xi irqaqat li atoi li dan ser tieqaf kura dwar xi ħaġa 167 00:09:35,500 --> 00:09:39,040 lil hinn minn karattru numeriku valida, iżda li ma jimpurtax. 168 00:09:39,040 --> 00:09:42,870 >> Allura dak li taħseb jiġri jekk nagħmel dan? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Tort Segmentazzjoni. 171 00:09:47,050 --> 00:09:50,410 Allura għaliex huwa li? 172 00:09:50,410 --> 00:09:56,060 Jekk inti tħares lura lejn programm tagħna, aħna qed konverżjoni ARGV 1, l-ewwel argument 173 00:09:56,060 --> 00:09:59,610 wara l-isem tal-programm, għal numru sħiħ. 174 00:09:59,610 --> 00:10:03,350 Imma m'hemm l-ebda argument għadda wara l-isem tal-programm. 175 00:10:03,350 --> 00:10:08,060 Allura hawn, naraw li dan huwa Buggy programm, peress li, jekk nippruvaw run 176 00:10:08,060 --> 00:10:10,530 mingħajr ebda argumenti, se biss crash. 177 00:10:10,530 --> 00:10:16,950 >> Allura ieħor mudell komuni tkun taf tara huwa xi ħaġa simili, jekk argc huwa inqas 178 00:10:16,950 --> 00:10:21,100 minn tnejn, li jindika li ma kienx hemm inqas l-isem programm u 179 00:10:21,100 --> 00:10:29,100 ewwel argument, allura aħna ser nagħmlu xi ħaġa bħal printf, mhux biżżejjed 180 00:10:29,100 --> 00:10:31,190 argumenti linja tal-kmand. 181 00:10:31,190 --> 00:10:33,170 Li probabbilment mhix waħda tajba għall-istampar, huwa probabbilment xi ħaġa, bħal 182 00:10:33,170 --> 00:10:35,440 għandek tidħol integer fil-linja tal-kmand. 183 00:10:35,440 --> 00:10:37,450 I ser biss jispiċċaw hemmhekk. 184 00:10:37,450 --> 00:10:39,600 U mbagħad jirritornaw 1. 185 00:10:39,600 --> 00:10:44,740 Mela ftakar li fl-aħħar ta 'tagħna programm, jekk nerġgħu lura 0, dik it-tip ta ' 186 00:10:44,740 --> 00:10:47,060 jindika suċċess. 187 00:10:47,060 --> 00:10:50,940 U prinċipali wkoll awtomatikament prospetti 0 jekk inti ma. 188 00:10:50,940 --> 00:10:55,800 >> Allura hawn, aħna qed retuning 1 biex jindikaw li li mhux suċċess. 189 00:10:55,800 --> 00:11:01,000 U inti tista 'tmur lura xi trid, biss, 0 jindika suċċess, u 190 00:11:01,000 --> 00:11:03,390 kull ħaġ'oħra jindika falliment. 191 00:11:03,390 --> 00:11:04,855 Mela ejja run din il-verżjoni ta 'affarijiet. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Allura issa, jekk aħna ma jidħol kmand tal-linja argument, dan ser jgħidlek b'mod korrett 194 00:11:16,600 --> 00:11:18,290 us, mhux biżżejjed linja tal-kmand. 195 00:11:18,290 --> 00:11:20,610 Ma finitura is-sentenza. 196 00:11:20,610 --> 00:11:24,950 Else, jekk aħna attwalment tgħaddiha waħda, jista 'jtemm il-programm. 197 00:11:24,950 --> 00:11:27,920 Allura dan huwa kif inti tuża argc fl sabiex jivvalidaw in-numru ta ' 198 00:11:27,920 --> 00:11:30,630 argumenti kmand linja li huma attwalment mgħoddija. 199 00:11:30,630 --> 00:11:39,360 >> Mela ejja jagħmlu dan il-programm daqsxejn aktar ikkumplikata, u ħarsa lejn it-tieni 200 00:11:39,360 --> 00:11:42,180 iterazzjoni ta 'affarijiet. 201 00:11:42,180 --> 00:11:46,310 Allura issa, aħna mhux biss istampar tal- ewwel argument linja tal-kmand. 202 00:11:46,310 --> 00:11:51,210 Hawnhekk, aħna qed mtennija minn partijiet ugwali i int 0, i huwa inqas minn argc, i plus 203 00:11:51,210 --> 00:11:55,280 plus, u l-istampar ARGV, indiċi i. 204 00:11:55,280 --> 00:11:59,300 Allura dan il-mudell, għal darb'oħra, dan huwa l-istess mudell bħal qabel, ħlief minflok 205 00:11:59,300 --> 00:12:02,600 ta 'sejħa tal-varjabbli n, aħna qed tuża argc. 206 00:12:02,600 --> 00:12:09,520 >> Allura dan huwa mtennija fuq kull indiċi fil-firxa, u l-istampar kull 207 00:12:09,520 --> 00:12:11,910 element f'dak array. 208 00:12:11,910 --> 00:12:20,300 U għalhekk, meta aħna run dan il-programm, ukoll, I ma tidħol fi kwalunkwe linja tal-kmand 209 00:12:20,300 --> 00:12:22,540 argumenti, għalhekk biss prints l-isem tal-programm. 210 00:12:22,540 --> 00:12:26,053 Jekk I tidħol mazz ta 'affarijiet, inneħħu print wieħed, kull wieħed fuq linja tagħha stess. 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 Mela ejja tagħti dan il-pass wieħed ulterjuri. 214 00:12:34,770 --> 00:12:38,890 U minflok ta 'stampar kull argument fuq il-linja tagħha stess, ejja jistampaw kull 215 00:12:38,890 --> 00:12:42,590 karattru ta 'kull argument fuq il-linja tagħha stess. 216 00:12:42,590 --> 00:12:46,700 Mela ftakar li ARGV hija firxa ta 'kordi. 217 00:12:46,700 --> 00:12:50,960 Allura dak li huwa string, iżda firxa ta 'karattri? 218 00:12:50,960 --> 00:12:57,140 Allura dan ifisser li ARGV huwa verament firxa ta 'firxa ta' karattri. 219 00:12:57,140 --> 00:13:04,920 Allura jieħdu vantaġġ ta 'dan, ejja jinjora dan għal issa. 220 00:13:04,920 --> 00:13:08,190 Ejja biss tikkunsidra l-ARGV string 0. 221 00:13:08,190 --> 00:13:14,170 >> Allura jekk aħna tixtieq li tressaq kull karattru ta ' ARGV 0 fuq il-linja tagħha stess, allura nixtieq 222 00:13:14,170 --> 00:13:19,500 jagħmlu l-mudell aħna qed jintużaw biex, i huwa inqas mit-tul tal-firxa, 223 00:13:19,500 --> 00:13:23,990 li hawn, huwa strlen ta ', li mhux dak I trid tagħmel, string 224 00:13:23,990 --> 00:13:26,450 s ugwali ARGV 0. 225 00:13:26,450 --> 00:13:30,390 Hekk i huwa inqas mit-tul ta 'tagħna array, li f'dan il-każ huwa array 226 00:13:30,390 --> 00:13:34,410 ta 'karattri, i plus plus. 227 00:13:34,410 --> 00:13:41,040 U hekk, kif rajna aħħar ġimgħa, huwa ideali jekk nimxu li strlen barra 228 00:13:41,040 --> 00:13:45,210 tal-kundizzjoni, peress li n se jkun li żżid l strlen ta 'kull darba immorru 229 00:13:45,210 --> 00:13:47,720 permezz tal-linja, u huwa mhux se jinbidlu. 230 00:13:47,720 --> 00:13:50,230 Allura aħna ser tissettja ugwali għal n hawn fuq. 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 Allura issa, aħna qed mtennija fuq kull indiċi fil-firxa. 234 00:14:01,320 --> 00:14:05,630 U hekk, jekk irridu li jistampaw kull karattru f'dak array, mija c huwa 235 00:14:05,630 --> 00:14:06,880 il-bandiera irridu li jużaw għall-karattri. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 U issa i bracket se tkun l- spag, karattru indiċi i, hekk jekk l- 238 00:14:19,770 --> 00:14:20,970 string kienu bonjour. 239 00:14:20,970 --> 00:14:27,530 allura s 0 se tkun h, i bracket 1 se jkun e, u l-bqija. 240 00:14:27,530 --> 00:14:30,800 >> Allura issa rridu li jgħaqqdu dawn iż-żewġ affarijiet. 241 00:14:30,800 --> 00:14:35,440 Aħna tixtieq li jistampaw kull karattru ta 'kull argument linja tal-kmand. 242 00:14:35,440 --> 00:14:38,950 Allura aħna qed tmur biex ikollhom a nested għal loop. 243 00:14:38,950 --> 00:14:47,480 U konvenzjonalment, l-ewwel counter qed i, il-li jmiss se tkun j, n 244 00:14:47,480 --> 00:14:54,450 se jkun il-strlen ta 'i ARGV, i huwa inqas minn n, i plus plus. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 U issa minflok ta 'stampar i ARGV, hekk ARGV bracket i se indiċi - 247 00:15:06,870 --> 00:15:14,280 li għaddej biex tkun il-linja tal-kmand i-th argument, ARGV i, j huwa ser 248 00:15:14,280 --> 00:15:16,925 tkun il-karattru jth ta l-argument i-th. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 I ser teħles minn dan up hawn issa peress li aħna poġġih f'dak loop. 251 00:15:24,810 --> 00:15:33,900 Allura huwa ekwivalenti għal string s ugwali ARGV i, u mbagħad parentesi s j. 252 00:15:33,900 --> 00:15:36,980 >> Well, aħna ma bżonn li tiddikjara dan il-varjabbli s. 253 00:15:36,980 --> 00:15:44,530 Minflok, aħna ser biss jgħaqqdu dawn tnejn fis-dak li kellna, ARGV i, j. 254 00:15:44,530 --> 00:15:45,780 >> SPEAKER 1: [inaudible]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB BODEN: sejħa Tajba. 257 00:15:49,680 --> 00:15:52,936 Allura dan huwa miksur. 258 00:15:52,936 --> 00:15:55,510 Jekk I attwalment dam, nixtiequ jkunu realizzati dan. 259 00:15:55,510 --> 00:16:01,210 Allura l-counter I jimpurtahom f'dan partikolari għall- 260 00:16:01,210 --> 00:16:05,410 loop hija j, l iterator. 261 00:16:05,410 --> 00:16:08,560 Allura inti run fis kwistjonijiet, probabbilment loop infinita, jekk aħna 262 00:16:08,560 --> 00:16:09,540 ma tkunx iffissata dik. 263 00:16:09,540 --> 00:16:12,220 C'est pourquoi aħna qed wkoll jitkellem dwar debugging illum. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Mela ejja run dan il-programm. 266 00:16:15,240 --> 00:16:21,200 U ejja attwalment żid printf separata dritt hawn li se biss print 267 00:16:21,200 --> 00:16:27,480 linja oħra, peress li dan ifisser meta aħna tmexxi l-programm, se jkun hemm xi vojt 268 00:16:27,480 --> 00:16:31,830 linja bejn kull karattru ta ' kull argument linja tal-kmand. 269 00:16:31,830 --> 00:16:33,448 Well, aħna ser tara dak li jfisser. 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 Ltqajna xi bug. 273 00:16:39,870 --> 00:16:42,860 Error impliċitament li tiddikjara funzjoni librerija strlen. 274 00:16:42,860 --> 00:16:51,630 >> Allura jmorru lura fil-programm tagħna, I nesa li hash jinkludu string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Allura string.h se tkun l- fajl header li tiddikjara 277 00:16:57,730 --> 00:16:58,980 il-funzjoni strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK lok, hija tiġbor. 280 00:17:06,060 --> 00:17:09,109 Issa, ejja run. 281 00:17:09,109 --> 00:17:10,930 Allura dan. 282 00:17:10,930 --> 00:17:17,790 Huwa ser jistampa tagħna isem tal-programm, bonjour dinja. 283 00:17:17,790 --> 00:17:23,510 Huwa ser jistampaw kull ħaġa, kull karattru, fuq il-linja tagħha stess. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Mela ejja attwalment jieħdu din pass ulterjuri. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 U minflok jużaw string.h, ejja jaħsbu dwar kif aħna'd jiġu implimentati tagħna stess 288 00:17:39,700 --> 00:17:41,420 funzjoni strlen. 289 00:17:41,420 --> 00:17:45,600 So I ser jagħtuk immedjatament firma funzjoni. 290 00:17:45,600 --> 00:17:52,900 Mela ejja sejħa fil my_strlen, u huwa ser tieħu string bħala argument, 291 00:17:52,900 --> 00:17:57,220 u qed nistennew li jirritornaw il- tul ta 'dak string. 292 00:17:57,220 --> 00:18:03,430 Għalhekk, fejn huwa li Guy? 293 00:18:03,430 --> 00:18:04,990 Iva. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Sabiex tiftakar mill-slide ta 'qabel li kien ukoll mill-aħħar ġimgħa, li 296 00:18:12,900 --> 00:18:18,890 firxa ta 'karattri, ukoll, string, hekk ejja ngħidu li dan huwa string tagħna s. 297 00:18:18,890 --> 00:18:29,870 Hekk jekk i huwa l-sekwenza, hello, allura, H-E-L-L-O, fil-memorja, li għaddej biex 298 00:18:29,870 --> 00:18:35,610 jkun, u allura dan backslash 0 karattru. 299 00:18:35,610 --> 00:18:39,170 >> Allura kif nistgħu tikseb it-tul ta 'i? 300 00:18:39,170 --> 00:18:43,190 Ukoll, il-trick qed tfittex dan backlash 0 karattru, dan null 301 00:18:43,190 --> 00:18:44,380 terminatur. 302 00:18:44,380 --> 00:18:50,270 Allura l-algoritmu huwa għaddej li tkun xi ħaġa simili ftit 303 00:18:50,270 --> 00:18:51,510 biżżejjed karattri li - 304 00:18:51,510 --> 00:18:56,180 ejja jkollhom din idejn jirrappreżentaw xi counter, ejja sejħa dan it-tul int. 305 00:18:56,180 --> 00:19:00,060 Allura, li jibdew minn hawn, aħna qed ser jtenni fuq string tagħna. 306 00:19:00,060 --> 00:19:04,100 >> Allura l-ewwel karattru, huwa H, u mhuwiex lura mmejla 0, hekk 307 00:19:04,100 --> 00:19:05,170 it-tul huwa 1. 308 00:19:05,170 --> 00:19:08,050 Jtenni l-karattru li jmiss, E, u mhuwiex backslash 0. 309 00:19:08,050 --> 00:19:09,630 Tul huwa 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 U fl-aħħarnett, nilħqu backslash 0, u sabiex ifisser, ukoll, 314 00:19:16,690 --> 00:19:17,780 din is-sekwenza huwa fuq. 315 00:19:17,780 --> 00:19:20,130 Mela ejja ritorn 5. 316 00:19:20,130 --> 00:19:33,630 >> Allura konkret ta 'din, minn naħa, tul n my ikun egwali għal 0, lemin tiegħi. 317 00:19:33,630 --> 00:19:36,088 U aħna qed tmur biex jtenni - 318 00:19:36,088 --> 00:19:38,000 >> SPEAKER 1: [inaudible] 319 00:19:38,000 --> 00:19:38,640 >> ROB BODEN: Oh, rimja. 320 00:19:38,640 --> 00:19:39,870 Sejħa tajba. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Allura tul n egwali għal 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Allura issa, it-tul filwaqt li s ma istess daqs u mbagħad, backslash 0. 325 00:19:58,310 --> 00:20:04,660 Mela ftakar, dan backslash 0, huwa karattru attwali, u dan jindika 326 00:20:04,660 --> 00:20:05,820 tmiem is-sekwenza. 327 00:20:05,820 --> 00:20:09,850 Eżatt bħal, ukoll, backslash n huwa karattru attwali. 328 00:20:09,850 --> 00:20:14,040 Backslash 0 se jindikaw l-aħħar ta 'sekwenza tagħna. 329 00:20:14,040 --> 00:20:15,414 I ma jridux jitqiegħdu li hemm. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 U filwaqt li s indiċjati skond it-tul ma jkunx ugwali għall-terminatur null, imbagħad 332 00:20:25,620 --> 00:20:27,130 aħna qed biss se inkrement tul. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Mela allura, fl-aħħar tal-programm tagħna, tul huwa eventwalment ser 335 00:20:34,880 --> 00:20:37,610 jkun 5 f'dan il-każ. 336 00:20:37,610 --> 00:20:39,210 U aħna ser biss jirritorna tul. 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 Allura issa stabbiliti hawn, I ma do my_strlen. 340 00:20:48,290 --> 00:20:50,700 Ejja josservawha tagħmel ċert kollox jimxi bla xkiel. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Was I tagħmel fi 2? 343 00:20:58,210 --> 00:21:00,565 Jew kien li 1? 344 00:21:00,565 --> 00:21:01,940 Li għandha tagħmel. 345 00:21:01,940 --> 00:21:02,690 Kull dritt. 346 00:21:02,690 --> 00:21:08,490 Allura dan huwa ARGV 2. 347 00:21:08,490 --> 00:21:11,585 Jaħdem bħala antiċipat, għalkemm kien li l-waħda I ma kien fil-? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Iva. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Din il-verżjoni ta 'affarijiet ma kellux il-linja ġdida printf wara, iżda 352 00:21:21,820 --> 00:21:22,910 ma jagħmel ebda differenza. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Allura ħadmu kif mistenni. 355 00:21:25,780 --> 00:21:34,750 >> Issa nistgħu anki jgħaqqdu dan il-pass wieħed ulterjuri, fejn avviz hawn, ukoll, 356 00:21:34,750 --> 00:21:38,920 ewwel, aħna qed ħtif l strlen ta ARGV i, u allura aħna qed mtennija fuq 357 00:21:38,920 --> 00:21:41,450 kull karattru f'dak string. 358 00:21:41,450 --> 00:21:47,480 Allura minflok tagħmel dan, dak li jekk aħna biss jgħaqqdu din il-loġika ta 'stennija 359 00:21:47,480 --> 00:21:50,740 sakemm aħna hit backslash 0 dritt fis dan għal loop? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Allura jtenni filwaqt i ARGV, j ma backslash mhux ugwali 0. 362 00:22:07,490 --> 00:22:10,680 Mela ejja run ewwel. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Kull dritt. 365 00:22:21,180 --> 00:22:27,655 Allura hawn, din il-kundizzjoni huwa qal - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 ejja ċar li. 368 00:22:40,060 --> 00:22:49,140 Allura issa, ħalli din tkun ARGV tagħna. 369 00:22:49,140 --> 00:22:55,290 Allura meta I biss dam dak il-programm qabel, ARGV firxa ta 'kordi. 370 00:22:55,290 --> 00:23:03,100 U għalhekk, jekk I run ma ARGV dot slash 2, Hello dinja, allura l-ARGV 371 00:23:03,100 --> 00:23:07,650 nnifisha hija tul ta '3, għall ARGV żero, hello, u fid-dinja. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> U ġewwa ta 'kull wieħed minn dawn l-indiċi huwa, innifsu firxa, fejn dan ser tkun 374 00:23:19,660 --> 00:23:23,780 dot, dan se jkun slash, I do not know jekk dan kien il-direzzjoni t-tajba, I 375 00:23:23,780 --> 00:23:25,680 ma naħsibx li kien. 376 00:23:25,680 --> 00:23:30,110 A-R-V sing, jeħtieġu aktar spazju. 377 00:23:30,110 --> 00:23:32,570 Ejja maqtugħa dan array. 378 00:23:32,570 --> 00:23:38,230 Sing 0, u mbagħad backslash 0 A-R-V. 379 00:23:38,230 --> 00:23:43,160 U mbagħad diżordinat se jkun bonjour. 380 00:23:43,160 --> 00:23:45,910 Ejja ngħidu, H-E backslash 0. 381 00:23:45,910 --> 00:23:51,130 U fl-aħħarnett, W-O backslash 0. 382 00:23:51,130 --> 00:23:59,730 >> Allura l-algoritmu li aħna biss kiteb, l nested għal-linji, dak li qed 383 00:23:59,730 --> 00:24:07,321 tagħmel huwa, aħna l-ewwel ikollhom l- kontro i u mbagħad j. 384 00:24:07,321 --> 00:24:15,206 Dan ikun aktar faċli ma 'kodiċi fuq il- screen, Ejja ħa mmorru lura għal dan. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Allura avviż li i huwa l-iterator li l- mtennija fuq kull kmand 387 00:24:24,600 --> 00:24:25,610 argument line. 388 00:24:25,610 --> 00:24:28,870 U j huwa l-iterazzjoni iterator fuq kull karattru li 389 00:24:28,870 --> 00:24:30,410 argument linja tal-kmand. 390 00:24:30,410 --> 00:24:46,755 Allura dak li dan printf ġewwanett qed tagħmel huwa, għandna printf ARGV 0 0, printf 391 00:24:46,755 --> 00:24:58,680 ARGV 0 1, printf ARGV 0 2, 3 0, 0 4, 0 5, 0 6, iżda issa, ARGV 0 7 se 392 00:24:58,680 --> 00:25:00,670 backslash ugwali 0. 393 00:25:00,670 --> 00:25:05,730 >> Mela allura aħna ħruġ li għal loop, u issa i itenni għal 1. 394 00:25:05,730 --> 00:25:10,910 U issa aħna qed tmur biex print ARGV 1 0, ARGV 1 1 - 395 00:25:10,910 --> 00:25:17,040 ukoll, issa, peress li jien cut bonjour qasir, ARGV 1 2 hija għal darb'oħra se tkun 396 00:25:17,040 --> 00:25:18,170 backslash 0. 397 00:25:18,170 --> 00:25:25,050 U għalhekk, inkrement i u tkompli, u hekk, sakemm aħna jistampaw kollha 398 00:25:25,050 --> 00:25:28,580 dinja, u dawk huma tlieta linja ta 'kmand argumenti, u aħna ser ħruġ minn 399 00:25:28,580 --> 00:25:31,670 l loop aktar imbiegħda, u finitura programm tagħna. 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 >> Mela ejja jiġu lura hawn. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Allura inti ser jiksbu xi familjarità mal- argumenti linja tal-kmand fuq dan 406 00:25:52,370 --> 00:25:54,460 partikolari problema stabbiliti. 407 00:25:54,460 --> 00:25:56,630 >> Issa, debugging. 408 00:25:56,630 --> 00:26:01,680 Allura inti probabilment diġà kellha tagħmel xi debugging mal preċedenti tiegħek 409 00:26:01,680 --> 00:26:03,120 problema stabbiliti. 410 00:26:03,120 --> 00:26:08,420 U wieħed mod faċli ħafna ta 'debugging, ewwel, ejja nħarsu lejn programm buggy. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Well, mixi permezz dan il-programm, aħna qed tmur biex issaqsi lill-utent għal 413 00:26:23,830 --> 00:26:29,350 numru sħiħ, grab li integer, u mbagħad, arbitrarju, għandna loop filwaqt li 414 00:26:29,350 --> 00:26:32,280 huwa biss se decrement i sakemm ikun ugwali għal 10. 415 00:26:32,280 --> 00:26:35,820 Ejja biss wieħed jassumi jien jidħlu integer akbar minn 10. 416 00:26:35,820 --> 00:26:38,700 Allura decrement i sakemm ikun ugwali għal 10. 417 00:26:38,700 --> 00:26:42,630 >> U allura għandna loop ieħor filwaqt li li, filwaqt li i ma tkunx daqs 0, aħna qed 418 00:26:42,630 --> 00:26:44,540 se decrement i bi 3. 419 00:26:44,540 --> 00:26:49,790 Mela jekk tara l-intenzjoni tal-bug hawnhekk, huwa li dan ser decrement i li 420 00:26:49,790 --> 00:26:57,010 tkun ta '10, u allura dan loop filwaqt li se decrement i mill-10, 7, 4, għal 1, 421 00:26:57,010 --> 00:27:02,880 għal negattiv 2, għal negattiv 5, u l-bqija, għall-infinit negattiva, peress i se 422 00:27:02,880 --> 00:27:05,920 fatt qatt ma ugwali 0. 423 00:27:05,920 --> 00:27:08,610 U mbagħad fl-aħħar ta 'dan il-programm, aħna għandna l-funzjoni foo li huwa 424 00:27:08,610 --> 00:27:12,130 għaddej print out dak i. 425 00:27:12,130 --> 00:27:16,520 >> Allura dan huwa programm qasir u trivjali, u l-bug hija ovvja, 426 00:27:16,520 --> 00:27:18,790 speċjalment wara I biss qal dak li l-bug kien. 427 00:27:18,790 --> 00:27:24,840 Iżda l-intenzjoni hawnhekk hija, ukoll, dan jista ' attwalment look like xi tiegħek 428 00:27:24,840 --> 00:27:30,040 soluzzjonijiet minn greedy mill-aħħar problema stabbiliti, u forsi inti għandek 429 00:27:30,040 --> 00:27:32,800 xi loop infinita fil-programm tiegħek, u ma jkollokx idea 430 00:27:32,800 --> 00:27:34,100 x'hemm jikkawżaw. 431 00:27:34,100 --> 00:27:38,690 Allura teknika debugging utli ħafna huwa li żżid ftit printfs 432 00:27:38,690 --> 00:27:40,180 kollha fuq kodiċi tiegħek. 433 00:27:40,180 --> 00:27:49,200 >> So here I tixtieq printf barra ewwel loop waqt. 434 00:27:49,200 --> 00:27:53,155 U hawn irrid printf, u jien ser biss print i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 I ser anki tagħmel l-ewwel filwaqt li loop, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Barra, it-tieni waqt loop. 439 00:28:09,040 --> 00:28:12,170 Għal darb'oħra, jistampa ġewwa hawn, il-valur i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 U ejja run dan. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Debug slash hekk dot. 444 00:28:24,800 --> 00:28:25,610 Ikteb integer. 445 00:28:25,610 --> 00:28:28,150 Ejja nagħmlu 13. 446 00:28:28,150 --> 00:28:28,760 U boom. 447 00:28:28,760 --> 00:28:33,300 Naraw li aħna looping infinita ġewwa tat-tieni linja waqt. 448 00:28:33,300 --> 00:28:36,305 Allura issa nafu x'inhi l-bug huwa. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Iżda debugging printf huwa perfettament kbira, imma ladarba programmi tiegħek jiksbu 451 00:28:45,610 --> 00:28:50,560 itwal u aktar ikkumplikati, hemm soluzzjonijiet aktar sofistikati għall- 452 00:28:50,560 --> 00:28:51,705 jkollna affarijiet tax-xogħol. 453 00:28:51,705 --> 00:28:52,955 Mela ejja jitneħħew dawn printfs kollha. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 U ejja jagħmlu ċert I ma break xejn. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Allura l-programm aħna qed tmur li tintroduċi tissejjaħ 458 00:29:14,180 --> 00:29:16,715 GDB, għall GNU Debugger. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Well, attwalment, ejja tneħħi debug għall it-tieni, u jagħmlu debug darb'oħra. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Well, attwalment ewwel, lezzjoni tajba fl-argumenti linja tal-kmand. 463 00:29:34,440 --> 00:29:37,780 Avviż li dan il-kmand Clang li hija kompilazzjoni kollox qed mgħoddija 464 00:29:37,780 --> 00:29:41,300 fil-linja tal-kmand, dawn argumenti linja tal-kmand. 465 00:29:41,300 --> 00:29:46,250 Allura eżattament kif inti se tkun qed tuża argumenti linja tal-kmand, kif aħna 466 00:29:46,250 --> 00:29:51,500 ma qabel, u kif inti ser fil PSET 2, li kif Clang qed jużawhom. 467 00:29:51,500 --> 00:30:00,070 >> Allura avviż li din l-ewwel bandiera, sing ggdb3, dak li kien qal huwa, Clang, 468 00:30:00,070 --> 00:30:03,790 inti għandhom jiġbru dan il-fajl bl- intenzjoni li aħna se eventwalment 469 00:30:03,790 --> 00:30:05,380 bżonn biex debug dan. 470 00:30:05,380 --> 00:30:13,840 Dan sakemm ikollok dak tal-bandiera, allura nistgħu debug GDB. 471 00:30:13,840 --> 00:30:17,380 U inneħħu tiftaħ il Debugger GNU. 472 00:30:17,380 --> 00:30:22,920 >> Allura hemm ħafna ta 'kmandi li għandek bżonn biex jidraw. 473 00:30:22,920 --> 00:30:27,100 L-ewwel waħda li inti probabilment immedjatament bżonn huwa Run. 474 00:30:27,100 --> 00:30:28,200 Allura x'inhu Run se jagħmlu? 475 00:30:28,200 --> 00:30:30,910 Huwa ser tibda programm tagħna. 476 00:30:30,910 --> 00:30:36,180 Allura run, programm tal-bidu, il-programm jitlob magħna għal integer, 13. 477 00:30:36,180 --> 00:30:39,170 U allura huwa looping infinita bħala mistennija, ħlief I jitneħħew l- 478 00:30:39,170 --> 00:30:40,500 printfs, hekk aħna ma anki tara li. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Ħareġ normalment. 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 Huwa possibbli li mgeżwra l- mod madwar, lura għall - jinjora dan. 484 00:30:53,640 --> 00:30:55,170 Assumi hija ma ħruġ normalment. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Hemm tweġiba kkumplikata għal dan. 487 00:31:03,370 --> 00:31:07,890 >> Allura issa, li mhux utli ħafna. 488 00:31:07,890 --> 00:31:11,480 Hekk biss running programm tagħna ġewwa ta ' dan debugger ma tgħinna fi kwalunkwe 489 00:31:11,480 --> 00:31:15,610 mod, peress li aħna seta 'biss isir dot mmejla debug minn barra GDB. 490 00:31:15,610 --> 00:31:21,250 Allura l-kmand wieħed li Int ser ikollok probabbilment - 491 00:31:21,250 --> 00:31:22,970 u jien ser nieqaf dan. 492 00:31:22,970 --> 00:31:25,850 Kontroll d jew nieqaf, kemm ix-xogħol. 493 00:31:25,850 --> 00:31:29,550 Mela ejja tiftaħ it up again. 494 00:31:29,550 --> 00:31:31,130 >> Ieħor kmand li inti probabilment immedjatament jridu 495 00:31:31,130 --> 00:31:33,600 jidraw huwa Break. 496 00:31:33,600 --> 00:31:37,120 Allura aħna ser jiksru fuq ewlenija għal issa, u mbagħad I ser jispjegaw dan. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Well, hawn naraw waqqafna breakpoint fuq din il-linja fil debug.c. 499 00:31:46,370 --> 00:31:50,160 Allura dak break ifisser huwa li meta I tip run, il-programm se 500 00:31:50,160 --> 00:31:53,560 tkompli taħdem sakemm I hit breakpoint. 501 00:31:53,560 --> 00:31:59,390 Allura meta I hit run, il-programm jibda, u mbagħad pawżi hekk kif 502 00:31:59,390 --> 00:32:01,940 jidħol l-funzjoni prinċipali. 503 00:32:01,940 --> 00:32:06,930 Break prinċipali se tkun xi ħaġa inti pretty komunement tagħmel. 504 00:32:06,930 --> 00:32:11,340 >> U issa, li jintroduċu inti għal xi kmandi aktar. 505 00:32:11,340 --> 00:32:14,330 Avviż hawnhekk, li huwa qal we kissru fil-linja 11, li hija 506 00:32:14,330 --> 00:32:16,230 printf, jidħol integer. 507 00:32:16,230 --> 00:32:21,260 Allura l-kmand jmiss se tkun kif immorru l-linja li jmiss tal-kodiċi. 508 00:32:21,260 --> 00:32:24,810 Dan se jippermettilna naslu biex pass permezz tal-linja programm tagħna b'linja. 509 00:32:24,810 --> 00:32:26,260 Allura li jmiss. 510 00:32:26,260 --> 00:32:29,820 >> Issa linja 12, aħna qed tmur biex jiksbu l-eqreb numru sħiħ. 511 00:32:29,820 --> 00:32:30,450 Next. 512 00:32:30,450 --> 00:32:34,290 U jekk inti biss hit Ikteb darb'oħra, dan ser jerġa 'jagħmel l-aħħar ħaġa li għamilt. 513 00:32:34,290 --> 00:32:36,480 So I m'għandhomx bżonn li tip jmiss kull darba. 514 00:32:36,480 --> 00:32:40,100 Allura jidħol integer, 13. 515 00:32:40,100 --> 00:32:46,940 Allura issa, linja 14, filwaqt i huwa akbar minn 10, u jien ser tagħmel li jmiss. 516 00:32:46,940 --> 00:32:48,685 U naraw aħna qed tmur biex decrement i. 517 00:32:48,685 --> 00:32:50,210 Allura aħna qed tmur biex decrement i ġdid. 518 00:32:50,210 --> 00:32:53,620 >> Allura issa, ieħor utli kmand Stampa. 519 00:32:53,620 --> 00:32:55,750 Allura Stampa se jistampa il-valur tal-varjabbli. 520 00:32:55,750 --> 00:32:57,825 Ejja jġibu l-valur ta 'varjabbli i. 521 00:32:57,825 --> 00:32:58,705 Ejja jistampaw i. 522 00:32:58,705 --> 00:33:00,910 Huwa ser ngħid i huwa 11. 523 00:33:00,910 --> 00:33:03,330 Issa aħna jmiss darb'oħra filwaqt li i huwa akbar minn 10. 524 00:33:03,330 --> 00:33:05,590 Hekk i għadu akbar minn 10, peress li huwa 11. 525 00:33:05,590 --> 00:33:06,920 i minus minus. 526 00:33:06,920 --> 00:33:08,250 Ejja jistampaw i ġdid. 527 00:33:08,250 --> 00:33:10,950 Kif kien mistenni, huwa 10. 528 00:33:10,950 --> 00:33:12,510 >> Allura issa, li jmiss. 529 00:33:12,510 --> 00:33:16,250 Huwa sejjer lura l-kundizzjoni, i huwa akbar minn 10, iżda i issa huwa 10, hekk 530 00:33:16,250 --> 00:33:20,040 mhuwiex aktar minn 10, hekk aħna nistennew li jaqgħu barra mill-linja waqt. 531 00:33:20,040 --> 00:33:22,220 U issa aħna qed hawn taħt dik il-linja tal-kodiċi. 532 00:33:22,220 --> 00:33:28,750 U l-iggwidar, ieħor Lista, huwa biss se li juri l-preċedenti u li jmiss 533 00:33:28,750 --> 00:33:31,240 koppja ta 'linji ta' kodiċi, b'mod każ li inti mitlufa yourself. 534 00:33:31,240 --> 00:33:35,420 Allura aħna biss ħareġ dan loop filwaqt li, u issa dħalna dan 535 00:33:35,420 --> 00:33:37,080 filwaqt li loop, linja 18. 536 00:33:37,080 --> 00:33:39,860 Għalhekk, filwaqt li i ma tkunx daqs 0. 537 00:33:39,860 --> 00:33:46,570 U, li jmiss, i huwa ugwali i minus 3, u aħna ser avviż, dan ser biss iżommu għaddejjin. 538 00:33:46,570 --> 00:33:48,270 U nistgħu jistampaw i. 539 00:33:48,270 --> 00:33:49,990 >> Kull kmand tip ta ikollu shortcuts. 540 00:33:49,990 --> 00:33:51,720 Allura p huwa qasir għall Stampa. 541 00:33:51,720 --> 00:33:53,400 Allura nistgħu i p. 542 00:33:53,400 --> 00:33:57,550 Just iżommu azjenda n, jew iżommu tagħmel jmiss. 543 00:33:57,550 --> 00:33:58,340 Stampa i darb'oħra. 544 00:33:58,340 --> 00:34:00,380 You see issa huwa negattiv 167. 545 00:34:00,380 --> 00:34:06,030 Allura dan se jmorru fuq għal dejjem, iżda mhux verament dejjem, peress li inti biss raw, huwa 546 00:34:06,030 --> 00:34:09,330 fil-fatt se jispiċċaw f'xi punt. 547 00:34:09,330 --> 00:34:15,699 >> Allura li hija Mibdi GDB. 548 00:34:15,699 --> 00:34:19,504 Imma ejja nagħmlu ħaġ'oħra fil GDB. 549 00:34:19,504 --> 00:34:20,754 Uh, debug. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Għalhekk, f'dan il-każ partikolari, il- loop infinita ġara li jkun ġewwa ta ' 552 00:34:28,534 --> 00:34:30,050 il-funzjoni prinċipali. 553 00:34:30,050 --> 00:34:35,779 U għal issa, biss taċċetta li din jien ser jiċċaqalqu l loop infinita fis 554 00:34:35,779 --> 00:34:37,029 il-funzjoni foo. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Just ftakar li, fit-tmiem ta 'dan programm, ukoll, dan kien oriġinarjament 557 00:34:43,730 --> 00:34:46,210 ssejjaħ foo, li kien biss morna għall-istampa i. 558 00:34:46,210 --> 00:34:51,880 Iżda issa aħna qed ssejjaħ foo, li hija se decrement i sakemm ikun 0, u 559 00:34:51,880 --> 00:34:54,548 imbagħad jistampaw dak il-varjabbli. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Ħlief dan. 562 00:34:57,970 --> 00:35:00,175 Għamla debug. 563 00:35:00,175 --> 00:35:03,310 U issa, debug GDB. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Mela jekk jien biss Mexxi allura jien mhux ser jkunu jistgħu attwalment pass permezz tiegħi 566 00:35:10,580 --> 00:35:11,730 program-line mill-linja. 567 00:35:11,730 --> 00:35:19,820 Mela ejja break fil prinċipali, u mbagħad it-tip run. 568 00:35:19,820 --> 00:35:28,160 Allura jmorru permezz ta 'dan, printf, jidħol integer, jiksbu l-eqreb numru sħiħ, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Allura aħna qed tmur biex iżommu decrementing sakemm i huwa akbar minn 10. 571 00:35:37,490 --> 00:35:42,840 Imbagħad aħna qed tmur biex jaqgħu permezz tal- filwaqt li loop, u biex tikseb l-linja - 572 00:35:42,840 --> 00:35:44,364 ejja tiftaħ it up fil-tieqa separata. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Allura aħna decremented sakemm i ma kienx għadu akbar minn 10, u allura aħna 575 00:35:53,300 --> 00:35:55,700 imsejjaħ il-funzjoni, foo. 576 00:35:55,700 --> 00:36:01,340 >> Allura dak li ġara hekk kif I hit foo funzjoni, ukoll, I imsejħa foo, u 577 00:36:01,340 --> 00:36:04,030 imbagħad I ma kellhomx kontroll fuq GDB. 578 00:36:04,030 --> 00:36:10,230 Allura malli I hit jmiss fil-linja, affarijiet jitkomplew sakemm dan ġara, 579 00:36:10,230 --> 00:36:12,400 fejn il-programm ħareġ meta - 580 00:36:12,400 --> 00:36:14,450 jassumu ma kinux jeżistu eventwalment. 581 00:36:14,450 --> 00:36:16,390 Inti raw dan nieqaf għal ftit għalkemm. 582 00:36:16,390 --> 00:36:22,040 Allura għaliex ma I titlef kontroll fuq il-programm f'dak il-punt? 583 00:36:22,040 --> 00:36:27,540 Well, meta I tip li jmiss, li tmur lil il-linja litterali jmiss ta 'kodiċi li 584 00:36:27,540 --> 00:36:28,850 se tesegwixxi. 585 00:36:28,850 --> 00:36:35,950 Allura wara linja 21, il-linja li jmiss tal-kodiċi li għandha tesegwixxi hija linja 22, 586 00:36:35,950 --> 00:36:38,520 li huwa, joħorġu mill-mejn. 587 00:36:38,520 --> 00:36:43,810 So I ma jridux biss jmorru mal-linja li jmiss ta 'kodiċi. 588 00:36:43,810 --> 00:36:48,170 Irrid li jmorru fil-funzjoni, foo, u imbagħad pass wkoll permezz 589 00:36:48,170 --> 00:36:49,830 dawk il-linji ta 'kodiċi. 590 00:36:49,830 --> 00:36:53,726 >> Allura għal dan, għandna alternattiva. 591 00:36:53,726 --> 00:36:56,770 Ejja nieqaf li għal darb'oħra. 592 00:36:56,770 --> 00:36:58,020 Break prinċipali. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, li jmiss, li jmiss, 13, jmiss, jmiss, li jmiss, b'attenzjoni, 595 00:37:06,370 --> 00:37:09,820 qabel we hit linja foo. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Allura issa, aħna qed fil-linja 21, fejn nitolbu foo. 598 00:37:13,700 --> 00:37:17,100 Aħna ma rridux li tip li jmiss, peress li se biss sejħa l-foo funzjoni, u 599 00:37:17,100 --> 00:37:18,710 mur l-linja li jmiss tal-kodiċi. 600 00:37:18,710 --> 00:37:20,840 Dak li trid tuża hija Pass. 601 00:37:20,840 --> 00:37:25,690 Allura hemm differenza bejn Step u Sussegwentement, fejn Pass passi fil- 602 00:37:25,690 --> 00:37:28,190 jiffunzjonaw, u Next tmur fuq il-funzjoni. 603 00:37:28,190 --> 00:37:32,830 Hija biss tesegwixxi l-intier ta ' l-funzjoni u jżomm għaddejjin. 604 00:37:32,830 --> 00:37:37,210 >> Allura Pass se jressaqna fil-funzjoni, foo. 605 00:37:37,210 --> 00:37:41,160 U naraw hawn, issa, aħna qed lura fuq dan loop filwaqt li l-, fit-teorija, 606 00:37:41,160 --> 00:37:44,190 se tkompli dejjem. 607 00:37:44,190 --> 00:37:50,420 U jekk inti hit Pass, meta lanqas hija funzjoni li jsejħu, allura huwa 608 00:37:50,420 --> 00:37:51,720 identika għal Next. 609 00:37:51,720 --> 00:37:55,320 Allura huwa biss meta int fuq linja li hija ssejjaħ funzjoni li Jiżdiedu 610 00:37:55,320 --> 00:37:56,970 se jvarjaw minn Next. 611 00:37:56,970 --> 00:37:57,930 Allura Step se jressaqna hawn. 612 00:37:57,930 --> 00:38:02,100 Pass, pass, pass, pass, pass, pass, u Aħna ser biss loop infinita dejjem. 613 00:38:02,100 --> 00:38:06,810 >> Allura inti tista 'tikseb użati biex li bħala tiegħek mod ta 'identifikazzjoni loops infinita, hija 614 00:38:06,810 --> 00:38:08,960 biss li żżomm din il Enter biex tara fejn ikollok staġnati. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 Hemm modi aħjar biex tagħmel dan, iżda għal issa, li huwa perfettament suffiċjenti. 617 00:38:14,780 --> 00:38:17,967 U stylistically, li jikkonformaw mad Style 50, I għandu għamlu dan. 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 >> Allura aħħar kmand wieħed li tintroduċi. 621 00:38:28,400 --> 00:38:30,810 Well, ejja GDB debug pulzieri 622 00:38:30,810 --> 00:38:35,580 Allura minflok tkissir fi prinċipali, jekk I jafu l-funzjoni foo huwa wkoll il- 623 00:38:35,580 --> 00:38:39,230 problema, imbagħad I jista 'jkollhom biss qal, break fil foo, minflok. 624 00:38:39,230 --> 00:38:42,310 Ejja ngħidu I break fi kemm prinċipali u foo. 625 00:38:42,310 --> 00:38:45,390 Allura inti tista 'tistabbilixxi kif ħafna breakpoints kif tixtieq. 626 00:38:45,390 --> 00:38:49,230 Meta tip I run, li għaddej biex tieqaf fil-- 627 00:38:49,230 --> 00:38:52,180 ooh, ejja recompile, peress I mibdula affarijiet. 628 00:38:52,180 --> 00:38:55,950 Int ser ikollok tara din il-linja, Twissija, sors fajl huwa aktar riċenti minn eżekutibbli. 629 00:38:55,950 --> 00:38:59,680 Allura dan ifisser li jien biss marru fil hawn u mibdula dawn biex jikkonformaw ma 'Style 630 00:38:59,680 --> 00:39:03,100 50, imma jien ma recompile il-programm. 631 00:39:03,100 --> 00:39:04,870 So GDB jagħmel me konxji ta 'dak. 632 00:39:04,870 --> 00:39:10,130 I ser nieqaf, jagħmlu debug darb'oħra, hit debug GDB. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Allura issa, lura għal dak li kien isir. 635 00:39:12,800 --> 00:39:15,720 Break prinċipali, break foo. 636 00:39:15,720 --> 00:39:20,680 Issa jekk I run-programm, dan huwa se tkompli sakemm hits 637 00:39:20,680 --> 00:39:21,320 breakpoint. 638 00:39:21,320 --> 00:39:24,680 Li breakpoint jiġri li tkun l-ewwel waħda fl prinċipali. 639 00:39:24,680 --> 00:39:28,630 Issa, minflok tagħmel li jmiss, li jmiss, li jmiss, jmiss, li jmiss, sal I hit foo, I 640 00:39:28,630 --> 00:39:35,230 tista tip tkompli, li se jkompli sakemm inti hit l-breakpoint jmiss. 641 00:39:35,230 --> 00:39:37,200 I jkollhom jidħlu n-numru sħiħ l-ewwel. 642 00:39:37,200 --> 00:39:40,570 Kompli se tkompli sakemm I hit l- breakpoint li jmiss, li huwa li 643 00:39:40,570 --> 00:39:43,320 funzjoni ta 'foo. 644 00:39:43,320 --> 00:39:50,130 >> Allura Run se jimxu sakemm inti hit breakpoint, iżda inti biss tip run meta 645 00:39:50,130 --> 00:39:54,060 int tibda l-programm, u mbagħad, Minn hemm, huwa jkompli. 646 00:39:54,060 --> 00:40:01,950 Jekk I biss ma break prinċipali u imbagħad dam, dan ser jinkiser fi 647 00:40:01,950 --> 00:40:03,670 prinċipali, u mbagħad kompli. 648 00:40:03,670 --> 00:40:10,050 Peress li jien ma jkollhom punt tal-qasma fil foo, jidħlu fil-numru sħiħ, allura issa jien 649 00:40:10,050 --> 00:40:11,380 mhux se break fil-foo. 650 00:40:11,380 --> 00:40:16,318 Huwa biss se infinita loop sakemm dik. 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 >> Allura dak Intro li GDB. 654 00:40:24,420 --> 00:40:27,790 Għandek tibda tuża din f'settijiet problematiċi tiegħek. 655 00:40:27,790 --> 00:40:30,550 Hija tista 'tkun ferm utli biex jidentifikaw bugs. 656 00:40:30,550 --> 00:40:35,280 Jekk inti fil-fatt biss, linja b'linja minn, jmorru permezz kodiċi tiegħek, u jqabblu dak li huwa 657 00:40:35,280 --> 00:40:39,740 verament jiġri ma 'dak li inti tistenna li jiġri, allura huwa pjuttost 658 00:40:39,740 --> 00:40:41,060 diffiċli li jitilfu bugs tiegħek. 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 >> Allura aħħar ġimgħa David aġġornati dan Jittieħed kriptografija sigriet ewlieni għall- 663 00:40:54,040 --> 00:40:59,350 ewwel darba, fejn ma rridux passwords biss jiġu maħżuna fuq tagħna 664 00:40:59,350 --> 00:41:03,210 kompjuter f'xi fajl test sempliċi, fejn xi ħadd jista 'jiġi maż u biss 665 00:41:03,210 --> 00:41:04,660 jiftħuh u jaqrahom. 666 00:41:04,660 --> 00:41:07,530 Idealment, huma jkunu encrypted b'xi mod. 667 00:41:07,530 --> 00:41:13,340 U fil Problem Set 2, inti ser tkun jittrattaw ma 'metodu wieħed ta' encryption, 668 00:41:13,340 --> 00:41:16,520 jew, ukoll, żewġ metodi, iżda mhumiex daqshekk kbira. 669 00:41:16,520 --> 00:41:20,050 Jekk inti tagħmel l-Hacker edizzjoni, int wkoll se jkunu jittrattaw 670 00:41:20,050 --> 00:41:22,150 decrypting xi affarijiet. 671 00:41:22,150 --> 00:41:29,770 >> Allura l-kwistjoni issa hija, ukoll, anke jekk aħna għandna l-encryption aktar b'saħħithom 672 00:41:29,770 --> 00:41:34,830 algoritmu fid-dinja, jekk inti tagħżel password partikolarment dgħajfa, allura 673 00:41:34,830 --> 00:41:37,720 mhux se jgħinek ħafna, billi n-nies xorta se tkun tista 'figura hija out. 674 00:41:37,720 --> 00:41:41,530 Anki jekk tara l-sekwenza encrypted u jidher qisu mess ta 'żibel 675 00:41:41,530 --> 00:41:44,760 dan ifisser xejn għalihom, jekk dawn xorta biss bżonn biex tipprova ftit passwords 676 00:41:44,760 --> 00:41:50,560 figura hija out, allura inti mhumiex sikura ħafna. 677 00:41:50,560 --> 00:41:55,890 Allura jaraw a video li jagħmel il-punt. 678 00:41:55,890 --> 00:41:59,587 679 00:41:59,587 --> 00:42:00,970 >> [VIDEO Daqq] 680 00:42:00,970 --> 00:42:02,100 >> -Elmu, inti fiend. 681 00:42:02,100 --> 00:42:03,370 X'qed jiġri? 682 00:42:03,370 --> 00:42:05,170 X'Ser tagħmel biex bint tiegħi? 683 00:42:05,170 --> 00:42:09,910 >> -Permess me jintroduċu l-brillanti kirurgu tal-plastik żgħażagħ, Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, l-akbar imnieħer bniedem impjiegi fil-kollu 685 00:42:13,730 --> 00:42:16,080 univers, u Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Your Altezza. 687 00:42:17,210 --> 00:42:18,070 >> -Imnieħer impjieg? 688 00:42:18,070 --> 00:42:18,670 Ma nifhimx. 689 00:42:18,670 --> 00:42:20,090 Hi diġà kellha impjieg imnieħer. 690 00:42:20,090 --> 00:42:21,910 Kienet ħelu sittax preżenti. 691 00:42:21,910 --> 00:42:22,140 >> No. 692 00:42:22,140 --> 00:42:23,690 Mhuwiex X'taħseb. 693 00:42:23,690 --> 00:42:25,420 Huwa ħafna, ħafna agħar. 694 00:42:25,420 --> 00:42:30,300 Jekk inti ma jagħtux me-kombinazzjoni li l-ilqugħ arja, Dr Schlotkin se 695 00:42:30,300 --> 00:42:34,226 tagħti tifla tiegħek lura imnieħer tagħha qodma. 696 00:42:34,226 --> 00:42:35,476 >> No. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Fejn ma ikollok dan? 699 00:42:40,516 --> 00:42:41,440 >> -Id-dritt. 700 00:42:41,440 --> 00:42:42,180 I ser jgħidlek. 701 00:42:42,180 --> 00:42:43,381 I ser jgħidlek. 702 00:42:43,381 --> 00:42:44,263 Le, daddy. 703 00:42:44,263 --> 00:42:45,590 Le, inti ma trid. 704 00:42:45,590 --> 00:42:46,860 >> -You're dritt, għeżież tiegħi. 705 00:42:46,860 --> 00:42:48,450 I ser titlef imnieħer ġdida tiegħek. 706 00:42:48,450 --> 00:42:52,090 Imma jien mhux se tgħidlu-kombinazzjoni, x'ikun. 707 00:42:52,090 --> 00:42:53,680 >> -Tajjeb ħafna. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, jagħmlu agħar tiegħek. 709 00:42:55,685 --> 00:42:56,914 >> My divertiment. 710 00:42:56,914 --> 00:43:00,690 >> [Għodda li tkun qiegħda inċiżiv] 711 00:43:00,690 --> 00:43:01,910 >> No. 712 00:43:01,910 --> 00:43:02,520 Stenna. 713 00:43:02,520 --> 00:43:03,836 Stenna. 714 00:43:03,836 --> 00:43:05,300 I ser jgħidlek. 715 00:43:05,300 --> 00:43:06,880 I ser jgħidlek. 716 00:43:06,880 --> 00:43:09,130 >> -I kien jaf ikun xogħol. 717 00:43:09,130 --> 00:43:09,900 Kull dritt. 718 00:43:09,900 --> 00:43:12,850 Agħti lili. 719 00:43:12,850 --> 00:43:16,918 >> -Il-kombinazzjoni hija waħda. 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 >> -Tnejn. 723 00:43:19,358 --> 00:43:19,846 >> -Tnejn. 724 00:43:19,846 --> 00:43:20,822 >> -Tnejn. 725 00:43:20,822 --> 00:43:21,310 >> -Tliet. 726 00:43:21,310 --> 00:43:21,798 >> -Tliet. 727 00:43:21,798 --> 00:43:22,774 >> -Tliet. 728 00:43:22,774 --> 00:43:23,262 >> -Erba. 729 00:43:23,262 --> 00:43:23,750 >> -Erba. 730 00:43:23,750 --> 00:43:26,150 >> -Erba. 731 00:43:26,150 --> 00:43:27,010 >> Five. 732 00:43:27,010 --> 00:43:27,670 >> Five. 733 00:43:27,670 --> 00:43:29,010 >> Five. 734 00:43:29,010 --> 00:43:34,770 >> -Allura l-kombinazzjoni tkun waħda, tnejn, tlieta, erba ', ħames. 735 00:43:34,770 --> 00:43:37,460 Dik hija l-kombinazzjoni stupidest I qatt semgħu fil-ħajja tiegħi. 736 00:43:37,460 --> 00:43:39,710 Dik hija l-tip ta 'ħaġa idjota jkollha fuq bagalji tiegħu. 737 00:43:39,710 --> 00:43:42,000 >> -Grazzi, Altezza tiegħek. 738 00:43:42,000 --> 00:43:43,530 >> -X'għamilt? 739 00:43:43,530 --> 00:43:44,490 >> -I daru off-ħajt. 740 00:43:44,490 --> 00:43:45,420 >> No inti ma. 741 00:43:45,420 --> 00:43:45,840 You mitfija l-film kollu. 742 00:43:45,840 --> 00:43:46,930 >> -I irid ikun ippressat-buttuna ħażin. 743 00:43:46,930 --> 00:43:48,265 >> Well, erġa 'poġġih fuq. 744 00:43:48,265 --> 00:43:49,110 Poġġi l-movie lura fuq. 745 00:43:49,110 --> 00:43:49,510 >> -Iva, sir. 746 00:43:49,510 --> 00:43:49,917 Iva, sir. 747 00:43:49,917 --> 00:43:50,324 >> -Ejja ħa mmorru, Arnold. 748 00:43:50,324 --> 00:43:51,140 Come, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Of course, inti taf I taf xorta jkollhom inti kont għal dan. 750 00:43:53,060 --> 00:43:53,440 >> [Video daqq END] 751 00:43:53,440 --> 00:43:54,690 >> ROB BODEN: Kull dritt. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Allura issa li aħna diġà qed jitkellem dwar sigurtà f'ċerti modi, sbieħ 754 00:44:08,430 --> 00:44:16,050 ftit poster movie, hekk fl-aħħar jiem, dawn il-kwistjonijiet mal-NSA 755 00:44:16,050 --> 00:44:17,300 monitoraġġ kollox. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Jista 'jkun diffiċli li jħossu bħal inti jkollhom xi tip ta 'privatezza fis- 758 00:44:26,930 --> 00:44:34,540 dinja online, għalkemm I ma setax jgħid inti ħafna mill-dettalji ta 'priżma. 759 00:44:34,540 --> 00:44:42,130 Allura superazzjoni PRISM, aħna qed mhux se li jkun jitkellem dwar dan, issa 760 00:44:42,130 --> 00:44:44,030 jaħsbu dwar laptop tiegħek. 761 00:44:44,030 --> 00:44:48,360 Allura up hawn, nixtieq li jaqilbu kont attwali tiegħi, 762 00:44:48,360 --> 00:44:50,370 bil pingwin ftit tiegħi. 763 00:44:50,370 --> 00:44:57,310 So I ikollhom sett password, u li password huwa kwalunkwe I tixtieq li jkun. 764 00:44:57,310 --> 00:45:02,430 >> Imma ftakar li dak li jien qtugħ ma ', għalhekk dan login 765 00:45:02,430 --> 00:45:04,850 pront, hija xi program. 766 00:45:04,850 --> 00:45:07,910 Huwa xi programm li kien miktub minn xi persuna. 767 00:45:07,910 --> 00:45:13,250 U għalhekk, dik il-persuna, jekk huma partikolarment malizzjużi, dawn jistgħu 768 00:45:13,250 --> 00:45:17,780 qalu, id-dritt, hekk jekk l-password I jidħlu hija ugwali għal tiegħi 769 00:45:17,780 --> 00:45:22,800 password attwali, jew huwa ugwali għal xi password speċjali - 770 00:45:22,800 --> 00:45:25,550 David huwa tal-biża jew xi ħaġa - 771 00:45:25,550 --> 00:45:27,190 imbagħad ħallihom pulzieri 772 00:45:27,190 --> 00:45:33,760 Allura programmer malizzjuż jista 'jkollu aċċess għall kollha tal MACs tiegħek, jew 773 00:45:33,760 --> 00:45:36,150 Windows, jew xejn. 774 00:45:36,150 --> 00:45:41,980 >> Allura li mhuwiex ħafna ta 'tħassib, peress li, I mean, dan huwa program login 775 00:45:41,980 --> 00:45:48,720 li konsenjat bil OS X, mijiet jew eluf ta 'nies ikollhom 776 00:45:48,720 --> 00:45:50,020 rivedut dan il-kodiċi. 777 00:45:50,020 --> 00:45:55,330 U hekk, jekk, fil-kodiċi tiegħek x'imkien, inti jgħidu jekk dan string ugwali ugwali 778 00:45:55,330 --> 00:45:58,860 David huwa tal-biża, login, allura xi ħadd huwa se jkun, bħal, stenna. 779 00:45:58,860 --> 00:45:59,800 Dan mhuwiex dritt. 780 00:45:59,800 --> 00:46:01,790 Dan m'għandux ikun hawnhekk. 781 00:46:01,790 --> 00:46:06,650 Allura dak mod wieħed nikbru affarijiet li jkun it-tip ta 'sigur. 782 00:46:06,650 --> 00:46:10,300 >> Imma naħseb dwar anki programmi li tikteb. 783 00:46:10,300 --> 00:46:13,000 Ejja ngħidu li inti kiteb il-programm login. 784 00:46:13,000 --> 00:46:20,440 Allura dan il-programm login li inti kiteb, hekk ovvjament, inti tajba 785 00:46:20,440 --> 00:46:21,210 programmer. 786 00:46:21,210 --> 00:46:25,610 Int mhux se jagħmlu l-ebda malizzjużi jekk x ugwali ugwali David huwa tal-biża 787 00:46:25,610 --> 00:46:27,860 fil-kodiċi tiegħek. 788 00:46:27,860 --> 00:46:31,930 Iżda dan il-programm, liema do you jużaw biex jikkompilaw dan il-programm? 789 00:46:31,930 --> 00:46:34,180 Xi ħaġa simili Clang. 790 00:46:34,180 --> 00:46:38,460 Allura dak li jekk il-persuna li ġara jiktbu Clang speċjali b'għata fil Clang 791 00:46:38,460 --> 00:46:44,310 xi ħaġa simili, jekk jiena kompilazzjoni tal- login programm, allura jidħol dan il-kodiċi 792 00:46:44,310 --> 00:46:49,720 fil-programm login li tgħid, jekk x ugwali ugwali David huwa tal-biża? 793 00:46:49,720 --> 00:46:59,890 Allura ma pjuttost s'issa, iżda aħna għandna l-istess toħroġ hawn, fejn Clang, ukoll, 794 00:46:59,890 --> 00:47:03,790 eluf, jekk mhux għexieren ta 'eluf ta' nies, ħarsu lejn Clang, għandhom 795 00:47:03,790 --> 00:47:07,160 ħares lejn linji tiegħu ta 'kodiċi u qal, id-dritt, hemm xejn ħażin hawn. 796 00:47:07,160 --> 00:47:10,680 Ovvjament, l-ebda waħda qed tagħmel xejn dan malizzjużi. 797 00:47:10,680 --> 00:47:15,780 >> Imma dak li hu Clang innifsu, bħal, jekk dak I jikkompilaw Clang? 798 00:47:15,780 --> 00:47:20,900 X'jiġri jekk I għandhom xi kompilatur li jikkompila Clang li introduċa fid Clang 799 00:47:20,900 --> 00:47:25,610 dan Hack speċjali li jgħid, id-dritt, meta I jikkompilaw Clang, allura l- 800 00:47:25,610 --> 00:47:31,290 eżekutibbli niġi għandu apposta tfittex ġewwa tal-programm login u daħħal 801 00:47:31,290 --> 00:47:34,230 dan password, ugwali ugwali Dave huwa tal-biża? 802 00:47:34,230 --> 00:47:37,990 Mela ftakar li kompilatur tiegħek innifsu jeħtieġ li jiġi kkompilat f'xi punt. 803 00:47:37,990 --> 00:47:42,810 Hekk jekk dak li inti tagħżel li tiġbor Clang ma ', fih innifsu huwa malizzjużi, allura inti 804 00:47:42,810 --> 00:47:45,580 jistgħu jiġu invitat kollox mod il-linja. 805 00:47:45,580 --> 00:47:49,630 >> Allura hawnhekk, għandna Ken Thompson u Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Allura dan huwa ritratt emblematika. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie huwa fuq il-lemin. 808 00:47:55,470 --> 00:47:58,740 Huwa importanti - 809 00:47:58,740 --> 00:48:03,640 pretty ħafna kiteb C. Allura inti tista ' nirringrazzja lilu għal din il-klassi. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson fuq ix-xellug. 811 00:48:04,840 --> 00:48:07,780 L-tnejn minnhom bażikament kiteb UNIX. 812 00:48:07,780 --> 00:48:10,140 Ukoll, dawn kienu kontributuri ewlenin fil UNIX. 813 00:48:10,140 --> 00:48:11,310 Kien hemm xi oħrajn. 814 00:48:11,310 --> 00:48:16,240 Allura Ken Thompson, f'xi punt, jirbaħ il-Premju Turing. 815 00:48:16,240 --> 00:48:20,860 U l-għoti Turing, stajt dejjem jinstemgħu it referenza B'dan il-mod, huwa l- 816 00:48:20,860 --> 00:48:23,100 Premju Nobel tax-xjenza tal-kompjuter. 817 00:48:23,100 --> 00:48:27,500 >> Allura fil-Premju Turing, huwa għandu jagħti diskors aċċettazzjoni tiegħu. 818 00:48:27,500 --> 00:48:31,790 U huwa jagħti dan id-diskors famużi ħafna issa, imsejħa Riflessjonijiet dwar Fidu 819 00:48:31,790 --> 00:48:35,620 Trust, li aħna marbutin 'biex fuq il-websajt kors. 820 00:48:35,620 --> 00:48:41,670 U f'dan diskors, huwa jgħid, id-dritt, so I kiteb UNIX, u issa kollha 821 00:48:41,670 --> 00:48:43,320 inti nies qed jużaw UNIX. 822 00:48:43,320 --> 00:48:46,960 Issa, ftakar llum li Linux huwa dixxendent dirett ta 'UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X juża direttament UNIX. 824 00:48:50,140 --> 00:48:53,810 Windows ma tant, iżda ħafna ta 'ideat kienu meħuda mill UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Hekk hu tmur sa l-istadju u jgħid, id-dritt, I kiteb UNIX. 826 00:48:59,220 --> 00:49:03,940 U biss sabiex inti guys taf, jien kapaċi log fis-kull 827 00:49:03,940 --> 00:49:05,590 wieħed biss ta 'kompjuters tiegħek. 828 00:49:05,590 --> 00:49:14,280 Peress I jitqiegħdu waħda minn dawn speċjali jekk x ugwali ugwali Ken Thomson huwa tal-biża, 829 00:49:14,280 --> 00:49:16,350 allura jien permessi li login. 830 00:49:16,350 --> 00:49:18,370 Sabiex in-nies huma simili, ukoll, how'd inti tagħmel dan? 831 00:49:18,370 --> 00:49:21,090 Ħarisna lejn il-programm login u xejn hemm. 832 00:49:21,090 --> 00:49:24,700 He simili, ukoll, I modifikata l-kumpilatur log fil-programm login 833 00:49:24,700 --> 00:49:30,490 sabiex il-programm login issa se jkollhom li x ugwali ugwali Ken Thompson 834 00:49:30,490 --> 00:49:31,700 huwa tal-biża. 835 00:49:31,700 --> 00:49:33,120 >> U jgħidu, ukoll, li mhux veru. 836 00:49:33,120 --> 00:49:35,740 Aħna qed tħares lejn il-kompilatur, u l- kompilatur ma jkollhom l-ebda linji ta ' 837 00:49:35,740 --> 00:49:36,400 kodiċi bħal dik. 838 00:49:36,400 --> 00:49:40,540 He simili, OK, imma dak li huma inti kompilazzjoni tal-kompilatur ma? 839 00:49:40,540 --> 00:49:44,810 U jaħsbu, u hu, bħal, ukoll, Jien il-wieħed li ħadt l-kumpilatur 840 00:49:44,810 --> 00:49:50,580 inti qed tuża biex jikkompilaw l-kompilatur, hekk inti kumpilazzjoni kompilatur, li 841 00:49:50,580 --> 00:49:56,390 nnifisha hija malizzjuż, u se jiksru l-programm login. 842 00:49:56,390 --> 00:49:59,360 Allura bażikament, f'dak il-punt, hemm ebda mod inti tista 'tħares lejn is-sors 843 00:49:59,360 --> 00:50:02,450 kodiċi tal-programm login biex tara dak li hu ħażin. 844 00:50:02,450 --> 00:50:04,220 Inti ma tista 'saħansitra tfittex fil- kodiċi sors tal-kompilatur 845 00:50:04,220 --> 00:50:06,790 biex tara dak li hu ħażin. 846 00:50:06,790 --> 00:50:11,940 >> Għandek bżonn biex tħares lejn il-magna kodiċi, il-binarju attwali tal- 847 00:50:11,940 --> 00:50:16,760 kompilatur kkompilata biex tara, stenna, dawn linji ta 'kodiċi m'għandux ikun hawn. 848 00:50:16,760 --> 00:50:22,130 Imma Ken Thompson ħa pass wieħed ulterjuri u qal, ukoll, hemm 849 00:50:22,130 --> 00:50:25,980 dawn il-programmi speċjali li attwalment tgħinek taqra l-binarju ta 'programmi, 850 00:50:25,980 --> 00:50:29,340 u hekk jekk xi ħadd użat dak il-programm għall- aqra l-binarju, kienu jaraw dawn 851 00:50:29,340 --> 00:50:30,490 linji ta 'kodiċi. 852 00:50:30,490 --> 00:50:34,020 Huwa modifikati dawk il-programmi li jgħidu, kollha dritt, jekk inti qed tfittex fil- 853 00:50:34,020 --> 00:50:38,460 kompilatur, ma jurux din partikolari sett ta 'binarja. 854 00:50:38,460 --> 00:50:42,830 >> Mela allura għandek bżonn tieħu li pass ulterjuri u bażikament, li jistgħu jkollhom 855 00:50:42,830 --> 00:50:46,210 livelli multipli meħuda ta 'indirection, u f'xi punt, l-ebda wieħed fil-fatt 856 00:50:46,210 --> 00:50:47,990 ser jiġi verifikat. 857 00:50:47,990 --> 00:50:52,590 Allura l-morali ta 'l-istorja hija, int mhux se jkun miktub 858 00:50:52,590 --> 00:50:54,340 Clang f'din il-klassi. 859 00:50:54,340 --> 00:50:57,020 Inti se tkun qed tuża tixbit Clang ħafna f'din il-klassi. 860 00:50:57,020 --> 00:51:00,490 Għal kull taf, Clang huwa malizzjuż programm li huwa sabotaging kull 861 00:51:00,490 --> 00:51:03,520 programm uniku inti stajt qatt ikkumpilata. 862 00:51:03,520 --> 00:51:08,206 U li tħallik fuq dik ominous ħafna jinnota, ara inti nhar l-Erbgħa. 863 00:51:08,206 --> 00:51:10,030 >> [Applause] 864 00:51:10,030 --> 00:51:12,935 >> SPEAKER 2: Fl-CS50 jmiss. 865 00:51:12,935 --> 00:51:14,580 >> SPEAKER 3: M'għandekx inti DARE ngħid li. 866 00:51:14,580 --> 00:51:15,930 Tista 'tagħmel dan. 867 00:51:15,930 --> 00:51:19,440 Inti ghamilt dan qabel, inti tista 'tagħmel dan illum, inti tista 'tagħmel dan għada. 868 00:51:19,440 --> 00:51:20,930 Inti kont qed tagħmel dan għal snin. 869 00:51:20,930 --> 00:51:22,790 Just go up hemm u jagħmlu dan. 870 00:51:22,790 --> 00:51:24,310 Tista 'tagħmel dan. 871 00:51:24,310 --> 00:51:26,102 >> [Daqq tal-mużika]