1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [Muzikavimo] 3 00:00:11,210 --> 00:00:12,100 >> ROB Boden: Gerai. 4 00:00:12,100 --> 00:00:15,620 Taigi, pirmas dalykas, pirma, video nuo pažįstamas veidas. 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 >> -Viskas gerai. 8 00:00:23,370 --> 00:00:27,150 Tai CS50, ir tai yra Savaitės trijų pradžia. 9 00:00:27,150 --> 00:00:29,980 Atsiprašau aš negalėjau ten su jumis šiandien, bet leiskite man pristatyti 10 00:00:29,980 --> 00:00:32,880 CS50 savo Rob Boden. 11 00:00:32,880 --> 00:00:33,872 >> [PABAIGA VIDEO PLAYBACK] 12 00:00:33,872 --> 00:00:39,340 >> [Plojimai ir Cheers] 13 00:00:39,340 --> 00:00:41,277 >> ROB Boden: į filmografija kad vaizdo įrašas yra fantastinis. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Gerai. 16 00:00:47,770 --> 00:00:50,960 Taigi, pirmiausia, yra ir kitas pietūs. 17 00:00:50,960 --> 00:00:52,330 Tai rytoj 01:15. 18 00:00:52,330 --> 00:00:54,480 Yra be pietų šį penktadienį. 19 00:00:54,480 --> 00:00:55,810 Būtent Quora. 20 00:00:55,810 --> 00:01:00,190 Tommy nėra čia dar, bet vienas iš žmonės ten yra buvęs CF, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Taigi jis įdomus vaikinas. 23 00:01:02,730 --> 00:01:04,819 Jūs turėtumėte ateiti. 24 00:01:04,819 --> 00:01:05,900 >> Gerai. 25 00:01:05,900 --> 00:01:11,360 Taigi, praeitą savaitę, mes pradėjome nesilaikantiems išskyrus apie tai, kas seka tikrai yra. 26 00:01:11,360 --> 00:01:14,830 Mes žinoma nuo pat pradžių, kad tai simbolių seka. 27 00:01:14,830 --> 00:01:18,130 Tačiau praėjusią savaitę, mes delved į tai, kad tai, kas yra tikrai seka 28 00:01:18,130 --> 00:01:22,110 ženklai, gerai, dabar mes turime matricos simbolių. 29 00:01:22,110 --> 00:01:26,450 Ir mes žinome, kad seka, tai masyvas simbolių, pačioje pabaigoje, 30 00:01:26,450 --> 00:01:30,920 mes turime šį specialų null baitas, tai Backslash 0, tai rodo pabaigą 31 00:01:30,920 --> 00:01:32,230 eilutę. 32 00:01:32,230 --> 00:01:36,970 >> Ir taip eilutė yra masyvas ženklai, bet mes galime turėti daugiau nei 33 00:01:36,970 --> 00:01:39,530 tiesiog simbolių masyvas, mes galime turėti, bet matrica 34 00:01:39,530 --> 00:01:40,890 tipo dalykas norime. 35 00:01:40,890 --> 00:01:51,570 Taigi, jei jūs prisimenate iš praeitą savaitę, Amžių programa, kad Dovydas pristatė 36 00:01:51,570 --> 00:01:53,560 tikrai greitai. 37 00:01:53,560 --> 00:01:57,010 Taigi pirmas dalykas, kurį mes ketiname padaryti, tai prasyti vartotojo sveikojo skaičiaus, 38 00:01:57,010 --> 00:01:58,800 žmonių skaičius kambaryje. 39 00:01:58,800 --> 00:02:01,260 Kai mes turime, kad sveikasis skaičius, mes skelbiantis masyvą. 40 00:02:01,260 --> 00:02:02,890 Atkreipkite Šis laikiklis sintaksė. 41 00:02:02,890 --> 00:02:04,540 Jūs ketinate priprasti prie to. 42 00:02:04,540 --> 00:02:09,430 >> Taigi mes skelbiantis sveikųjų skaičių masyvas vadinamas amžiaus, ir yra n 43 00:02:09,430 --> 00:02:12,080 sveikieji skaičiai šiame masyve. 44 00:02:12,080 --> 00:02:16,480 Taigi šis modelis čia, tai 4 int I lygus 0, i mažiau nei n, i plius 45 00:02:16,480 --> 00:02:20,580 plius, kad taip pat bus modelis kad jums labai naudojamas. 46 00:02:20,580 --> 00:02:24,000 Kadangi tai gana daug, kaip jūs visada bus pakartoti per masyvus. 47 00:02:24,000 --> 00:02:26,330 Taigi nepamirškite, kad n yra ilgis mūsų masyvo. 48 00:02:26,330 --> 00:02:32,120 Ir taip čia mes vėl ir vėl kreipiasi dėl asmens i kambaryje amžiaus. 49 00:02:32,120 --> 00:02:36,640 >> Po to, mes einame žemyn, ir dėl kokių nors savavališkai priežastis, mes tada 50 00:02:36,640 --> 00:02:40,220 spausdinti kaip senas jie ketina būti metų nuo dabar. 51 00:02:40,220 --> 00:02:49,980 Ir veikia tą programą, tegul kad amžiaus, dot velniop amžių. 52 00:02:49,980 --> 00:02:53,010 Taigi žmonių skaičius kambaryje, tarkim yra trys. 53 00:02:53,010 --> 00:02:59,880 Ir pasakyti, pirmasis asmuo yra 13, šalia yra 26, o paskutinis yra 30. 54 00:02:59,880 --> 00:03:05,080 Taigi jis bus pakartoti per šių trijų žmonės, išspausdinti 14, 27 ir 31. 55 00:03:05,080 --> 00:03:16,060 >> Taigi nepamirškite, kad kai mes deklaruoti masyvas dydžio n, toje indeksai 56 00:03:16,060 --> 00:03:19,950 matrica, masyvas turi vertybes ir indeksai 0, 1, 2, visi būdas 57 00:03:19,950 --> 00:03:21,680 iki n atėmus 1. 58 00:03:21,680 --> 00:03:26,255 Taigi, kai mes pasakėme buvo trys žmonės į kambarį, ir mes įdėti čia 59 00:03:26,255 --> 00:03:29,850 pirmas iteracijos per šį kilpa, man bus 0. 60 00:03:29,850 --> 00:03:31,650 Taigi 0 indeksą. 61 00:03:31,650 --> 00:03:34,540 Mes paskiriant pirmą kartą amžiaus vartotojas įveda. 62 00:03:34,540 --> 00:03:38,870 Tada kito, mes įvesti Antrasis n vartotojas įveda ir 63 00:03:38,870 --> 00:03:40,580 šalia dviejų, paskutinio n. 64 00:03:40,580 --> 00:03:44,200 >> Taigi pastebėti, kad dydžio masyvas trys neturi nieko 65 00:03:44,200 --> 00:03:46,040 indekse trijų. 66 00:03:46,040 --> 00:03:49,036 Tai negalioja. 67 00:03:49,036 --> 00:03:50,250 Gerai. 68 00:03:50,250 --> 00:03:55,136 Taigi, grįžta čia. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Taigi dabar, kad mes spręsti matricas, mes turime šiek tiek pažįsta. 71 00:04:01,590 --> 00:04:03,780 Dabar mes ketiname pereiti į komandą eilutės argumentai, kurie bus 72 00:04:03,780 --> 00:04:05,890 gana svarbūs šios problemos rinkinį. 73 00:04:05,890 --> 00:04:09,670 >> Taigi iki šiol, kiekvieną kartą, kai jūs paskelbė savo pagrindinę funkciją, mes 74 00:04:09,670 --> 00:04:11,230 sakė int main negaliojančiu. 75 00:04:11,230 --> 00:04:14,070 Taigi klaidinga tiesiog reiškia, kad mes ne artimųjų bet 76 00:04:14,070 --> 00:04:16,440 argumentai šia funkcija. 77 00:04:16,440 --> 00:04:19,190 Dabar mes ketiname pamatyti, kad dažniausiai gali imtis tam tikrų argumentų. 78 00:04:19,190 --> 00:04:22,470 Čia mes vadiname juos int argc ir styginių argv skliausteliuose. 79 00:04:22,470 --> 00:04:26,930 Skliausteliuose, dar kartą, nurodant kad mes susiduriame su matricomis. 80 00:04:26,930 --> 00:04:31,850 Taigi čia, styginių argv skliausteliuose, mes Dirbant su stygų masyvo. 81 00:04:31,850 --> 00:04:35,360 Taigi argc, kad ketina nurodyti kiek argumentai mes 82 00:04:35,360 --> 00:04:37,580 perduodama šią programą. 83 00:04:37,580 --> 00:04:46,050 Ir pamatyti, ką tai reiškia, tegul uždaryti tai. 84 00:04:46,050 --> 00:04:46,490 >> Gerai. 85 00:04:46,490 --> 00:04:50,790 Taigi iki šiol, mes paleisti kiekvieną programa, kaip dot slash amžiaus. 86 00:04:50,790 --> 00:04:55,250 Mes taip pat gali, komandinės eilutės, praeities perduoti argumentus, taigi terminas, komanda 87 00:04:55,250 --> 00:04:56,550 eilutės argumentai. 88 00:04:56,550 --> 00:04:59,760 Taigi pirmasis argumentas, hello world. 89 00:04:59,760 --> 00:05:03,350 Taigi čia argc būtų trys. 90 00:05:03,350 --> 00:05:07,720 Tai iš argumentų skaičius į komandų eilutę. 91 00:05:07,720 --> 00:05:12,840 Argc visada yra mažiausiai 1, nes taškas velniop amžiaus, pati skaičiuoja kaip vieną iš 92 00:05:12,840 --> 00:05:14,490 komandinės eilutės argumentai. 93 00:05:14,490 --> 00:05:17,010 >> Tada Apie tai pirmą kartą. 94 00:05:17,010 --> 00:05:20,460 Jei dot velniop amžius yra nulinis, tada Apie tai pirmasis ir pasaulis 95 00:05:20,460 --> 00:05:22,830 antra komandinės eilutės argumentas. 96 00:05:22,830 --> 00:05:29,490 Taigi styginių argv, mes ketiname pamatyti, yra stygos, dot velniop 97 00:05:29,490 --> 00:05:33,830 amžiaus, labas, ir pasaulis. 98 00:05:33,830 --> 00:05:38,945 Ir Dovydo prašymu, mes ketiname Norėdami paleisti vaizdo įrašą, nustatantį, kad. 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 >> -Iki šiol programose mes parašyta, mes deklaruoti 102 00:05:46,240 --> 00:05:48,500 Pagrindinis kaip int main negaliojančiu. 103 00:05:48,500 --> 00:05:51,170 Ir visą šį laiką, kad tuštuma yra paprasčiausiai nurodant, kad 104 00:05:51,170 --> 00:05:54,430 programoje neatsižvelgiama bet komandų eilutės argumentai. 105 00:05:54,430 --> 00:05:57,750 Kitaip tariant, kai vartotojas atidaro programa, jis ar ji gali suteikti komandą 106 00:05:57,750 --> 00:06:01,710 eilutės argumentai pagal raštu papildomai žodžiai ar frazės, po programos tikslų 107 00:06:01,710 --> 00:06:03,000 pavadinimas eilutėje. 108 00:06:03,000 --> 00:06:06,550 >> Na, jei jūs norite, kad jūsų programos į imtis komandinės eilutės argumentus, vieną ar 109 00:06:06,550 --> 00:06:10,540 daugiau tokių žodžių, mums reikia pakeisti negalioja su argumentais pora. 110 00:06:10,540 --> 00:06:12,200 Taigi galime daryti. 111 00:06:12,200 --> 00:06:15,750 Įtraukti CS50.h. 112 00:06:15,750 --> 00:06:19,360 Įtraukti standartinę io.h. 113 00:06:19,360 --> 00:06:20,760 Int main. 114 00:06:20,760 --> 00:06:26,330 Ir dabar, o ne tuščia, aš ruošiuosi nurodyti int vadinamas argc ir 115 00:06:26,330 --> 00:06:28,780 masyvo eilučių, vadinamų argv. 116 00:06:28,780 --> 00:06:31,820 Dabar argc ir argv yra tiesiog konvencijas. 117 00:06:31,820 --> 00:06:34,000 >> Galėjome vadinamas šie argumentai Patys nieko mes norime. 118 00:06:34,000 --> 00:06:37,630 Tačiau svarbu tai, kad argc yra int, nes, remiantis apibrėžimu, yra 119 00:06:37,630 --> 00:06:41,360 ketina pateikiama argumentų skaičius, žodžių skaičius, iš viso, kad 120 00:06:41,360 --> 00:06:43,380 vartotojas įvedėte į jo ar jos eilutę. 121 00:06:43,380 --> 00:06:47,910 argv, tuo tarpu, argumentas vektorius yra vyksta iš tikrųjų būti masyvas saugoti 122 00:06:47,910 --> 00:06:52,020 visus žodžius, kad vartotojas turi įvestas į jo ar jos eilutę. 123 00:06:52,020 --> 00:06:54,500 >> Leiskite pradėti daryti kažką dabar su vienu ar daugiau iš šių 124 00:06:54,500 --> 00:06:55,660 komandų eilutės argumentai. 125 00:06:55,660 --> 00:07:00,070 Visų pirma, eikime į priekį ir spausdinti kokia žodis vartotojas įveda 126 00:07:00,070 --> 00:07:03,960 Po programos pavadinimas eilutėje. 127 00:07:03,960 --> 00:07:04,730 Atidaryti laikiklis. 128 00:07:04,730 --> 00:07:06,240 Uždaryti laikiklis. 129 00:07:06,240 --> 00:07:10,510 Printf proc ai Backslash ir kablelis. 130 00:07:10,510 --> 00:07:14,550 Ir dabar man reikia pasakyti printf kas vertė prijungti į tą rezervuotą vietą. 131 00:07:14,550 --> 00:07:18,600 Noriu pirmąjį žodį, vartotojas turi įvestas po programos pavadinimu, 132 00:07:18,600 --> 00:07:23,130 ir todėl aš ruošiuosi nurodyti argv laikiklis 1, arti 133 00:07:23,130 --> 00:07:24,830 skliaustelis, kabliataškis. 134 00:07:24,830 --> 00:07:27,290 >> Dabar, kodėl laikiklis 1, o ne 0 laikiklis? 135 00:07:27,290 --> 00:07:30,990 Na, it turns out, automatiškai saugomi į argv 0 bus 136 00:07:30,990 --> 00:07:32,620 Programos tikrasis vardas. 137 00:07:32,620 --> 00:07:36,180 Taigi, pirmas žodis, kad vartotojas įveda Po programos vardas pagal 138 00:07:36,180 --> 00:07:38,990 konvencija, bus saugomi argv 1. 139 00:07:38,990 --> 00:07:42,380 Leiskite dabar kaupti ir paleisti šią programą. 140 00:07:42,380 --> 00:07:47,780 >> Padaryti argv 0, taškas velniop argv 0. 141 00:07:47,780 --> 00:07:50,520 Ir dabar žodis kaip labas. 142 00:07:50,520 --> 00:07:51,670 Įveskite. 143 00:07:51,670 --> 00:07:53,520 Ir mes jį, labas. 144 00:07:53,520 --> 00:07:55,750 >> [PABAIGA VIDEO PLAYBACK] 145 00:07:55,750 --> 00:07:57,000 >> ROB Boden: Gerai. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Uždarykite kad. 148 00:08:01,230 --> 00:08:16,730 Taigi, atsižvelgiant į šios programos atrodo, kad mes ką tik pristatė mums gerai, tik 149 00:08:16,730 --> 00:08:24,710 rodyti, jei mes spausdinti argv 0, kad dabar kas tai yra, argv 0, taškas velniop argv 0. 150 00:08:24,710 --> 00:08:30,440 Taigi, kaip ir tikėtasi, tai spausdinti Programos pavadinimas, nes argv 0 yra 151 00:08:30,440 --> 00:08:32,970 visada bus Programos pavadinimas. 152 00:08:32,970 --> 00:08:35,640 Tačiau galime padaryti kažką šiek tiek įdomesnis. 153 00:08:35,640 --> 00:08:42,080 >> Taigi, problemų rinkinį, jūs būsite įvesta į šią funkciją, atoi. 154 00:08:42,080 --> 00:08:44,440 Taigi, ką mes naudojame atoi už? 155 00:08:44,440 --> 00:08:48,550 Kad ketina paversti eilutė iki sveikojo skaičiaus. 156 00:08:48,550 --> 00:08:53,280 Taigi, jei aš perkelti eilutę, vienas du trys, į atoi, kad bus konvertuoti, kad 157 00:08:53,280 --> 00:08:56,910 į sveikojo skaičiaus, vienas du trys. 158 00:08:56,910 --> 00:09:01,480 Taigi, mes ketiname paversti pirmas komandinės eilutės argumentas iki sveikojo skaičiaus, 159 00:09:01,480 --> 00:09:05,690 ir tada tiesiog atspausdinti, kad sveikasis skaičius. 160 00:09:05,690 --> 00:09:09,680 >> Taigi, iš esmės, mes rūšies reimplementing getint, tiesiog 161 00:09:09,680 --> 00:09:12,350 sveikasis skaičius įrašytas į komandą linija, o ne programoje 162 00:09:12,350 --> 00:09:14,560 interaktyviai. 163 00:09:14,560 --> 00:09:23,170 Taigi, todėl argv 0, darykime tai čia ir uždaryti, kad. 164 00:09:23,170 --> 00:09:27,670 Taigi veikia argv 0, ir tegul įvesti sveikasis skaičius, vienas du trys keturi vienas du. 165 00:09:27,670 --> 00:09:30,840 Taigi jis bus atspausdinti sveikasis skaičius, vieną du trys keturi vienas du. 166 00:09:30,840 --> 00:09:35,500 Yra keletas subtilybių iki atoi kad jis bus nebesijaudinti apie viską 167 00:09:35,500 --> 00:09:39,040 už galiojantį skaitmeniniai ženklai, bet tai nesvarbu. 168 00:09:39,040 --> 00:09:42,870 >> Taigi, ką jūs manote atsitinka jei galiu tai padaryti? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Segmentavimas kaltės. 171 00:09:47,050 --> 00:09:50,410 Taigi, kodėl tai, kad? 172 00:09:50,410 --> 00:09:56,060 Jei pažvelgti atgal į mūsų programą, mes konvertuoti argv 1, pirmasis argumentas 173 00:09:56,060 --> 00:09:59,610 po programos pavadinimu, iki sveikojo skaičiaus. 174 00:09:59,610 --> 00:10:03,350 Tačiau nėra argumentas praėjo po programos pavadinimu. 175 00:10:03,350 --> 00:10:08,060 Taigi čia matome, kad tai yra Buggy programa, nes, jei mes stengiamės jį paleisti 176 00:10:08,060 --> 00:10:10,530 be jokių argumentų, jis tiesiog sustos. 177 00:10:10,530 --> 00:10:16,950 >> Taigi, dar vienas bendras modelis pamatysite yra kažkas panašaus, jei argc mažiau 178 00:10:16,950 --> 00:10:21,100 kaip du, nurodantis, kad nebuvo bent programos pavadinimas ir 179 00:10:21,100 --> 00:10:29,100 Pirmasis argumentas, tada mes kažką daryti kaip printf, nepakanka 180 00:10:29,100 --> 00:10:31,190 komandų eilutės argumentai. 181 00:10:31,190 --> 00:10:33,170 Tai turbūt nėra gera spausdinti, tai turbūt kažkas, pavyzdžiui, 182 00:10:33,170 --> 00:10:35,440 reikia įvesti sveikuosius į komandų eilutę. 183 00:10:35,440 --> 00:10:37,450 Aš tiesiog galų jį ten. 184 00:10:37,450 --> 00:10:39,600 Ir tada vėl 1. 185 00:10:39,600 --> 00:10:44,740 Taigi nepamirškite, kad mūsų pabaigos programa, jei mes grįžtame 0, kad rūšiuoti 186 00:10:44,740 --> 00:10:47,060 rodo sėkmę. 187 00:10:47,060 --> 00:10:50,940 Ir pagrindinis automatiškai grąžina 0, jei ne. 188 00:10:50,940 --> 00:10:55,800 >> Taigi čia mes Pakartotinė 1 rodo kad tai nėra sėkmė. 189 00:10:55,800 --> 00:11:01,000 Ir jūs galite grįžti, ką norite, tiesiog, "0" rodo sėkmę, ir 190 00:11:01,000 --> 00:11:03,390 kas nors kitas rodo gedimą. 191 00:11:03,390 --> 00:11:04,855 Taigi, galime paleisti šį dalykų versiją. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Taigi dabar, jei mes neturime įvesti komandinę eilutę argumentas, kad bus teisingai pasakyti 194 00:11:16,600 --> 00:11:18,290 mums, o ne pakankamai komandinės eilutės. 195 00:11:18,290 --> 00:11:20,610 Nebaigė sakinio. 196 00:11:20,610 --> 00:11:24,950 Kitur, jei mes iš tikrųjų perduoti jį vieną, jis gali baigti programą. 197 00:11:24,950 --> 00:11:27,920 Taigi tai, kaip norite naudoti argc į siekiant patvirtinti, kad numeris 198 00:11:27,920 --> 00:11:30,630 komandinės eilutės argumentai, kad faktiškai pasinaudos. 199 00:11:30,630 --> 00:11:39,360 >> Taigi galime padaryti šią programą tiek daugiau sudėtinga, ir pažvelgti į sekundę 200 00:11:39,360 --> 00:11:42,180 pasikartojančių dalykų. 201 00:11:42,180 --> 00:11:46,310 Taigi dabar mes ne tik spauda Pirmasis komandų eilutės argumentas. 202 00:11:46,310 --> 00:11:51,210 Čia mes Iteracja iš int i lygių 0, i mažiau nei argc, aš plius 203 00:11:51,210 --> 00:11:55,280 plius ir spausdinimas argv indeksas i. 204 00:11:55,280 --> 00:11:59,300 Taigi šis modelis, vėlgi, tai yra tas pats modelis, kaip ir anksčiau, išskyrus vietoje 205 00:11:59,300 --> 00:12:02,600 skambinama kintamąjį n, mes naudojame argc. 206 00:12:02,600 --> 00:12:09,520 >> Taigi tai yra iteravimu per kiekvieną indeksą masyve, ir spausdinant kiekvieną 207 00:12:09,520 --> 00:12:11,910 elementas tame masyve. 208 00:12:11,910 --> 00:12:20,300 Ir todėl, kai mes paleisti šią programą, taip pat, Aš ne įvesti bet kokią komandinę eilutę 209 00:12:20,300 --> 00:12:22,540 argumentai, todėl tik nuotraukas programos pavadinimas. 210 00:12:22,540 --> 00:12:26,053 Jei aš įvesti dalykų krūva, jis bus spausdinti vieną, kiekviena savo linija. 211 00:12:26,053 --> 00:12:31,213 212 00:12:31,213 --> 00:12:32,210 >> Gerai. 213 00:12:32,210 --> 00:12:34,770 Taigi paimkime vieną žingsnį toliau. 214 00:12:34,770 --> 00:12:38,890 Ir vietoj spausdinti kiekvieną argumentą savo linijos, galime atspausdinti kiekvienas 215 00:12:38,890 --> 00:12:42,590 pobūdis kiekvieno argumento atskiroje eilutėje. 216 00:12:42,590 --> 00:12:46,700 Taigi nepamirškite, kad argv yra Stygų masyvas. 217 00:12:46,700 --> 00:12:50,960 Taigi, kas yra eilutė, bet simbolių masyvas? 218 00:12:50,960 --> 00:12:57,140 Taigi, tai reiškia, kad argv tikrai masyvas yra simbolių masyvo. 219 00:12:57,140 --> 00:13:04,920 Taigi pasinaudoti, kad tegul ignoruoti tai dabar. 220 00:13:04,920 --> 00:13:08,190 Leiskite tiesiog laikyti styginių argv 0. 221 00:13:08,190 --> 00:13:14,170 >> Taigi, jei norime, kad kiekvieną simbolį argv 0 atskiroje eilutėje, tada aš noriu 222 00:13:14,170 --> 00:13:19,500 daryti modelį mes įpratę, i mažiau nei masyvo ilgis, 223 00:13:19,500 --> 00:13:23,990 kuri čia yra strlen iš, tai ne tai, ką noriu daryti, styginių 224 00:13:23,990 --> 00:13:26,450 ai Lygu argv 0. 225 00:13:26,450 --> 00:13:30,390 Taigi man yra mažesnis nei mūsų ilgio masyvas, kuris šiuo atveju yra masyvas 226 00:13:30,390 --> 00:13:34,410 simbolių, aš plus plus. 227 00:13:34,410 --> 00:13:41,040 Ir taip, kaip matėme praeitą savaitę, tai idealus jei mes einame, kad strlen ne 228 00:13:41,040 --> 00:13:45,210 su sąlyga, nes n bus pridėti iš s strlen kiekvieną kartą, mes einame 229 00:13:45,210 --> 00:13:47,720 per kilpą, ir tai nebus pakeisti. 230 00:13:47,720 --> 00:13:50,230 Taigi, mes jį lygų n per čia. 231 00:13:50,230 --> 00:13:54,260 232 00:13:54,260 --> 00:13:55,170 >> Gerai. 233 00:13:55,170 --> 00:14:01,320 Taigi dabar mes iteravimu per kiekvienas masyvo indeksas. 234 00:14:01,320 --> 00:14:05,630 Ir taip, jei norime atspausdinti kiekvienas simbolis toje masyvo, proc c yra 235 00:14:05,630 --> 00:14:06,880 vėliava mes norite naudoti simbolių. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 Ir dabar laikiklis i bus styginių indeksas simbolis aš, todėl, jei 238 00:14:19,770 --> 00:14:20,970 eilutė buvo labas. 239 00:14:20,970 --> 00:14:27,530 tada s 0 bus h, s laikiklis 1 bus E, ir taip toliau. 240 00:14:27,530 --> 00:14:30,800 >> Taigi, dabar mes norime sujungti šie du dalykai. 241 00:14:30,800 --> 00:14:35,440 Mes norime spausdinti kiekvieną simbolį Kiekvieno komandinės eilutės argumentas. 242 00:14:35,440 --> 00:14:38,950 Taigi, mes ketiname turėti įdėtos už kilpos. 243 00:14:38,950 --> 00:14:47,480 Ir tradiciškai, pirmas skaitiklis yra i kita bus j, n 244 00:14:47,480 --> 00:14:54,450 bus argv i strlen, aš yra mažesnis nei n, i plius plius. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 O dabar vietoj spausdinimo argv i, todėl argv laikiklis aš ketina indeksas - 247 00:15:06,870 --> 00:15:14,280 tai bus i-asis komandinės eilutės argumentas, argv i, j ketina 248 00:15:14,280 --> 00:15:16,925 būti jth pobūdis i-asis argumentas. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Aš atsikratyti tai čia dabar nes mes įdėti ją į tą kilpą. 251 00:15:24,810 --> 00:15:33,900 Taigi yra lygiavertis string s lygių argv aš, tada ai laikiklis j. 252 00:15:33,900 --> 00:15:36,980 >> Na, mums nereikia deklaruoti Šis kintamasis ai. 253 00:15:36,980 --> 00:15:44,530 Vietoj to, mes tiesiog sujungti juos du į tai, ką mes turėjome, argv i, j. 254 00:15:44,530 --> 00:15:45,780 >> GARSIAKALBIS 1 [nesigirdi]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB Boden: Geras skambutis. 257 00:15:49,680 --> 00:15:52,936 Taigi tai yra sulaužyta. 258 00:15:52,936 --> 00:15:55,510 Jei aš iš tikrųjų bėgo, mes supratau tai. 259 00:15:55,510 --> 00:16:01,210 Taigi skaitiklis man rūpi šioje ypač 260 00:16:01,210 --> 00:16:05,410 kilpa yra j, iteratorius. 261 00:16:05,410 --> 00:16:08,560 Taigi, jums reikės paleisti į klausimus, tikriausiai begalinis ciklas, jei mes 262 00:16:08,560 --> 00:16:09,540 nebuvo nustatyta, kad. 263 00:16:09,540 --> 00:16:12,220 Štai kodėl mes taip pat kalbame apie derinimo šiandien. 264 00:16:12,220 --> 00:16:13,120 >> Gerai. 265 00:16:13,120 --> 00:16:15,240 Taigi, galime paleisti šią programą. 266 00:16:15,240 --> 00:16:21,200 Ir tegul faktiškai pridėti atskirą printf čia, kad bus tiesiog atspausdinti 267 00:16:21,200 --> 00:16:27,480 kita linija, nes tai reiškia, kai mes paleisti programą, ten bus tuščias 268 00:16:27,480 --> 00:16:31,830 linija tarp kiekvieno charakterio kiekvienas komandinės eilutės argumentas. 269 00:16:31,830 --> 00:16:33,448 Na, mes pamatyti, ką tai reiškia. 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 Turite šiek tiek klaidų. 273 00:16:39,870 --> 00:16:42,860 Klaida netiesiogiai skelbiantis bibliotekos funkcija strlen. 274 00:16:42,860 --> 00:16:51,630 >> Taigi grįžtame į mūsų programą, aš Pamiršau maišos yra string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Taigi string.h bus header failas, kuris pareiškia, 277 00:16:57,730 --> 00:16:58,980 funkcija strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 Gerai, tai kaupia. 280 00:17:06,060 --> 00:17:09,109 Dabar galime paleisti jį. 281 00:17:09,109 --> 00:17:10,930 Taigi, tiesiog, kad. 282 00:17:10,930 --> 00:17:17,790 Ji ketina išspausdinti mūsų programos pavadinimas, hello world. 283 00:17:17,790 --> 00:17:23,510 Tai ketinate spausdinti kiekvieną daiktą, kiekvienas pobūdis, atskiroje eilutėje. 284 00:17:23,510 --> 00:17:24,540 Gerai. 285 00:17:24,540 --> 00:17:30,625 >> Tad faktiškai pasinaudoti šia dar vieną žingsnį. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Ir vietoj naudojant string.h, galime galvoti apie tai, kaip mes norime įgyvendinti mūsų pačių 288 00:17:39,700 --> 00:17:41,420 strlen funkcija. 289 00:17:41,420 --> 00:17:45,600 Taigi aš iš karto duoti funkcija parašas. 290 00:17:45,600 --> 00:17:52,900 Taigi leiskite paskambinti my_strlen, ir tai ketina imtis eilutę kaip argumentą, 291 00:17:52,900 --> 00:17:57,220 ir mes tikimės, kad grįžtumėte ilgis tos eilutės. 292 00:17:57,220 --> 00:18:03,430 Taigi, kur yra tas vaikinas? 293 00:18:03,430 --> 00:18:04,990 Taip. 294 00:18:04,990 --> 00:18:06,740 Gerai. 295 00:18:06,740 --> 00:18:12,900 Taigi nepamirškite nuo ankstesnės skaidrės, kad taip pat buvo iš praeitą savaitę, kad 296 00:18:12,900 --> 00:18:18,890 masyvas simbolių, gerai, virvutė, todėl galime pasakyti, kad tai mūsų styginių ai. 297 00:18:18,890 --> 00:18:29,870 Taigi, jei s eilutę, labas, tada, H-E L-L-O, atminties, kad ketina 298 00:18:29,870 --> 00:18:35,610 būti, ir tai backslash 0 simbolis. 299 00:18:35,610 --> 00:18:39,170 >> Taigi, kaip mes gauti s ilgis? 300 00:18:39,170 --> 00:18:43,190 Na, triukas ieško tai backlash 0 charakterį, šis null 301 00:18:43,190 --> 00:18:44,380 terminatorius. 302 00:18:44,380 --> 00:18:50,270 Taigi algoritmas Ar ketinate būti kažkas panašaus į keletą 303 00:18:50,270 --> 00:18:51,510 pakankamai ženklų, kad - 304 00:18:51,510 --> 00:18:56,180 galime turėti tai ranka sudaro apie skaitiklis, tegul vadina int ilgis. 305 00:18:56,180 --> 00:19:00,060 Taigi, nuo čia, mes ketina pakartoti per savo eilutę. 306 00:19:00,060 --> 00:19:04,100 >> Taigi pirmasis simbolis, tai yra H, ir tai ne atgal velniop 0, todėl 307 00:19:04,100 --> 00:19:05,170 ilgis yra 1. 308 00:19:05,170 --> 00:19:08,050 Kartoti iki kito simbolio, E, ir tai ne backslash 0. 309 00:19:08,050 --> 00:19:09,630 Ilgis yra 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 Ir pagaliau, mes pasiekiame Atgal nerijos velniop 0, ir kad priemonė, gerai, 314 00:19:16,690 --> 00:19:17,780 Ši eilutė yra daugiau. 315 00:19:17,780 --> 00:19:20,130 Taigi galime grįžti 5. 316 00:19:20,130 --> 00:19:33,630 >> Taigi iš tikrųjų įgyvendinti, kad, pirma, mano n ilgis lygus 0, mano dešinioji ranka. 317 00:19:33,630 --> 00:19:36,088 Ir mes ketiname pakartoti - 318 00:19:36,088 --> 00:19:38,000 >> GARSIAKALBIS 1 [nesigirdi] 319 00:19:38,000 --> 00:19:38,640 >> ROB Boden: Oi, šaudyti. 320 00:19:38,640 --> 00:19:39,870 Geras skambutis. 321 00:19:39,870 --> 00:19:42,680 Bumas. 322 00:19:42,680 --> 00:19:44,140 Taigi n ilgis lygus 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Taigi, dabar, o s ilgis ne lygūs ir tada, Backslash 0. 325 00:19:58,310 --> 00:20:04,660 Taigi atminkite, tai Atgal nerijos velniop 0, tai tikrasis charakteris, o tai rodo, 326 00:20:04,660 --> 00:20:05,820 stringo pabaigos. 327 00:20:05,820 --> 00:20:09,850 Tiesiog patinka, taip pat Backslash n yra tikrasis simbolis. 328 00:20:09,850 --> 00:20:14,040 Backslash 0 ketina nurodyti Mūsų eilutės pabaigos. 329 00:20:14,040 --> 00:20:15,414 Aš nenoriu daryti, kad. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Ir nors ai indeksuojami ilgis nėra lygi null terminatorius, tada 332 00:20:25,620 --> 00:20:27,130 mes tik ketina prieaugio ilgį. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Taigi, ne mūsų programos pabaigoje ilgis galiausiai ketina 335 00:20:34,880 --> 00:20:37,610 būti 5 ir šiuo atveju. 336 00:20:37,610 --> 00:20:39,210 Ir mes tiesiog grįžti ilgio. 337 00:20:39,210 --> 00:20:42,570 338 00:20:42,570 --> 00:20:43,530 >> Gerai. 339 00:20:43,530 --> 00:20:48,290 Taigi dabar žemyn čia, aš ne padaryti my_strlen. 340 00:20:48,290 --> 00:20:50,700 Tegul kaupia jį įsitikinkite, viskas veikia sklandžiai. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Aš darau iš 2? 343 00:20:58,210 --> 00:21:00,565 Ar tai buvo 1? 344 00:21:00,565 --> 00:21:01,940 Tai turėtų daryti. 345 00:21:01,940 --> 00:21:02,690 Gerai. 346 00:21:02,690 --> 00:21:08,490 Taigi tai yra argv 2. 347 00:21:08,490 --> 00:21:11,585 Veikia kaip tikėtasi, nors buvo, kad aš vienas jį padarė? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Taip. 350 00:21:15,550 --> 00:21:16,760 Gerai. 351 00:21:16,760 --> 00:21:21,820 Tai ko versija neturėjo printf nauja linija po to, bet ji 352 00:21:21,820 --> 00:21:22,910 nėra jokio skirtumo. 353 00:21:22,910 --> 00:21:23,300 Gerai. 354 00:21:23,300 --> 00:21:25,780 Taigi dirbo taip, kaip tikėtasi. 355 00:21:25,780 --> 00:21:34,750 >> Dabar mes galime sujungti vieną žingsnį Be to, kai pranešimas čia gerai, 356 00:21:34,750 --> 00:21:38,920 pirma, mes greiferiniai argv strlen aš, tada mes iteravimu per 357 00:21:38,920 --> 00:21:41,450 kiekvienas simbolis toje eilutėje. 358 00:21:41,450 --> 00:21:47,480 Taigi, užuot, kad kas būtų, jei mes tiesiog sujungti šį laukimo logika 359 00:21:47,480 --> 00:21:50,740 kol mes hit backslash 0 teisę į šią kilpą? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Taigi pakartoti o argv i, j daro nėra lygūs Backslash 0. 362 00:22:07,490 --> 00:22:10,680 Taigi, galime paleisti ją pirma. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Gerai. 365 00:22:21,180 --> 00:22:27,655 Taigi, čia ši sąlyga sako - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 tegul jau aišku, kad. 368 00:22:40,060 --> 00:22:49,140 Taigi, dabar, tegul tai bus mūsų argv. 369 00:22:49,140 --> 00:22:55,290 Taigi, kai aš tik bėgo tą programą anksčiau, argv yra eilučių masyvo. 370 00:22:55,290 --> 00:23:03,100 Ir taip, jei aš jį dot slash argv 2, hello world, tada argv 371 00:23:03,100 --> 00:23:07,650 pati ilgis 3, už argv nulis, labas, ir pasaulis. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Ir viduje kiekvienoje iš šių rodiklių yra pati matrica, jei tai bus 374 00:23:19,660 --> 00:23:23,780 taškų, tai bus velniop, aš nežinau jei tai buvo teisinga kryptimi, aš 375 00:23:23,780 --> 00:23:25,680 nemanau, kad tai buvo. 376 00:23:25,680 --> 00:23:30,110 -R-V brūkšnys, reikia daugiau vietos. 377 00:23:30,110 --> 00:23:32,570 Leiskite supjaustyti šiame masyve. 378 00:23:32,570 --> 00:23:38,230 -R-V brūkšnys 0, tada Backslash 0. 379 00:23:38,230 --> 00:23:43,160 Ir tada netvarkingas bus labas. 380 00:23:43,160 --> 00:23:45,910 Tarkime, H-E Atgal nerijos velniop 0. 381 00:23:45,910 --> 00:23:51,130 Ir, pagaliau, W-O Backslash 0. 382 00:23:51,130 --> 00:23:59,730 >> Taigi, algoritmas, kad mes tiesiog parašė, įdėtos už kilpos, ką jie 383 00:23:59,730 --> 00:24:07,321 darote, yra, mes pirmiausia turi kovoti su i ir tada j. 384 00:24:07,321 --> 00:24:15,206 Tai būtų lengviau su kodo ekranas, grįžkime į tai. 385 00:24:15,206 --> 00:24:17,476 Gerai. 386 00:24:17,476 --> 00:24:24,600 Taigi pastebime, kad i iteratorius tai iteravimu per kiekvieną komandą 387 00:24:24,600 --> 00:24:25,610 linija argumentas. 388 00:24:25,610 --> 00:24:28,870 Ir j yra iteratorius Iteracja virš kiekvieno, kad charakterio 389 00:24:28,870 --> 00:24:30,410 komandinės eilutės argumentas. 390 00:24:30,410 --> 00:24:46,755 Taigi, kas tai slapčiausias printf daro yra, mes 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, bet dabar, argv 0 7 vyksta 392 00:24:58,680 --> 00:25:00,670 lygūs Backslash 0. 393 00:25:00,670 --> 00:25:05,730 >> Taigi mes išeiti, kad kilpos, ir dabar aš kartoja, kad 1. 394 00:25:05,730 --> 00:25:10,910 Ir dabar mes ketiname spausdinti argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 gerai, dabar, nes aš iškirpti Apie Trumpai tariant, argv 1 2 vėl bus 396 00:25:17,040 --> 00:25:18,170 Backslash 0. 397 00:25:18,170 --> 00:25:25,050 Ir taip, prieaugio i ir toliau, o taip toliau, kol mes spausdinti visus 398 00:25:25,050 --> 00:25:28,580 pasaulyje, ir tie trys komandinės eilutės argumentai ir mes išeiti iš 399 00:25:28,580 --> 00:25:31,670 atokiausiuose kilpa, ir užbaigti mūsų programą. 400 00:25:31,670 --> 00:25:38,390 401 00:25:38,390 --> 00:25:39,640 Gerai. 402 00:25:39,640 --> 00:25:43,903 403 00:25:43,903 --> 00:25:46,795 >> Taigi galime grįžti čia. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Taigi gausite tam tikrą pažinimas komandinės eilutės argumentai tai 406 00:25:52,370 --> 00:25:54,460 pirma problema nustatyti. 407 00:25:54,460 --> 00:25:56,630 >> Dabar, derinimo. 408 00:25:56,630 --> 00:26:01,680 Taigi, jūs tikriausiai jau teko daryti kai su savo ankstesnių klaidų taisymas 409 00:26:01,680 --> 00:26:03,120 problema nustatyti. 410 00:26:03,120 --> 00:26:08,420 Ir dar vienas labai paprastas būdas derinimo, pirmiausia, galime pažvelgti Buggy programą. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Na, vaikščioti per šią programą, mes ketiname prašyti už vartotoją 413 00:26:23,830 --> 00:26:29,350 sveikasis skaičius, patraukti, kad sveikasis skaičius, o tada savavališkai, mes turime while cikle, kad 414 00:26:29,350 --> 00:26:32,280 yra tik ketina Mažėja aš kol jis lygus 10. 415 00:26:32,280 --> 00:26:35,820 Leiskite tiesiog manyti, aš patekti sveikasis skaičius didesnis nei 10. 416 00:26:35,820 --> 00:26:38,700 Taigi Mažėja aš kol jis lygus 10. 417 00:26:38,700 --> 00:26:42,630 >> Ir tada mes turime kitą, o kilpos kad, nors aš ne 0, mes 418 00:26:42,630 --> 00:26:44,540 ketina Mažėja i iki 3. 419 00:26:44,540 --> 00:26:49,790 Taigi, jei matote, kad klaidų tyčia čia tai, kad tai bus Mažėja I 420 00:26:49,790 --> 00:26:57,010 būti 10, o tada tai, o kilpa valia Mažėja i iš 10, 7, 4, iki 1, 421 00:26:57,010 --> 00:27:02,880 neigiamos 2, su neigiamais 5, ir tt, neigiamos begalybės, nes aš 422 00:27:02,880 --> 00:27:05,920 niekada iš tikrųjų yra lygūs 0. 423 00:27:05,920 --> 00:27:08,610 Ir tada šios programos pabaigoje mes turime foo funkciją, kuri būtų 424 00:27:08,610 --> 00:27:12,130 vyksta spausdinti, kad aš. 425 00:27:12,130 --> 00:27:16,520 >> Taigi tai yra trumpas ir nereikšmingas programa, ir klaida yra akivaizdi, 426 00:27:16,520 --> 00:27:18,790 ypač po to, kai aš tiesiog sakė, kas klaida buvo. 427 00:27:18,790 --> 00:27:24,840 Bet tikslas čia yra gerai, tai gali iš tikrųjų atrodo kaip kai kurie iš jūsų 428 00:27:24,840 --> 00:27:30,040 sprendimai iš gobšus nuo paskutinės problema nustatyti, o gal ir jūs turite 429 00:27:30,040 --> 00:27:32,800 kai begalinis ciklas jūsų programoje, ir jūs neturite idėjos 430 00:27:32,800 --> 00:27:34,100 kas jį sukelia. 431 00:27:34,100 --> 00:27:38,690 Taigi labai naudinga derinti technika yra tiesiog pridėti printfs 432 00:27:38,690 --> 00:27:40,180 visame kodą. 433 00:27:40,180 --> 00:27:49,200 >> Taigi čia aš noriu printf ne Pirmasis while cikle. 434 00:27:49,200 --> 00:27:53,155 Ir čia noriu printf, ir aš tiesiog atspausdinti i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Aš net padaryti pirmiausia, o kilpa, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Už antrą, o kilpos. 439 00:28:09,040 --> 00:28:12,170 Dar kartą spausdinti viduje čia, vertė man. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 Ir tegul eina tai. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Taigi taškas velniop derinti. 444 00:28:24,800 --> 00:28:25,610 Įveskite sveikąjį skaičių. 445 00:28:25,610 --> 00:28:28,150 Darom 13. 446 00:28:28,150 --> 00:28:28,760 Ir bumas. 447 00:28:28,760 --> 00:28:33,300 Mes matome, kad esame begalinė apsisukimo viduje antros while cikle. 448 00:28:33,300 --> 00:28:36,305 Taigi, dabar mes žinome, kas yra klaida. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Bet printf derinimo puikiai puikiai, bet kai jūsų programos gauti 451 00:28:45,610 --> 00:28:50,560 ilgesnis ir sudėtingesnis, yra tobulesni sprendimai 452 00:28:50,560 --> 00:28:51,705 gauti viskas veikia. 453 00:28:51,705 --> 00:28:52,955 Taigi galime pašalinti visus šiuos printfs. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 Ir tegul įsitikinkite, aš ne pertrauka nieko. 456 00:29:08,896 --> 00:29:09,850 Gerai. 457 00:29:09,850 --> 00:29:14,180 >> Taigi, programa mes ketiname pristatyti vadinamas 458 00:29:14,180 --> 00:29:16,715 GDB, GNU Debugger. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Na, iš tikrųjų, galime pašalinti debug už antra, ir padaryti perprogramuoti iš naujo. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Na, iš tikrųjų, pirma, gera pamoka komandinės eilutės argumentai. 463 00:29:34,440 --> 00:29:37,780 Atkreipkite dėmesį, kad tai Zaszczękać komanda, kuri yra Sudarant viskas yra perduodama 464 00:29:37,780 --> 00:29:41,300 į komandų eilutę, tai komandų eilutės argumentai. 465 00:29:41,300 --> 00:29:46,250 Taigi, kaip tiksliai jūs ketinate naudoti komandinės eilutės argumentai, kaip mes 466 00:29:46,250 --> 00:29:51,500 ir anksčiau, ir kaip jums per PSET 2, tai kaip Zaszczękać naudoja juos. 467 00:29:51,500 --> 00:30:00,070 >> Taigi pastebime, kad ši pirmoji vėliava, brūkšnys ggdb3, kas tai sakoma, žvangėti, 468 00:30:00,070 --> 00:30:03,790 jums turėtų parengti šį failą tikslas, kad mes galų gale 469 00:30:03,790 --> 00:30:05,380 reikia derinti jį. 470 00:30:05,380 --> 00:30:13,840 Taigi, kaip ilgai, kaip jūs turite, kad vėliava, tada mes galime GDB perprogramuoti. 471 00:30:13,840 --> 00:30:17,380 Ir jis bus atverti GNU Debugger. 472 00:30:17,380 --> 00:30:22,920 >> Taigi yra komandų daug kad jums reikia priprasti. 473 00:30:22,920 --> 00:30:27,100 Pirmasis, kad jums tikriausiai nedelsiant reikia paleisti. 474 00:30:27,100 --> 00:30:28,200 Taigi, kas yra paleisti ketinate daryti? 475 00:30:28,200 --> 00:30:30,910 Jis ketina pradėti savo programą. 476 00:30:30,910 --> 00:30:36,180 Taigi paleisti, pradedant programą, programą prašo mus sveikasis skaičius, 13. 477 00:30:36,180 --> 00:30:39,170 Ir tada atėjo begalinė apsisukimo kaip Tikimasi, išskyrus aš pašalinti 478 00:30:39,170 --> 00:30:40,500 printfs, todėl nereikia net matyti. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Paprastai išėjo. 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 Gali būti, kad ji suvynioti visi atvirkščiai, atgal - ignoruoja tai. 484 00:30:53,640 --> 00:30:55,170 Tarkime, jis neturėjo išeiti normaliai. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Yra sudėtinga atsakyti, kad. 487 00:31:03,370 --> 00:31:07,890 >> Taigi dabar, kad tai nėra labai naudinga. 488 00:31:07,890 --> 00:31:11,480 Taigi tiesiog veikia mūsų programą viduje tai Debugger nepadeda mums bet 489 00:31:11,480 --> 00:31:15,610 būdas, nes mes galėjome tiesiog padaryti dot slash debug iš išorės GDB. 490 00:31:15,610 --> 00:31:21,250 Taigi, viena komanda, jums tikriausiai - 491 00:31:21,250 --> 00:31:22,970 ir aš mesti tai. 492 00:31:22,970 --> 00:31:25,850 Kontrolė-d arba mesti rūkyti, tiek darbo. 493 00:31:25,850 --> 00:31:29,550 Taigi galime pradėti jį vėl. 494 00:31:29,550 --> 00:31:31,130 >> Kita komanda, kad jums tikriausiai iš karto nori 495 00:31:31,130 --> 00:31:33,600 priprasti yra pertrauka. 496 00:31:33,600 --> 00:31:37,120 Taigi mes pertraukos pagrindinis dabar, ir tada aš paaiškinti, kad. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Na, čia mes matome, mes nustatyti atskaitos tašką Šiuo linija debug.c. 499 00:31:46,370 --> 00:31:50,160 Taigi, kas pertrauka reiškia, kad, kai aš įveskite paleisti, programa ketina 500 00:31:50,160 --> 00:31:53,560 toliau veikia tol, kol I hit atskaitos tašką. 501 00:31:53,560 --> 00:31:59,390 Taigi, kai aš paspauskite paleisti, programa prasideda, ir tada ji sugenda, kai ji 502 00:31:59,390 --> 00:32:01,940 patenka į pagrindinę funkciją. 503 00:32:01,940 --> 00:32:06,930 Break pagrindinis bus kažkas jūs gana paprastai padaryti. 504 00:32:06,930 --> 00:32:11,340 >> Ir dabar, kad jums pristatyti iki šiek tiek daugiau komandų. 505 00:32:11,340 --> 00:32:14,330 Atkreipkime dėmesį, kad jis sako, kad mums sumušė eilutėje 11, kuris yra 506 00:32:14,330 --> 00:32:16,230 printf, įveskite sveikasis skaičius. 507 00:32:16,230 --> 00:32:21,260 Taigi komanda Toliau bus, kaip mes einame į kitą eilutę kodo. 508 00:32:21,260 --> 00:32:24,810 Tai va, kad galėtume dėti per mūsų programos eilutė po eilutės. 509 00:32:24,810 --> 00:32:26,260 Taigi kitą. 510 00:32:26,260 --> 00:32:29,820 >> Dabar linija 12, mes ketiname gauti sveikąjį skaičių. 511 00:32:29,820 --> 00:32:30,450 Kitas. 512 00:32:30,450 --> 00:32:34,290 Ir jei jūs tiesiog paspauskite "Enter" dar kartą, jis bus perdaryti paskutinis dalykas, kurį padarė. 513 00:32:34,290 --> 00:32:36,480 Taigi man nereikia rašyti sekantis kiekvieną kartą. 514 00:32:36,480 --> 00:32:40,100 Taigi, įveskite sveikasis skaičius, 13. 515 00:32:40,100 --> 00:32:46,940 Taigi dabar, linija 14, o aš yra didesnis nei 10, ir aš daryti toliau. 516 00:32:46,940 --> 00:32:48,685 Ir mes matome, mes ketiname Mažėja i. 517 00:32:48,685 --> 00:32:50,210 Taigi, mes ketiname Mažėja i naujo. 518 00:32:50,210 --> 00:32:53,620 >> Taigi dabar, dar viena naudinga komanda Print. 519 00:32:53,620 --> 00:32:55,750 Taigi Spausdinti ketina spausdinti kintamojo vertė. 520 00:32:55,750 --> 00:32:57,825 Tegul atneš naudos kintamojo i. 521 00:32:57,825 --> 00:32:58,705 Leiskite spausdinti i. 522 00:32:58,705 --> 00:33:00,910 Jis sakys i 11. 523 00:33:00,910 --> 00:33:03,330 Dabar mes vėl kartu Kitas i yra didesnis nei 10. 524 00:33:03,330 --> 00:33:05,590 Taigi, aš vis dar didesnis nei 10, nes jis 11. 525 00:33:05,590 --> 00:33:06,920 i minus minus. 526 00:33:06,920 --> 00:33:08,250 Leiskite spausdinti i naujo. 527 00:33:08,250 --> 00:33:10,950 Kaip ir tikėtasi, jis 10. 528 00:33:10,950 --> 00:33:12,510 >> Taigi dabar, šalia. 529 00:33:12,510 --> 00:33:16,250 Jis grįžta su sąlyga, i didesnis nei 10, bet aš dabar 10, todėl 530 00:33:16,250 --> 00:33:20,040 tai ne didesnis nei 10, todėl mes tikimės, jis gali nukristi iš while cikle. 531 00:33:20,040 --> 00:33:22,220 Ir dabar mes žemiau eilutės kodo. 532 00:33:22,220 --> 00:33:28,750 Ir kita komanda, sąrašas, yra tik ketina rodyti Ankstesnių ir ateinančių 533 00:33:28,750 --> 00:33:31,240 pora eilučių kodo, visų atveju jūs praradote save. 534 00:33:31,240 --> 00:33:35,420 Taigi mes tiesiog išėjo šį while cikle, ir dabar mes turime įtraukti šį 535 00:33:35,420 --> 00:33:37,080 o linijos, linijos 18. 536 00:33:37,080 --> 00:33:39,860 Taigi, o aš ne 0. 537 00:33:39,860 --> 00:33:46,570 Ir šalia, aš Lygu i minus 3, o mes pastebėti, tai bus tiesiog nesustoti. 538 00:33:46,570 --> 00:33:48,270 Ir mes galime atspausdinti i. 539 00:33:48,270 --> 00:33:49,990 >> Kiekviena komanda tarsi turi nuorodas. 540 00:33:49,990 --> 00:33:51,720 Taigi p yra trumpas Spausdinti. 541 00:33:51,720 --> 00:33:53,400 Taigi, mes galime p i. 542 00:33:53,400 --> 00:33:57,550 Tiesiog išlaikyti ūkį n, arba nuolat daryti Pirmyn. 543 00:33:57,550 --> 00:33:58,340 Spausdinti aš vėl. 544 00:33:58,340 --> 00:34:00,380 Jūs matote dabar atėjo neigiamas 167. 545 00:34:00,380 --> 00:34:06,030 Taigi, tai bus amžinai, bet ne tikrai amžinai, nes jūs tik pamačiau, kad 546 00:34:06,030 --> 00:34:09,330 tikrai bus baigti tam tikru momentu. 547 00:34:09,330 --> 00:34:15,699 >> Taigi, kad pradeda GDB. 548 00:34:15,699 --> 00:34:19,504 Tačiau galime padaryti dar vieną dalyką GDB. 549 00:34:19,504 --> 00:34:20,754 Uh, derinti. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Taigi, šiuo konkrečiu atveju, begalinis ciklas atsitiko viduje 552 00:34:28,534 --> 00:34:30,050 Pagrindinė funkcija. 553 00:34:30,050 --> 00:34:35,779 Ir dabar, tiesiog pripažinti, kad, kad aš ketina perkelti begalinį ciklą į 554 00:34:35,779 --> 00:34:37,029 foo funkcija. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Tiesiog neužmirškite, kad prie šio tikslo programa, taip pat, tai buvo iš pradžių 557 00:34:43,730 --> 00:34:46,210 skambina foo, kuris buvo tiesiog ketinate spausdinti i. 558 00:34:46,210 --> 00:34:51,880 Bet dabar mes skambina foo, kuris yra ketina Mažėja i iki tai 0 ir 559 00:34:51,880 --> 00:34:54,548 tada spausdinti šį kintamąjį. 560 00:34:54,548 --> 00:34:55,469 Gerai. 561 00:34:55,469 --> 00:34:57,970 Išskyrus tai, kad. 562 00:34:57,970 --> 00:35:00,175 Padaryti perprogramuoti. 563 00:35:00,175 --> 00:35:03,310 Ir dabar, gdb derinti. 564 00:35:03,310 --> 00:35:04,090 Gerai. 565 00:35:04,090 --> 00:35:10,580 >> Taigi, jei aš tiesiog paleisti tada aš nesiruošia galėtų iš tikrųjų žingsnis per mano 566 00:35:10,580 --> 00:35:11,730 Programa linija po linijos. 567 00:35:11,730 --> 00:35:19,820 Taigi galime išeiti ne pagrindinis, ir tada įveskite paleisti. 568 00:35:19,820 --> 00:35:28,160 Taigi pereiti per tai, printf, įveskite sveikasis skaičius, gauti sveikąjį skaičių, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Taigi, mes ketiname išlaikyti decrementing kol i yra didesnis nei 10. 571 00:35:37,490 --> 00:35:42,840 Tada mes ketiname patenka per o linijos ir gauti linijos - 572 00:35:42,840 --> 00:35:44,364 tegul ją atidaryti atskirame lange. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Taigi mes decremented kol aš nebe didesnis nei 10, ir tada mes 575 00:35:53,300 --> 00:35:55,700 vadinama funkcijos, rūšys. 576 00:35:55,700 --> 00:36:01,340 >> Taigi, kas atsitiko, kai aš paspauskite funkcija foo, gerai, aš pašaukiau foo ir 577 00:36:01,340 --> 00:36:04,030 tada aš nebeturėjo kontroliuoti GDB. 578 00:36:04,030 --> 00:36:10,230 Taigi, kai aš paspauskite Next šioje eilutėje, viskas tęsėsi iki tai atsitiko, 579 00:36:10,230 --> 00:36:12,400 kur programa išėjo, kai - 580 00:36:12,400 --> 00:36:14,450 manyti, jis neegzistavo ilgainiui. 581 00:36:14,450 --> 00:36:16,390 Tu matei tai pristabdyti šiek tiek nors. 582 00:36:16,390 --> 00:36:22,040 Tad kodėl aš prarasiu kontrolę tuo momentu programa? 583 00:36:22,040 --> 00:36:27,540 Na, kai aš tipo kitą, kad eina į pažodinis kitą eilutę kodo, kad 584 00:36:27,540 --> 00:36:28,850 bus įvykdyti. 585 00:36:28,850 --> 00:36:35,950 Taigi, po linija 21, kitą eilutę kodo kad bus įvykdyti yra linija, 22, 586 00:36:35,950 --> 00:36:38,520 kuris, išeinant iš pagrindinių. 587 00:36:38,520 --> 00:36:43,810 Taigi aš nenoriu tiesiog eiti į kitą eilutę kodo. 588 00:36:43,810 --> 00:36:48,170 Noriu eiti į funkciją, foo, ir tada taip pat žingsnis per 589 00:36:48,170 --> 00:36:49,830 tie kodo eilučių. 590 00:36:49,830 --> 00:36:53,726 >> Taigi, kad mes turime alternatyvą. 591 00:36:53,726 --> 00:36:56,770 Leiskite mesti, kad dar kartą. 592 00:36:56,770 --> 00:36:58,020 Break pagrindinis. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, kitą, kitą, 13, kitą, kitą, kitą, atidžiai, 595 00:37:06,370 --> 00:37:09,820 Prieš mes hit linija foo. 596 00:37:09,820 --> 00:37:10,520 Gerai. 597 00:37:10,520 --> 00:37:13,700 >> Taigi dabar mes eilutėje 21, kur mes vadiname foo. 598 00:37:13,700 --> 00:37:17,100 Mes nenorime įvesti kitą, nes tai tiesiog paskambinti funkcija foo ir 599 00:37:17,100 --> 00:37:18,710 pereiti į kitą eilutę kodo. 600 00:37:18,710 --> 00:37:20,840 Ką mes norime naudoti, yra žingsnis. 601 00:37:20,840 --> 00:37:25,690 Taigi, čia yra tarp Step skirtumas ir to, kur žingsnis žingsnius į 602 00:37:25,690 --> 00:37:28,190 veikti, ir Kitas eina per funkcija. 603 00:37:28,190 --> 00:37:32,830 Jis tiesiog vykdo į visumą funkcija ir išlaiko vyksta. 604 00:37:32,830 --> 00:37:37,210 >> Taigi veiksmas vyksta atnešti mums į funkciją, rūšys. 605 00:37:37,210 --> 00:37:41,160 Čia mes matome dabar, mes atgal tai, o kilpa tai, teoriškai, 606 00:37:41,160 --> 00:37:44,190 ketina tęstis amžinai. 607 00:37:44,190 --> 00:37:50,420 Ir jei paspausite žingsnis, kai ji net funkcija skambinti, tada tai 608 00:37:50,420 --> 00:37:51,720 identiškas Next. 609 00:37:51,720 --> 00:37:55,320 Taigi, tai tik tada, kai esate ne linija, kuri skambina funkciją Tai žingsnis 610 00:37:55,320 --> 00:37:56,970 ketina skirtis nuo kitų. 611 00:37:56,970 --> 00:37:57,930 Taigi žingsnis atneš mums čia. 612 00:37:57,930 --> 00:38:02,100 Žingsnis, žingsnis, žingsnis, žingsnis, žingsnis, žingsnis, ir mes tiesiog begalinis ciklas amžinai. 613 00:38:02,100 --> 00:38:06,810 >> Taigi galite priprasti, kaip jūsų būdas nustatyti begalinis kilpos, yra 614 00:38:06,810 --> 00:38:08,960 tiesiog palaikius klavišą Enter pamatyti, kur jūs įstrigti. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 Yra geresnių būdų, kaip tai padaryti, bet dabar, kad yra visiškai pakankamas. 617 00:38:14,780 --> 00:38:17,967 Ir stilistiškai, kad atitiktų Stilius 50, aš tai padariau. 618 00:38:17,967 --> 00:38:21,550 619 00:38:21,550 --> 00:38:24,030 Gerai. 620 00:38:24,030 --> 00:38:28,400 >> Taigi paskutinis komanda pristatyti. 621 00:38:28,400 --> 00:38:30,810 Na, tegul GDB debug in 622 00:38:30,810 --> 00:38:35,580 Taigi vietoj to, nesilaikantiems ne pagrindinė, jei aš žinoti foo funkcija taip pat 623 00:38:35,580 --> 00:38:39,230 problema, tada aš gali turėti tik sakė, pertrauka ne foo vietoj. 624 00:38:39,230 --> 00:38:42,310 Tarkime, aš pertraukos metu tiek pagrindinis ir rūšys. 625 00:38:42,310 --> 00:38:45,390 Taigi galite nustatyti kaip daug ribines vertes, kaip norite. 626 00:38:45,390 --> 00:38:49,230 Kai aš tipo paleisti, jis ketina sustoti - 627 00:38:49,230 --> 00:38:52,180 Ooh, tegul perkompiliuoti, nes Aš pasikeitė dalykų. 628 00:38:52,180 --> 00:38:55,950 Jūs pamatysite šią eilutę, įspėjimo šaltinį failas yra naujesnis negu vykdomąjį. 629 00:38:55,950 --> 00:38:59,680 Taigi, tai reiškia, kad aš tiesiog atėjo čia ir pakeisti juos atitinka Stilius 630 00:38:59,680 --> 00:39:03,100 50, bet aš ne perkompiliuoti programa. 631 00:39:03,100 --> 00:39:04,870 Taigi GDB leidžia man žinoti. 632 00:39:04,870 --> 00:39:10,130 Aš mesti, kad perprogramuoti iš naujo, hit gdb perprogramuoti. 633 00:39:10,130 --> 00:39:10,700 Gerai. 634 00:39:10,700 --> 00:39:12,800 >> Taigi dabar, atgal į, ką aš darau. 635 00:39:12,800 --> 00:39:15,720 Break Main, pertrauka foo. 636 00:39:15,720 --> 00:39:20,680 Dabar, jei aš paleisti programą, todėl ketina tęsti iki hitai 637 00:39:20,680 --> 00:39:21,320 atskaitos tašką. 638 00:39:21,320 --> 00:39:24,680 Kad atskaitos tašką atsitinka būti pirmasis ne pagrindinis. 639 00:39:24,680 --> 00:39:28,630 Dabar, užuot toliau, toliau, toliau, kitą, kitą, kol aš paspauskite foo, aš 640 00:39:28,630 --> 00:39:35,230 galite įvesti ir toliau, o toliau kol paspausite kitą atskaitos tašką. 641 00:39:35,230 --> 00:39:37,200 Turiu įvesti sveikuosius pirmas. 642 00:39:37,200 --> 00:39:40,570 Toliau bus tęsiamas tol, kol aš paspauskite kitą atskaitos tašką, kuris yra tai, kad 643 00:39:40,570 --> 00:39:43,320 funkcija foo. 644 00:39:43,320 --> 00:39:50,130 >> Taigi Vykdyti veiks iki paspausite atskaitos tašką, bet jūs tik įvesti paleisti kai 645 00:39:50,130 --> 00:39:54,060 jums pradedant programą, o tada nuo tada, tai tęsti. 646 00:39:54,060 --> 00:40:01,950 Jei aš tiesiog padariau pertrauka pagrindinis ir tada vyko, tai bus pertrauka ne 647 00:40:01,950 --> 00:40:03,670 Pagrindinis ir tęskite. 648 00:40:03,670 --> 00:40:10,050 Kadangi aš neturiu pertraukos tašką foo, įveskite sveikasis skaičius, tai dabar aš 649 00:40:10,050 --> 00:40:11,380 nesiruošia išeiti į foo. 650 00:40:11,380 --> 00:40:16,318 Tai tiesiog vyksta begalinis kilpa, kol tas. 651 00:40:16,318 --> 00:40:17,568 Gerai. 652 00:40:17,568 --> 00:40:19,500 653 00:40:19,500 --> 00:40:24,420 >> Štai Miesto GDB. 654 00:40:24,420 --> 00:40:27,790 Jūs turėtumėte pradėti jį naudoti Jūsų problemines rinkinių. 655 00:40:27,790 --> 00:40:30,550 Jis gali būti labai naudinga nustatyti klaidas. 656 00:40:30,550 --> 00:40:35,280 Jei jūs iš tikrųjų tiesiog eilutė po eilutės, eikite per savo kodą, ir palyginti tai, kas 657 00:40:35,280 --> 00:40:39,740 iš tikrųjų vyksta su tuo, ką jūs tikėtis taip atsitiktų, tai gana 658 00:40:39,740 --> 00:40:41,060 sunku praleisti savo klaidas. 659 00:40:41,060 --> 00:40:45,280 660 00:40:45,280 --> 00:40:46,530 Gerai. 661 00:40:46,530 --> 00:40:48,310 662 00:40:48,310 --> 00:40:54,040 >> Taigi, praėjusią savaitę Davidas išvedė tai paslaptis rakto kriptografija stuff 663 00:40:54,040 --> 00:40:59,350 Pirmą kartą, kai mes nenorime slaptažodžius tiesiog laikyti ant mūsų 664 00:40:59,350 --> 00:41:03,210 kompiuteris kai paprastojo teksto failą, kur kas nors gali atvažiuoti ir tiesiog 665 00:41:03,210 --> 00:41:04,660 atidarykite jį ir juos skaityti. 666 00:41:04,660 --> 00:41:07,530 Idealiu atveju, jie būtų šifruojamas tam tikru būdu. 667 00:41:07,530 --> 00:41:13,340 Ir problemą, 2, jums reikia spręsti su vienu metodu šifravimo, 668 00:41:13,340 --> 00:41:16,520 ar gerai, du metodai, tačiau jie yra ne toks didelis. 669 00:41:16,520 --> 00:41:20,050 Jei hacker leidimas, esate Taip pat bus sprendžiami su 670 00:41:20,050 --> 00:41:22,150 iškodavimo kai kuriuos dalykus. 671 00:41:22,150 --> 00:41:29,770 >> Taigi, klausimas dabar yra gerai, net jei mes turime stipriausią šifravimas 672 00:41:29,770 --> 00:41:34,830 algoritmas pasaulyje, jei pasirinksite ypač prastas slaptažodį, tada jis 673 00:41:34,830 --> 00:41:37,720 nebus jums padėti, labai daug, nes žmonės vis dar galės suprasti jį. 674 00:41:37,720 --> 00:41:41,530 Net jei matyti užšifruotą eilutę ir jis atrodo kaip šiukšlių netvarka 675 00:41:41,530 --> 00:41:44,760 tai reiškia, kad nieko jiems, jei jie vis tik reikia išbandyti keletą slaptažodžių 676 00:41:44,760 --> 00:41:50,560 figure it out, tada jūs nėra labai saugus. 677 00:41:50,560 --> 00:41:55,890 Taigi, žiūrėti vaizdo įrašą, daro tą tašką. 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 >> -Šalmas, jūs fanatikas. 681 00:42:02,100 --> 00:42:03,370 Kas vyksta? 682 00:42:03,370 --> 00:42:05,170 Ką tu darai, kad mano dukra? 683 00:42:05,170 --> 00:42:09,910 >> -Leiskite man pristatyti lakuotais jauna plastikos chirurgas Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, didžiausias nosis darbo žmogus visam 685 00:42:13,730 --> 00:42:16,080 visatos, ir Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Jūsų Didenybe. 687 00:42:17,210 --> 00:42:18,070 >> -Nosis darbas? 688 00:42:18,070 --> 00:42:18,670 Nesuprantu. 689 00:42:18,670 --> 00:42:20,090 Ji jau turėjo nosies darbą. 690 00:42:20,090 --> 00:42:21,910 Tai buvo saldus šešiolika metu. 691 00:42:21,910 --> 00:42:22,140 >> -Ne. 692 00:42:22,140 --> 00:42:23,690 Tai ne tai, ką jūs manote. 693 00:42:23,690 --> 00:42:25,420 Tai daug, daug blogiau. 694 00:42:25,420 --> 00:42:30,300 Jei nenorite duoti man derinys oro skydas, Dr Schlotkin bus 695 00:42:30,300 --> 00:42:34,226 duoti savo dukterį atgal savo seną nosį. 696 00:42:34,226 --> 00:42:35,476 >> -Ne. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Kur tu jį gavai? 699 00:42:40,516 --> 00:42:41,440 >> -Viskas gerai. 700 00:42:41,440 --> 00:42:42,180 Pasakysiu. 701 00:42:42,180 --> 00:42:43,381 Pasakysiu. 702 00:42:43,381 --> 00:42:44,263 Ne, tėtis. 703 00:42:44,263 --> 00:42:45,590 Ne, neturi. 704 00:42:45,590 --> 00:42:46,860 >> -Tu teisus, my dear. 705 00:42:46,860 --> 00:42:48,450 Aš praleisti savo naują nosį. 706 00:42:48,450 --> 00:42:52,090 Bet aš negali pasakyti jam derinys, nesvarbu koks. 707 00:42:52,090 --> 00:42:53,680 >> -Labai gerai. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, padaryti jūsų blogiausias. 709 00:42:55,685 --> 00:42:56,914 >> -Nėr už ką. 710 00:42:56,914 --> 00:43:00,690 >> [ĮRANKIAI JUOS Sharpened] 711 00:43:00,690 --> 00:43:01,910 >> -Ne. 712 00:43:01,910 --> 00:43:02,520 Palaukti. 713 00:43:02,520 --> 00:43:03,836 Palaukti. 714 00:43:03,836 --> 00:43:05,300 Pasakysiu. 715 00:43:05,300 --> 00:43:06,880 Pasakysiu. 716 00:43:06,880 --> 00:43:09,130 >> -Žinojau, kad dirbtų. 717 00:43:09,130 --> 00:43:09,900 Gerai. 718 00:43:09,900 --> 00:43:12,850 Duok jį man. 719 00:43:12,850 --> 00:43:16,918 >> -Derinys yra vienas. 720 00:43:16,918 --> 00:43:17,406 >> -Viena. 721 00:43:17,406 --> 00:43:18,382 >> -Viena. 722 00:43:18,382 --> 00:43:19,358 >> -Du. 723 00:43:19,358 --> 00:43:19,846 >> -Du. 724 00:43:19,846 --> 00:43:20,822 >> -Du. 725 00:43:20,822 --> 00:43:21,310 >> -Trys. 726 00:43:21,310 --> 00:43:21,798 >> -Trys. 727 00:43:21,798 --> 00:43:22,774 >> -Trys. 728 00:43:22,774 --> 00:43:23,262 >> Keturių. 729 00:43:23,262 --> 00:43:23,750 >> Keturių. 730 00:43:23,750 --> 00:43:26,150 >> Keturių. 731 00:43:26,150 --> 00:43:27,010 >> Penki. 732 00:43:27,010 --> 00:43:27,670 >> Penki. 733 00:43:27,670 --> 00:43:29,010 >> Penki. 734 00:43:29,010 --> 00:43:34,770 >> -Taigi, derinys yra vienas, du, trys, keturi, penki. 735 00:43:34,770 --> 00:43:37,460 Štai stupidest derinys Aš kada nors girdėjau savo gyvenime. 736 00:43:37,460 --> 00:43:39,710 Štai koks dalykas idiotas turės savo bagažo. 737 00:43:39,710 --> 00:43:42,000 >> -Ačiū, Jūsų Didenybe. 738 00:43:42,000 --> 00:43:43,530 >> -Ką tu padarei? 739 00:43:43,530 --> 00:43:44,490 >> I ¹ jungtas sienos. 740 00:43:44,490 --> 00:43:45,420 >> -Ne tu ne. 741 00:43:45,420 --> 00:43:45,840 Jūs išjungėte visą filmą. 742 00:43:45,840 --> 00:43:46,930 >> -Turiu paspaudėte klaidingą mygtuką. 743 00:43:46,930 --> 00:43:48,265 >> -Na, padėkite jį atgal. 744 00:43:48,265 --> 00:43:49,110 Įdėti filmą atgal. 745 00:43:49,110 --> 00:43:49,510 >> -Taip, pone. 746 00:43:49,510 --> 00:43:49,917 Taip, sere. 747 00:43:49,917 --> 00:43:50,324 >> -Eime, Arnoldas. 748 00:43:50,324 --> 00:43:51,140 Ateik, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Žinoma, jūs žinote, aš vis dar galėsite turi sąskaitą jums už tai. 750 00:43:53,060 --> 00:43:53,440 >> [PABAIGA VIDEO PLAYBACK] 751 00:43:53,440 --> 00:43:54,690 >> ROB Boden: Gerai. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Taigi dabar, kad mes jau kalbame apie saugumo tam tikrais būdais, gražus 754 00:44:08,430 --> 00:44:16,050 mažai filmo plakatas, todėl neseniai dienų, šie klausimai su NSI 755 00:44:16,050 --> 00:44:17,300 stebėti viską. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Jis gali būti sunku jaustis kaip jūs turėti tam tikrą privatumo rūšiuoti 758 00:44:26,930 --> 00:44:34,540 Virtualiame pasaulyje, nors aš negalėjau pasakyti jūs dauguma PRISM detales. 759 00:44:34,540 --> 00:44:42,130 Taigi peržengiant PRISM, mes neketiname kalbėti apie, kad dabar 760 00:44:42,130 --> 00:44:44,030 galvoti apie savo kompiuterį. 761 00:44:44,030 --> 00:44:48,360 Taigi čia, aš noriu pereiti mano tikrojo sąskaitos 762 00:44:48,360 --> 00:44:50,370 mano mažai pingvinas. 763 00:44:50,370 --> 00:44:57,310 Taigi turiu slaptažodžių rinkinį, ir kad slaptažodis ką noriu, kad ji būtų. 764 00:44:57,310 --> 00:45:02,430 >> Bet atsiminkite, kad tai, ką aš prisijungti su, todėl tai prisijungti 765 00:45:02,430 --> 00:45:04,850 greitai, tai kai programa. 766 00:45:04,850 --> 00:45:07,910 Tai kai programa, kuri buvo parašė tikru asmeniu. 767 00:45:07,910 --> 00:45:13,250 Ir taip, kad asmuo, jei jie yra ypač kenksminga, jie galėtų 768 00:45:13,250 --> 00:45:17,780 jau sakiau, viskas gerai, todėl, jei slaptažodis kad turėčiau įvesti lygi mano 769 00:45:17,780 --> 00:45:22,800 Tikrasis slaptažodį, arba tai lygūs tam tikru specialiu slaptažodžiu - 770 00:45:22,800 --> 00:45:25,550 Dovydas yra nuostabus ar kažkas - 771 00:45:25,550 --> 00:45:27,190 tada tegul juos in 772 00:45:27,190 --> 00:45:33,760 Taigi kenksminga programuotojas galėtų turėti prieiga prie visų jūsų Mac arba 773 00:45:33,760 --> 00:45:36,150 Langai, arba nieko. 774 00:45:36,150 --> 00:45:41,980 >> Taigi tai nėra daug susirūpinimą, nes, Aš turiu galvoje, tai yra prisijungimo programa 775 00:45:41,980 --> 00:45:48,720 tai išsiunčiamas su OS X, šimtus ar tūkstančiai žmonių 776 00:45:48,720 --> 00:45:50,020 peržiūri šį kodą. 777 00:45:50,020 --> 00:45:55,330 Ir taip, jei jūsų kode kažkur, jūs pasakyti, ar šios eilutės lygu lygu 778 00:45:55,330 --> 00:45:58,860 Dovydas yra nuostabus, prisijungimo duomenys, tada kažkas yra bus, kaip, palauk. 779 00:45:58,860 --> 00:45:59,800 Tai nėra teisinga. 780 00:45:59,800 --> 00:46:01,790 Tai neturėtų būti čia. 781 00:46:01,790 --> 00:46:06,650 Štai vienas būdas, kuriuo mes gauti dalykų būti natūra saugus. 782 00:46:06,650 --> 00:46:10,300 >> Bet pagalvokite apie net programas kad rašote. 783 00:46:10,300 --> 00:46:13,000 Tarkime, jūs rašė prisijungimo programą. 784 00:46:13,000 --> 00:46:20,440 Taigi šis prisijungimas programa, kad jūs rašė, taigi akivaizdu, kad esate geras 785 00:46:20,440 --> 00:46:21,210 programuotojas. 786 00:46:21,210 --> 00:46:25,610 Jūs nesate ketinate daryti bet kenksminga jei x lygu lygu Dovydas yra nuostabus 787 00:46:25,610 --> 00:46:27,860 į savo kodą. 788 00:46:27,860 --> 00:46:31,930 Tačiau ši programa, ką jūs naudoti kaupti šią programą? 789 00:46:31,930 --> 00:46:34,180 Kažkas panašaus žvangėjimas. 790 00:46:34,180 --> 00:46:38,460 Taigi ką daryti, jei asmuo, kuris atsitiko rašyti Zaszczękać ypatinga Bruņās Zaszczękać 791 00:46:38,460 --> 00:46:44,310 kažkas panašaus, jei aš sudarant prisijungti programą, tada įveskite šį kodą 792 00:46:44,310 --> 00:46:49,720 į prisijungimo programa, kuri sako, jei X reiškia lygu Dovydas yra nuostabus? 793 00:46:49,720 --> 00:46:59,890 Taigi, dar visai, bet mes turime tą patį išleisti čia, kur žvangėjimas, gerai, 794 00:46:59,890 --> 00:47:03,790 tūkstančiai, jei ne dešimtys tūkstančių žmonės, pažvelgė Zaszczękać, turi 795 00:47:03,790 --> 00:47:07,160 pažvelgė į savo eilučių kodo ir sakė, viskas gerai, nieko bloga čia. 796 00:47:07,160 --> 00:47:10,680 Akivaizdu, kad ne vienas yra kas tai kenksminga. 797 00:47:10,680 --> 00:47:15,780 >> Bet kas yra Zaszczękać pati, kaip, ką daryti, jei aš surinkti Zaszczękać? 798 00:47:15,780 --> 00:47:20,900 Ką daryti, jei kai kompiliatorių, kad kaupia Zaszczękać įterpia į Zaszczękać 799 00:47:20,900 --> 00:47:25,610 ši speciali Hack, kad sako, viskas gerai, kai aš sudaryti žvangėjimas, tada 800 00:47:25,610 --> 00:47:31,290 vykdomąjį Man reikia specialiai ieškoti viduje prisijungimo programos ir įterpti 801 00:47:31,290 --> 00:47:34,230 šį slaptažodį lygu lygu Dave yra nuostabus? 802 00:47:34,230 --> 00:47:37,990 Taigi nepamirškite, kad pati savo kompiliatorius turi būti renkami tam tikru momentu. 803 00:47:37,990 --> 00:47:42,810 Taigi, jei kas norite sudaryti Zaszczękać su, pati yra kenksminga, tada jūs 804 00:47:42,810 --> 00:47:45,580 gali būti prisukamas visą kelią žemyn linija. 805 00:47:45,580 --> 00:47:49,630 >> Taigi čia mes turime Ken Thompson Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Taigi tai yra Portretų nuotrauka. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie yra dešinėje. 808 00:47:55,470 --> 00:47:58,740 Jis yra svarbus - 809 00:47:58,740 --> 00:48:03,640 gana daug rašė C. Taigi, jūs galite padėkoti jam už šioje klasėje. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson kairėje. 811 00:48:04,840 --> 00:48:07,780 Du iš jų iš esmės rašė UNIX. 812 00:48:07,780 --> 00:48:10,140 Na, jie buvo pagrindiniai veiksniai, UNIX. 813 00:48:10,140 --> 00:48:11,310 Buvo keletas kitų. 814 00:48:11,310 --> 00:48:16,240 Taigi, Ken Thompson, tam tikru momentu, jis laimi Turingo apdovanojimą. 815 00:48:16,240 --> 00:48:20,860 Ir Tiuringo apdovanojimas, Aš visada girdėjau tai nuorodos, tokiu būdu, tai 816 00:48:20,860 --> 00:48:23,100 Nobelio premijos kompiuterių mokslo. 817 00:48:23,100 --> 00:48:27,500 >> Taigi tuo Turingo apdovanojimą, jis turi duoti jo priėmimo kalboje. 818 00:48:27,500 --> 00:48:31,790 Jis suteikia šiam labai žymiojoje kalboje dabar vadinamas Apmąstymai apie Pasitikėjimas 819 00:48:31,790 --> 00:48:35,620 Pasitikėjimas, kurį mes sieja On kurso tinklalapyje. 820 00:48:35,620 --> 00:48:41,670 Ir šioje kalboje jis sako, viskas gerai, todėl parašiau UNIX, o dabar visi 821 00:48:41,670 --> 00:48:43,320 jūs žmonės naudoja UNIX. 822 00:48:43,320 --> 00:48:46,960 Dabar, šiandien prisimenu, kad Linux yra tiesioginis palikuonis UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X "tiesiogiai naudoja UNIX. 824 00:48:50,140 --> 00:48:53,810 "Windows" nėra tiek daug, bet daug idėjų paimtos iš UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Taigi jis pakyla į sceną ir sako: viskas gerai, aš parašiau UNIX. 826 00:48:59,220 --> 00:49:03,940 Ir tik todėl, vaikinai žinau, aš tikiu, gali prisijungti prie kiekvieno 827 00:49:03,940 --> 00:49:05,590 vieną kartą savo kompiuteriuose. 828 00:49:05,590 --> 00:49:14,280 Kadangi aš įdėti vieną iš šių specialių jei x Lygu lygu Ken Thomson yra nuostabus, 829 00:49:14,280 --> 00:49:16,350 tada man bus leista prisijungti. 830 00:49:16,350 --> 00:49:18,370 Taigi žmonės yra kaip gerai, kaip tu tapai tai padaryti? 831 00:49:18,370 --> 00:49:21,090 Mes pažvelgė prisijungimo programos ir nieko ten. 832 00:49:21,090 --> 00:49:24,700 Jis kaip gerai, aš kartą sudarytojas prisijungti prisijungimo programos 833 00:49:24,700 --> 00:49:30,490 kad prisijungimo programa dabar turės kad X reiškia Lygu Ken Thompson 834 00:49:30,490 --> 00:49:31,700 yra awesome. 835 00:49:31,700 --> 00:49:33,120 >> Ir jie sako, gerai, kad tai ne tiesa. 836 00:49:33,120 --> 00:49:35,740 Mes ieškome ne kompiliatorius, ir kompiliatorius neturi jokių linijų 837 00:49:35,740 --> 00:49:36,400 kodas panašaus. 838 00:49:36,400 --> 00:49:40,540 Jis kaip, gerai, bet tai, ką tu Sudarant kompiliatorių? 839 00:49:40,540 --> 00:49:44,810 Ir jie galvoja, ir jis, kaip gerai, Aš tas, kuris davė jums kompiliatorius 840 00:49:44,810 --> 00:49:50,580 jūs naudojate sudaryti sudarytojas, todėl jūs rinkti kompiliatorių, kad 841 00:49:50,580 --> 00:49:56,390 pati yra kenksminga, ir bus pertrauka prisijungimo programą. 842 00:49:56,390 --> 00:49:59,360 Taigi, iš esmės, tuo momentu, ten jokiu būdu jūs galite pažvelgti į šaltinio 843 00:49:59,360 --> 00:50:02,450 kodas prisijungimo programos pamatyti, kas yra negerai. 844 00:50:02,450 --> 00:50:04,220 Jūs negalėjo net pažvelgti į kodą iš kompiliatoriaus 845 00:50:04,220 --> 00:50:06,790 pamatyti, kas yra negerai. 846 00:50:06,790 --> 00:50:11,940 >> Jums reikės pažvelgti į mašiną kodas, faktinis dvejetainis 847 00:50:11,940 --> 00:50:16,760 parengė kompiliatorius pamatyti, palauk, tai eilučių kodo neturėtų būti čia. 848 00:50:16,760 --> 00:50:22,130 Bet Kenas Thompsonas paėmė dar vieną žingsnį toliau ir sako, gerai, kad yra 849 00:50:22,130 --> 00:50:25,980 šios specialios programos, kad iš tikrųjų padėti jums skaityti programų dvejetainis, 850 00:50:25,980 --> 00:50:29,340 todėl jei kas nors naudojo tą programą skaityti dvejetainiai, jie būtų matyti jų 851 00:50:29,340 --> 00:50:30,490 eilučių kodo. 852 00:50:30,490 --> 00:50:34,020 Jis pakeistas šias programas pasakyti, visi Gerai, jei jūs ieškote 853 00:50:34,020 --> 00:50:38,460 sudarytojas, nerodo tai ypač rinkinys binary. 854 00:50:38,460 --> 00:50:42,830 >> Taip, tada jums reikia imtis, kad žingsnis toliau ir, iš esmės, kad gali turėti 855 00:50:42,830 --> 00:50:46,210 kurių buvo imtasi daug lygių Netiesiogiai, ir tam tikru momentu, niekas iš tikrųjų 856 00:50:46,210 --> 00:50:47,990 bus patikrinti. 857 00:50:47,990 --> 00:50:52,590 Taigi istorijos moralas yra, jūs nesiruošia būti raštu 858 00:50:52,590 --> 00:50:54,340 Zaszczękać šioje klasėje. 859 00:50:54,340 --> 00:50:57,020 Jūs ketinate naudoti laipioti Zaszczękać daug šioje klasėje. 860 00:50:57,020 --> 00:51:00,490 Dėl visų žinote, Zaszczękać yra kenksminga programa, kuri yra sabotažas kas 861 00:51:00,490 --> 00:51:03,520 viena programa jūs kada nors surinkti. 862 00:51:03,520 --> 00:51:08,206 Ir palikti jus, kad labai blogas dėmesį, kad mato jus trečiadienis. 863 00:51:08,206 --> 00:51:10,030 >> [Plojimai] 864 00:51:10,030 --> 00:51:12,935 >> SPEAKER 2: Kitame CS50. 865 00:51:12,935 --> 00:51:14,580 >> SPEAKER 3: Ar ne jūs išdrįstų pasakyti, kad. 866 00:51:14,580 --> 00:51:15,930 Jūs galite tai padaryti. 867 00:51:15,930 --> 00:51:19,440 Jūs tai padarė anksčiau, jūs galite tai padaryti, šiandien, jūs galite tai padaryti rytoj. 868 00:51:19,440 --> 00:51:20,930 Jūs buvote daro tai už metus. 869 00:51:20,930 --> 00:51:22,790 Tiesiog eiti ten ir tai padaryti. 870 00:51:22,790 --> 00:51:24,310 Jūs galite tai padaryti. 871 00:51:24,310 --> 00:51:26,102 >> [Muzikavimo]