1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [Mūzikas atskaņošanai] 3 00:00:11,210 --> 00:00:12,100 >> ROB BODEN: Nu labi. 4 00:00:12,100 --> 00:00:15,620 Tātad, pirmā lieta, pirmkārt, video no pazīstama seja. 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 >> -Labi. 8 00:00:23,370 --> 00:00:27,150 Tas ir CS50, un tas ir sākums nedēļas trīs. 9 00:00:27,150 --> 00:00:29,980 Piedod, ka es varētu būt ar tevi šodien, bet ļaujiet man iepazīstināt 10 00:00:29,980 --> 00:00:32,880 CS50 pašas Rob Boden. 11 00:00:32,880 --> 00:00:33,872 >> [END VIDEO PLAYBACK] 12 00:00:33,872 --> 00:00:39,340 >> [Aplausiem un ovācijām] 13 00:00:39,340 --> 00:00:41,277 >> ROB BODEN: in filmogrāfiju ka video ir fantastiska. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Labi. 16 00:00:47,770 --> 00:00:50,960 Tātad, pirmkārt, tur ir vēl viens pusdienas. 17 00:00:50,960 --> 00:00:52,330 Tas ir rīt 01:15. 18 00:00:52,330 --> 00:00:54,480 Nav pusdienās šo piektdien. 19 00:00:54,480 --> 00:00:55,810 Tas ir ar Quora. 20 00:00:55,810 --> 00:01:00,190 Un Tommy šeit nav vēl, bet viens no cilvēki tur ir bijušais vadītājs CF, 21 00:01:00,190 --> 00:01:01,530 Tommy MCWILLIAM. 22 00:01:01,530 --> 00:01:02,730 Tāpēc viņš ir jautri puisis. 23 00:01:02,730 --> 00:01:04,819 Jums ir jānāk. 24 00:01:04,819 --> 00:01:05,900 >> Labi. 25 00:01:05,900 --> 00:01:11,360 Tāpēc pagājušajā nedēļā, mēs sākām pārrāvuma intervālu par to, virkne patiešām ir. 26 00:01:11,360 --> 00:01:14,830 Mēs esam pazīstami kopš gada sākuma, kas tas ir rakstzīmju secība. 27 00:01:14,830 --> 00:01:18,130 Bet pagājušajā nedēļā, mēs delved vērā faktu, ka tas, kas ir patiešām secība 28 00:01:18,130 --> 00:01:22,110 rakstzīmes, labi, mums tagad ir bloki rakstzīmes. 29 00:01:22,110 --> 00:01:26,450 Un mēs zinām, ka string, tas ir masīvs rakstzīmju, pašās beigās, 30 00:01:26,450 --> 00:01:30,920 mums ir šo īpašo null baitu, šis slīpsvītru 0, kas norāda beigas 31 00:01:30,920 --> 00:01:32,230 string. 32 00:01:32,230 --> 00:01:36,970 >> Un tā virkne ir masīvs rakstzīmes, bet mēs varam būt vairāk nekā 33 00:01:36,970 --> 00:01:39,530 tikai masīvs rakstzīmes, mēs varam būt masīvs jebkuru 34 00:01:39,530 --> 00:01:40,890 veida lieta, mēs gribam. 35 00:01:40,890 --> 00:01:51,570 Tātad, ja jūs atceraties no pagājušajā nedēļā, Vecumu programma, kas David ieviesta 36 00:01:51,570 --> 00:01:53,560 tiešām ātri. 37 00:01:53,560 --> 00:01:57,010 Tātad pirmā lieta, ko mēs gatavojamies darīt, ir pieprasīt no lietotāja par skaitlim, 38 00:01:57,010 --> 00:01:58,800 cilvēku skaits telpā. 39 00:01:58,800 --> 00:02:01,260 Pēc tam, kad mēs esam šo skaitli, mēs esam paziņojot masīvs. 40 00:02:01,260 --> 00:02:02,890 Pamanīt šo kronšteins sintaksi. 41 00:02:02,890 --> 00:02:04,540 Jūs gatavojas, lai pierastu pie tā. 42 00:02:04,540 --> 00:02:09,430 >> Tāpēc mēs esam paziņojot masīvs integers sauc par vecumu, un ir n 43 00:02:09,430 --> 00:02:12,080 veseli skaitļi šajā masīvā. 44 00:02:12,080 --> 00:02:16,480 Tāpēc šis modelis tieši šeit, šī 4 int i ir 0, i ir mazāks nekā n, i plus 45 00:02:16,480 --> 00:02:20,580 plus, kas ir arī būs modelis ka jums ir ļoti pieraduši. 46 00:02:20,580 --> 00:02:24,000 Tāpēc, ka tas ir diezgan daudz, cik jūs esat vienmēr būs atkārtot vairāk bloki. 47 00:02:24,000 --> 00:02:26,330 Tāpēc atcerieties, ka n ir garums mūsu masīvs. 48 00:02:26,330 --> 00:02:32,120 Un tāpēc šeit mēs atkārtoti lūdz par gadu vecuma persona, es telpā. 49 00:02:32,120 --> 00:02:36,640 >> Pēc tam, mēs ejam uz leju, un kāda patvaļīga iemesls, mēs pēc tam 50 00:02:36,640 --> 00:02:40,220 izdrukāt, cik veci viņi dodas lai gadu no tagad. 51 00:02:40,220 --> 00:02:49,980 Un darbojas šo programmu, pieņemsim veikt vecumu, dot Slash vecumu. 52 00:02:49,980 --> 00:02:53,010 Tātad cilvēku skaits telpā, pieņemsim, ka tur ir trīs. 53 00:02:53,010 --> 00:02:59,880 Un teikt, pirmais cilvēks, ir 13, Nākamais ir 26, un pēdējais ir 30. 54 00:02:59,880 --> 00:03:05,080 Tātad tas būs atkārtot pa šiem trim cilvēki, izdrukāt 14, 27, un 31. 55 00:03:05,080 --> 00:03:16,060 >> Tātad, atcerieties, ka tad, kad mēs paziņojam masīvs lieluma n, tad indeksiem, kas 56 00:03:16,060 --> 00:03:19,950 masīvs, masīvs ir vērtības un indeksiem 0, 1, 2, galam 57 00:03:19,950 --> 00:03:21,680 līdz n mīnus 1. 58 00:03:21,680 --> 00:03:26,255 Tātad, kad mēs teicām, ka bija trīs cilvēki telpā, un mēs ieliekam šeit 59 00:03:26,255 --> 00:03:29,850 Pirmo atkārtojumu caur šo cilpa, i būs 0. 60 00:03:29,850 --> 00:03:31,650 Tātad indekss 0. 61 00:03:31,650 --> 00:03:34,540 Mēs piešķirot pirmo vecumu lietotājs ievada. 62 00:03:34,540 --> 00:03:38,870 Tad nākamo, mēs ievadot Otrais n lietotājs ievada, un 63 00:03:38,870 --> 00:03:40,580 pie diviem, pēdējā n. 64 00:03:40,580 --> 00:03:44,200 >> Tāpēc paziņojums, ka masīva izmēru Trīs nav neko 65 00:03:44,200 --> 00:03:46,040 in indeksu trīs. 66 00:03:46,040 --> 00:03:49,036 Tas nav derīgs. 67 00:03:49,036 --> 00:03:50,250 Labi. 68 00:03:50,250 --> 00:03:55,136 Tātad, atgriežoties šeit. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Tāpēc tagad, ka mēs esam nodarbojas ar masīviem, mums jau ir zināma. 71 00:04:01,590 --> 00:04:03,780 Tagad mēs esam gatavojas pāriet uz komandu argumentus, kas drīzumā būs 72 00:04:03,780 --> 00:04:05,890 diezgan attiecas uz šo problēmu kopumu. 73 00:04:05,890 --> 00:04:09,670 >> Tātad līdz šim, kad jūs esat pasludināja savu galveno funkciju, mēs esam 74 00:04:09,670 --> 00:04:11,230 teica int galvenais anulēts. 75 00:04:11,230 --> 00:04:14,070 Tāpēc spēkā neesošu tikai nozīmē, ka mums nav iet jebkurš 76 00:04:14,070 --> 00:04:16,440 argumenti, lai šo funkciju. 77 00:04:16,440 --> 00:04:19,190 Tagad mēs ejam, lai redzētu, ka main var veikt dažus argumentus. 78 00:04:19,190 --> 00:04:22,470 Šeit mēs tos saucam int argc un stīgu ARGV iekavās. 79 00:04:22,470 --> 00:04:26,930 Iekavas, atkal, norādot ka mums ir darīšana ar masīviem. 80 00:04:26,930 --> 00:04:31,850 Tātad šeit, stīgu ARGV kronšteini, mēs esam nodarbojas ar masīvu stīgas. 81 00:04:31,850 --> 00:04:35,360 Tā argc, kas notiek, lai norādītu cik argumenti mēs esam 82 00:04:35,360 --> 00:04:37,580 nodots šai programmai. 83 00:04:37,580 --> 00:04:46,050 Un saprast, ko tas nozīmē, pieņemsim aizveriet to. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Tātad līdz šim, mēs esam palaist katru programma, piemēram, dot slīpsvītra vecumu. 86 00:04:50,790 --> 00:04:55,250 Mēs varam arī pie komandrindas, garām caurlaide argumentus, tādējādi termins, komanda 87 00:04:55,250 --> 00:04:56,550 argumentus. 88 00:04:56,550 --> 00:04:59,760 Tātad pirmais arguments, hello pasaule. 89 00:04:59,760 --> 00:05:03,350 Tātad šeit, argc būtu trīs. 90 00:05:03,350 --> 00:05:07,720 Tas ir skaits no argumentiem pie komandrindas. 91 00:05:07,720 --> 00:05:12,840 Argc vienmēr ir vismaz 1, jo dot slash vecumu, sevi, skaitās kā viens no 92 00:05:12,840 --> 00:05:14,490 komandrindas argumentus. 93 00:05:14,490 --> 00:05:17,010 >> Tad Par ir pirmais. 94 00:05:17,010 --> 00:05:20,460 Ja dot slash vecumi ir 0., Tad sveiki, ir pirmais, un pasaule ir 95 00:05:20,460 --> 00:05:22,830 Otrajā komandrindas arguments. 96 00:05:22,830 --> 00:05:29,490 Tāpēc string argv, mēs ejam, lai redzētu, satur virknes, dot slīpsvītru 97 00:05:29,490 --> 00:05:33,830 vecumā, sveiki, un pasaule. 98 00:05:33,830 --> 00:05:38,945 Un, Dāvida lūguma, mēs ejam atskaņot video ievieš to. 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 >> -Līdz šim programmās mēs esam rakstīts, mēs esam deklarēt 102 00:05:46,240 --> 00:05:48,500 Galvenais, kā int galvenais neesošu. 103 00:05:48,500 --> 00:05:51,170 Un visu šo laiku, ka par spēkā neesošu ir vienkārši ir norādot, ka 104 00:05:51,170 --> 00:05:54,430 Programmā neuzņemas nekādu atbildību komandrindas argumentus. 105 00:05:54,430 --> 00:05:57,750 Citiem vārdiem sakot, ja lietotājs palaiž programmu, viņš vai viņa var sniegt komandu 106 00:05:57,750 --> 00:06:01,710 argumentus, rakstot papildu vārdus vai frāzes, pēc tam, kad programma ir 107 00:06:01,710 --> 00:06:03,000 nosaukt uzvednē. 108 00:06:03,000 --> 00:06:06,550 >> Nu, ja jūs vēlaties, lai jūsu programmu, lai veikt komandrindas argumentus, vienu vai 109 00:06:06,550 --> 00:06:10,540 vairāk šādu vārdu, mums ir nepieciešams, lai aizstātu par spēkā neesošu ar pāris argumentiem. 110 00:06:10,540 --> 00:06:12,200 Tāpēc pieņemsim darīt. 111 00:06:12,200 --> 00:06:15,750 Iekļaut CS50.h. 112 00:06:15,750 --> 00:06:19,360 Ietver standarta io.h. 113 00:06:19,360 --> 00:06:20,760 Int galvenais. 114 00:06:20,760 --> 00:06:26,330 Un tagad, tā vietā, lai par spēkā neesošu, es esmu gatavojas norādīt int sauc argc, un 115 00:06:26,330 --> 00:06:28,780 masīvs virknes sauc par argv. 116 00:06:28,780 --> 00:06:31,820 Tagad, argc un argv ir vienkārši konvencijām. 117 00:06:31,820 --> 00:06:34,000 >> Mēs varētu būt sauc šie argumenti lielākā daļa kaut ko mēs gribam. 118 00:06:34,000 --> 00:06:37,630 Bet kas ir svarīgi ir tas, ka argc ir int, jo pēc definīcijas, tas ir 119 00:06:37,630 --> 00:06:41,360 gatavojas satur argumentu skaits, vārdu skaits kopumā, ka 120 00:06:41,360 --> 00:06:43,380 lietotājs ir ievadījis pie viņa vai viņas ātri. 121 00:06:43,380 --> 00:06:47,910 argv, tikmēr, arguments vektors ir būs tiešām ir masīvs glabāšanai 122 00:06:47,910 --> 00:06:52,020 visiem vārdiem, ka lietotājs ir drukāti pie viņa vai viņas ātri. 123 00:06:52,020 --> 00:06:54,500 >> Let 's pāriet uz kaut ko darīt tagad ar vienu vai vairākiem no šiem 124 00:06:54,500 --> 00:06:55,660 komandrindas argumentus. 125 00:06:55,660 --> 00:07:00,070 Jo īpaši, iesim uz priekšu un izdrukāt neatkarīgi no vārda lietotājs veidi 126 00:07:00,070 --> 00:07:03,960 Pēc programmas nosaukuma Kad tiek jautāts. 127 00:07:03,960 --> 00:07:04,730 Atvērt kronšteins. 128 00:07:04,730 --> 00:07:06,240 Aizvērt kronšteins. 129 00:07:06,240 --> 00:07:10,510 Printf procenti s slīpsvītru un komatu. 130 00:07:10,510 --> 00:07:14,550 Un tagad man ir nepieciešams, lai pastāstītu printf kāda vērtība plug vērā, ka vietturī. 131 00:07:14,550 --> 00:07:18,600 Es gribu pirmo vārdu, ka lietotājs ir drukāti pēc programmas nosaukuma, 132 00:07:18,600 --> 00:07:23,130 un tāpēc es esmu gatavojas, lai precizētu argv kronšteins 1, close 133 00:07:23,130 --> 00:07:24,830 iekavas, semikols. 134 00:07:24,830 --> 00:07:27,290 >> Tagad, kāpēc kronšteins 1 un ne kronšteins 0? 135 00:07:27,290 --> 00:07:30,990 Nu, izrādās, automātiski saglabāti in ARGV 0 būs 136 00:07:30,990 --> 00:07:32,620 programmas faktiskā nosaukuma. 137 00:07:32,620 --> 00:07:36,180 Tātad pirmais vārds, ka lietotājs Pēc programmas nosaukums ir, 138 00:07:36,180 --> 00:07:38,990 konvencija, būs uzglabā ARGV 1. 139 00:07:38,990 --> 00:07:42,380 Pieņemsim tagad apkopo un palaist šo programmu. 140 00:07:42,380 --> 00:07:47,780 >> Padarīt ARGV 0, dot slash ARGV 0. 141 00:07:47,780 --> 00:07:50,520 Un tagad vārdu, piemēram, sveiki. 142 00:07:50,520 --> 00:07:51,670 Enter. 143 00:07:51,670 --> 00:07:53,520 Un tur mums ir tā, sveiki. 144 00:07:53,520 --> 00:07:55,750 >> [END VIDEO PLAYBACK] 145 00:07:55,750 --> 00:07:57,000 >> ROB BODEN: Nu labi. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Aizveriet to. 148 00:08:01,230 --> 00:08:16,730 Tātad, ņemot apskatīt šo programmu, mēs vienkārši ieviesti, lai mums, labi, tikai 149 00:08:16,730 --> 00:08:24,710 parādīt, ja mēs drukāt argv 0, pārliecinieties, tagad kas tas ir, argv 0, dot slīpsvītra argv 0. 150 00:08:24,710 --> 00:08:30,440 Tā, kā plānots, tas izdrukāšana Programmas nosaukums, jo argv 0 ir 151 00:08:30,440 --> 00:08:32,970 vienmēr būs Programmas nosaukums. 152 00:08:32,970 --> 00:08:35,640 Bet pieņemsim kaut ko darīt mazliet interesantāku. 153 00:08:35,640 --> 00:08:42,080 >> Tātad problēmu kopumu, jūs būsiet ieviesti, lai šo funkciju, atoi. 154 00:08:42,080 --> 00:08:44,440 Tātad, ko mēs izmantojam atoi atrast? 155 00:08:44,440 --> 00:08:48,550 Kas notiek, lai pārvērstu string līdz veselam skaitlim. 156 00:08:48,550 --> 00:08:53,280 Tātad, ja es iet virkni, viens divi trīs, līdz atoi, kas būs pārveidot ka 157 00:08:53,280 --> 00:08:56,910 veselam skaitlim, viens divi trīs. 158 00:08:56,910 --> 00:09:01,480 Tātad, mēs ejam, lai pārvērstu pirmais komandrindas arguments līdz veselam skaitlim, 159 00:09:01,480 --> 00:09:05,690 un tad tikai drukāt šo skaitli. 160 00:09:05,690 --> 00:09:09,680 >> Tātad būtībā, mēs esam veida reimplementing getint, tikai 161 00:09:09,680 --> 00:09:12,350 skaitlis ir jāievada vismaz komandu line vietā ar programmas 162 00:09:12,350 --> 00:09:14,560 interaktīvi. 163 00:09:14,560 --> 00:09:23,170 Tātad, veicot ARGV 0, pieņemsim do tas ir šeit, un aizveriet to. 164 00:09:23,170 --> 00:09:27,670 Tā darbojas ARGV 0, un pieņemsim ievadiet vesels skaitlis, kas ir viens divi trīs četri viens divi. 165 00:09:27,670 --> 00:09:30,840 Tā tas būs drukāt vesels skaitlis, kas ir viens divi trīs četri viens divi. 166 00:09:30,840 --> 00:09:35,500 Ir dažas nianses, lai atoi ka tas būs pārtraukt rūpējas par neko 167 00:09:35,500 --> 00:09:39,040 aiz derīgu ciparu raksturs, bet tas nav svarīgi. 168 00:09:39,040 --> 00:09:42,870 >> Tātad, ko jūs domājat, ka notiek ja es to izdarītu? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Segmentāciju vaina. 171 00:09:47,050 --> 00:09:50,410 Tātad, kāpēc ir tā, ka? 172 00:09:50,410 --> 00:09:56,060 Ja paskatās atpakaļ uz mūsu programmu, mēs esam pārveidojot ARGV 1, pirmo argumentu 173 00:09:56,060 --> 00:09:59,610 pēc programmas nosaukuma, līdz veselam skaitlim. 174 00:09:59,610 --> 00:10:03,350 Bet nav arguments nodots pēc programmas nosaukuma. 175 00:10:03,350 --> 00:10:08,060 Tātad šeit mēs redzam, ka tas ir buggy programma, jo, ja mēs mēģināt palaist to 176 00:10:08,060 --> 00:10:10,530 bez jebkādiem argumentiem, tas būs tikai crash. 177 00:10:10,530 --> 00:10:16,950 >> Tātad vēl viens kopīgs raksts jūs redzēsiet ir kaut kas līdzīgs, ja argc ir mazāks 178 00:10:16,950 --> 00:10:21,100 nekā divi, norādot, ka nebija vismaz programmas nosaukumu un 179 00:10:21,100 --> 00:10:29,100 Pirmais arguments, tad mēs kaut ko darīt piemēram printf, nav pietiekami 180 00:10:29,100 --> 00:10:31,190 komandrindas argumentus. 181 00:10:31,190 --> 00:10:33,170 Tas droši vien nav labs, lai drukātu, tas ir iespējams, kaut kas, piemēram, 182 00:10:33,170 --> 00:10:35,440 jāievada vesels skaitlis pie komandrindas. 183 00:10:35,440 --> 00:10:37,450 Es ņemšu tikai beigās tur. 184 00:10:37,450 --> 00:10:39,600 Un pēc tam atgriezties 1. 185 00:10:39,600 --> 00:10:44,740 Tāpēc atcerieties, ka beigās mūsu programma, ja mēs atgriežamies 0, ka veida 186 00:10:44,740 --> 00:10:47,060 norāda panākumus. 187 00:10:47,060 --> 00:10:50,940 Un galvenais arī automātiski atgriež 0, ja jums nav. 188 00:10:50,940 --> 00:10:55,800 >> Tāpēc šeit mēs esam noskaņošana 1, lai norādītu ka tas nav panākumu. 189 00:10:55,800 --> 00:11:01,000 Un jūs varat atgriezties, ko vien vēlaties, tikai, 0 norāda panākumus, un 190 00:11:01,000 --> 00:11:03,390 kaut kas cits norāda neveiksmes. 191 00:11:03,390 --> 00:11:04,855 Tā ļauj vadīt šo versiju lietām. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Tāpēc tagad, ja mēs neievadiet komandrindu arguments, tas būs pareizi pateikt 194 00:11:16,600 --> 00:11:18,290 mums, nepietiek komandrindas. 195 00:11:18,290 --> 00:11:20,610 Nav pabeidzis teikumu. 196 00:11:20,610 --> 00:11:24,950 Cits, ja mēs tiešām iet to par vienu, tā var pabeigt programmu. 197 00:11:24,950 --> 00:11:27,920 Tātad, tas ir, kā jūs varētu izmantot argc in lai apstiprinātu skaitu 198 00:11:27,920 --> 00:11:30,630 komandrindas argumentus, ka faktiski pagājis. 199 00:11:30,630 --> 00:11:39,360 >> Tāpēc pieņemsim šo programmu nedaudz vairāk sarežģīta, un apskatīt otrajā 200 00:11:39,360 --> 00:11:42,180 atkārtojuma lietas. 201 00:11:42,180 --> 00:11:46,310 Tāpēc tagad, mēs esam ne tikai drukāšanas Pirmais komandrindas argumentu. 202 00:11:46,310 --> 00:11:51,210 Lūk, mēs, atkārtojot no int i līdztiesīgu 0, i ir mazāks nekā argc, i plus 203 00:11:51,210 --> 00:11:55,280 plus, un poligrāfijas argv, indekss i. 204 00:11:55,280 --> 00:11:59,300 Tātad šis modelis, atkal, tas ir tas pats modelis kā iepriekš, izņemot vietā 205 00:11:59,300 --> 00:12:02,600 sasaukšanas mainīgo n, mēs izmantojam argc. 206 00:12:02,600 --> 00:12:09,520 >> Tātad šis ir atkārtojot katrā indekss masīvā, un drukāšanas katrs 207 00:12:09,520 --> 00:12:11,910 elements šajā masīvā. 208 00:12:11,910 --> 00:12:20,300 Un tā, kad mēs palaist šo programmu, labi, Man nav ievadiet jebkuru komandrindas 209 00:12:20,300 --> 00:12:22,540 argumentus, tāpēc tas tikai izdrukas programmas nosaukums. 210 00:12:22,540 --> 00:12:26,053 Ja es ievadiet ķekars lietas, tas būs drukāt vienu, katrs savā rindā. 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 Tātad, pieņemsim šo vienu soli tālāk. 214 00:12:34,770 --> 00:12:38,890 Un tā vietā, drukāšanas katru argumentu savā rindā, pieņemsim drukāt katru 215 00:12:38,890 --> 00:12:42,590 raksturu katra argumenta savā rindā. 216 00:12:42,590 --> 00:12:46,700 Tāpēc atcerieties, ka argv ir masīvs stīgas. 217 00:12:46,700 --> 00:12:50,960 Tātad, kas ir string, bet masīvs rakstzīmes? 218 00:12:50,960 --> 00:12:57,140 Tātad tas nozīmē, ka argv ir patiešām masīvs masīva rakstzīmes. 219 00:12:57,140 --> 00:13:04,920 Tātad, ņemot izmantot to, pieņemsim ignorēt šo tagad. 220 00:13:04,920 --> 00:13:08,190 Pieņemsim tikai apsvērt virkni ARGV 0. 221 00:13:08,190 --> 00:13:14,170 >> Tātad, ja mēs gribam, lai katru raksturu argv 0 savā rindā, tad es gribu 222 00:13:14,170 --> 00:13:19,500 darīt modeli, mēs esam pieraduši, i ir mazāks par garumu masīva, 223 00:13:19,500 --> 00:13:23,990 kas šeit ir strlen un, kas ir nav tas, ko es gribu darīt, stīgu 224 00:13:23,990 --> 00:13:26,450 s vienāds argv 0. 225 00:13:26,450 --> 00:13:30,390 So i ir mazāks par garums mūsu masīva, kas šajā gadījumā ir masīvs 226 00:13:30,390 --> 00:13:34,410 rakstzīmju, i plus plus. 227 00:13:34,410 --> 00:13:41,040 Un tā, kā mēs to redzējām pagājušajā nedēļā, tas ir ideāls ja mēs virzāmies, ka strlen ārpus 228 00:13:41,040 --> 00:13:45,210 stāvokļa, jo n būs pievienojot strlen no s katru reizi, kad mēs ejam 229 00:13:45,210 --> 00:13:47,720 caur cilpu, un tas ir nebūs mainās. 230 00:13:47,720 --> 00:13:50,230 Tāpēc mēs, kas to ir vienāda ar n pār šeit. 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 Tāpēc tagad mēs esam atkārtojot vairāk katrs indekss masīvā. 234 00:14:01,320 --> 00:14:05,630 Un tā, ja mēs vēlamies, lai drukātu katras raksturu šajā masīvs, procenti c ir 235 00:14:05,630 --> 00:14:06,880 karogu mēs vēlamies izmantot rakstzīmēm. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 Un tagad kronšteins i būs string, indekss raksturs i, tādēļ, ja 238 00:14:19,770 --> 00:14:20,970 string bija sveiki. 239 00:14:20,970 --> 00:14:27,530 tad s 0 būs h, s bracket 1 būs e, un tā tālāk. 240 00:14:27,530 --> 00:14:30,800 >> Tāpēc tagad mēs vēlamies apvienot šīs divas lietas. 241 00:14:30,800 --> 00:14:35,440 Mēs vēlamies, lai izdrukātu katru rakstzīmi Katras komandrindas argumentu. 242 00:14:35,440 --> 00:14:38,950 Tāpēc mēs esam nāksies ligzdotu uz cilpas. 243 00:14:38,950 --> 00:14:47,480 Un parasti, pirmais counter ir i, nākamais būs j, n 244 00:14:47,480 --> 00:14:54,450 būs strlen par ARGV I ir mazāks nekā n, i plus plus. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 Un tagad, nevis drukas ARGV i, lai argv kronšteins i gatavojas indeksu - 247 00:15:06,870 --> 00:15:14,280 kas būs i-th komandrindas arguments, argv i, j gatavojas 248 00:15:14,280 --> 00:15:16,925 būt JTH raksturs i-th arguments. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Es atbrīvoties no šo up šeit un tagad jo mēs ielieciet to ka cilpa. 251 00:15:24,810 --> 00:15:33,900 Tā ir līdzvērtīga String s līdztiesīgu argv i, un pēc tam s bracket j. 252 00:15:33,900 --> 00:15:36,980 >> Nu, mums nav nepieciešams deklarēt šis mainīgais s. 253 00:15:36,980 --> 00:15:44,530 Tā vietā, mēs vienkārši apvienot šos divi par to, kas mums bija, ARGV i, j. 254 00:15:44,530 --> 00:15:45,780 >> SPEAKER 1: [nedzirdama]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> ROB BODEN: Labs zvanu. 257 00:15:49,680 --> 00:15:52,936 Tāpēc tas ir bojāts. 258 00:15:52,936 --> 00:15:55,510 Ja es tiešām skrēja, mēs būtu ir sapratuši šo. 259 00:15:55,510 --> 00:16:01,210 Tāpēc counter Man rūp šajā īpaši 260 00:16:01,210 --> 00:16:05,410 cilpa ir j, iterator. 261 00:16:05,410 --> 00:16:08,560 Tātad jūs esat uzskriet problēmas, iespējams, bezgalīga cilpa, ja mēs 262 00:16:08,560 --> 00:16:09,540 nebija noteikts, ka. 263 00:16:09,540 --> 00:16:12,220 Tieši tāpēc mēs arī runājam par debugging šodien. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Tā ļauj palaist šo programmu. 266 00:16:15,240 --> 00:16:21,200 Un pieņemsim faktiski papildināt atsevišķu printf tepat, ka būs tikai drukāt 267 00:16:21,200 --> 00:16:27,480 cita līnija, jo tas nozīmē, ka tad, kad mēs palaist programmu, tur būs tukšs 268 00:16:27,480 --> 00:16:31,830 līnija starp katru raksturu katrs komandrindas arguments. 269 00:16:31,830 --> 00:16:33,448 Nu, mēs redzēsim, ko tas nozīmē. 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 Ieguva dažas bug. 273 00:16:39,870 --> 00:16:42,860 Kļūda netieši paziņojot bibliotēkas funkciju strlen. 274 00:16:42,860 --> 00:16:51,630 >> Tā iet atpakaļ uz mūsu programmu, es aizmirsa hash iekļaut string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Tāpēc string.h būs header failu, kas apliecina, 277 00:16:57,730 --> 00:16:58,980 funkciju strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 Labi, tas apkopo. 280 00:17:06,060 --> 00:17:09,109 Tagad, pieņemsim palaist to. 281 00:17:09,109 --> 00:17:10,930 Tā tikai to. 282 00:17:10,930 --> 00:17:17,790 Tas notiek, lai izdrukāt mūsu programmas nosaukums, hello world. 283 00:17:17,790 --> 00:17:23,510 Tas notiek, drukāt katru lieta, katrs raksturu, savā rindā. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Tāpēc pieņemsim faktiski izmantot šo vienu soli tālāk. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Un tā vietā, lai izmantotu string.h, pieņemsim domāt par to, kā mēs gribētu ieviest mūsu pašu 288 00:17:39,700 --> 00:17:41,420 strlen funkciju. 289 00:17:41,420 --> 00:17:45,600 Tāpēc es uzreiz dotu funkcija paraksts. 290 00:17:45,600 --> 00:17:52,900 Tā ļauj zvanīt my_strlen, un tas ir gatavojas veikt virkni kā argumentu, 291 00:17:52,900 --> 00:17:57,220 un mēs sagaidām, lai atgrieztos garums šīs virknes. 292 00:17:57,220 --> 00:18:03,430 Tātad, kur ir tas puisis? 293 00:18:03,430 --> 00:18:04,990 Jā. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Līdz ar to atcerēties no iepriekšējās slaida, ka bija arī no pagājušajā nedēļā, ka 296 00:18:12,900 --> 00:18:18,890 masīvs rakstzīmes, labi, stīgu, tāpēc pieņemsim, ka tas ir mūsu virkne s. 297 00:18:18,890 --> 00:18:29,870 Tātad, ja s ir virkne, hello, tad, H-E-L-L-O, atmiņā, kas notiek, lai 298 00:18:29,870 --> 00:18:35,610 būt, un tad tas slīpsvītru 0 raksturs. 299 00:18:35,610 --> 00:18:39,170 >> Tātad, kā mēs varam iegūt garumu s? 300 00:18:39,170 --> 00:18:43,190 Nu, triks meklē to pretreakcijas 0 raksturu, šo null 301 00:18:43,190 --> 00:18:44,380 terminatoru. 302 00:18:44,380 --> 00:18:50,270 Tāpēc algoritms Gatavojas būs kaut kas līdzīgs daži 303 00:18:50,270 --> 00:18:51,510 pietiekami rakstzīmes, ka - 304 00:18:51,510 --> 00:18:56,180 pieņemsim ir šī roka ir daži skaitītājs, sauksim šo int garumu. 305 00:18:56,180 --> 00:19:00,060 Tātad, sākot ar vairāk nekā šeit, mēs esam gatavojas atkārtot pār mūsu virkni. 306 00:19:00,060 --> 00:19:04,100 >> Tātad pirmais simbols, tas ir H, un tas nav atpakaļ slash 0, tāpēc 307 00:19:04,100 --> 00:19:05,170 garums ir 1. 308 00:19:05,170 --> 00:19:08,050 Pārietu uz nākamo rakstura E, un tas nav slīpsvītru 0. 309 00:19:08,050 --> 00:19:09,630 Garums ir 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 Un visbeidzot, mēs sasniedzam slīpsvītru 0, un tā, ka līdzekļi, arī, 314 00:19:16,690 --> 00:19:17,780 šī virkne ir beigusies. 315 00:19:17,780 --> 00:19:20,130 Tāpēc pieņemsim atgriezties 5. 316 00:19:20,130 --> 00:19:33,630 >> Tā faktiski īsteno, ka, pirmkārt, mans n garums ir vienāds ar 0, manas labās rokas. 317 00:19:33,630 --> 00:19:36,088 Un mēs esam gatavojas atkārtot - 318 00:19:36,088 --> 00:19:38,000 >> SPEAKER 1: [dzirdams] 319 00:19:38,000 --> 00:19:38,640 >> ROB BODEN: Ak, šaut. 320 00:19:38,640 --> 00:19:39,870 Labs zvanu. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Tātad n garums ir vienāds ar 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Tāpēc tagad, bet S garums nav vienlīdzīgu un pēc tam, reversā slīpsvītra 0. 325 00:19:58,310 --> 00:20:04,660 Līdz ar to atcerēties, šo slīpsvītru 0, tas ir faktiskais raksturs, un tas liecina par 326 00:20:04,660 --> 00:20:05,820 beigām virkni. 327 00:20:05,820 --> 00:20:09,850 Tāpat kā, arī, reversā slīpsvītra n ir faktiskais raksturs. 328 00:20:09,850 --> 00:20:14,040 Slīpsvītru 0 gatavojas, lai norādītu beigas mūsu virkni. 329 00:20:14,040 --> 00:20:15,414 Es nevēlos, lai kas tur. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Un, lai gan s indeksētas ar garumā nav vienāds ar null terminatoru, tad 332 00:20:25,620 --> 00:20:27,130 mēs esam tikai gatavojas pieauguma garumu. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Tātad, beigās mūsu programmas garums ir beidzot gatavojas 335 00:20:34,880 --> 00:20:37,610 būt 5 šajā gadījumā. 336 00:20:37,610 --> 00:20:39,210 Un mēs vienkārši atgriezties garumu. 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 Tāpēc tagad noteikti šeit, man nav do my_strlen. 340 00:20:48,290 --> 00:20:50,700 Pieņemsim apkopot to, lai pārliecinātos, viss norit raiti. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Es biju dara 2? 343 00:20:58,210 --> 00:21:00,565 Vai arī bija tas, ka 1? 344 00:21:00,565 --> 00:21:01,940 Tas būtu jādara. 345 00:21:01,940 --> 00:21:02,690 Labi. 346 00:21:02,690 --> 00:21:08,490 Tātad šī ir argv 2. 347 00:21:08,490 --> 00:21:11,585 Darbojas kā paredzēts, lai gan bija tas, ka man to darīja? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Jā. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Šī versija lietas nebija printf jaunā līnija pēc, bet tas 352 00:21:21,820 --> 00:21:22,910 nav nekādas atšķirības. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Tā strādāja kā gaidīts. 355 00:21:25,780 --> 00:21:34,750 >> Tagad mēs pat varam apvienot šo vienu soli turklāt, ja paziņojums šeit, labi, 356 00:21:34,750 --> 00:21:38,920 pirmkārt, mēs esam satveršanas strlen par ARGV i, un tad mēs esam atkārtojot vairāk 357 00:21:38,920 --> 00:21:41,450 katrs simbols šajā virknē. 358 00:21:41,450 --> 00:21:47,480 Tā vietā, lai to dara, kas notiks, ja mēs vienkārši apvienot šo loģiku gaida 359 00:21:47,480 --> 00:21:50,740 līdz brīdim, kad mēs hit slīpsvītru 0 tiesības uz to, lai cilpa? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Tāpēc atkārtot, kamēr argv i, j dara nav vienāds slīpsvītru 0. 362 00:22:07,490 --> 00:22:10,680 Tā ļauj palaist to pirmo reizi. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Labi. 365 00:22:21,180 --> 00:22:27,655 Tātad šeit, šis nosacījums saka - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 pieņemsim skaidrs, ka. 368 00:22:40,060 --> 00:22:49,140 Tāpēc tagad, lai tas būtu mūsu argv. 369 00:22:49,140 --> 00:22:55,290 Tātad, kad es tikko bija šo programmu iepriekš, argv ir masīvs stīgas. 370 00:22:55,290 --> 00:23:03,100 Un tā, ja es palaist to ar dot slash ARGV 2, sveiki pasaule, tad argv 371 00:23:03,100 --> 00:23:07,650 pati par sevi ir garums 3, lai ARGV nulle, sveiki, un pasaule. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Un iekšpusē katru no šiem indeksiem ir, pats masīvs, ja tas būs 374 00:23:19,660 --> 00:23:23,780 dot, tas būs slīpsvītra, es nezinu ja tas ir pareizais virziens, es 375 00:23:23,780 --> 00:23:25,680 nedomāju, ka tas bija. 376 00:23:25,680 --> 00:23:30,110 -R-V domuzīme, nepieciešams vairāk vietas. 377 00:23:30,110 --> 00:23:32,570 Pieņemsim sagriež šajā masīvā. 378 00:23:32,570 --> 00:23:38,230 A-R-V dash 0, un pēc tam slīpsvītra 0. 379 00:23:38,230 --> 00:23:43,160 Un tad nekārtība būs sveiki. 380 00:23:43,160 --> 00:23:45,910 Teiksim, H-E slīpsvītru 0. 381 00:23:45,910 --> 00:23:51,130 Un, visbeidzot, W-O slīpsvītru 0. 382 00:23:51,130 --> 00:23:59,730 >> Tā algoritms, ko mēs tikko rakstīja, ligzdotu cilpas, ko viņi 383 00:23:59,730 --> 00:24:07,321 darot, mums vispirms ir cīnītos i un tad j. 384 00:24:07,321 --> 00:24:15,206 Tas būtu vieglāk ar kodu uz ekrāns, Iesim atpakaļ uz to. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Tāpēc paziņojums, ka man ir iterator, kas ir atkārtojot virs katras komandas 387 00:24:24,600 --> 00:24:25,610 line arguments. 388 00:24:25,610 --> 00:24:28,870 Un j ir iterator atkārtojot katrā rakstura, ka 389 00:24:28,870 --> 00:24:30,410 komandrindas arguments. 390 00:24:30,410 --> 00:24:46,755 Tātad, ko tas visdziļākais printf dara ir, mēs esam 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 tagad, argv 0 7 gatavojas 392 00:24:58,680 --> 00:25:00,670 vienāds slīpsvītru 0. 393 00:25:00,670 --> 00:25:05,730 >> Tad mēs izietu ka cilpa, un tagad es vairākkārt uzsvērts, līdz 1. 394 00:25:05,730 --> 00:25:10,910 Un tagad mēs esam gatavojas drukāt argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 labi, tagad, jo es samazināt sveiki sakot, argv 1 2 atkal būs 396 00:25:17,040 --> 00:25:18,170 slīpsvītru 0. 397 00:25:18,170 --> 00:25:25,050 Un tā, solis i un turpināt, un tā tālāk, kamēr mēs izdrukāt visus 398 00:25:25,050 --> 00:25:28,580 pasaulē, un tie ir trīs komandrindas argumenti, un mēs izietu no 399 00:25:28,580 --> 00:25:31,670 attālākajos cilpa, un pabeigtu mūsu programmu. 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 >> Tāpēc pieņemsim atgriezties šeit. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Tātad, jūs iegūsiet daži familiaritāte ar komandrindas argumentus par šo 406 00:25:52,370 --> 00:25:54,460 Īpaša problēma noteikti. 407 00:25:54,460 --> 00:25:56,630 >> Tagad, debugging. 408 00:25:56,630 --> 00:26:01,680 Tātad, jūs, iespējams, jau bija jādara daži atkļūdošana ar savu iepriekšējo 409 00:26:01,680 --> 00:26:03,120 problēma noteikti. 410 00:26:03,120 --> 00:26:08,420 Un viens ļoti vienkāršs veids, debugging, pirmkārt, aplūkosim buggy programmu. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Nu, ejot caur šo programmu, mēs spēsim pieprasīt no lietotāja 413 00:26:23,830 --> 00:26:29,350 skaitlis, greifers šo skaitlim, un pēc tam, patvaļīgi, mums ir kamēr cilpa, kas 414 00:26:29,350 --> 00:26:32,280 ir tikai gatavojas Samazināt i, kamēr tas ir vienāds ar 10. 415 00:26:32,280 --> 00:26:35,820 Pieņemsim tikai pieņemu, es esmu ienāk skaitlis, kas lielāks par 10. 416 00:26:35,820 --> 00:26:38,700 Tāpēc Samazināt es līdz tā ir vienāda ar 10. 417 00:26:38,700 --> 00:26:42,630 >> Un tad mums ir vēl viens kamēr cilpa ka, lai gan i nav vienāds ar 0, mēs 418 00:26:42,630 --> 00:26:44,540 gatavojas Samazināt i ar 3. 419 00:26:44,540 --> 00:26:49,790 Tātad, ja jūs redzat nodomu bug šeit, tas ir, ka tas būs Samazināt I 420 00:26:49,790 --> 00:26:57,010 ir 10, un pēc tam tas vienlaikus cilpa decrement i no 10 līdz 7, līdz 4, ar 1, 421 00:26:57,010 --> 00:27:02,880 negatīvu 2 līdz 5 negatīvs, un tā tālāk, negatīvu bezgalībai, jo es būs 422 00:27:02,880 --> 00:27:05,920 patiesībā nekad nav vienāds ar 0. 423 00:27:05,920 --> 00:27:08,610 Un tad beigās šīs programmas mums ir foo funkciju, kas ir 424 00:27:08,610 --> 00:27:12,130 notiek, drukāt, ka i. 425 00:27:12,130 --> 00:27:16,520 >> Tāpēc tas ir īss un niecīgs programma un kļūda ir acīmredzama, 426 00:27:16,520 --> 00:27:18,790 it īpaši pēc tam, kad es tikko sacīja kāda kļūda bija. 427 00:27:18,790 --> 00:27:24,840 Bet nodoms šeit ir labi, tas varētu tiešām izskatās daži no jūsu 428 00:27:24,840 --> 00:27:30,040 risinājumi no mantkārīgs no pēdējās problēma noteikti, un varbūt jums ir 429 00:27:30,040 --> 00:27:32,800 daži bezgalīga cilpa savu programmu, un jums nav ne jausmas 430 00:27:32,800 --> 00:27:34,100 to, kas izraisa to. 431 00:27:34,100 --> 00:27:38,690 Tāpēc ļoti noderīga debugging paņēmiens ir vienkārši pievienot printfs 432 00:27:38,690 --> 00:27:40,180 pa visu kodu. 433 00:27:40,180 --> 00:27:49,200 >> Tātad, šeit es gribu printf ārpus Pirmais kamēr cilpa. 434 00:27:49,200 --> 00:27:53,155 Un šeit es gribu printf, un es ņemšu tikai drukāt i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Es pat darīt vispirms, kamēr cilpa, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Ārpuses, otrais kamēr cilpa. 439 00:28:09,040 --> 00:28:12,170 Vēlreiz, drukāt iekšā no šejienes, vērtību i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 Un pieņemsim palaist šo. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Tāpēc dot slash atkļūdošanas. 444 00:28:24,800 --> 00:28:25,610 Ievadiet skaitli. 445 00:28:25,610 --> 00:28:28,150 Darīsim 13. 446 00:28:28,150 --> 00:28:28,760 Un uzplaukums. 447 00:28:28,760 --> 00:28:33,300 Mēs redzam, ka mums ir bezgalīgs looping iekšpusē otrā kamēr cilpa. 448 00:28:33,300 --> 00:28:36,305 Tātad tagad mēs zinām, kas bug ir. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Bet printf atkļūdošana ir pilnīgi liels, bet tad, kad jūsu programmas nokļūt 451 00:28:45,610 --> 00:28:50,560 garāks un sarežģītāks, ir sarežģītākus risinājumus 452 00:28:50,560 --> 00:28:51,705 kļūst lietas strādā. 453 00:28:51,705 --> 00:28:52,955 Tā ļauj noņemt visus šos printfs. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 Un pieņemsim, pārliecinieties, ka man nebija pārtraukums neko. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Tāpēc programma, mēs ejam ieviest sauc 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 Nu, patiesībā, pieņemsim noņemiet Debug otrkārt, un padarīt atkļūdot vēlreiz. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Nu, patiesībā, pirmkārt, laba mācība komandrindas argumentus. 463 00:29:34,440 --> 00:29:37,780 Ievērojiet, ka šī šķindēt komanda, kas ir apkopojot viss tiek nodots 464 00:29:37,780 --> 00:29:41,300 pie komandrindas, šie komandrindas argumentus. 465 00:29:41,300 --> 00:29:46,250 Tātad, kā tieši jūs būs izmantojot komandrindas argumentus, kā mēs 466 00:29:46,250 --> 00:29:51,500 agrāk, un kā jūs ar PSET 2, kas ir kā šķindēt izmanto tos. 467 00:29:51,500 --> 00:30:00,070 >> Tā ievēroju, ka šī pirmā karogu, domuzīme ggdb3, ko tas saka ir, šķindēt, 468 00:30:00,070 --> 00:30:03,790 Jums vajadzētu apkopot šo failu ar nodoms, ka mēs galu galā 469 00:30:03,790 --> 00:30:05,380 nepieciešams, lai atkļūdot to. 470 00:30:05,380 --> 00:30:13,840 Tik ilgi, kamēr jums ir, ka karogu, tad mēs varam GDB debug. 471 00:30:13,840 --> 00:30:17,380 Un tas būs atvērt GNU Debugger. 472 00:30:17,380 --> 00:30:22,920 >> Tāpēc ir daudz komandu kas jums ir nepieciešams, lai pierastu pie. 473 00:30:22,920 --> 00:30:27,100 Pirmais, ka jūs, iespējams, Nekavējoties nepieciešams, ir Run. 474 00:30:27,100 --> 00:30:28,200 Tātad, kas ir Run gatavojas darīt? 475 00:30:28,200 --> 00:30:30,910 Tas notiek, lai sāktu savu programmu. 476 00:30:30,910 --> 00:30:36,180 Tā darbojas, sākot programmu, programmu jautā mums veselam skaitlim, 13. 477 00:30:36,180 --> 00:30:39,170 Un tad tas ir bezgalīgs looping kā gaidāms, izņemot es izņemta 478 00:30:39,170 --> 00:30:40,500 printfs, tāpēc mums nav pat redzēt, ka. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Iziet normāli. 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 Tas ir iespējams, ka tas ietīts viss otrādi, atpakaļ - ignorējot to. 484 00:30:53,640 --> 00:30:55,170 Pieņemsim, ka nav izejas normāli. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Tur ir sarežģīti atbildēt uz šo. 487 00:31:03,370 --> 00:31:07,890 >> Tāpēc tagad, tas nav ļoti noderīgs. 488 00:31:07,890 --> 00:31:11,480 Tik vienkārši darbojas mūsu programma iekšpusē tas atkļūdotājs nepalīdz mums nevienā 489 00:31:11,480 --> 00:31:15,610 veidā, jo mēs varētu būt tikko veikts dot slash atkļūdot no ārpuses gdb. 490 00:31:15,610 --> 00:31:21,250 Tātad viena komanda, kas Jūs, iespējams, - 491 00:31:21,250 --> 00:31:22,970 un es atmest šo. 492 00:31:22,970 --> 00:31:25,850 Control-d vai atmest, gan darbu. 493 00:31:25,850 --> 00:31:29,550 Tātad, pieņemsim sākt to atkal. 494 00:31:29,550 --> 00:31:31,130 >> Vēl viena komanda, ka jūs, iespējams, uzreiz gribu 495 00:31:31,130 --> 00:31:33,600 pierast ir Break. 496 00:31:33,600 --> 00:31:37,120 Tāpēc mēs pauze pie galvenā tagad, un tad es paskaidrošu, ka. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Nu, šeit mēs redzam, mēs noteikti pārtraukumpunkts šajā rindā debug.c. 499 00:31:46,370 --> 00:31:50,160 Tātad, kas pārtraukums nozīmē ir tā, ka tad, kad es tipa palaist, programma būs 500 00:31:50,160 --> 00:31:53,560 turpina darboties līdz Es hit pārtraukumpunkts. 501 00:31:53,560 --> 00:31:59,390 Tātad, kad es hit palaist, programma sākas, un tad tas salūst, tiklīdz tā 502 00:31:59,390 --> 00:32:01,940 ienāk galvenā funkcija. 503 00:32:01,940 --> 00:32:06,930 Break galvenais būs kaut Jūs diezgan bieži darīt. 504 00:32:06,930 --> 00:32:11,340 >> Un tagad, lai jūs iepazīstināt ar dažiem vairāk komandu. 505 00:32:11,340 --> 00:32:14,330 Ievērojiet, šeit, ka tas ir saprotams, mēs pārtrauca at line 11, kas 506 00:32:14,330 --> 00:32:16,230 printf, ievadiet skaitli. 507 00:32:16,230 --> 00:32:21,260 Tāpēc komanda Next būs kā mēs ejam uz nākamo rindiņu kodu. 508 00:32:21,260 --> 00:32:24,810 Tas notiek, lai ļautu mums soli izmantojot mūsu programmu pozīcijai. 509 00:32:24,810 --> 00:32:26,260 Līdz ar to nākamajā. 510 00:32:26,260 --> 00:32:29,820 >> Tagad līnija 12, mēs ejam lai iegūtu skaitlim. 511 00:32:29,820 --> 00:32:30,450 Nākamais. 512 00:32:30,450 --> 00:32:34,290 Un, ja jūs vienkārši hit Enter vēlreiz, tas būs pārtaisīt pēdējā lieta, jūs. 513 00:32:34,290 --> 00:32:36,480 Tāpēc man nav nepieciešams ierakstīt blakus katru reizi. 514 00:32:36,480 --> 00:32:40,100 Tātad ievadīt vesels skaitlis, 13. 515 00:32:40,100 --> 00:32:46,940 Tāpēc tagad, līnija 14, bet man ir lielāka nekā 10, un es darīšu tālāk. 516 00:32:46,940 --> 00:32:48,685 Un mēs redzam, mēs ejam, lai Samazināt i. 517 00:32:48,685 --> 00:32:50,210 Tāpēc mēs esam gatavojas samazinājums ir i vēlreiz. 518 00:32:50,210 --> 00:32:53,620 >> Tāpēc tagad, vēl viens lietderīgs komanda Print. 519 00:32:53,620 --> 00:32:55,750 Tāpēc Print gatavojas izdrukāt mainīgā vērtība. 520 00:32:55,750 --> 00:32:57,825 Pieņemsim izcelt vērtību mainīgā i. 521 00:32:57,825 --> 00:32:58,705 Pieņemsim drukāt i. 522 00:32:58,705 --> 00:33:00,910 Tas notiek, lai saka, man ir 11. 523 00:33:00,910 --> 00:33:03,330 Tagad mēs Next vēlreiz, i ir lielāka par 10. 524 00:33:03,330 --> 00:33:05,590 Tāpēc man ir vēl lielāka nekā 10, jo tas ir 11. 525 00:33:05,590 --> 00:33:06,920 i mīnus mīnus. 526 00:33:06,920 --> 00:33:08,250 Pieņemsim drukāt es atkal. 527 00:33:08,250 --> 00:33:10,950 Kā jau bija gaidāms, tas ir 10. 528 00:33:10,950 --> 00:33:12,510 >> Tāpēc tagad, blakus. 529 00:33:12,510 --> 00:33:16,250 Tas dodas atpakaļ uz stāvokli, i ir lielāks par 10, bet tagad i ir 10, tāpēc 530 00:33:16,250 --> 00:33:20,040 tas nav lielāks par 10, tāpēc mēs sagaidām tas izkrist kamēr cilpa. 531 00:33:20,040 --> 00:33:22,220 Un tagad mēs esam zem šīs līnijas kodu. 532 00:33:22,220 --> 00:33:28,750 Un citu komandu sarakstā, ir tikai gatavojas lai parādītu iepriekšējo un nākamo 533 00:33:28,750 --> 00:33:31,240 pāris rindiņas kodu, kas Gadījumā, ja jūs pazaudējis sevi. 534 00:33:31,240 --> 00:33:35,420 Tātad mēs vienkārši pameta to, kamēr cilpa, un tagad mēs esam nonākuši šajā 535 00:33:35,420 --> 00:33:37,080 kamēr cilpa, 18 līnija. 536 00:33:37,080 --> 00:33:39,860 Tāpēc, kamēr i nav vienāds ar 0. 537 00:33:39,860 --> 00:33:46,570 Un nākamais, i ir vienāds ar i mīnus 3, un mēs paziņojums, tas būs tikai glabāt notiek. 538 00:33:46,570 --> 00:33:48,270 Un mēs varam drukāt i. 539 00:33:48,270 --> 00:33:49,990 >> Katra komanda veida ir īsceļus. 540 00:33:49,990 --> 00:33:51,720 Tāpēc p ir īss Print. 541 00:33:51,720 --> 00:33:53,400 Tātad, mēs varam p i. 542 00:33:53,400 --> 00:33:57,550 Tikai glabāt saimniecībā n, vai saglabāt darot Tālāk. 543 00:33:57,550 --> 00:33:58,340 Drukāt es atkal. 544 00:33:58,340 --> 00:34:00,380 Jūs redzat tagad tas ir negatīvs 167. 545 00:34:00,380 --> 00:34:06,030 Tāpēc tas iet uz visiem laikiem, bet ne patiešām uz visiem laikiem, jo ​​jūs vienkārši redzēja, ka 546 00:34:06,030 --> 00:34:09,330 faktiski beigsies kādā brīdī. 547 00:34:09,330 --> 00:34:15,699 >> Tāpēc, ka sāk GDB. 548 00:34:15,699 --> 00:34:19,504 Bet pieņemsim darīt vēl viena lieta gdb. 549 00:34:19,504 --> 00:34:20,754 Uh, atkļūdot. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Tātad, šajā konkrētajā gadījumā bezgalīga cilpa gadījās būt iekšpusē 552 00:34:28,534 --> 00:34:30,050 galvenā funkcija. 553 00:34:30,050 --> 00:34:35,779 Un tagad, tikai pieņemt, ka, ka es esmu gatavojas pārvietot bezgalīgu cilpu uz 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 Tikai atceraties, ka beigās šis programma, labi, tas bija sākotnēji 557 00:34:43,730 --> 00:34:46,210 zvanot foo, kas bija tikko gatavojas drukāt i. 558 00:34:46,210 --> 00:34:51,880 Bet tagad mēs esam aicinot foo, kas ir gatavojas Samazināt i, līdz tas ir 0, un 559 00:34:51,880 --> 00:34:54,548 tad izdrukāt šo mainīgo. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Saglabājiet to. 562 00:34:57,970 --> 00:35:00,175 Veikt debug. 563 00:35:00,175 --> 00:35:03,310 Un tagad, gdb atkļūdošanas. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Tātad, ja es tikai palaist, tad es neesmu gatavojas faktiski jāspēj soli pa manu 566 00:35:10,580 --> 00:35:11,730 Programma line-by-line. 567 00:35:11,730 --> 00:35:19,820 Tāpēc pieņemsim pārtraukumu galvenais, un pēc tam ierakstiet palaist. 568 00:35:19,820 --> 00:35:28,160 Tā iet caur to, printf, ievadiet ir vesels skaitlis, iegūtu vesels skaitlis, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Tāpēc mēs esam gatavojas glabāt decrementing līdz i ir lielāka par 10. 571 00:35:37,490 --> 00:35:42,840 Tad mēs ejam, lai izkrist pa kamēr cilpa, un saņemt uz līnijas - 572 00:35:42,840 --> 00:35:44,364 pieņemsim atveriet to atsevišķā logā. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Tāpēc mēs dzēsta, kamēr man vairs nebija lielāka par 10, un pēc tam, mēs 575 00:35:53,300 --> 00:35:55,700 sauc funkciju, foo. 576 00:35:55,700 --> 00:36:01,340 >> Tātad, kas ir noticis, tiklīdz es hit funkcija foo, labi, es sauc foo, un 577 00:36:01,340 --> 00:36:04,030 tad man vairs nebija kontrole pār gdb. 578 00:36:04,030 --> 00:36:10,230 Tā, tiklīdz es hit Tālāk šajā līnijā, viss turpinājās līdz tas notika, 579 00:36:10,230 --> 00:36:12,400 kad programma iziet, kad - 580 00:36:12,400 --> 00:36:14,450 pieņemu, ka nepastāvēja galā. 581 00:36:14,450 --> 00:36:16,390 Tu redzēji to pauzes mazliet though. 582 00:36:16,390 --> 00:36:22,040 Tātad, kāpēc es zaudēt kontroli pār programma šajā brīdī? 583 00:36:22,040 --> 00:36:27,540 Nu, kad es tipa nākamais, kas iet uz burtiskā nākamais rindā kodu, kas 584 00:36:27,540 --> 00:36:28,850 veiks. 585 00:36:28,850 --> 00:36:35,950 Tātad, pēc līnijas 21, nākamais rindā kodu kas veiks ir līnija 22, 586 00:36:35,950 --> 00:36:38,520 kas, izejot no galvenā. 587 00:36:38,520 --> 00:36:43,810 Tāpēc es nevēlos, lai tikai iet uz nākamo līniju kodu. 588 00:36:43,810 --> 00:36:48,170 Es gribu iet uz funkciju, foo, un tad arī soli pa 589 00:36:48,170 --> 00:36:49,830 šīs rindiņas kodu. 590 00:36:49,830 --> 00:36:53,726 >> Tāpēc, ka mums ir alternatīva. 591 00:36:53,726 --> 00:36:56,770 Pieņemsim atmest vēlreiz. 592 00:36:56,770 --> 00:36:58,020 Break galvenais. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, nākamais, nākamais, 13, blakus, nākamais, nākamais, uzmanīgi, 595 00:37:06,370 --> 00:37:09,820 pirms mēs hit līniju foo. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Tāpēc tagad, mēs esam rindā 21, kur mēs saucam foo. 598 00:37:13,700 --> 00:37:17,100 Mēs negribam rakstīt nākamo, jo tas vienkārši izsauktu funkciju foo, un 599 00:37:17,100 --> 00:37:18,710 iet uz nākamo līniju kodu. 600 00:37:18,710 --> 00:37:20,840 Ko mēs vēlamies izmantot, ir solis. 601 00:37:20,840 --> 00:37:25,690 Tātad tur ir atšķirība starp Step un Next, kur solis soļi 602 00:37:25,690 --> 00:37:28,190 darboties, un Next iet pār funkciju. 603 00:37:28,190 --> 00:37:32,830 Tas tikai izpilda visus ar funkciju un tur notiek. 604 00:37:32,830 --> 00:37:37,210 >> Tāpēc Step gatavojas mūs uz funkciju, foo. 605 00:37:37,210 --> 00:37:41,160 Un mēs redzam šeit, tagad mēs esam atpakaļ Tas savukārt cilpa, kas ir teorētiski 606 00:37:41,160 --> 00:37:44,190 gatavojas turpināt mūžīgi. 607 00:37:44,190 --> 00:37:50,420 Un, ja jūs hit rīcībai gadījumos, kad nav pat funkcija, lai izsauktu, tad tas ir 608 00:37:50,420 --> 00:37:51,720 identisks Next. 609 00:37:51,720 --> 00:37:55,320 Tāpēc tas ir tikai tad, kad jūs esat ar līniju, kas zvana funkciju šo soli 610 00:37:55,320 --> 00:37:56,970 gatavojas atšķirties no Next. 611 00:37:56,970 --> 00:37:57,930 Tā solis dos mums šeit. 612 00:37:57,930 --> 00:38:02,100 Soli, soli, soli, soli, soli, soli, un Mēs vienkārši bezgalīga cilpa uz visiem laikiem. 613 00:38:02,100 --> 00:38:06,810 >> Lai jūs varētu pierast, ka jūsu veids, kā noteikt bezgalīgas cilpas, ir 614 00:38:06,810 --> 00:38:08,960 vienkārši turot šo Enter taustiņu redzēt, kur Jums ir iestrēdzis. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 Ir labāki veidi, kā darīt, bet tagad, tas ir pilnīgi pietiekami. 617 00:38:14,780 --> 00:38:17,967 Un stilistiski, lai atbilstu stilu 50, es būtu darījis. 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 >> Tātad viens pēdējais komandu ieviest. 621 00:38:28,400 --> 00:38:30,810 Nu, pieņemsim GDB debug collas 622 00:38:30,810 --> 00:38:35,580 Tā vietā, lai sadalītu par galveno, ja es zināt foo funkcija ir arī 623 00:38:35,580 --> 00:38:39,230 problēma, tad es varētu būt tikai teica, pārtraukumu foo vietā. 624 00:38:39,230 --> 00:38:42,310 Pieņemsim, ka es pārtraukumu gan galvenais un foo. 625 00:38:42,310 --> 00:38:45,390 Tātad jūs varat iestatīt tik daudz kontrolpunkti kā jūs vēlaties. 626 00:38:45,390 --> 00:38:49,230 Kad es tipa palaist, tas būs apstāties pie - 627 00:38:49,230 --> 00:38:52,180 ooh, pieņemsim recompile, jo Es mainījušies lietas. 628 00:38:52,180 --> 00:38:55,950 Jūs redzat šo līniju, brīdinājuma, avots fails ir jaunāks par izpildāmā. 629 00:38:55,950 --> 00:38:59,680 Tātad tas nozīmē, ka es devos šeit un maina tos, lai atbilstu stilu 630 00:38:59,680 --> 00:39:03,100 50, bet man nebija recompile programmu. 631 00:39:03,100 --> 00:39:04,870 Tāpēc GDB man liek apzināties, ka. 632 00:39:04,870 --> 00:39:10,130 Es atmest, veikt atkļūdot atkal, hit gdb debug. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Tāpēc tagad, atpakaļ uz to, ko es daru. 635 00:39:12,800 --> 00:39:15,720 Break galvenais, break foo. 636 00:39:15,720 --> 00:39:20,680 Tagad, ja man palaist programmu, tāpēc tas ir turpinās līdz brīdim, kad hits 637 00:39:20,680 --> 00:39:21,320 pārtraukumpunkts. 638 00:39:21,320 --> 00:39:24,680 Kas pārtraukumpunkts notiek būt pirmā at main. 639 00:39:24,680 --> 00:39:28,630 Tagad, nevis darīt nākamo, nākamais, nākamais, nākamais, nākamais, līdz brīdim, kad es hit foo, es 640 00:39:28,630 --> 00:39:35,230 var ierakstīt arī turpmāk, kas turpināsies līdz jūs hit nākamo koncentrācija. 641 00:39:35,230 --> 00:39:37,200 Man ir, lai ievadītu skaitlim pirmās. 642 00:39:37,200 --> 00:39:40,570 Turpināt turpināsies līdz I hit Nākamais kontrolpunkts, kas ir tas, ka 643 00:39:40,570 --> 00:39:43,320 funkcija foo. 644 00:39:43,320 --> 00:39:50,130 >> Tāpēc Run darbosies līdz jūs hit robežvērtība, bet jums ir tikai rakstīt palaist, kad 645 00:39:50,130 --> 00:39:54,060 jūs sākat programmu, un pēc tam, No tā laika, tas ir jāturpina. 646 00:39:54,060 --> 00:40:01,950 Ja es tikko bija pauze galveno un tad skrēja, tas būs pārtraukums 647 00:40:01,950 --> 00:40:03,670 galvenais, un pēc tam turpināt. 648 00:40:03,670 --> 00:40:10,050 Jo man nav lūzuma punkts, foo, ievadiet vesels skaitlis, tad tagad es esmu 649 00:40:10,050 --> 00:40:11,380 nebūs pārtraukumu foo. 650 00:40:11,380 --> 00:40:16,318 Tas ir tikai gatavojas bezgalīgs cilpa, kamēr šis. 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 >> Tātad tas ir Intro gdb. 654 00:40:24,420 --> 00:40:27,790 Jums vajadzētu sākt to Jūsu problēmu kopas. 655 00:40:27,790 --> 00:40:30,550 Tas var būt ļoti noderīga noteikt bugs. 656 00:40:30,550 --> 00:40:35,280 Ja jūs tiešām tikai, line-by-line, go ar savu kodu, un salīdzināt to, kas ir 657 00:40:35,280 --> 00:40:39,740 patiesībā notiek ar to, ko jūs sagaidāt varētu notikt, tad tas ir diezgan 658 00:40:39,740 --> 00:40:41,060 grūti palaist garām savas kļūdas. 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 >> Tāpēc pagājušajā nedēļā Dāvids uzaudzis šajā noslēpums atslēgas kriptogrāfiju stuff 663 00:40:54,040 --> 00:40:59,350 Pirmo reizi, kad mēs negribam paroles vienkārši glabāt uz mūsu 664 00:40:59,350 --> 00:41:03,210 Datoru kādā teksta failu, kur kāds var nākt atkal un tikko 665 00:41:03,210 --> 00:41:04,660 atveriet to un lasīt tos. 666 00:41:04,660 --> 00:41:07,530 Ideālā gadījumā tās būtu šifrēti kaut kādā veidā. 667 00:41:07,530 --> 00:41:13,340 Un Problēma Set 2, jums būs darīšana ar vienu metodi šifrēšanu, 668 00:41:13,340 --> 00:41:16,520 vai, labi, divas metodes, bet tie nav tik liela. 669 00:41:16,520 --> 00:41:20,050 Ja jūs hacker izdevums, tu esi arī būs darīšana ar 670 00:41:20,050 --> 00:41:22,150 atšifrēšanas dažas lietas. 671 00:41:22,150 --> 00:41:29,770 >> Tātad jautājums tagad ir labi, pat tad, ja mums ir spēcīgākā šifrēšanas 672 00:41:29,770 --> 00:41:34,830 algoritms pasaulē, ja jūs izvēlaties Īpaši slikts paroli, tad tas 673 00:41:34,830 --> 00:41:37,720 nepalīdzēs jums ļoti daudz, jo cilvēki joprojām būs iespēja, lai skaitlis tas. 674 00:41:37,720 --> 00:41:41,530 Pat tad, ja redzot šifrētu virkni un tas izskatās kā haoss atkritumu 675 00:41:41,530 --> 00:41:44,760 tas nozīmē, ka nekas viņiem, ja viņi joprojām ir tikai nepieciešams, lai mēģinātu dažas paroles 676 00:41:44,760 --> 00:41:50,560 skaitlis tas, tad jūs nav ļoti droša. 677 00:41:50,560 --> 00:41:55,890 Tātad, skatoties video, kas padara šo jautājumu. 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 >> -Ķivere, tu velns. 681 00:42:02,100 --> 00:42:03,370 Kas notiek? 682 00:42:03,370 --> 00:42:05,170 Ko jūs darāt, lai manu meitu? 683 00:42:05,170 --> 00:42:09,910 >> -Ļaujiet man iepazīstināt izcili jauni plastikas ķirurgs, Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, lielākais deguns darba cilvēks visā 685 00:42:13,730 --> 00:42:16,080 Visumā, un Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Jūsu Augstība. 687 00:42:17,210 --> 00:42:18,070 >> -Nose darbu? 688 00:42:18,070 --> 00:42:18,670 Es nesaprotu. 689 00:42:18,670 --> 00:42:20,090 Viņa jau bija deguns darbu. 690 00:42:20,090 --> 00:42:21,910 Tas bija salds sešpadsmit klāt. 691 00:42:21,910 --> 00:42:22,140 >> -Nē. 692 00:42:22,140 --> 00:42:23,690 Tas nav tas, ko tu domā. 693 00:42:23,690 --> 00:42:25,420 Tas ir daudz, daudz sliktāk. 694 00:42:25,420 --> 00:42:30,300 Ja tu nedod man kombināciju gaisa vairogs, Dr Schlotkin būs 695 00:42:30,300 --> 00:42:34,226 dot savu meitu atpakaļ savu veco degunu. 696 00:42:34,226 --> 00:42:35,476 >> -Nē. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Kur Jūs ieguvāt, ka? 699 00:42:40,516 --> 00:42:41,440 >> -Labi. 700 00:42:41,440 --> 00:42:42,180 Es jums saku. 701 00:42:42,180 --> 00:42:43,381 Es jums saku. 702 00:42:43,381 --> 00:42:44,263 Nē, tētis. 703 00:42:44,263 --> 00:42:45,590 Nē, tu nedrīksti. 704 00:42:45,590 --> 00:42:46,860 >> -Tu labi, mana mīļā. 705 00:42:46,860 --> 00:42:48,450 Es garām savu jauno degunu. 706 00:42:48,450 --> 00:42:52,090 Bet es ne viņam pateikt kombināciju, vienalga ko. 707 00:42:52,090 --> 00:42:53,680 >> -Ļoti labi. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, vai jūsu vissliktākais. 709 00:42:55,685 --> 00:42:56,914 >> -Mans prieks. 710 00:42:56,914 --> 00:43:00,690 >> [TOOLS TIEK uzasināti] 711 00:43:00,690 --> 00:43:01,910 >> -Nē. 712 00:43:01,910 --> 00:43:02,520 Gaidīt. 713 00:43:02,520 --> 00:43:03,836 Gaidīt. 714 00:43:03,836 --> 00:43:05,300 Es jums saku. 715 00:43:05,300 --> 00:43:06,880 Es jums saku. 716 00:43:06,880 --> 00:43:09,130 >> -Es zināju, ka tas varētu strādāt. 717 00:43:09,130 --> 00:43:09,900 Labi. 718 00:43:09,900 --> 00:43:12,850 Dodiet to man. 719 00:43:12,850 --> 00:43:16,918 >> -Kombinācija ir viens. 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 >> -Two. 723 00:43:19,358 --> 00:43:19,846 >> -Two. 724 00:43:19,846 --> 00:43:20,822 >> -Two. 725 00:43:20,822 --> 00:43:21,310 >> -Trīs. 726 00:43:21,310 --> 00:43:21,798 >> -Trīs. 727 00:43:21,798 --> 00:43:22,774 >> -Trīs. 728 00:43:22,774 --> 00:43:23,262 >> -Four. 729 00:43:23,262 --> 00:43:23,750 >> -Four. 730 00:43:23,750 --> 00:43:26,150 >> -Four. 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 >> -Tātad kombinācija ir viens, diviem, trim, četriem, pieciem. 735 00:43:34,770 --> 00:43:37,460 Tas ir stulbākais kombinācija Es kādreiz dzirdējis manā dzīvē. 736 00:43:37,460 --> 00:43:39,710 Tas ir sava veida lieta idiots būtu viņa bagāžu. 737 00:43:39,710 --> 00:43:42,000 >> -Paldies, Jūsu Augstība. 738 00:43:42,000 --> 00:43:43,530 >> -Ko jūs darījāt? 739 00:43:43,530 --> 00:43:44,490 >> -Es izslēgts sienas. 740 00:43:44,490 --> 00:43:45,420 >> -Nē jums nav. 741 00:43:45,420 --> 00:43:45,840 Jūs izslēgts visu filmu. 742 00:43:45,840 --> 00:43:46,930 >> -Man ir nospiests nepareizs pogas. 743 00:43:46,930 --> 00:43:48,265 >> -Nu, ielieciet to atpakaļ. 744 00:43:48,265 --> 00:43:49,110 Ielieciet filmu atpakaļ. 745 00:43:49,110 --> 00:43:49,510 >> -Jā, kungs. 746 00:43:49,510 --> 00:43:49,917 Jā, kungs. 747 00:43:49,917 --> 00:43:50,324 >> -Iesim, Arnold. 748 00:43:50,324 --> 00:43:51,140 Nāc, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Protams, jūs zināt, es ņemšu vēl ir rēķinu par to. 750 00:43:53,060 --> 00:43:53,440 >> [END VIDEO PLAYBACK] 751 00:43:53,440 --> 00:43:54,690 >> ROB BODEN: Nu labi. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Tāpēc tagad, ka mēs jau runājam par drošības dažos veidos, jauki 754 00:44:08,430 --> 00:44:16,050 maz filmu plakātu, tāpēc nesen dienas, šie jautājumi ar VDI 755 00:44:16,050 --> 00:44:17,300 uzraudzīt visu. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Tas var būt grūti justies kā jūs ir dažas privātās dzīves veida, kas 758 00:44:26,930 --> 00:44:34,540 tiešsaistes pasaulē, lai gan es nevaru pateikt jūs visvairāk detaļas prizmu. 759 00:44:34,540 --> 00:44:42,130 Tātad, ejot tālāk PRISM, mēs nebrauksim , runā par to, ka tagad 760 00:44:42,130 --> 00:44:44,030 padomājiet par jūsu klēpjdators. 761 00:44:44,030 --> 00:44:48,360 Tātad šeit, es vēlos, lai pārslēgtos uz manu faktisko kontu, 762 00:44:48,360 --> 00:44:50,370 ar manu maz pingvīns. 763 00:44:50,370 --> 00:44:57,310 Tāpēc man ir parole komplektu, un ka parole ir kāds es gribu, lai to. 764 00:44:57,310 --> 00:45:02,430 >> Bet jāatceras, ka tas, ko es esmu piesakoties ar, tāpēc šī login 765 00:45:02,430 --> 00:45:04,850 ātru, ir dažas programmas. 766 00:45:04,850 --> 00:45:07,910 Tas ir sava programma, kas ir raksta kāda persona. 767 00:45:07,910 --> 00:45:13,250 Un tā, ka cilvēks, ja tie īpaši ļaunprātīga, tie varētu 768 00:45:13,250 --> 00:45:17,780 jau teicu, viss ir labi, tādēļ, ja parole ka man ir jāievada, ir vienāds ar manu 769 00:45:17,780 --> 00:45:22,800 faktisko parole, vai arī tas ir vienāds kādu īpašu paroli - 770 00:45:22,800 --> 00:45:25,550 Deivids ir laba, vai kaut kas - 771 00:45:25,550 --> 00:45:27,190 Tad ļaujiet viņiem iekšā 772 00:45:27,190 --> 00:45:33,760 Tāpēc ļaunprātīgs programmētājs varētu būt piekļuvi visiem jūsu Mac vai 773 00:45:33,760 --> 00:45:36,150 Logi, vai neko. 774 00:45:36,150 --> 00:45:41,980 >> Tāpēc, ka nav daudz bažas, jo, Es domāju, tas ir login programma 775 00:45:41,980 --> 00:45:48,720 kas ir piegādāta ar OS X, simtiem un tūkstošiem cilvēku ir 776 00:45:48,720 --> 00:45:50,020 pārskatīja šo kodu. 777 00:45:50,020 --> 00:45:55,330 Un tā, ja savu kodu kaut kur, jūs teikt, ja šī virkne vienāds vienāds 778 00:45:55,330 --> 00:45:58,860 Deivids ir laba, reģistrācija, tad kāds ir būs, piemēram, pagaidiet. 779 00:45:58,860 --> 00:45:59,800 Tas nav pareizi. 780 00:45:59,800 --> 00:46:01,790 Tas nedrīkst būt šeit. 781 00:46:01,790 --> 00:46:06,650 Tātad tas ir viens veids, kā mēs iegūtu lietas būt veida droša. 782 00:46:06,650 --> 00:46:10,300 >> Bet domāju par to pat programmām kas jums rakstīt. 783 00:46:10,300 --> 00:46:13,000 Pieņemsim, ka jūs wrote pieteikšanās programmu. 784 00:46:13,000 --> 00:46:20,440 Tāpēc šī pieteikšanās programma, kas jūs rakstījāt, Tātad, protams, jums ir labs 785 00:46:20,440 --> 00:46:21,210 programmētājs. 786 00:46:21,210 --> 00:46:25,610 Jūs neesat gatavojas nodot jebkādu ļaunprātīgu ja x ir vienāds vienāds Deivids ir laba 787 00:46:25,610 --> 00:46:27,860 savu kodu. 788 00:46:27,860 --> 00:46:31,930 Bet šī programma, ko jūs izmantot, lai apkopotu šo programmu? 789 00:46:31,930 --> 00:46:34,180 Kaut ko līdzīgu šķindēt. 790 00:46:34,180 --> 00:46:38,460 Tātad, ko tad, ja persona, kas noticis ar rakstīt šķindēt īpašs cased šķindēt 791 00:46:38,460 --> 00:46:44,310 kaut kas līdzīgs, ja es esmu apkopojot login programmu, tad ievadiet šo kodu 792 00:46:44,310 --> 00:46:49,720 uz pieteikšanās programmā, kas saka, ja x vienāds vienāds Deivids ir laba? 793 00:46:49,720 --> 00:46:59,890 Tāpēc ne gluži vēl, bet mums ir tas pats izdot šeit, kur šķindēt, labi, 794 00:46:59,890 --> 00:47:03,790 tūkstošiem, ja ne desmitiem tūkstošu cilvēki, paskatījos šķindēt, ir 795 00:47:03,790 --> 00:47:07,160 paskatījās tās koda rindiņas, un teica, labi, tur nekas slikts šeit. 796 00:47:07,160 --> 00:47:10,680 Acīmredzot, neviens dara kaut šis ļaunprātīga. 797 00:47:10,680 --> 00:47:15,780 >> Bet kas šķindēt sevi, piemēram, Ko darīt, ja es apkopot šķindēt? 798 00:47:15,780 --> 00:47:20,900 Ko darīt, ja man ir dažas kompilators, kas apkopo šķindēt kas ievieto uz šķindēt 799 00:47:20,900 --> 00:47:25,610 šis īpašais banalizēt, kas saka, labi, kad es apkopot šķindēt, tad 800 00:47:25,610 --> 00:47:31,290 izpildāmā man vajadzētu īpaši meklēt iekšpusē pieteikšanās programmas un ievietojiet 801 00:47:31,290 --> 00:47:34,230 Šī parole, vienāds vienāds Deivs ir laba? 802 00:47:34,230 --> 00:47:37,990 Tāpēc atcerieties, ka jūsu sastādītājs pati ir jāapkopo kādā brīdī. 803 00:47:37,990 --> 00:47:42,810 Tātad, ja tas, ko jūs izvēlaties, lai apkopotu šķindēt ar, pats par sevi nav ļaunprātīgs, tad jūs 804 00:47:42,810 --> 00:47:45,580 varētu būt ieskrūvē visu ceļu uz leju līniju. 805 00:47:45,580 --> 00:47:49,630 >> Tāpēc šeit mēs esam Ken Thompson un Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Tātad šis ir ikonu foto. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie ir labajā pusē. 808 00:47:55,470 --> 00:47:58,740 Viņš ir galvenais - 809 00:47:58,740 --> 00:48:03,640 diezgan daudz rakstīja C. Tātad jūs varat pateicos viņam par šīs klases. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson ir pa kreisi. 811 00:48:04,840 --> 00:48:07,780 Divi no tiem būtībā rakstīja UNIX. 812 00:48:07,780 --> 00:48:10,140 Nu, tie bija galvenie atbalstītāji UNIX. 813 00:48:10,140 --> 00:48:11,310 Bija daži citi. 814 00:48:11,310 --> 00:48:16,240 Tātad Ken Thompson, kādā brīdī, viņš uzvar Tjūringa balvu. 815 00:48:16,240 --> 00:48:20,860 Un Tjūringa balvu, es vienmēr esmu dzirdējis tas atsauce šādā veidā, tas ir 816 00:48:20,860 --> 00:48:23,100 Nobela balva datorzinātnēs. 817 00:48:23,100 --> 00:48:27,500 >> Tāpēc pie Tjūringa balvu, viņš ir dot savu pieņemšanas runu. 818 00:48:27,500 --> 00:48:31,790 Un viņš dod šo ļoti slaveno runu tagad sauc Pārdomas par uzticoties 819 00:48:31,790 --> 00:48:35,620 Uzticība, ko mēs esam saistīti Lai no kursa mājas lapā. 820 00:48:35,620 --> 00:48:41,670 Un šo runu, viņš saka, labi, tāpēc es uzrakstīju UNIX, un tagad visi 821 00:48:41,670 --> 00:48:43,320 Jūs cilvēki izmanto UNIX. 822 00:48:43,320 --> 00:48:46,960 Tagad, atcerieties, šodien, ka Linux ir tiešs pēctecis UNIX. 823 00:48:46,960 --> 00:48:50,140 OS X tieši izmanto UNIX. 824 00:48:50,140 --> 00:48:53,810 Windows nav tik daudz, bet daudz Ideju tika ņemti no UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Lai viņš iet uz augšu uz skatuves un saka: labi, es uzrakstīju UNIX. 826 00:48:59,220 --> 00:49:03,940 Un tikai, lai jūs guys zināt, es esmu var pieteikties uz katru 827 00:49:03,940 --> 00:49:05,590 viens vienu no jūsu datoriem. 828 00:49:05,590 --> 00:49:14,280 Tā kā man kādu no šiem īpašajiem ja x vienāds vienāds Ken Thomson ir laba, 829 00:49:14,280 --> 00:49:16,350 tad es esmu atļauts pieteikties. 830 00:49:16,350 --> 00:49:18,370 Tātad cilvēki ir līdzīgi, labi, Kā tu to darīt? 831 00:49:18,370 --> 00:49:21,090 Mēs paskatījās pieteikšanās programmas un nekas tur ir. 832 00:49:21,090 --> 00:49:24,700 Viņš, piemēram, labi, es modificēts kompilators pieteikties pieteikšanās programmā 833 00:49:24,700 --> 00:49:30,490 lai pieteikšanās programma tagad būs ka x ir vienāds vienāds Ken Thompson 834 00:49:30,490 --> 00:49:31,700 ir laba. 835 00:49:31,700 --> 00:49:33,120 >> Un viņi saka, labi, tas nav taisnība. 836 00:49:33,120 --> 00:49:35,740 Mēs esam meklē kompilatoru, un kompilators nav neviena līnijas 837 00:49:35,740 --> 00:49:36,400 kodu, piemēram, ka. 838 00:49:36,400 --> 00:49:40,540 Viņš, piemēram, OK, bet tas, ko jūs esat Sastādot kompilators ar? 839 00:49:40,540 --> 00:49:44,810 Un viņi domā, un viņš, tāpat kā, labi, Es esmu tas, kurš tev kompilators 840 00:49:44,810 --> 00:49:50,580 jūs izmantojat, lai apkopotu kompilatoru, lai Jums ir apkopot kompilators, kas 841 00:49:50,580 --> 00:49:56,390 pati par sevi ir ļaunprātīga, un būs pauze pieteikšanās programmu. 842 00:49:56,390 --> 00:49:59,360 Tātad būtībā, tajā brīdī, tur ir nav veids, kā jūs varētu apskatīt avota 843 00:49:59,360 --> 00:50:02,450 kods pieteikšanās programmas lai redzētu, kas ir nepareizi. 844 00:50:02,450 --> 00:50:04,220 Jūs pat nevarēja ieskatīties pirmkods kompilators 845 00:50:04,220 --> 00:50:06,790 lai redzētu, kas ir nepareizi. 846 00:50:06,790 --> 00:50:11,940 >> Jums būtu nepieciešams, lai apskatīt mašīnas kods, faktiskais bināro no 847 00:50:11,940 --> 00:50:16,760 jāapkopo kompilators, lai redzētu, pagaidiet, tie rindas kods nedrīkst būt šeit. 848 00:50:16,760 --> 00:50:22,130 Bet Ken Thompson paņēma to vienu soli tālāk un teica, labi, ka ir 849 00:50:22,130 --> 00:50:25,980 šīs īpašās programmas, kas faktiski palīdzētu jums lasīt bināro programmu, 850 00:50:25,980 --> 00:50:29,340 un tāpēc, ja kāds izmanto šo programmu, lai lasīt bināro, viņi varētu redzēt šos 851 00:50:29,340 --> 00:50:30,490 koda rindiņas. 852 00:50:30,490 --> 00:50:34,020 Viņš modificēts šīm programmām teikt, visiem labi, ja jūs meklējat pie 853 00:50:34,020 --> 00:50:38,460 kompilatoru, neparāda ne šis konkrētais kopa bināro. 854 00:50:38,460 --> 00:50:42,830 >> Tā, tad jums ir nepieciešams pieņemt, ka soli tālāk, un būtībā, kas varētu būt 855 00:50:42,830 --> 00:50:46,210 veikti vairāki līmeņi inDirection, un kādā brīdī, neviens patiesībā 856 00:50:46,210 --> 00:50:47,990 būs pārbaudīt. 857 00:50:47,990 --> 00:50:52,590 Tātad stāsts morāles ir, jūs esat nebūs rakstiski 858 00:50:52,590 --> 00:50:54,340 Šķindēt šajā klasē. 859 00:50:54,340 --> 00:50:57,020 Jūs esat būs izmantojot kāpelēt Šķindēt daudz šajā klasē. 860 00:50:57,020 --> 00:51:00,490 Attiecībā uz visiem jūs zināt, šķindēt ir ļaunprātīga programma, kas ir sabotaging katru 861 00:51:00,490 --> 00:51:03,520 viena programma esat kādreiz apkopoti. 862 00:51:03,520 --> 00:51:08,206 Un atstāt jums, ka ļoti draudošs ņemiet vērā, redzēt jūs trešdien. 863 00:51:08,206 --> 00:51:10,030 >> [Aplausi] 864 00:51:10,030 --> 00:51:12,935 >> SPEAKER 2: Nākamajā CS50. 865 00:51:12,935 --> 00:51:14,580 >> SPEAKER 3: Vai jūs uzdrošinās teikt, ka. 866 00:51:14,580 --> 00:51:15,930 Jūs varat darīt. 867 00:51:15,930 --> 00:51:19,440 Jūs esat izdarījuši, pirms, jūs varat darīt Šodien, jūs rīt var izdarīt. 868 00:51:19,440 --> 00:51:20,930 Jūs esat bijis darot gadiem. 869 00:51:20,930 --> 00:51:22,790 Tikai iet tur un darīt to. 870 00:51:22,790 --> 00:51:24,310 Jūs varat darīt. 871 00:51:24,310 --> 00:51:26,102 >> [Mūzikas atskaņošanai]