1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [MUSIC PLAYING] 3 00:00:11,210 --> 00:00:12,100 >> Rob Boden: Bütün hüququ. 4 00:00:12,100 --> 00:00:15,620 Video ilk Belə ki, ilk şey, bir tanış üz. 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 >> -Bütün hüququ. 8 00:00:23,370 --> 00:00:27,150 Bu CS50, və bu Həftə üç start. 9 00:00:27,150 --> 00:00:29,980 Mən sizinlə ola bilməz üzgünüm Bu gün, amma mənə təqdim etməyə imkan verir 10 00:00:29,980 --> 00:00:32,880 CS50 öz Rob Boden. 11 00:00:32,880 --> 00:00:33,872 >> [END Video playback] 12 00:00:33,872 --> 00:00:39,340 >> [Alqış və alqış] 13 00:00:39,340 --> 00:00:41,277 >> Rob Boden: The Filmoqrafiya ki, video fantastik edir. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Bütün hüquqlar. 16 00:00:47,770 --> 00:00:50,960 Belə ki, ilk, bir nahar var. 17 00:00:50,960 --> 00:00:52,330 Bu 1:15 sabah var. 18 00:00:52,330 --> 00:00:54,480 Bu cümə bir nahar var. 19 00:00:54,480 --> 00:00:55,810 Bu Quora ilə. 20 00:00:55,810 --> 00:01:00,190 Və Tommy bir, lakin, hələ burada deyil keçmiş rəhbəri CF var insanlar, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Belə ki, o bir əyləncə oğlan var. 23 00:01:02,730 --> 00:01:04,819 Siz gəlməlidir. 24 00:01:04,819 --> 00:01:05,900 >> Bütün hüquqlar. 25 00:01:05,900 --> 00:01:11,360 Belə ki, ötən həftə biz ayrı qıraraq başlayan bir string həqiqətən nə haqqında. 26 00:01:11,360 --> 00:01:14,830 Biz başından bəri məlum etdik ki, Bu simvol bir ardıcıllıqla var. 27 00:01:14,830 --> 00:01:18,130 Amma keçən həftə, biz əslində delved nə həqiqətən bir ardıcıllıqla ki, 28 00:01:18,130 --> 00:01:22,110 simvol, yaxşı, biz indi simvol Diziler. 29 00:01:22,110 --> 00:01:26,450 Və biz bir string, bir sıra var bilirik ki, simvol, çox sonunda, 30 00:01:26,450 --> 00:01:30,920 biz bu xüsusi null byte var, bu backslash 0 ki, son of göstərir 31 00:01:30,920 --> 00:01:32,230 simli. 32 00:01:32,230 --> 00:01:36,970 >> Və belə bir string bir sıra edir simvol, lakin biz daha çox 33 00:01:36,970 --> 00:01:39,530 simvol yalnız bir array, biz hər hansı bir sıra ola bilər 34 00:01:39,530 --> 00:01:40,890 biz istəyirik şey növü. 35 00:01:40,890 --> 00:01:51,570 Belə ki, ötən həftə geri əgər David təqdim edən Çağlar proqram 36 00:01:51,570 --> 00:01:53,560 həqiqətən tez. 37 00:01:53,560 --> 00:01:57,010 Biz nə olacaq Belə ki, ilk şey , tam üçün istifadəçi xahiş 38 00:01:57,010 --> 00:01:58,800 oda insanların sayı. 39 00:01:58,800 --> 00:02:01,260 Biz tam var, biz bir sıra elan edirik. 40 00:02:01,260 --> 00:02:02,890 Bu bracket sintaksis bildiriş. 41 00:02:02,890 --> 00:02:04,540 Siz istifadə almaq olacaq. 42 00:02:04,540 --> 00:02:09,430 >> Beləliklə, biz integers bir sıra elan edirik yaş adlanır və n var 43 00:02:09,430 --> 00:02:12,080 Bu array integers. 44 00:02:12,080 --> 00:02:16,480 Burada Belə ki, bu model, bu 4 int i i plus, i az n edir, 0 bərabərdir 45 00:02:16,480 --> 00:02:20,580 plus, həmçinin bir model olacaq çox üçün istifadə almaq. 46 00:02:20,580 --> 00:02:24,000 Ki, olduqca çox siz necə çünki həmişə serialların üzərində təkrarlamaq üçün gedir. 47 00:02:24,000 --> 00:02:26,330 Belə ki, n ki xatırlayıram bizim serialın uzunluğu. 48 00:02:26,330 --> 00:02:32,120 Və belə ki, burada biz dəfələrlə xahiş olunur otaqda adam i yaş üçün. 49 00:02:32,120 --> 00:02:36,640 >> Bundan sonra, biz aşağı getmək və nə üçün ixtiyari səbəbi, biz sonra 50 00:02:36,640 --> 00:02:40,220 onlar olacaq nə qədər köhnə çap İndi bir il olacaq. 51 00:02:40,220 --> 00:02:49,980 Və proqram çalışan edək , yaş etmək çizgi yaş nöqtə. 52 00:02:49,980 --> 00:02:53,010 Belə ki, oda insanların sayı, üç var deyək. 53 00:02:53,010 --> 00:02:59,880 Və ilk şəxs 13, demək Növbəti 26 və son 30. 54 00:02:59,880 --> 00:03:05,080 Belə ki, o, həmin üç təkrarlamaq lazımdır nəfər, 14 həyata 27 və 31 çap. 55 00:03:05,080 --> 00:03:16,060 >> Belə ki, unutmayın ki, biz bir zaman bəyan ölçüsü n array, ki indeksləri 56 00:03:16,060 --> 00:03:19,950 array, array dəyərləri var və indeksləri 0, 1, 2, bütün yol 57 00:03:19,950 --> 00:03:21,680 up n minus 1. 58 00:03:21,680 --> 00:03:26,255 Beləliklə, biz dedi üç nəfər var idi otaqda, və biz burada qoymaq 59 00:03:26,255 --> 00:03:29,850 Bu vasitəsilə ilk iteration loop, i 0 olacaq. 60 00:03:29,850 --> 00:03:31,650 Belə ki, index 0. 61 00:03:31,650 --> 00:03:34,540 Biz ilk təyin olunur istifadəçi daxil yaş. 62 00:03:34,540 --> 00:03:38,870 Sonra növbəti bir, biz daxil olduğunuz ikinci n istifadəçi daxil, və 63 00:03:38,870 --> 00:03:40,580 iki, son n yanında. 64 00:03:40,580 --> 00:03:44,200 >> Belə ki, fark ölçüsü bir array üç şey yoxdur 65 00:03:44,200 --> 00:03:46,040 indeksi üç. 66 00:03:46,040 --> 00:03:49,036 Bu düzgün deyil. 67 00:03:49,036 --> 00:03:50,250 Bütün hüquqlar. 68 00:03:50,250 --> 00:03:55,136 Belə ki, burada geri gedir. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Belə ki, indi biz Diziler bəhs etdik ki, biz bəzi tanışlıq var. 71 00:04:01,590 --> 00:04:03,780 İndi biz komanda üçün hərəkət olacaq olacaq olan line dəlilləri, 72 00:04:03,780 --> 00:04:05,890 Bu problem set olduqca müvafiq. 73 00:04:05,890 --> 00:04:09,670 >> Belə ki, indi qədər, zaman var Sizin əsas funksiyası elan, biz var 74 00:04:09,670 --> 00:04:11,230 int main etibarsız etdi. 75 00:04:11,230 --> 00:04:14,070 Belə ki, etibarsız yalnız deməkdir ki, Biz hər hansı bir keçən deyil 76 00:04:14,070 --> 00:04:16,440 Bu funksiya arqumentlər. 77 00:04:16,440 --> 00:04:19,190 İndi biz əsas görmək olacaq bəzi arqumentlər bilər. 78 00:04:19,190 --> 00:04:22,470 Burada argc int onlara zəng və simli argv mötərizədə. 79 00:04:22,470 --> 00:04:26,930 Mötərizədə, bir daha ifadə biz serialların ilə məşğul olduğunuz. 80 00:04:26,930 --> 00:04:31,850 Belə ki, burada, simli argv Mötərizədə, biz istəyirik strings bir sıra ilə məşğul. 81 00:04:31,850 --> 00:04:35,360 Belə argc göstərir ki, olacaq biz etdik neçə arqumentlər 82 00:04:35,360 --> 00:04:37,580 Bu proqram keçdi. 83 00:04:37,580 --> 00:04:46,050 Və o deməkdir ki, nə Bu yaxın qoy. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Belə ki, indi qədər, biz hər run etdik dot çizgi yaş kimi proqram. 86 00:04:50,790 --> 00:04:55,250 Biz həmçinin, command line, keçmiş dəlilləri qəbul, beləliklə termini, command 87 00:04:55,250 --> 00:04:56,550 line dəlilləri. 88 00:04:56,550 --> 00:04:59,760 Belə ki, ilk arqument, dünya salam. 89 00:04:59,760 --> 00:05:03,350 Belə ki, burada, argc üç olardı. 90 00:05:03,350 --> 00:05:07,720 Bu arqumentlər sayı var command line. 91 00:05:07,720 --> 00:05:12,840 Argc, həmişə ən azı 1 ildən dot özünü yaş zərbə biri kimi sayar 92 00:05:12,840 --> 00:05:14,490 command line dəlilləri. 93 00:05:14,490 --> 00:05:17,010 >> Sonra salam ilk. 94 00:05:17,010 --> 00:05:20,460 Dot çizgi yaş, sonra zeroth varsa salam ilk və dünya edir 95 00:05:20,460 --> 00:05:22,830 ikinci command line arqument. 96 00:05:22,830 --> 00:05:29,490 Belə ki, simli argv, biz görmək olacaq, strings, dot çizgi var 97 00:05:29,490 --> 00:05:33,830 yaş, hello, və dünya. 98 00:05:33,830 --> 00:05:38,945 Və Davudun xahişi ilə biz gedirik ki tanıdan bir video oynamaq. 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 >> -Up biz etdik proqramları indiyə qədər yazılı, biz bəyan etdik 102 00:05:46,240 --> 00:05:48,500 əsas kimi int main void. 103 00:05:48,500 --> 00:05:51,170 Və bütün bu dəfə ki, etibarsız var sadəcə ifadə edilmişdir ki, 104 00:05:51,170 --> 00:05:54,430 Proqram hər hansı bir etmir command line dəlilləri. 105 00:05:54,430 --> 00:05:57,750 Bir istifadəçi bir çalışır zaman digər sözlə, proqram, o komanda təmin edə bilər 106 00:05:57,750 --> 00:06:01,710 əlavə yazaraq line arqumentlər söz və ya söz sonra proqram 107 00:06:01,710 --> 00:06:03,000 sətirinə adı. 108 00:06:03,000 --> 00:06:06,550 >> Yaxşı, sizin proqram istəyirəm, əgər command line dəlilləri, bir və ya almaq 109 00:06:06,550 --> 00:06:10,540 daha belə sözləri biz əvəz etmək lazımdır dəlilləri bir neçə ilə ləğv. 110 00:06:10,540 --> 00:06:12,200 Belə ki, bunu bildirin. 111 00:06:12,200 --> 00:06:15,750 Cs50.h. daxildir 112 00:06:15,750 --> 00:06:19,360 Standart io.h. daxildir 113 00:06:19,360 --> 00:06:20,760 Əsas Int. 114 00:06:20,760 --> 00:06:26,330 İndi əvəzinə etibarsız, mən gedirəm bir argc adlı int və müəyyən 115 00:06:26,330 --> 00:06:28,780 argv strings array. 116 00:06:28,780 --> 00:06:31,820 İndi, argc və argv var sadəcə konvensiyalar. 117 00:06:31,820 --> 00:06:34,000 >> Biz bu dəlilləri deyilən bilərdi biz istəyirik ən şey. 118 00:06:34,000 --> 00:06:37,630 Amma nə vacibdir argc olduğunu bir int müəyyən, bu, çünki 119 00:06:37,630 --> 00:06:41,360 Bu arqument count ehtiva gedir, cəmi sözlə sayı ki, 120 00:06:41,360 --> 00:06:43,380 istifadəçi onun tez-da çap etmişdir. 121 00:06:43,380 --> 00:06:47,910 argv, eyni zamanda, dəlil vektor edir həqiqətən saxlanılması bir sıra olacaq 122 00:06:47,910 --> 00:06:52,020 istifadəçi var ki, sözləri bütün onun tez-da çap. 123 00:06:52,020 --> 00:06:54,500 >> İndi bir şey davam edək bu bir və ya daha çox 124 00:06:54,500 --> 00:06:55,660 command line dəlilləri. 125 00:06:55,660 --> 00:07:00,070 Xüsusilə nin irəli və çap gedək hər hansı söz istifadəçi növləri 126 00:07:00,070 --> 00:07:03,960 Proqramın adına sətirinə. 127 00:07:03,960 --> 00:07:04,730 Open bracket. 128 00:07:04,730 --> 00:07:06,240 Close bracket. 129 00:07:06,240 --> 00:07:10,510 Printf faiz s backslash və vergül. 130 00:07:10,510 --> 00:07:14,550 Və indi mən printf nə dəyəri demək lazımdır ki, tutucu plug. 131 00:07:14,550 --> 00:07:18,600 Mən istifadəçi var ki, ilk sözü istəyirəm proqram adı sonra tipli, 132 00:07:18,600 --> 00:07:23,130 və mən müəyyən etmək üçün gedirəm argv bracket 1, yaxın 133 00:07:23,130 --> 00:07:24,830 mötərizə, nöqtəli vergül. 134 00:07:24,830 --> 00:07:27,290 >> İndi niyə bracket 1 və bracket 0? 135 00:07:27,290 --> 00:07:30,990 Bəli, bu, avtomatik olaraq saxlanılır çıxır argv 0 olacaq edir 136 00:07:30,990 --> 00:07:32,620 Proqramın faktiki adı. 137 00:07:32,620 --> 00:07:36,180 Belə ki, ilk söz istifadəçi növləri Proqramın adı ilə sonra 138 00:07:36,180 --> 00:07:38,990 konvensiya, olacaq argv 1 saxlanılır. 139 00:07:38,990 --> 00:07:42,380 İndi tərtib edək və Bu proqram run. 140 00:07:42,380 --> 00:07:47,780 >> Argv 0, dot çizgi argv 0 olun. 141 00:07:47,780 --> 00:07:50,520 İndi bir söz salam kimi. 142 00:07:50,520 --> 00:07:51,670 Daxil edin. 143 00:07:51,670 --> 00:07:53,520 Və biz hello, var. 144 00:07:53,520 --> 00:07:55,750 >> [END Video playback] 145 00:07:55,750 --> 00:07:57,000 >> Rob Boden: Bütün hüququ. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Ki bağlayın. 148 00:08:01,230 --> 00:08:16,730 Belə ki, proqram bir göz alaraq biz yalnız, yaxşı, bizə yalnız təqdim 149 00:08:16,730 --> 00:08:24,710 biz 0 argv çap əgər indi, etmək, göstərmək Bu, argv 0, dot çizgi argv 0 budur. 150 00:08:24,710 --> 00:08:30,440 Gözlənilir ki, onu çap oldu argv 0 ildən, proqramın adını 151 00:08:30,440 --> 00:08:32,970 həmişə gedir Proqramın adı. 152 00:08:32,970 --> 00:08:35,640 Amma bir şey edək daha maraqlı bit. 153 00:08:35,640 --> 00:08:42,080 >> Belə ki, problem dəsti, siz olacaq Bu funksiya, ATOI təqdim. 154 00:08:42,080 --> 00:08:44,440 Belə ki, nə biz ATOI istifadə edirsiniz? 155 00:08:44,440 --> 00:08:48,550 Ki, çevirmək olacaq bir bir tam string. 156 00:08:48,550 --> 00:08:53,280 Mən string keçmək əgər, bir iki üç, ATOI üçün ki, çevirmək lazımdır ki, 157 00:08:53,280 --> 00:08:56,910 Bu tam, bir iki üç. 158 00:08:56,910 --> 00:09:01,480 Beləliklə, biz ilk çevirmək olacaq bir tam command line arqument 159 00:09:01,480 --> 00:09:05,690 və sonra yalnız tam çap. 160 00:09:05,690 --> 00:09:09,680 >> Belə ki, əsasən, biz növ istəyirik yalnız GetInt reimplementing 161 00:09:09,680 --> 00:09:12,350 tam əmrində daxil edilir line əvəzinə proqram 162 00:09:12,350 --> 00:09:14,560 interaktiv. 163 00:09:14,560 --> 00:09:23,170 Beləliklə, argv 0 edilməsi, nə edək burada bu ki, yaxın. 164 00:09:23,170 --> 00:09:27,670 Belə argv 0 çalışan, və daxil edək tam, bir iki üç dörd bir iki. 165 00:09:27,670 --> 00:09:30,840 Belə ki, biri tam çap edəcəyik iki üç dörd bir iki. 166 00:09:30,840 --> 00:09:35,500 Ki ATOI bəzi incəliklərini var bir şey haqqında qayğı dayandırmaq lazımdır 167 00:09:35,500 --> 00:09:39,040 cari rəqəmli karakter N. kənarda, lakin etməz. 168 00:09:39,040 --> 00:09:42,870 >> Beləliklə, siz nə düşünürsünüz Mən bunu əgər? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Segmentasyon günah. 171 00:09:47,050 --> 00:09:50,410 Belə ki, niyə ki? 172 00:09:50,410 --> 00:09:56,060 Bizim proqramımızda siz geri baxsaq, biz istəyirik argv 1, ilk dəlil konvertasiya 173 00:09:56,060 --> 00:09:59,610 proqram adı sonra, bir tam. 174 00:09:59,610 --> 00:10:03,350 Amma keçdi heç bir dəlil yoxdur proqram adına. 175 00:10:03,350 --> 00:10:08,060 Odur ki, biz bu arabası görürük proqram, çünki, biz çalıştırmak üçün cəhd əgər 176 00:10:08,060 --> 00:10:10,530 hər hansı bir dəlilləri olmadan, yalnız qəza edəcək. 177 00:10:10,530 --> 00:10:16,950 >> Siz görürsünüz belə bir ümumi model bir şey kimi, argc az olduqda 178 00:10:16,950 --> 00:10:21,100 olmadığını ifadə edən iki, daha ən azı proqram adı və 179 00:10:21,100 --> 00:10:29,100 ilk dəlil, sonra biz bir şey edəcəyik kimi printf, kifayət deyil 180 00:10:29,100 --> 00:10:31,190 command line dəlilləri. 181 00:10:31,190 --> 00:10:33,170 Bu yəqin ki, çap üçün yaxşı bir deyil, kimi, yəqin ki, bir şey var 182 00:10:33,170 --> 00:10:35,440 Siz tam daxil olmalıdır command line. 183 00:10:35,440 --> 00:10:37,450 Mən yalnız orada çıxacağıq. 184 00:10:37,450 --> 00:10:39,600 Və sonra 1 qayıtmaq. 185 00:10:39,600 --> 00:10:44,740 Belə ki, bizim sonunda unutmayın ki proqram, biz 0 qayıtmaq əgər ki, sort- 186 00:10:44,740 --> 00:10:47,060 uğurlar göstərir. 187 00:10:47,060 --> 00:10:50,940 Və əsas da avtomatik olaraq əgər 0 qaytarır. 188 00:10:50,940 --> 00:10:55,800 >> Odur ki, biz göstərir 1 retuning edirik ki, uğur deyil ki. 189 00:10:55,800 --> 00:11:01,000 Və siz istədiyiniz hər hansı qayıda bilər, yalnız 0 uğurlar göstərir və 190 00:11:01,000 --> 00:11:03,390 başqa bir şey uğursuzluq göstərir. 191 00:11:03,390 --> 00:11:04,855 Belə ki, hər şeyi bu versiyası run bildirin. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Beləliklə, biz bir command line daxil deyil, əgər dəlil, düzgün demək lazımdır 194 00:11:16,600 --> 00:11:18,290 us, kifayət qədər command line deyil. 195 00:11:18,290 --> 00:11:20,610 Cümlə başa gəlmədi. 196 00:11:20,610 --> 00:11:24,950 Başqa, biz, həqiqətən, bir keçmək əgər, bu proqram tam bilər. 197 00:11:24,950 --> 00:11:27,920 Belə ki, bu siz argc istifadə necə edir sayı doğrulamak üçün 198 00:11:27,920 --> 00:11:30,630 command line dəlilləri ki, həqiqətən qəbul olunur. 199 00:11:30,630 --> 00:11:39,360 >> Belə ki, bir az daha bu program edək mürəkkəb, ikinci baxmaq 200 00:11:39,360 --> 00:11:42,180 şeyi iteration. 201 00:11:42,180 --> 00:11:46,310 Belə ki, indi biz yalnız çap deyilik ilk command line arqument. 202 00:11:46,310 --> 00:11:51,210 Burada, biz int i bərabərdir iterating edirik 0, i, i argc azdır plus 203 00:11:51,210 --> 00:11:55,280 plus, və çap argv, index i. 204 00:11:55,280 --> 00:11:59,300 Belə ki, bu model, yenidən, bu, eyni əvəzinə başqa əvvəl model, 205 00:11:59,300 --> 00:12:02,600 dəyişən zəng n, biz argc istifadə edirik. 206 00:12:02,600 --> 00:12:09,520 >> Belə ki, bu hər indeksi üzərində iterating olunur serialda və hər çap 207 00:12:09,520 --> 00:12:11,910 ki, array element. 208 00:12:11,910 --> 00:12:20,300 Və belə ki, biz bu proqram çalıştırdığınızda, yaxşı, Mən heç bir command line daxil etməyib 209 00:12:20,300 --> 00:12:22,540 arqumentlər yalnız izləri belə proqram adı. 210 00:12:22,540 --> 00:12:26,053 Mən hər şeyi bir dəstə daxil edin, bu will biri öz xətti ilə hər çap. 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 Belə ki, gələcək bu bir addım olsun. 214 00:12:34,770 --> 00:12:38,890 Və əvəzinə hər arqument çap öz xətti ilə, hər çap imkan 215 00:12:38,890 --> 00:12:42,590 hər bir arqument xarakter öz xətti ilə. 216 00:12:42,590 --> 00:12:46,700 Belə argv olduğunu unutmayın strings bir sıra. 217 00:12:46,700 --> 00:12:50,960 Belə ki, nə bir string, lakin simvol bir array? 218 00:12:50,960 --> 00:12:57,140 Belə ki, argv həqiqətən o deməkdir ki, bir simvol bir sıra array. 219 00:12:57,140 --> 00:13:04,920 Belə ki, istifadə edərək, indi bu ignore bildirin. 220 00:13:04,920 --> 00:13:08,190 Yalnız simli argv 0 nəzərdən keçirək. 221 00:13:08,190 --> 00:13:14,170 >> Biz hər bir xarakter gətirmək istəyirəm əgər argv 0 öz xətti ilə, sonra mən istəyirəm 222 00:13:14,170 --> 00:13:19,500 biz istifadə etdiyiniz model etmək, i serialın uzunluğu az, 223 00:13:19,500 --> 00:13:23,990 , burada strlen olan ki, Mən istəyirəm nə, simli 224 00:13:23,990 --> 00:13:26,450 s argv 0 bərabərdir. 225 00:13:26,450 --> 00:13:30,390 Belə ki, i bizim uzunluğu azdır bu halda bir sıra olan array, 226 00:13:30,390 --> 00:13:34,410 simvol, i plus plus. 227 00:13:34,410 --> 00:13:41,040 Biz keçən həftə gördüm kimi, belə ki, bu ideal var Biz kənarda strlen ki, hərəkət əgər 228 00:13:41,040 --> 00:13:45,210 vəziyyəti, ildən n əlavə olunacaq s strlen biz getmək hər dəfə 229 00:13:45,210 --> 00:13:47,720 loop vasitəsilə və bu dəyişən etmək niyyətində deyil. 230 00:13:47,720 --> 00:13:50,230 Belə ki, biz burada n bərabər müəyyən edəcəyik. 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 Belə ki, indi biz artıq iterating edirik serialın hər index. 234 00:14:01,320 --> 00:14:05,630 Və belə ki, biz hər çap etmək istəyirsinizsə ki, array, faiz c karakter 235 00:14:05,630 --> 00:14:06,880 biz istifadə etmək istədiyiniz bayrağı simvol. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 İndi bir bracket i olacaq edir string, index xarakter i, belə ki, əgər 238 00:14:19,770 --> 00:14:20,970 string salam idi. 239 00:14:20,970 --> 00:14:27,530 sonra bracket 0 h olacaq S S 1 belə e olacaq və. 240 00:14:27,530 --> 00:14:30,800 >> Belə ki, indi biz birləşdirmək istəyirəm Bu iki şeyi. 241 00:14:30,800 --> 00:14:35,440 Biz hər bir xarakter çap etmək istəyirəm hər command line arqument. 242 00:14:35,440 --> 00:14:38,950 Belə ki, biz olacaq bir loop üçün iç içə. 243 00:14:38,950 --> 00:14:47,480 Və şərti, ilk counter i, növbəti j olacaq, n edir 244 00:14:47,480 --> 00:14:54,450 argv i strlen olacaq, i az n, i plus plus edir. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 İndi əvəzinə çap argv i, belə ki, i index gedir argv bracket - 247 00:15:06,870 --> 00:15:14,280 ki, i-ci command line olacaq arqument argv i, j gedir 248 00:15:14,280 --> 00:15:16,925 Bu jth xarakter ola i-ci arqument. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Mən indi burada bu qədər qurtarmaq lazımdır biz ki, loop onu qoymaq bəri. 251 00:15:24,810 --> 00:15:33,900 Belə ki, simli s bərabərdir bərabərdir argv i, sonra s bracket j. 252 00:15:33,900 --> 00:15:36,980 >> Yaxşı, biz bəyan etmək lazım deyil Bu dəyişən s. 253 00:15:36,980 --> 00:15:44,530 Əksinə, biz yalnız bu birləşdirmək lazımdır biz nə iki, j i argv. 254 00:15:44,530 --> 00:15:45,780 >> HOPARLÖR 1: [işitilemez]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> Rob Boden: Yaxşı zəng. 257 00:15:49,680 --> 00:15:52,936 Belə ki, bu pozuldu. 258 00:15:52,936 --> 00:15:55,510 Mən, həqiqətən, qaçıb varsa, biz ki, bu həyata. 259 00:15:55,510 --> 00:16:01,210 Mən qayğı belə counter Bu xüsusilə 260 00:16:01,210 --> 00:16:05,410 loop j, iterator edir. 261 00:16:05,410 --> 00:16:08,560 Belə ki, məsələlər daxil olardı, yəqin ki, bir sonsuz loop, əgər biz 262 00:16:08,560 --> 00:16:09,540 sabit deyil. 263 00:16:09,540 --> 00:16:12,220 Biz də söhbət edirik, niyə ki haqqında bu gün ayıklama. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Belə ki, bu proqram run imkan verir. 266 00:16:15,240 --> 00:16:21,200 Və əslində ayrı-ayrı printf əlavə edək burada yalnız çap edəcək 267 00:16:21,200 --> 00:16:27,480 Bu deməkdir ildən bir line, biz proqram run, bir boş olacaq 268 00:16:27,480 --> 00:16:31,830 Hər xarakterli arasında line hər command line arqument. 269 00:16:31,830 --> 00:16:33,448 Bəli, biz o deməkdir ki, nə görürsünüz. 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 Bəzi səhv var. 273 00:16:39,870 --> 00:16:42,860 Error dolayısı elan kitabxana funksiyası strlen. 274 00:16:42,860 --> 00:16:51,630 >> Belə ki, bizim proqram geri gedir, mən string.h daxil hash unuttum. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Belə ki, string.h olacaq edir bildirir ki, header file 277 00:16:57,730 --> 00:16:58,980 funksiyası strlen. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK, bu, tərtib edir. 280 00:17:06,060 --> 00:17:09,109 İndi run bildirin. 281 00:17:09,109 --> 00:17:10,930 Belə ki, yalnız. 282 00:17:10,930 --> 00:17:17,790 Bu çap olacaq bizim proqram adı, hello dünya. 283 00:17:17,790 --> 00:17:23,510 Hər bir, hər şey çap olacaq öz xətti ilə xarakter. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Belə nin əslində bu götürək daha bir addım. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 Əvəzinə string.h istifadə, edək biz öz həyata istədiyiniz necə düşünmək 288 00:17:39,700 --> 00:17:41,420 strlen funksiyası. 289 00:17:41,420 --> 00:17:45,600 Mən dərhal verəcəyik bir funksiyası imza. 290 00:17:45,600 --> 00:17:52,900 Belə ki, my_strlen zəng edək, və bu bir arqument kimi bir string almaq üçün gedir, 291 00:17:52,900 --> 00:17:57,220 və biz geri gözləyirik ki, simli uzunluğu. 292 00:17:57,220 --> 00:18:03,430 Belə ki, burada ki, oğlan var? 293 00:18:03,430 --> 00:18:04,990 Bəli. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Belə ki, əvvəllər Slayd xatırlayıram ki, , keçən həftə idi ki, 296 00:18:12,900 --> 00:18:18,890 simvol array, yaxşı, bir string, belə ki, bu, bizim string s deyək. 297 00:18:18,890 --> 00:18:29,870 Belə ki, s simli əgər, hello, sonra, H-E-L-L-O, yaddaş ki, olacaq 298 00:18:29,870 --> 00:18:35,610 sonra bu backslash ola bilər, və 0 character. 299 00:18:35,610 --> 00:18:39,170 >> Belə ki, necə biz s uzunluğu almaq edirsiniz? 300 00:18:39,170 --> 00:18:43,190 Yaxşı, oyun bu axtarır 0 xarakter, bu null reaksiyalara 301 00:18:43,190 --> 00:18:44,380 terminator. 302 00:18:44,380 --> 00:18:50,270 Belə ki, alqoritm davam edir neçə kimi bir şey olacaq 303 00:18:50,270 --> 00:18:51,510 kifayət qədər simvol ki, - 304 00:18:51,510 --> 00:18:56,180 Bu əl bəzi təmsil edək counter, bu int uzunluğu zəng edək. 305 00:18:56,180 --> 00:19:00,060 Belə ki, burada-dən başlayaraq, biz istəyirik simli üzərində təkrarlamaq gedir. 306 00:19:00,060 --> 00:19:04,100 >> Belə ki, bu H ilk xarakter var, və geri, belə ki, 0 doğramaq deyil 307 00:19:04,100 --> 00:19:05,170 uzunluğu 1. 308 00:19:05,170 --> 00:19:08,050 Növbəti xarakter təkrarlamaq, E, və 0 backslash deyil. 309 00:19:08,050 --> 00:19:09,630 Length 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 Və, nəhayət, biz backslash çatmaq 0, və o deməkdir ki, yaxşı, 314 00:19:16,690 --> 00:19:17,780 Bu simli bitdi. 315 00:19:17,780 --> 00:19:20,130 Belə ki, 5 qayıdaq. 316 00:19:20,130 --> 00:19:33,630 >> Yəni əslində, ilk ki, həyata mənim n uzunluğu Mənim sağ, 0 bərabərdir. 317 00:19:33,630 --> 00:19:36,088 Və biz təkrarlamaq olacaq - 318 00:19:36,088 --> 00:19:38,000 >> HOPARLÖR 1: [işitilemez] 319 00:19:38,000 --> 00:19:38,640 >> Rob Boden: Oh, vur. 320 00:19:38,640 --> 00:19:39,870 Yaxşı zəng. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Belə ki, n uzunluğu 0 bərabərdir. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Belə ki, indi isə uzunluğu deyil sonra bərabər və backslash 0. 325 00:19:58,310 --> 00:20:04,660 Belə ki, bu backslash 0 xatırlayıram, bir edir faktiki xarakter, və bu göstərir 326 00:20:04,660 --> 00:20:05,820 simli sonu. 327 00:20:05,820 --> 00:20:09,850 Just kimi, həmçinin, backslash n faktiki karakter. 328 00:20:09,850 --> 00:20:14,040 Backslash 0 qeyd edir bizim simli sonunda. 329 00:20:14,040 --> 00:20:15,414 Mən orada qoymaq istəmirəm. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 Və uzunluğu dizine s deyil isə null terminator bərabər, sonra 332 00:20:25,620 --> 00:20:27,130 biz yalnız uzunluğu arttırmayı olacaq. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Beləliklə, bizim proqramın sonunda, uzunluğu nəticədə gedir 335 00:20:34,880 --> 00:20:37,610 bu halda 5 olun. 336 00:20:37,610 --> 00:20:39,210 Və biz yalnız uzunluğu qayıtmaq lazımdır. 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 Belə ki, indi aşağı burada, mən yox my_strlen yoxdur. 340 00:20:48,290 --> 00:20:50,700 Nin əmin etmək üçün tərtib edək hər şey rəvan çalışır. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Mən 2 edirdi? 343 00:20:58,210 --> 00:21:00,565 Və ya 1 idi? 344 00:21:00,565 --> 00:21:01,940 Etməlidir. 345 00:21:01,940 --> 00:21:02,690 Bütün hüquqlar. 346 00:21:02,690 --> 00:21:08,490 Belə ki, bu argv 2. 347 00:21:08,490 --> 00:21:11,585 Gözlənilən kimi, çalışır, baxmayaraq ki, bir mən bunu etdi ki, idi? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Bəli. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Şeyi bu versiyası yoxdur Bu printf yeni sonra line, lakin 352 00:21:21,820 --> 00:21:22,910 heç bir fərq etmir. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Gözlənilir ki işləmişdir. 355 00:21:25,780 --> 00:21:34,750 >> İndi biz hətta bu bir addım birləşdirə bilər daha, burada yerləşir bildiriş, yaxşı, 356 00:21:34,750 --> 00:21:38,920 ilk, biz argv olan strlen qənimətçilik edirik i, sonra biz artıq iterating edirik 357 00:21:38,920 --> 00:21:41,450 ki, simli hər character. 358 00:21:41,450 --> 00:21:47,480 Belə ki, əvəzinə bunu, nə əgər biz yalnız gözləmə bu məntiqi birləşdirmək 359 00:21:47,480 --> 00:21:50,740 biz backslash 0 hüququna hit qədər loop üçün bu daxil? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Argv i, j nə isə belə təkrarlamaq bərabər backslash 0. 362 00:22:07,490 --> 00:22:10,680 Belə ki, ilk run bildirin. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Bütün hüquqlar. 365 00:22:21,180 --> 00:22:27,655 Belə ki, burada, bu vəziyyəti deyib - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 ki sil. 368 00:22:40,060 --> 00:22:49,140 Belə ki, indi, bu, bizim argv olsun. 369 00:22:49,140 --> 00:22:55,290 Mən yalnız əvvəl proqram qaçdı zaman, argv strings bir sıra edir. 370 00:22:55,290 --> 00:23:03,100 Və mən dot çizgi argv ilə run əgər 2, hello dünya, sonra argv 371 00:23:03,100 --> 00:23:07,650 özü argv üçün, uzunluğu 3 sıfır, hello, və dünya. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> Və bu göstəricilərinin hər biri daxilində deyil, özü bu olacaq bir array, 374 00:23:19,660 --> 00:23:23,780 dot, bu çizgi olacaq, bilmirəm ki, düzgün istiqamətdə idi, mən 375 00:23:23,780 --> 00:23:25,680 Bu idi düşünmürəm. 376 00:23:25,680 --> 00:23:30,110 A-R-V dash, daha çox yer lazımdır. 377 00:23:30,110 --> 00:23:32,570 Bu array daxil kəsilir. 378 00:23:32,570 --> 00:23:38,230 A-R-V dash 0, sonra backslash 0. 379 00:23:38,230 --> 00:23:43,160 Və sonra nizamsızlıq salam olacaq. 380 00:23:43,160 --> 00:23:45,910 Nin, H-E backslash 0 deyirlər. 381 00:23:45,910 --> 00:23:51,130 Və nəhayət, W-O backslash 0. 382 00:23:51,130 --> 00:23:59,730 >> Beləliklə, biz yalnız yazırdı ki, alqoritm, onlar olduğunuz loops üçün iç-içə 383 00:23:59,730 --> 00:24:07,321 Doing, biz ilk var i və sonra j qarşı. 384 00:24:07,321 --> 00:24:15,206 Bu kod ilə daha asan olardı ekran, geri bu gedək. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Belə ki, i olan iterator olduğunu qeyd hər bir komanda üzərində iterating 387 00:24:24,600 --> 00:24:25,610 line arqument. 388 00:24:25,610 --> 00:24:28,870 Və j iterator iterating edir ki, hər bir xarakter üzərində 389 00:24:28,870 --> 00:24:30,410 command line arqument. 390 00:24:30,410 --> 00:24:46,755 Belə ki, bu olanları printf nə , biz argv 0 0 printf printf var olunur 391 00:24:46,755 --> 00:24:58,680 argv 0 1, printf argv 0 2 0 3 0 4 0 5, 0 6, lakin indi, argv 0 7 gedir 392 00:24:58,680 --> 00:25:00,670 bərabər backslash 0. 393 00:25:00,670 --> 00:25:05,730 >> Beləliklə biz loop üçün çıxmaq, və indi i 1 iterates. 394 00:25:05,730 --> 00:25:10,910 Və indi biz çap olacaq argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 yaxşı, indi mən qısa salam kəsilmiş ildən, argv 1 2 təkrar olacaq 396 00:25:17,040 --> 00:25:18,170 backslash 0. 397 00:25:18,170 --> 00:25:25,050 Və belə ki, i arttırmayı və davam və ki, qədər biz bütün çap 398 00:25:25,050 --> 00:25:28,580 dünya və o üç command line var arqumentlər və biz həyata çıxmaq lazımdır 399 00:25:28,580 --> 00:25:31,670 outermost loop, və proqram bitirmək. 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 >> Belə ki, burada qayıda bildirin. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Belə ki, bəzi tanış olmaq lazımdır Bu command line dəlilləri 406 00:25:52,370 --> 00:25:54,460 xüsusi problem müəyyən. 407 00:25:54,460 --> 00:25:56,630 >> İndi, hata. 408 00:25:56,630 --> 00:26:01,680 Beləliklə, siz yəqin ki, artıq nə idi Əvvəlki ilə bəzi ayıklama 409 00:26:01,680 --> 00:26:03,120 problem müəyyən. 410 00:26:03,120 --> 00:26:08,420 Və ayıklama bir çox asan yol, ilk bir arabası proqram baxaq. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Yaxşı, bu proqramı vasitəsilə gəzinti biz üçün istifadəçi xahiş olacaq 413 00:26:23,830 --> 00:26:29,350 tam ki, tam qamarlamaq, və sonra, özbaşına, biz isə loop var ki, 414 00:26:29,350 --> 00:26:32,280 yalnız azalma gedir Bu 10 bərabər i qədər. 415 00:26:32,280 --> 00:26:35,820 Edək yalnız mən daxil deyiləm güman 10-dən çox bir tam. 416 00:26:35,820 --> 00:26:38,700 Bu 10 bərabər qədər i azalma. 417 00:26:38,700 --> 00:26:42,630 >> Və sonra biz başqa isə loop var i 0 bərabər deyil isə, biz istəyirik ki, 418 00:26:42,630 --> 00:26:44,540 3 i azalma gedir. 419 00:26:44,540 --> 00:26:49,790 Beləliklə, siz səhv niyyəti görmək əgər burada, bu i üçün azalma lazımdır ki, var 420 00:26:49,790 --> 00:26:57,010 10, və sonra bu isə loop iradə ola 1 4 7 10, gələn azalma i, 421 00:26:57,010 --> 00:27:02,880 mənfi 2, belə ki, 5 mənfi və mənfi sonsuzluğa, i olacaq ildən 422 00:27:02,880 --> 00:27:05,920 həqiqətən 0 bərabər heç vaxt. 423 00:27:05,920 --> 00:27:08,610 Və sonra bu proqramın sonunda, biz olan foo funksiyası var 424 00:27:08,610 --> 00:27:12,130 çap gediş i ki. 425 00:27:12,130 --> 00:27:16,520 >> Belə ki, bu, qısa və mənasız proqram və səhv aydındır, 426 00:27:16,520 --> 00:27:18,790 xüsusilə sonra mən yalnız səhv idi nə dedi. 427 00:27:18,790 --> 00:27:24,840 Amma burada niyyət yaxşı, bu güc deyil, həqiqətən bəzi kimi baxmaq sizin 428 00:27:24,840 --> 00:27:30,040 gələn son görməmiş olan həllər problem müəyyən və bəlkə siz var 429 00:27:30,040 --> 00:27:32,800 proqram bəzi sonsuz loop, və siz heç bir fikrim yoxdur 430 00:27:32,800 --> 00:27:34,100 nə səbəb oldu. 431 00:27:34,100 --> 00:27:38,690 Belə ki, bir çox faydalı ayıklama texnika yalnız printfs əlavə etmək 432 00:27:38,690 --> 00:27:40,180 bütün kodu üzərində. 433 00:27:40,180 --> 00:27:49,200 >> Belə ki, burada xaricində bir printf istəyirəm ilk isə loop. 434 00:27:49,200 --> 00:27:53,155 Və burada mən bir printf istəyirəm, Mən yalnız i çap edəcəyik. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Loop isə hətta i, ilk edəcəyik. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Kənarda, ikinci isə loop. 439 00:28:09,040 --> 00:28:12,170 Bir daha, daxili çap burada, dəyəri i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 Və bu run bildirin. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Belə ki, dot çizgi debug. 444 00:28:24,800 --> 00:28:25,610 Tam daxil edin. 445 00:28:25,610 --> 00:28:28,150 13 edək. 446 00:28:28,150 --> 00:28:28,760 Və bumu. 447 00:28:28,760 --> 00:28:33,300 Biz sonsuz loop olduğunu görürük ikinci isə loop daxilində. 448 00:28:33,300 --> 00:28:36,305 Belə ki, indi biz səhv olduğunu bilirik. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Amma printf ayıklama, mükəmməl böyük ancaq proqramları almaq dəfə 451 00:28:45,610 --> 00:28:50,560 uzun və daha mürəkkəb var daha mürəkkəb həlləri 452 00:28:50,560 --> 00:28:51,705 şeyi iş əldə. 453 00:28:51,705 --> 00:28:52,955 Belə ki, bütün bu printfs yığışdıraq. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 Və əmin Mən etmədim edək bir şey qırmaq. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Beləliklə, biz olacaq proqram təqdim adlanır 458 00:29:14,180 --> 00:29:16,715 GNU Debugger gdb. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Yaxşı, həqiqətən, üçün debug aradan qaldırılması imkan ikinci, və daha debug etmək. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Bəli, həqiqətən ilk bir yaxşı dərs command line dəlilləri ilə. 463 00:29:34,440 --> 00:29:37,780 Bu cingilti komanda ki, Qeyd edək ki, hər şey qəbul edilir tərtib 464 00:29:37,780 --> 00:29:41,300 command line, bu command line dəlilləri. 465 00:29:41,300 --> 00:29:46,250 Istifadə olunur, belə ki, tam olaraq necə command line dəlilləri kimi biz 466 00:29:46,250 --> 00:29:51,500 əvvəl idi, və siz pset olacaq kimi 2, ki, cingilti, onlardan istifadə edir necə. 467 00:29:51,500 --> 00:30:00,070 >> Belə ki, qeyd ki, bu ilk bayraq, dash ggdb3, ki söyləyərək nə, cingilti, 468 00:30:00,070 --> 00:30:03,790 Siz bu faylı tərtib etməli niyyət ki, biz nəhayət olacaq 469 00:30:03,790 --> 00:30:05,380 bu debug lazımdır. 470 00:30:05,380 --> 00:30:13,840 Belə ki, kimi uzun siz bayrağı var, sonra biz gdb debug bilər. 471 00:30:13,840 --> 00:30:17,380 Və bu GNU Debugger açmaq lazımdır. 472 00:30:17,380 --> 00:30:22,920 >> Belə ki, əmrləri var siz istifadə almaq lazımdır ki,. 473 00:30:22,920 --> 00:30:27,100 Birincisi ki, siz yəqin ki, lazımdır dərhal lazım Run edir. 474 00:30:27,100 --> 00:30:28,200 Belə ki, nə gedir Run olunur? 475 00:30:28,200 --> 00:30:30,910 Bu, bizim proqram başlamaq olacaq. 476 00:30:30,910 --> 00:30:36,180 Belə ki, başlayan proqram, proqram çalıştırmak bir tam 13 üçün bizə xahiş edir. 477 00:30:36,180 --> 00:30:39,170 Və sonra bu sonsuz loop kimi var Mən xaric istisna olmaqla, gözlənilən 478 00:30:39,170 --> 00:30:40,500 printfs, belə ki, biz hətta görmürəm. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Normal çıxıldı. 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 Bu bükülmüş mümkündür bütün yol, geri - ki, məhəl. 484 00:30:53,640 --> 00:30:55,170 Normal çıxmadığını daşımır. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Ki, bir mürəkkəb cavab var. 487 00:31:03,370 --> 00:31:07,890 >> Belə ki, indi ki, çox faydalı deyil. 488 00:31:07,890 --> 00:31:11,480 Belə ki, yalnız daxilində bizim proqram çalışan Bu ayıklama hər hansı bir bizə kömək etmir 489 00:31:11,480 --> 00:31:15,610 biz yalnız görmüşük bilər-ci ildən yol, dot gdb kənarda debug doğramaq. 490 00:31:15,610 --> 00:31:21,250 Belə ki, bir komanda ki, yəqin ki, lazımdır - 491 00:31:21,250 --> 00:31:22,970 və mən bu çıxmaq lazımdır. 492 00:31:22,970 --> 00:31:25,850 Control-d və ya iş həm çıxın. 493 00:31:25,850 --> 00:31:29,550 Beləliklə, bir daha onu açmaq bildirin. 494 00:31:29,550 --> 00:31:31,130 >> Digər komanda ki, siz yəqin ki, lazımdır dərhal istəyirəm 495 00:31:31,130 --> 00:31:33,600 üçün istifadə almaq Break edir. 496 00:31:33,600 --> 00:31:37,120 Belə ki, biz, indi əsas qırmaq lazımdır və sonra mən izah edəcəyik. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Yaxşı, burada biz bir breakpoint bax debug.c bu xətt. 499 00:31:46,370 --> 00:31:50,160 Belə ki, nə break vasitədir zaman run yazın, proqram gedir 500 00:31:50,160 --> 00:31:53,560 qədər davam Mən breakpoint edib. 501 00:31:53,560 --> 00:31:59,390 I run hit zaman, belə ki, proqram, başlayır və sonra bu kimi tezliklə kimi pozur 502 00:31:59,390 --> 00:32:01,940 əsas funksiyası olur. 503 00:32:01,940 --> 00:32:06,930 Əsas Break şey olacaq Siz olduqca çox nə. 504 00:32:06,930 --> 00:32:11,340 >> İndi sizə təqdim etmək bir daha əmrləri. 505 00:32:11,340 --> 00:32:14,330 Biz deyərək ki, burada qeyd olan line 11 at qırdı 506 00:32:14,330 --> 00:32:16,230 printf, tam daxil edin. 507 00:32:16,230 --> 00:32:21,260 Belə ki, komanda Next necə olacaq biz kodu növbəti line getmək. 508 00:32:21,260 --> 00:32:24,810 Bu, bizim addım imkan gedir xətti ilə proqram xətti ilə. 509 00:32:24,810 --> 00:32:26,260 Belə ki, növbəti. 510 00:32:26,260 --> 00:32:29,820 >> İndi line 12, biz gedirik tam almaq üçün. 511 00:32:29,820 --> 00:32:30,450 Next. 512 00:32:30,450 --> 00:32:34,290 Siz yalnız yenidən Enter varsa, bu will siz etdi son şey redo. 513 00:32:34,290 --> 00:32:36,480 Mən yazın ehtiyac yoxdur Növbəti hər zaman. 514 00:32:36,480 --> 00:32:40,100 Belə bir tam, 13 daxil edin. 515 00:32:40,100 --> 00:32:46,940 Belə ki, indi line 14, i çox isə 10-dən, və mən növbəti edəcəyik. 516 00:32:46,940 --> 00:32:48,685 Və biz i azalma olacaq görürük. 517 00:32:48,685 --> 00:32:50,210 Yəni biz yenidən i azalma olacaq. 518 00:32:50,210 --> 00:32:53,620 >> Belə ki, indi digər faydalı command Print edir. 519 00:32:53,620 --> 00:32:55,750 Belə ki, çap çap gedir dəyişən dəyəri. 520 00:32:55,750 --> 00:32:57,825 Nin dəyərini getirsin dəyişən i. 521 00:32:57,825 --> 00:32:58,705 Mən çap edək. 522 00:32:58,705 --> 00:33:00,910 Bu i 11 demək olacaq. 523 00:33:00,910 --> 00:33:03,330 İndi biz Next yenə də i 10-dən çoxdur. 524 00:33:03,330 --> 00:33:05,590 Belə ki, i hələ daha çox var 11-ci ildən 10. 525 00:33:05,590 --> 00:33:06,920 i minus minus. 526 00:33:06,920 --> 00:33:08,250 Yenə i çap edək. 527 00:33:08,250 --> 00:33:10,950 Gözlənildiyi kimi, 10 var. 528 00:33:10,950 --> 00:33:12,510 >> Belə ki, indi gələcək. 529 00:33:12,510 --> 00:33:16,250 Bu geri vəziyyətdə olacaq, i 10-dən çox, lakin i belə ki, indi 10 530 00:33:16,250 --> 00:33:20,040 Bu 10-dən çox deyil, belə ki, biz gözləyirik Bu isə loop tökülmək üçün. 531 00:33:20,040 --> 00:33:22,220 Və indi biz kod ki line aşağıda istəyirik. 532 00:33:22,220 --> 00:33:28,750 Və başqa komanda siyahısı, yalnız gedir əvvəlki və sonrakı keçirmək üçün 533 00:33:28,750 --> 00:33:31,240 kodu xətləri, ildə bir neçə halda siz özünüz itirdi. 534 00:33:31,240 --> 00:33:35,420 Beləliklə, biz yalnız, bu isə loop ayrıldığı və indi biz bu daxil 535 00:33:35,420 --> 00:33:37,080 isə loop, line 18. 536 00:33:37,080 --> 00:33:39,860 I 0 bərabər deyil isə belə. 537 00:33:39,860 --> 00:33:46,570 Və növbəti, i biz will i minus 3 bərabərdir, və qeyd, bu, yalnız davam edəcəyik. 538 00:33:46,570 --> 00:33:48,270 Və biz i çap edə bilərsiniz. 539 00:33:48,270 --> 00:33:49,990 >> Hər bir komanda sort qısa malikdir. 540 00:33:49,990 --> 00:33:51,720 Belə ki, p Çap üçün qısa. 541 00:33:51,720 --> 00:33:53,400 Beləliklə, biz p i bilərsiniz. 542 00:33:53,400 --> 00:33:57,550 Just n keçirilməsi saxlamaq, və ya Next bunu saxlamaq. 543 00:33:57,550 --> 00:33:58,340 Yenə çap. 544 00:33:58,340 --> 00:34:00,380 Siz 167 mənfi indi görürük. 545 00:34:00,380 --> 00:34:06,030 Belə ki, bu əbədi getmək, lakin həqiqətən əbədi, yalnız gördüm ildən, bu, 546 00:34:06,030 --> 00:34:09,330 həqiqətən bir nöqtədə sona çatacaq. 547 00:34:09,330 --> 00:34:15,699 >> Belə ki, gdb başlayaraq edilir. 548 00:34:15,699 --> 00:34:19,504 Amma gdb daha bir şey edək. 549 00:34:19,504 --> 00:34:20,754 Uh, debug. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Belə ki, bu halda, sonsuz loop daxilində ola oldu 552 00:34:28,534 --> 00:34:30,050 əsas funksiyası. 553 00:34:30,050 --> 00:34:35,779 Və indi üçün, yalnız mən ki, qəbul daxil sonsuz loop hərəkət olacaq 554 00:34:35,779 --> 00:34:37,029 foo funksiyası. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Məhz bu sonunda, unutmayın ki, proqram, yaxşı, bu ilk idi 557 00:34:43,730 --> 00:34:46,210 yalnız olan foo zəng i çap gedir. 558 00:34:46,210 --> 00:34:51,880 Amma indi biz olan, foo zəng etdiyiniz Bu 0 qədər i azalma, və gedir 559 00:34:51,880 --> 00:34:54,548 sonra dəyişən çap. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 Ki saxla. 562 00:34:57,970 --> 00:35:00,175 Debug olun. 563 00:35:00,175 --> 00:35:03,310 İndi, gdb debug. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Mən yalnız Run Belə ki, əgər mən fikrində deyiləm həqiqətən gezinmek üçün edə mənim 566 00:35:10,580 --> 00:35:11,730 proqram line-by-line. 567 00:35:11,730 --> 00:35:19,820 Belə ki, əsas da qıra edək, və sonra run yazın. 568 00:35:19,820 --> 00:35:28,160 Belə ki, bu yolu getmək, printf daxil bir tam, tam, 13 almaq. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Beləliklə, biz decrementing saxlamaq olacaq i 10-dən çoxdur qədər. 571 00:35:37,490 --> 00:35:42,840 Sonra vasitəsilə düşmək olacaq isə loop, və xətti almaq - 572 00:35:42,840 --> 00:35:44,364 bir ayrı pəncərə açmaq bildirin. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 I artıq qədər biz endirildiyi sonra 10-dən çox və biz 575 00:35:53,300 --> 00:35:55,700 foo, funksiyası adlanır. 576 00:35:55,700 --> 00:36:01,340 >> Belə ki, nə tezliklə mən hit baş verib funksiyası foo, yaxşı, Mən foo adlanır və 577 00:36:01,340 --> 00:36:04,030 sonra artıq gdb üzərində nəzarət var idi. 578 00:36:04,030 --> 00:36:10,230 Belə ki, tezliklə mən bu xətti Next hit, Bu baş qədər şeyi davam 579 00:36:10,230 --> 00:36:12,400 Ü proqram çıktı - 580 00:36:12,400 --> 00:36:14,450 nəticədə yox idi daşımır. 581 00:36:14,450 --> 00:36:16,390 Siz baxmayaraq bir az fasilə gördüm. 582 00:36:16,390 --> 00:36:22,040 Belə ki, niyə mən üzərində nəzarəti itirmək idi o nöqtədə proqram? 583 00:36:22,040 --> 00:36:27,540 Mən növbəti yazın zaman Yaxşı, ki, gedir kod hərfi növbəti xətti 584 00:36:27,540 --> 00:36:28,850 icra edəcək. 585 00:36:28,850 --> 00:36:35,950 Belə ki, sonra line 21, kodu növbəti line ki, line 22 icra edəcək 586 00:36:35,950 --> 00:36:38,520 əsas olan mövcud olan. 587 00:36:38,520 --> 00:36:43,810 Mən yalnız getmək istəmirəm kodu növbəti line. 588 00:36:43,810 --> 00:36:48,170 Mən funksiyası, foo daxil getmək istəyirəm, və sonra da addım 589 00:36:48,170 --> 00:36:49,830 kodu həmin satır. 590 00:36:49,830 --> 00:36:53,726 >> Belə ki, biz bir alternativ var. 591 00:36:53,726 --> 00:36:56,770 Ki, daha çıxmaq imkan verir. 592 00:36:56,770 --> 00:36:58,020 Əsas ayırın. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, növbəti, növbəti, 13, növbəti, növbəti, növbəti, diqqətlə, 595 00:37:06,370 --> 00:37:09,820 biz line foo hit əvvəl. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Belə ki, indi biz, line 21 istəyirik biz foo zəng yerləşir. 598 00:37:13,700 --> 00:37:17,100 Biz növbəti yazın istəmirəm ki, bəri yalnız funksiyası foo zəng və 599 00:37:17,100 --> 00:37:18,710 kodu növbəti line getmək. 600 00:37:18,710 --> 00:37:20,840 Nə biz istifadə etmək istədiyiniz addımdır. 601 00:37:20,840 --> 00:37:25,690 Belə ki Addım arasında bir fərq var və Step daxil addımlar Next, 602 00:37:25,690 --> 00:37:28,190 fəaliyyət, və Next gedir funksiyası üzərində. 603 00:37:28,190 --> 00:37:32,830 Bu yalnız tam icra funksiyası və saxlayır gedir. 604 00:37:32,830 --> 00:37:37,210 >> Belə ki, Step bizi gətirmək niyyətindədir funksiyası daxil foo. 605 00:37:37,210 --> 00:37:41,160 Və biz indi, biz geri istəyirik, bax burada nəzəriyyə var ki, bu isə loop, 606 00:37:41,160 --> 00:37:44,190 əbədi davam. 607 00:37:44,190 --> 00:37:50,420 Və hətta deyil zaman Addım, hit əgər zəng etmək üçün bir funksiyası, sonra bu 608 00:37:50,420 --> 00:37:51,720 Sonrakı eyni. 609 00:37:51,720 --> 00:37:55,320 Bir xətt olduğunuzda belə ki, yalnız ki, Addım ki, bir funksiyası zəng 610 00:37:55,320 --> 00:37:56,970 Sonrakı fərqlənir gedir. 611 00:37:56,970 --> 00:37:57,930 Belə ki, Step burada bizə gətirəcək. 612 00:37:57,930 --> 00:38:02,100 Step, addım, addım, addım, addım, addım, və biz əbədi yalnız sonsuz loop lazımdır. 613 00:38:02,100 --> 00:38:06,810 >> Beləliklə, siz kimi istifadə almaq bilər Sizin sonsuz loops müəyyən yolu, 614 00:38:06,810 --> 00:38:08,960 yalnız bu Enter düyməsini keçirilməsi Zorlandığınız yerləşir görürük. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 Var ki, nə yaxşı yolları var, lakin indi ki, mükəmməl kifayətdir. 617 00:38:14,780 --> 00:38:17,967 Və stylistically, Style uyğun 50, mən bu həyata olmalıdır. 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 >> Belə ki, son bir komanda təqdim. 621 00:38:28,400 --> 00:38:30,810 Yaxşı, daxil debug gdb ili 622 00:38:30,810 --> 00:38:35,580 Belə ki, əvəzinə əsas da qırılma, əgər mən foo funksiyası həmçinin bilirik edir 623 00:38:35,580 --> 00:38:39,230 problem, sonra ola bilər yalnız əvəzinə, foo qırmaq etdi. 624 00:38:39,230 --> 00:38:42,310 Mən qırmaq deyirlər əsas və foo də. 625 00:38:42,310 --> 00:38:45,390 Belə ki, bir çox breakpoints bilərsiniz istədiyiniz kimi. 626 00:38:45,390 --> 00:38:49,230 I run yazın, o gedir Bu dayandırmaq üçün - 627 00:38:49,230 --> 00:38:52,180 ooh, çünki nin compile bildirin Mən hər şeyi dəyişdi. 628 00:38:52,180 --> 00:38:55,950 Bu xətt, Warning, mənbə görəcəksiniz fayl yürütülebilir daha son deyil. 629 00:38:55,950 --> 00:38:59,680 Belə ki, mən yalnız burada getdi o deməkdir ki, və Style uyğun bu dəyişdi 630 00:38:59,680 --> 00:39:03,100 50, lakin mən derleyeceğiz etməyib proqram. 631 00:39:03,100 --> 00:39:04,870 Belə ki, gdb ki, məni xəbərdar edir. 632 00:39:04,870 --> 00:39:10,130 Mən yenə debug etmək, çıxmaq lazımdır gdb debug edib. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Belə ki, indi geri mən bunu nə. 635 00:39:12,800 --> 00:39:15,720 Əsas, break foo ayırın. 636 00:39:15,720 --> 00:39:20,680 İndi proqram run, belə ki, əgər xit qədər davam bir 637 00:39:20,680 --> 00:39:21,320 breakpoint. 638 00:39:21,320 --> 00:39:24,680 Bu breakpoint olur əsas da ilk biri. 639 00:39:24,680 --> 00:39:28,630 İndi əvəzinə növbəti etdiyini, növbəti, növbəti, növbəti, növbəti, foo hit qədər, mən 640 00:39:28,630 --> 00:39:35,230 davam edəcək, davam edəbilərsiniz növbəti breakpoint hit qədər. 641 00:39:35,230 --> 00:39:37,200 Mən ilk tam daxil etmək lazımdır. 642 00:39:37,200 --> 00:39:40,570 Mən hit qədər davam edəcək Davam ki, növbəti breakpoint, 643 00:39:40,570 --> 00:39:43,320 foo funksiyası. 644 00:39:43,320 --> 00:39:50,130 >> Bir hit qədər Run davam edəcək zaman breakpoint, lakin yalnız run yazın 645 00:39:50,130 --> 00:39:54,060 Siz, sonra proqram başlayaraq, edirik sonra, bu davam edir. 646 00:39:54,060 --> 00:40:01,950 Mən yalnız əsas qırmaq idi və əgər sonra qaçdı, o qırmaq lazımdır 647 00:40:01,950 --> 00:40:03,670 sonra əsas, və davam edir. 648 00:40:03,670 --> 00:40:10,050 Mən foo bir fasilə point var, yoxdur-ci ildən Bu tam daxil edin, sonra indi mən 649 00:40:10,050 --> 00:40:11,380 foo at qırmaq niyyətində deyil. 650 00:40:11,380 --> 00:40:16,318 Bu, yalnız sonsuz olacaq ki, qədər loop. 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 >> Belə ki, gdb Intro var. 654 00:40:24,420 --> 00:40:27,790 Siz onu istifadə başlamaq lazımdır Sizin problem dəstləri. 655 00:40:27,790 --> 00:40:30,550 Bu, çox faydalı ola bilər bugs müəyyən etmək. 656 00:40:30,550 --> 00:40:35,280 Həqiqətən, yalnız, line-by-line getmək varsa, Sizin kod vasitəsilə, və nə müqayisə 657 00:40:35,280 --> 00:40:39,740 həqiqətən gözləmək nə ilə baş baş, sonra bu, olduqca 658 00:40:39,740 --> 00:40:41,060 sizin hataları miss çətindir. 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 >> Belə ki, ötən həftə David bu tərbiyə üçün gizli-əsas Kriptoqrafiya stuff 663 00:40:54,040 --> 00:40:59,350 biz istəmirəm ilk dəfə, parol yalnız saxlanılır bizim 664 00:40:59,350 --> 00:41:03,210 bir düz mətn faylı kompüter, Ü kimsə və yalnız gələ bilər 665 00:41:03,210 --> 00:41:04,660 açmaq və onları oxumaq. 666 00:41:04,660 --> 00:41:07,530 İdeal halda, onlar şifrelenmiş olacaq bir şəkildə. 667 00:41:07,530 --> 00:41:13,340 Və Problem Set 2, Siz məşğul olacaq şifreleme bir üsulu ilə, 668 00:41:13,340 --> 00:41:16,520 və ya, yaxşı, iki metod, lakin onlar böyük deyil. 669 00:41:16,520 --> 00:41:20,050 Siz hacker nəşr nə varsa, siz da məşğul olacaq 670 00:41:20,050 --> 00:41:22,150 bəzi şeylər decrypting. 671 00:41:22,150 --> 00:41:29,770 >> Belə ki, məsələ indi də, hətta halda, biz güclü şifreleme var 672 00:41:29,770 --> 00:41:34,830 Dünyada alqoritm, əgər bir seçmək xüsusilə yoxsul parol, o, 673 00:41:34,830 --> 00:41:37,720 , çox sizə kömək edəcək bu yana insanların hələ də anlamaq olacaq. 674 00:41:37,720 --> 00:41:41,530 Şifreli simli görən və hətta bu zibil bir mess kimi görünür 675 00:41:41,530 --> 00:41:44,760 əgər ki, onlara heç bir şey deməkdir hələ yalnız bir neçə parol cəhd lazımdır 676 00:41:44,760 --> 00:41:50,560 Əgər bunu anlamağa çox təhlükəsiz deyil. 677 00:41:50,560 --> 00:41:55,890 Belə ki, bir video seyr ki, işarə edir. 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 >> -Kask, siz şeytan. 681 00:42:02,100 --> 00:42:03,370 Nə olub? 682 00:42:03,370 --> 00:42:05,170 Əgər qızım nə edirlər? 683 00:42:05,170 --> 00:42:09,910 >> Parlaq təqdim etmək mənə icazə gənc plastik cərrah Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin ən böyük burun bütün, iş adamı 685 00:42:13,730 --> 00:42:16,080 kainat, və Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Əlahəzrət. 687 00:42:17,210 --> 00:42:18,070 >> -Burun iş? 688 00:42:18,070 --> 00:42:18,670 Mən başa düşmürəm. 689 00:42:18,670 --> 00:42:20,090 O, artıq bir burun iş idi oldu. 690 00:42:20,090 --> 00:42:21,910 Bu şirin on altı idi. 691 00:42:21,910 --> 00:42:22,140 >> -No. 692 00:42:22,140 --> 00:42:23,690 Bu nə deyil. 693 00:42:23,690 --> 00:42:25,420 Bu, çox, çox pis. 694 00:42:25,420 --> 00:42:30,300 Siz mənə birləşməsi vermir varsa hava qalxan, Dr Schlotkin olacaq 695 00:42:30,300 --> 00:42:34,226 onun köhnə burun qızı geri verir. 696 00:42:34,226 --> 00:42:35,476 >> -No. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Harada ki, əldə etdiniz? 699 00:42:40,516 --> 00:42:41,440 >> -Bütün hüququ. 700 00:42:41,440 --> 00:42:42,180 Mən deyim. 701 00:42:42,180 --> 00:42:43,381 Mən deyim. 702 00:42:43,381 --> 00:42:44,263 Xeyr, daddy. 703 00:42:44,263 --> 00:42:45,590 Xeyr, olmaz. 704 00:42:45,590 --> 00:42:46,860 >> -Sen sağ, əziz. 705 00:42:46,860 --> 00:42:48,450 Mən sizin yeni burun miss lazımdır. 706 00:42:48,450 --> 00:42:52,090 Amma ona birləşməsi demək deyil, nə olursa olsun. 707 00:42:52,090 --> 00:42:53,680 >> -Çox yaxşı. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, sizin ən pis edin. 709 00:42:55,685 --> 00:42:56,914 >> -Mənim zövq. 710 00:42:56,914 --> 00:43:00,690 >> [TOOLS itilənmiş] 711 00:43:00,690 --> 00:43:01,910 >> -No. 712 00:43:01,910 --> 00:43:02,520 Gözləyin. 713 00:43:02,520 --> 00:43:03,836 Gözləyin. 714 00:43:03,836 --> 00:43:05,300 Mən deyim. 715 00:43:05,300 --> 00:43:06,880 Mən deyim. 716 00:43:06,880 --> 00:43:09,130 >> -Mən bunu bilirdik. 717 00:43:09,130 --> 00:43:09,900 Bütün hüquqlar. 718 00:43:09,900 --> 00:43:12,850 Mənə verin. 719 00:43:12,850 --> 00:43:16,918 >> -Birləşməsi biridir. 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 >> -İki. 723 00:43:19,358 --> 00:43:19,846 >> -İki. 724 00:43:19,846 --> 00:43:20,822 >> -İki. 725 00:43:20,822 --> 00:43:21,310 >> -Üç. 726 00:43:21,310 --> 00:43:21,798 >> -Üç. 727 00:43:21,798 --> 00:43:22,774 >> -Üç. 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 >> -Beş. 732 00:43:27,010 --> 00:43:27,670 >> -Beş. 733 00:43:27,670 --> 00:43:29,010 >> -Beş. 734 00:43:29,010 --> 00:43:34,770 >> -Yaxşı birləşməsi biridir iki, üç, dörd, beş. 735 00:43:34,770 --> 00:43:37,460 Bu stupidest birləşməsi var Mən heç həyatımda eşitdim. 736 00:43:37,460 --> 00:43:39,710 Ki, bir şey cür bir idiot var onun baqaj var ki. 737 00:43:39,710 --> 00:43:42,000 >> Sizin Əlahəzrət, sizə təşəkkür edirik. 738 00:43:42,000 --> 00:43:43,530 >> -Nə oldu? 739 00:43:43,530 --> 00:43:44,490 >> -Mən divar off çıxdı. 740 00:43:44,490 --> 00:43:45,420 >> -No etmədi. 741 00:43:45,420 --> 00:43:45,840 Siz bütün film söndürülür. 742 00:43:45,840 --> 00:43:46,930 >> Mən səhv düyməni basdı olmalıdır. 743 00:43:46,930 --> 00:43:48,265 >> -Yaxşı, geri qoydu. 744 00:43:48,265 --> 00:43:49,110 Film geri qoyun. 745 00:43:49,110 --> 00:43:49,510 >> -Bəli, efendim. 746 00:43:49,510 --> 00:43:49,917 Bəli, efendim. 747 00:43:49,917 --> 00:43:50,324 >> Nin, Arnold getmək edək. 748 00:43:50,324 --> 00:43:51,140 , Gretchen gel. 749 00:43:51,140 --> 00:43:53,060 Əlbəttə ki, mən hələ lazımdır bilirik Bunun üçün qanun var. 750 00:43:53,060 --> 00:43:53,440 >> [END Video playback] 751 00:43:53,440 --> 00:43:54,690 >> Rob Boden: Bütün hüququ. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Biz artıq söhbət edirik Belə ki, indi ki, bəzi yollarla təhlükəsizlik, gözəl 754 00:44:08,430 --> 00:44:16,050 az film poster, belə ki, son NSA ilə gün, bu məsələlər 755 00:44:16,050 --> 00:44:17,300 hər şeyi monitorinq. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Bu sizin kimi hiss etmək çətin ola bilər Bu gizlilik bir növ var 758 00:44:26,930 --> 00:44:34,540 online dünya, mən deyə bilmədi Siz prizma məlumat ən. 759 00:44:34,540 --> 00:44:42,130 Belə ki, prizma kənarda hərəkət, biz fikrində deyilik İndi ki, söhbət etmək 760 00:44:42,130 --> 00:44:44,030 Sizin laptop haqqında düşünmək. 761 00:44:44,030 --> 00:44:48,360 Belə ki, burada, mən keçmək istəyirəm mənim faktiki hesabına, 762 00:44:48,360 --> 00:44:50,370 mənim kiçik pinqvin ilə. 763 00:44:50,370 --> 00:44:57,310 Mən bir parol dəsti var ki, Parolu Mən olmaq istəyirəm nə. 764 00:44:57,310 --> 00:45:02,430 >> Amma unutmayın ki, nə mən giriş alıram , belə ki, bu giriş ilə 765 00:45:02,430 --> 00:45:04,850 tez, bəzi proqramdır. 766 00:45:04,850 --> 00:45:07,910 Bu idi ki, bəzi proqram bir şəxs tərəfindən yazılı. 767 00:45:07,910 --> 00:45:13,250 Və belə ki, şəxs, əgər onlar xüsusilə zərərli, onlar bilər 768 00:45:13,250 --> 00:45:17,780 dedi, bütün sağ, belə ki, əgər parol Mən daxil bərabərdir mənim 769 00:45:17,780 --> 00:45:22,800 faktiki parol, və ya bərabər bəzi xüsusi parol - 770 00:45:22,800 --> 00:45:25,550 David zəhmli və ya bir şey - 771 00:45:25,550 --> 00:45:27,190 sonra onları içəri buraxa 772 00:45:27,190 --> 00:45:33,760 Belə ki, bir zərərli proqramçı ola bilər Mac bütün və ya giriş 773 00:45:33,760 --> 00:45:36,150 Windows, və ya bir şey. 774 00:45:36,150 --> 00:45:41,980 >> Belə ki, ildən, bir narahatlıq çox deyil Mən demək, Bu giriş proqram 775 00:45:41,980 --> 00:45:48,720 ki, OS X, yüzlərlə sövq edir və ya minlərlə var 776 00:45:48,720 --> 00:45:50,020 Bu kodu nəzərdən. 777 00:45:50,020 --> 00:45:55,330 Və belə ki, siz haradasa kodunu, əgər Bu string bərabərdir bərabərdir demək 778 00:45:55,330 --> 00:45:58,860 David zəhmli, giriş, sonra kimsə var olacaq, kimi, gözləyin. 779 00:45:58,860 --> 00:45:59,800 Bu doğru deyil. 780 00:45:59,800 --> 00:46:01,790 Burada olmamalıdır. 781 00:46:01,790 --> 00:46:06,650 Belə ki, biz hər şeyi almaq bir yolu var cür təhlükəsiz olmalıdır. 782 00:46:06,650 --> 00:46:10,300 >> Lakin hətta proqramları haqqında düşünmək Siz yazmaq. 783 00:46:10,300 --> 00:46:13,000 Siz giriş proqramı yazdı deyirlər. 784 00:46:13,000 --> 00:46:20,440 Yazırdı ki, bu giriş proqram, belə açıq-aydın, bir yaxşı 785 00:46:20,440 --> 00:46:21,210 proqramçı. 786 00:46:21,210 --> 00:46:25,610 Siz hər hansı bir zərərli qoymaq fikrində deyilik x bərabərdir bərabərdir əgər David zəhmli deyil 787 00:46:25,610 --> 00:46:27,860 kodu daxil. 788 00:46:27,860 --> 00:46:31,930 Lakin bu proqram, nə Bu proqram tərtib etmək üçün istifadə? 789 00:46:31,930 --> 00:46:34,180 Cingilti kimi bir şey. 790 00:46:34,180 --> 00:46:38,460 Belə ki, nə əgər baş verən şəxs cingilti qoruyucu cingilti xüsusi yazmaq 791 00:46:38,460 --> 00:46:44,310 bir şey kimi mən tərtib edirəm əgər proqram daxil, sonra bu kodu daxil edin 792 00:46:44,310 --> 00:46:49,720 əgər deyir ki, giriş proqramı x bərabərdir David zəhmli deyil bərabərdir? 793 00:46:49,720 --> 00:46:59,890 Belə ki, tamamilə hələ, lakin biz eyni var burada vermək, harada cingilti, yaxşı, 794 00:46:59,890 --> 00:47:03,790 min, əgər on minlərlə insanlar var, cingilti baxdı var 795 00:47:03,790 --> 00:47:07,160 kodu öz xətti baxdı və dedi, bütün sağ, burada pis bir şey yoxdur. 796 00:47:07,160 --> 00:47:10,680 Aydındır ki, heç bir edir Bu zərərli bir şey. 797 00:47:10,680 --> 00:47:15,780 >> Amma nə kimi, özünü cingilti edir nə cingilti tərtib əgər? 798 00:47:15,780 --> 00:47:20,900 Mən bəzi compiler var ki, əgər cingilti daxil edər ki, cingilti tərtib 799 00:47:20,900 --> 00:47:25,610 deyir ki, bu xüsusi hack, bütün sağ, Mən cingilti tərtib edərkən, sonra 800 00:47:25,610 --> 00:47:31,290 çalıştırılabilir Mən xüsusi baxmaq lazımdır almaq giriş proqram və insert daxilində 801 00:47:31,290 --> 00:47:34,230 Bu parol, bərabərdir bərabərdir Dave zəhmli deyil? 802 00:47:34,230 --> 00:47:37,990 Belə ki, unutmayın ki, compiler özü bir nöqtədə tərtib etmək lazımdır. 803 00:47:37,990 --> 00:47:42,810 Belə ki, cingilti tərtib seçə nə , özü sonra, zərərli ilə 804 00:47:42,810 --> 00:47:45,580 bütün berbat bilər yol aşağı xətti. 805 00:47:45,580 --> 00:47:49,630 >> Odur ki, biz Ken Thompson var və Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Belə ki, bu iconic şəkil var. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie doğru deyil. 808 00:47:55,470 --> 00:47:58,740 O, bir böyük - 809 00:47:58,740 --> 00:48:03,640 olduqca çox C. yazdı Belə ki, siz Bu sinif görə təşəkkür edirəm. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson sol var. 811 00:48:04,840 --> 00:48:07,780 Onlara iki əsasən UNIX yazdı. 812 00:48:07,780 --> 00:48:10,140 Bəli, onlar əsas amil olmuşdur UNİX. 813 00:48:10,140 --> 00:48:11,310 Bəzi başqaları var idi. 814 00:48:11,310 --> 00:48:16,240 Bir nöqtədə belə Ken Thompson, O Turing mükafatı qazanır. 815 00:48:16,240 --> 00:48:20,860 Və Turing mükafatı, mən həmişə eşitdim bu şəkildə istinad, bu var 816 00:48:20,860 --> 00:48:23,100 Kompüter elminin Nobel mükafatı. 817 00:48:23,100 --> 00:48:27,500 >> Belə ki, Turing mükafatı, o var onun qəbul çıxış. 818 00:48:27,500 --> 00:48:31,790 Və o, bu çox məşhur danışma verir indi güvənərək Reflections çağırıb 819 00:48:31,790 --> 00:48:35,620 Biz bağlı olan Trust, kurs veb haqqında. 820 00:48:35,620 --> 00:48:41,670 Və bu danışmada, o, bütün doğru deyir Mən UNIX yazdı və indi bütün 821 00:48:41,670 --> 00:48:43,320 Siz insanlar UNIX istifadə olunur. 822 00:48:43,320 --> 00:48:46,960 İndi Linux bu gün xatırlayıram UNIX birbaşa nəslindən. 823 00:48:46,960 --> 00:48:50,140 OS X birbaşa UNIX istifadə edir. 824 00:48:50,140 --> 00:48:53,810 Windows qədər deyil, amma bir çox fikir UNIX götürülmüşdür. 825 00:48:53,810 --> 00:48:59,220 >> Belə ki, o, mərhələsinə qədər gedir və deyir bütün sağ, mən UNIX yazdı. 826 00:48:59,220 --> 00:49:03,940 Və yalnız belə uşaqlar bilirsiniz, mən deyiləm hər daxil edə 827 00:49:03,940 --> 00:49:05,590 Sizin kompüter biri. 828 00:49:05,590 --> 00:49:14,280 X, mən bu xüsusi bir qoymaq ildən bərabərdir, Ken Thomson zəhmli deyil bərabərdir 829 00:49:14,280 --> 00:49:16,350 sonra giriş üçün icazə alıram. 830 00:49:16,350 --> 00:49:18,370 Belə ki, insanlar, yaxşı, kimi qarşıladıq bunu? 831 00:49:18,370 --> 00:49:21,090 Biz giriş proqramı baxdı və heç bir şey yoxdur. 832 00:49:21,090 --> 00:49:24,700 O, mən compiler redaktə kimi giriş proqram daxil 833 00:49:24,700 --> 00:49:30,490 giriş proqramı var ki, ki, x Ken Tekin bərabərdir bərabərdir 834 00:49:30,490 --> 00:49:31,700 zəhmli deyil. 835 00:49:31,700 --> 00:49:33,120 >> Və onlar da, doğru deyil, demək. 836 00:49:33,120 --> 00:49:35,740 Biz compiler baxaraq, və etdiyiniz compiler hər hansı xətləri yoxdur 837 00:49:35,740 --> 00:49:36,400 kimi kodu. 838 00:49:36,400 --> 00:49:40,540 O OK, kimi, ancaq nə compiler ilə tərtib? 839 00:49:40,540 --> 00:49:44,810 Və, yaxşı, kimi, onlar hesab edirəm ki, və o Mən sizə compiler verən biriyəm 840 00:49:44,810 --> 00:49:50,580 Siz compiler tərtib üçün istifadə, belə ki, etdiyiniz Siz, bir compiler tərtib olunur ki, 841 00:49:50,580 --> 00:49:56,390 özü zərərli və olacaq giriş proqram qırmaq. 842 00:49:56,390 --> 00:49:59,360 Belə ki, əsasən, o nöqtədə var Siz mənbə baxmaq bilər heç bir yol 843 00:49:59,360 --> 00:50:02,450 Giriş proqramının kodu yanlış nə görmək. 844 00:50:02,450 --> 00:50:04,220 Siz hətta baxmaq bilmədi Bu compiler mənbə kodu 845 00:50:04,220 --> 00:50:06,790 yanlış nə görmək. 846 00:50:06,790 --> 00:50:11,940 >> Siz maşın baxmaq lazımdır kodu, faktiki ikili 847 00:50:11,940 --> 00:50:16,760 Bu, gözləmək, görmək üçün tərtib compiler kodu xətləri burada olmamalıdır. 848 00:50:16,760 --> 00:50:22,130 Amma Ken Thompson bir addım atdı daha və yaxşı, var, dedi 849 00:50:22,130 --> 00:50:25,980 Bu xüsusi proqramlar əslində Siz proqramları ikili oxumaq kömək, 850 00:50:25,980 --> 00:50:29,340 və belə kimsə ki, proqram istifadə əgər ikili oxumaq, onlar bu görəcək 851 00:50:29,340 --> 00:50:30,490 kodu xətləri. 852 00:50:30,490 --> 00:50:34,020 O, bütün, demək həmin proqramların redaktə sağ, siz at arıyorsanız 853 00:50:34,020 --> 00:50:38,460 compiler, bu göstərmək deyil ikili set. 854 00:50:38,460 --> 00:50:42,830 >> Beləliklə siz almaq lazımdır ki, bir addım daha və əsasən ki, ola bilər 855 00:50:42,830 --> 00:50:46,210 dolaylı qəbul birdən çox səviyyəsi, və bir anda, heç bir həqiqətən var 856 00:50:46,210 --> 00:50:47,990 yoxlanılması olacaq. 857 00:50:47,990 --> 00:50:52,590 Belə ki, hekayə mənəvi siz istəyirik ki, yazılı etmək niyyətində deyil 858 00:50:52,590 --> 00:50:54,340 Bu sinif cingilti. 859 00:50:54,340 --> 00:50:57,020 Siz dırmanma istifadə etmək olacaq Bu sinif bir çox cingilti. 860 00:50:57,020 --> 00:51:00,490 Bildiyiniz bütün, cingilti bir zərərli hər sabote proqramı 861 00:51:00,490 --> 00:51:03,520 bir proqram Əgər tərtib etdik. 862 00:51:03,520 --> 00:51:08,206 Və çox uğursuz sizi tərk Çərşənbə günü görəcəksiniz, qeyd. 863 00:51:08,206 --> 00:51:10,030 >> [Alqış] 864 00:51:10,030 --> 00:51:12,935 >> HOPARLÖR 2: Növbəti CS50 edir. 865 00:51:12,935 --> 00:51:14,580 >> HOPARLÖR 3: Siz demək cəsarət etməyin. 866 00:51:14,580 --> 00:51:15,930 Siz bunu edə bilərsiniz. 867 00:51:15,930 --> 00:51:19,440 Siz əvvəl bu etdik, siz bunu edə bilərsiniz bu gün, sabah bunu edə bilərsiniz. 868 00:51:19,440 --> 00:51:20,930 Siz ildir bunu etdik. 869 00:51:20,930 --> 00:51:22,790 Just orada getmək və bunu. 870 00:51:22,790 --> 00:51:24,310 Siz bunu edə bilərsiniz. 871 00:51:24,310 --> 00:51:26,102 >> [MUSIC PLAYING]