1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Gözden geçirmek - Problem Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvard Universiteti] 3 00:00:05,170 --> 00:00:07,490 [Bu CS50 edir. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Bütün hüquqlar. Salam, hər kəs və gözden geçirmek 2 salamlayıram. 5 00:00:10,750 --> 00:00:14,330 Birincisi, mən pset 1 bitirdikdən üçün sizi təbrik etmək istəyirəm. 6 00:00:14,330 --> 00:00:18,140 Hesab edirəm ki, siz bəzi bir az çətin ola bilərdi bilirik ki, 7 00:00:18,140 --> 00:00:20,460 siz yazırdı ki, ilk kompüter proqramı ola bilərdi, 8 00:00:20,460 --> 00:00:24,500 ancaq, siz semestr sonunda geri baxmaq zaman, bu ilin sonunda unutmayın 9 00:00:24,500 --> 00:00:29,820 siz pset 1 baxmaq lazımdır və siz ki, "5 dəqiqə. Hey, mən edə bilərdi", deyə bilərsiniz 10 00:00:29,820 --> 00:00:35,700 Belə ki, bilir və bu ilin sonunda mütləq olduqca sadə pset 1 tapa bilərsiniz ki, etibar. 11 00:00:35,700 --> 00:00:40,640 Amma indi, bu abadlıq, və görülən almaq üçün təbriklər. 12 00:00:40,640 --> 00:00:44,010 İndi də tez qeyd biz gözden geçirmek və ət almaq əvvəl. 13 00:00:44,010 --> 00:00:48,340 Mən yalnız mən bəzən kifayət qədər vaxt yoxdur ki, tez qeyd etmək istəyirəm 14 00:00:48,340 --> 00:00:52,500 bu walkthroughs zamanı problem set bunu hər bir yolla getmək 15 00:00:52,500 --> 00:00:56,140 və deyil, yalnız bəlkə həyata 1 və ya 2 cür diqqət 16 00:00:56,140 --> 00:00:57,750 Bunu ki, yolları. 17 00:00:57,750 --> 00:01:01,970 Amma siz başqa şəkildə bunu qadağan olunur ki, demək deyil. 18 00:01:01,970 --> 00:01:05,980 Şeyler çoxsaylı yollarla, kompüter kimi, tez-tez var 19 00:01:05,980 --> 00:01:12,190 və belə mütləq mən təqdim edə bilər daha həlli müxtəlif növ istifadə edə bilərsiniz. 20 00:01:12,190 --> 00:01:14,520 [Pset 2: Kripto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. Suallar bir Bölmə - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Bütün hüquqlar. Belə ki, problem 2 seçin: Kripto bir əyləncə biridir. 23 00:01:20,650 --> 00:01:24,500 Yenə hər pset ilə sual bölmə ilə başlamaq lazımdır 24 00:01:24,500 --> 00:01:29,600 sizin təyin tədris fellow ilə bölmələrdə aparılır olacaq. 25 00:01:29,600 --> 00:01:31,670 Biz, gözden geçirmek artıq bu yolu getmək niyyətində deyil 26 00:01:31,670 --> 00:01:35,100 lakin onlar mütləq siz pset tam kömək edəcək. 27 00:01:35,100 --> 00:01:38,100 Yəni problem set ilk hissəsi Caesar edir. 28 00:01:38,100 --> 00:01:43,470 Və Sezar kimsə, bir tam olan bir əsas keçiriləcək 29 00:01:43,470 --> 00:01:48,420 və onlar təmin edən mətn string şifrelemek edəcək 30 00:01:48,420 --> 00:01:50,670 və şifreli bir şey geri verir. 31 00:01:50,670 --> 00:01:56,050 Hər kəs A Christmas Story seyr varsa, orada ki, bir misal var. 32 00:01:56,050 --> 00:01:59,090 Sonra problem set ikinci hissəsi, Vigenere edir 33 00:01:59,090 --> 00:02:01,790 bir daha inkişaf etmiş şifreleme texnikadır. 34 00:02:01,790 --> 00:02:05,640 Və biz, mətn parçası encipher olacaq 35 00:02:05,640 --> 00:02:09,600 əvəzinə yalnız bir tam olmaqla, biz, həqiqətən, bu kodlar olacaq 36 00:02:09,600 --> 00:02:13,340 istifadəçi bizi təmin edəcək bir söz ilə. 37 00:02:16,270 --> 00:02:22,090 OK, belə Toolbox bu gün ilk alət faktiki cihaz yenilənməsi olacaq. 38 00:02:22,090 --> 00:02:26,430 Müzakirə board biz, kimi şeylər görəcəklər "Niyə bu iş deyil?" 39 00:02:26,430 --> 00:02:28,110 "Niyə 50 iş təqdim etmir?" 40 00:02:28,110 --> 00:02:31,830 və tez-tez həll sizin cihaz yeniləmək üçün yalnız əslində. 41 00:02:31,830 --> 00:02:36,730 Və yalnız cihaz sudo yum-y bir terminal pəncərə çalışır əgər - 42 00:02:36,730 --> 00:02:40,040 ki, bəli deyən bir bayrağı var, hər şeyi yeniləmək - yeniləmə, 43 00:02:40,040 --> 00:02:42,280 ehtiyac varsa, onda sizin cihaz yeniləyir. 44 00:02:42,280 --> 00:02:46,960 Əgər siz artıq cihaz ən son versiyası, əgər bu zərər deyil. 45 00:02:46,960 --> 00:02:51,280 Sonra yalnız yeni güncellemeler demək olacaq və siz boyunca iş davam edə bilərsiniz. 46 00:02:51,280 --> 00:02:55,800 Amma bu da siz cihaz açmaq hər zaman yerinə yaxşı 47 00:02:55,800 --> 00:02:57,140 biz hələ çox istəyirik, çünki - 48 00:02:57,140 --> 00:03:00,320 Aracın bu təyinat - bəzən biz bir səhv gəlmək əgər. 49 00:03:00,320 --> 00:03:03,180 Beləliklə, siz cihaz ən son versiyası əmin olun 50 00:03:03,180 --> 00:03:07,710 və güncellemeniz axır. 51 00:03:07,710 --> 00:03:14,360 Bütün hüquqlar. Biz məktubları ilə məşğul olan və dəyişən şeylər enciphering, etdiyiniz Belə ildən 52 00:03:14,360 --> 00:03:20,410 biz, həqiqətən, bizim ASCII chart ilə yaxşı dost olmaq istəyirəm olacaq. 53 00:03:20,410 --> 00:03:24,350 Tapa əgər çox olanlar, online. Bəlkə öz etmək belə. 54 00:03:24,350 --> 00:03:29,950 Ümumiyyətlə, hər məktubu və hər bir sayı və hər bir xarakteri ilə 55 00:03:29,950 --> 00:03:32,210 onlara ilə bağlı bir sıra var 56 00:03:32,210 --> 00:03:38,670 və belə ki, faktiki məktub yanaşı onların ASCII dəyərləri görmək yaxşı. 57 00:03:38,670 --> 00:03:42,310 Bu mütləq problem müəyyən kömək edəcək. 58 00:03:42,310 --> 00:03:45,750 Həqiqətən bu problem müəyyən mənə kömək ki, bir şey, həqiqətən, çap idi 59 00:03:45,750 --> 00:03:48,380 Mən keçir kimi, mən, həqiqətən, bu barədə çəkmək olardı 60 00:03:48,380 --> 00:03:51,150 , yazmaq "Bu orada getmək varsa, sonra ..." 61 00:03:51,150 --> 00:03:55,270 Şərti onu çəkmək və onu qeyd edin ASCII masa ilə yaxşı dost olurlar. 62 00:03:57,240 --> 00:04:00,750 Sonra biz sərəncamında bir neçə digər alətlər var. 63 00:04:00,750 --> 00:04:03,750 Bu dəfə əvəzinə faktiki olaraq onların daxil bütün istifadəçi isteyen 64 00:04:03,750 --> 00:04:05,230 biz bir yerdə nə olacaq. 65 00:04:05,230 --> 00:04:06,880 Biz bir giriş üçün onlara təklif olacaq 66 00:04:06,880 --> 00:04:11,350 lakin biz də yalnız command line arguments istifadə olacaq. 67 00:04:11,350 --> 00:04:15,600 Belə ki, onlar öz proqram çalıştırdığınızda, adətən deyirsiniz. / Hello, məsələn, 68 00:04:15,600 --> 00:04:17,310 proqram hello.c idi. 69 00:04:17,310 --> 00:04:22,500 Amma bu dəfə yerine ki, onlar sonradan sözləri, arqumentlər qoya bilər. 70 00:04:22,500 --> 00:04:27,210 Onlar həmçinin onların daxil olaraq bizə keçmək nə və biz istifadə etmək olacaq 71 00:04:27,210 --> 00:04:31,720 belə ki, yalnız tam üçün isteyen kənarda hərəkət həm də command line arguments istifadə edərək. 72 00:04:31,720 --> 00:04:36,590 Və sonra biz həmçinin çox istifadə bilərsiniz seriallarda və strings, getmək lazımdır. 73 00:04:41,460 --> 00:04:44,810 Burada 1 mini ASCII chart yalnız bir misal var. 74 00:04:44,810 --> 00:04:48,460 Dediyim kimi, hər məktub, bir sıra uyğun 75 00:04:48,460 --> 00:04:52,510 və ki, ilə tanış olun. Bu lazımlı olacaq. 76 00:04:52,510 --> 00:04:55,610 Və sonra biz nömrələri ilə məşğul olan bəzi ASCIIMath bunu başlattığınızda - 77 00:04:55,610 --> 00:05:00,110 onlara subtracting, əlavə - Bu chart müraciət sonra mütləq yaxşı. 78 00:05:02,860 --> 00:05:06,920 Siz ifa ola bilər ki, bir şey - Belə ki, burada bir Sezar parol bir misal var. 79 00:05:06,920 --> 00:05:11,190 Bu yalnız bir təkər var. Əsasən, xarici əlifba var və sonra daxili əlifba var. 80 00:05:11,190 --> 00:05:15,290 Belə ki, burada olan Sezar parol, lakin 0 düyməsi ilə bir nümunəsidir. 81 00:05:15,290 --> 00:05:21,540 Z. qədər Əsasən, A A ilə uzlaşdırılmışdır, B B uyğun, bütün yol 82 00:05:21,540 --> 00:05:26,590 Amma sonra biz məsələn, 3 əsas istədiyini deyirlər. 83 00:05:26,590 --> 00:05:33,280 A indi D, s aligns ki, biz daxili təkər dönüşümlü olacaq 84 00:05:33,280 --> 00:05:35,250 Və bu biz nə olacaq nə mahiyyətcə edir. 85 00:05:35,250 --> 00:05:38,340 Biz tam yoxdur, lakin nə biz nə olacaq proqram etmək olunur 86 00:05:38,340 --> 00:05:44,490 cür nömrələri müəyyən bizimlə birlikdə əlifba tutulub. 87 00:05:44,490 --> 00:05:48,650 Mən əvvəl qeyd etdi ki, biz command line dəlilləri ilə məşğul olmaq üçün olacaq 88 00:05:48,650 --> 00:05:50,390 eləcə də tam almaq kimi. 89 00:05:50,390 --> 00:05:55,050 Belə bir istifadəçi Caesar proqram run ki, yol söyləyərək edir. / Sezar 90 00:05:55,050 --> 00:05:58,090 və sonra sonra bir sıra daxil. 91 00:05:58,090 --> 00:06:01,130 Və sayı düyməsi, shift, təmsil 92 00:06:01,130 --> 00:06:06,740 necə çox siz Sezar parol daxili təkər fırlanan etmək olacaq dəfə. 93 00:06:06,740 --> 00:06:08,390 Və burada bir nümunə oldu. 94 00:06:08,390 --> 00:06:14,550 Biz Caesar parol ilə A L olan hərflər daxil edin 95 00:06:14,550 --> 00:06:19,520 onda, ey vasitəsilə daxil D 3 dəfə keçdikdə hər məktub, çünki ki, 96 00:06:19,520 --> 00:06:22,080 yalnız Mən sizə göstərdi ki, Sükan nümunə kimi. 97 00:06:22,080 --> 00:06:25,300 Beləliklə siz daxil olduqda, məsələn, Bu CS50 edir! 98 00:06:25,300 --> 00:06:27,960 sonra da məktublar bütün hərəkət olardı. 99 00:06:27,960 --> 00:06:31,040 Və Sezar və Vigenere də mühüm şey 100 00:06:31,040 --> 00:06:34,890 biz hər hansı qeyri-məktub üzərində keçmək olacaq ki. 101 00:06:34,890 --> 00:06:39,160 Belə ki, hər hansı bir boşluq, simvol və s, nömrə, biz onlara eyni saxlamaq olacaq. 102 00:06:39,160 --> 00:06:42,920 Biz yalnız bu halda məktublar keçmək olacaq. 103 00:06:42,920 --> 00:06:45,870 Siz tam görmək Beləliklə, biz yalnız bizə olan məktublar var 104 00:06:45,870 --> 00:06:50,150 biz yalnız məktubları keçmək və məktubları şifrelemek istəyirəm. 105 00:06:51,370 --> 00:06:56,720 Etmək üçün ilk şey Belə ki, problem Caesar üçün istifadə 2 müəyyən gördüm ki, 106 00:06:56,720 --> 00:07:05,280 Siz terminal bu çalıştırdığınızda Caesar run və sonra bir sıra daxil edilir. 107 00:07:05,280 --> 00:07:10,940 Bəs biz nə etmək lazımdır birtəhər əsas almaq və daxil olmaq üçün edir. 108 00:07:10,940 --> 00:07:14,730 Və biz elə bu ikinci command line dəlil olacaq görmək istəyirik. 109 00:07:14,730 --> 00:07:20,950 İlk. / Sezar olacaq, və növbəti bir əsas nömrə olacaq. 110 00:07:22,190 --> 00:07:29,200 Biz C proqramları başlamaq üçün int əsas (void) idi. Belə ki, əvvəl 111 00:07:29,200 --> 00:07:31,790 Biz geri peel bir qat bir az olacaq 112 00:07:31,790 --> 00:07:34,720 və faktiki bax yerinə əsas funksiyası boşluq keçmək 113 00:07:34,720 --> 00:07:37,920 biz həqiqətən 2 parametrləri ilə məşğul olursunuz. 114 00:07:37,920 --> 00:07:44,070 Biz argc adlı int və sonra strings bir sıra argv çağırıb. 115 00:07:44,070 --> 00:07:46,030 Belə argc, bir tam deyil 116 00:07:46,030 --> 00:07:49,640 və bu proqram qəbul arqumentlər sayı təmsil edir. 117 00:07:49,640 --> 00:07:53,590 Və sonra argv həqiqətən keçdi mübahisələrin siyahısı. 118 00:07:53,590 --> 00:08:00,820 Dəlilləri bütün strings və belə argv strings bir sıra, bir siyahısını təqdim edir. 119 00:08:01,830 --> 00:08:03,990 Nin seriallarda bir az danışmaq edək. 120 00:08:03,990 --> 00:08:05,940 Diziler mahiyyətcə yeni data strukturu var. 121 00:08:05,940 --> 00:08:09,660 Biz iki dəfə ki, ints var biz strings var və indi biz seriallarda var. 122 00:08:09,660 --> 00:08:13,820 Diziler, eyni tipli çoxsaylı dəyərlər tuta bilən data strukturları var 123 00:08:13,820 --> 00:08:18,320 belə mahiyyətcə, istədiyiniz hər hansı tipli siyahısı. 124 00:08:18,320 --> 00:08:24,400 Əslində, bütün 1 dəyişən integers bir siyahısını istəyirdi, 125 00:08:24,400 --> 00:08:29,090 sonra növü int dizi olduğunu bir yeni dəyişən yarada bilər. 126 00:08:29,090 --> 00:08:34,450 Belə ki, diziler serialın ilk element index 0 olduğunu, yəni sıfır yönümlü edir. 127 00:08:34,450 --> 00:08:41,799 Serialın bu nümunə kimi uzunluğu 4,, onda son element, kataloq 3 olardı 128 00:08:41,799 --> 00:08:44,810 1 - 4 edir. 129 00:08:45,940 --> 00:08:48,420 Belə sıra yaratmaq, bu kimi bir şey olardı. 130 00:08:48,420 --> 00:08:51,440 Bir cüt sıra istədiyini deyirlər. 131 00:08:51,440 --> 00:08:56,520 Bu baxmayaraq, veri növü hər hansı bir növü üçün gedir. 132 00:08:56,520 --> 00:09:00,210 Bir cüt sıra istəyirəm deyirlər. Siz poçt qutunuza zəng etmək istədiyiniz söyləyin. 133 00:09:00,210 --> 00:09:04,760 Hər hansı digər ikiqat başlamaq olardı kimi, 134 00:09:04,760 --> 00:09:09,760 , siz ikiqat və sonra adını demək olardı, amma bu dəfə kvadrat mötərizə biz qoymaq 135 00:09:09,760 --> 00:09:13,570 və sonra sayı serialın uzunluğu olacaq. 136 00:09:13,570 --> 00:09:16,840 Diziler, biz heç uzunluğu dəyişə bilməz Qeyd edək ki, 137 00:09:16,840 --> 00:09:21,230 her zaman, neçə qutu müəyyən və seçmək üçün 138 00:09:21,230 --> 00:09:25,440 neçə dəyərlər array keçirilməsi davam edir. 139 00:09:25,440 --> 00:09:31,820 Belə ki, sıra müxtəlif dəyərlər qurmaq üçün, bu aşağıdakı sözdizimini istifadə etmək olacaq 140 00:09:31,820 --> 00:09:33,200 siz Slayd üzərində bax. 141 00:09:33,200 --> 00:09:37,620 Siz poçt qutusu index 0, 1.2 müəyyən olunacaq 142 00:09:37,620 --> 00:09:42,180 2.4 poçt qutusu index 1 set, və s. 143 00:09:42,180 --> 00:09:47,910 Belə ki, indi biz seriallarda bir az təhlil etdik ki, gəlin argc və argv geri imkan verir. 144 00:09:47,910 --> 00:09:52,220 Biz argv indi strings bir sıra olduğunu bilirik. 145 00:09:52,220 --> 00:09:55,080 Belə bir istifadəçi keçir zaman - onlar bir proqram çalışan etdiyiniz demək - 146 00:09:55,080 --> 00:09:58,740 deyirlər. / salam David Malan, 147 00:09:58,740 --> 00:10:05,160 Əgər siz artıq həqiqətən argc və argv nə ilə gəlmək olur proqramı nə olacaq. 148 00:10:05,160 --> 00:10:07,620 Belə ki, siz narahat ehtiyac yoxdur. 149 00:10:07,620 --> 00:10:14,370 Bu fəzalarında ayrılmış 3 fərqli sözlər görür, çünki bu halda Argc 3 olardı. 150 00:10:14,370 --> 00:10:18,850 Və bu halda serialın ilk index olacaq. / Hello, 151 00:10:18,850 --> 00:10:21,770 növbəti bir David, növbəti bir Malan. 152 00:10:21,770 --> 00:10:25,640 Hər argv arasında nə əlaqələr dərhal görür 153 00:10:25,640 --> 00:10:28,990  serialın və argc edir? 154 00:10:32,820 --> 00:10:38,090 Bəli. Biz args.c. nümunə olduğunu nəzərə almaq lazımdır 155 00:10:38,090 --> 00:10:42,880 Biz 2 arasında əlaqələr istifadə edə bilərsiniz əgər in nəzər salaq. 156 00:10:42,880 --> 00:10:46,550 Burada ləvazımatlı ki, tapa bilərsiniz default ərizə 157 00:10:46,550 --> 00:10:49,450 . c faylları açmaq üçün bəzən Emacs edir. 158 00:10:49,450 --> 00:10:54,660 Amma biz gedit ilə məşğul istəyirəm, nə edə bilərsiniz sağ C fayl vurun belə 159 00:10:54,660 --> 00:11:04,580 ilə açın Properties getmək, sonra default kimi seçin gedit, seçmək 160 00:11:04,580 --> 00:11:13,020 və artıq proqram gedit əvəzinə Emacs açılır. 161 00:11:14,710 --> 00:11:16,290 Mükəmməldir. 162 00:11:17,120 --> 00:11:25,520 Belə ki, burada mən hər command line argument çap etmək istəyirəm ki, bir proqram var. 163 00:11:25,520 --> 00:11:32,050 Nə istifadəçi giriş Beləliklə, mən mahiyyətcə yeni xətt onları geri qayıtmaq istəyirəm. 164 00:11:32,050 --> 00:11:36,710 Beləliklə, biz bir şey üzərində təkrarlamaq üçün istifadə edə bilərsiniz bir quruluşu var - 165 00:11:36,710 --> 00:11:40,380 siz yəqin ki, sizin pset 1-istifadə ki, bir şey? 166 00:11:40,380 --> 00:11:45,840 Siz şeyi bir müəyyən sıra ilə getmək istəyirsiniz? Edin >> Loop üçün [tələbə]. 167 00:11:45,840 --> 00:11:48,910 Loop üçün. Exactly. Belə ki, loop üçün başlamaq edək. 168 00:11:48,910 --> 00:11:56,900 Biz int i = 0 var. Gəlin bir standart başlatma dəyişən başlar. 169 00:11:56,900 --> 00:12:02,370 Mən bir set üçün şərt qoyub sonra i + +, orada şeyə gedən demək gedirəm. 170 00:12:02,370 --> 00:12:04,090 Bütün hüquqlar. 171 00:12:04,090 --> 00:12:11,590 Belə argv proqramı qəbul dəlilləri siyahısı varsa, argv geri düşünür 172 00:12:11,590 --> 00:12:15,380 və argc, proqram arqumentlər sayı 173 00:12:15,380 --> 00:12:21,280 o argc argv və mahiyyətcə uzunluğu, hüququ, o deməkdir ki, 174 00:12:21,280 --> 00:12:28,970 argc dəyəri kimi bir çox dəlilləri kimi olmalıdır edir çünki. 175 00:12:28,970 --> 00:12:35,910 Biz argv hər element üzərində təkrarlamaq istəyirəm əgər 176 00:12:35,910 --> 00:12:43,290 biz hər zaman bu göstərici ilə argv ildə dəyişən daxil istəyirəm olacaq. 177 00:12:43,290 --> 00:12:49,060 Bu doğru, bu ilə təmsil oluna bilər? 178 00:12:49,060 --> 00:12:53,430 Burada Bu dəyişən bu halda xüsusi string təmsil 179 00:12:53,430 --> 00:12:57,030 çünki bir string array var - nəzərə alsaq ki index da xüsusi string. 180 00:12:57,030 --> 00:13:00,690 Biz nə etmək istədiklərini, bu halda biz onu çap etmək istəyirəm, belə ki, printf deyək. 181 00:13:00,690 --> 00:13:04,680 İndi argv simli, belə ki, biz orada olan tutucu qoymaq istəyirik. 182 00:13:04,680 --> 00:13:08,430 Biz yalnız yaxşı baxmaq üçün yeni xətt istəyirəm. 183 00:13:08,430 --> 00:13:12,530 Belə ki, burada biz bir loop üçün var. Biz hələ vəziyyət yoxdur. 184 00:13:12,530 --> 00:13:20,020 Beləliklə, mən bu simli çap olacaq hər dəfə sonra, 0 başlayır və 185 00:13:20,020 --> 00:13:22,980 serialın ki, xüsusi index edir. 186 00:13:22,980 --> 00:13:28,410 Biz sıra elementlərinin çap dayandırmaq istəyirsiniz zaman? 187 00:13:28,410 --> 00:13:35,720 Biz Bitirdiğinizde, sağ? Biz serialın sonunda əldə etdiyiniz zaman. 188 00:13:35,720 --> 00:13:38,870 Belə ki, serialın uzunluğu keçmiş artıq istəmirəm 189 00:13:38,870 --> 00:13:43,700 və biz artıq biz həqiqətən fəal argv müddəti nə tapmaq üçün ehtiyac yoxdur bilirik 190 00:13:43,700 --> 00:13:47,520 çünki bizə verilmiş ki, nə var? Argc. Exactly. 191 00:13:47,520 --> 00:13:56,640 Beləliklə, biz dəfə bu prosesi argc sayı etmək istəyirəm. 192 00:13:56,640 --> 00:13:59,550 Mən doğru kataloq deyiləm. 193 00:14:02,100 --> 00:14:03,490 Bütün hüquqlar. 194 00:14:03,490 --> 00:14:08,990 İndi args edək. Böyük olan yoxdur səhvlər. 195 00:14:08,990 --> 00:14:11,430 Belə ki, yalnız args run bildirin. 196 00:14:11,430 --> 00:14:15,130 Bu bizə qaytarmaq üçün nə gedir? Bu, sadəcə geri çap olacaq. 197 00:14:15,130 --> 00:14:18,320 "Siz proqram args inputted Mən sizə geri vermək gedirəm." 198 00:14:18,320 --> 00:14:23,170 Belə ki, qoy biz sonra foo bar args demək istəyirəm deyirlər. 199 00:14:23,170 --> 00:14:26,570 Belə ki, o, bizə geri çap edir. Bütün hüquqlar? 200 00:14:26,570 --> 00:14:30,790 Beləliklə, siz argc və argv istifadə edə bilərsiniz necə bir misal var 201 00:14:30,790 --> 00:14:33,460 ki argc bilmədən argv müddəti təmsil. 202 00:14:33,460 --> 00:14:42,750 Siz serialın uzunluğu kənarda serialların çıxışı ilə heç deyil əmin olun 203 00:14:42,750 --> 00:14:45,140 C mütləq sizə bağırmaq edəcək. 204 00:14:45,140 --> 00:14:47,560 Siz seqmentasiyası günah deyilən bir şey almaq lazımdır 205 00:14:47,560 --> 00:14:52,470 hansı əsasən bir şey daxil olmaq üçün çalışdığınız deyərək, fun, heç vaxt 206 00:14:52,470 --> 00:14:55,000 mövcud deyil ki, sizə aid deyil. 207 00:14:55,000 --> 00:14:59,430 Belə ki, əmin olun, xüsusilə də sıfır indeksləşdirilməsi ilə, biz istəmirik - 208 00:14:59,430 --> 00:15:02,390 Biz uzunluğu 4 bir sıra varsa, məsələn kimi 209 00:15:02,390 --> 00:15:07,240 biz sıfır index da, 0-da başlayacaq ki array index 4 yoxdur. 210 00:15:07,240 --> 00:15:11,730 Biz 0 başlamaq zaman yalnız loops üçün kimi ikinci təbiət olacaq. 211 00:15:11,730 --> 00:15:13,610 Belə ki, yalnız mind ki, saxlamaq. 212 00:15:13,610 --> 00:15:22,590 Əgər uzaq kənarda olan bir sıra indeksi daxil olmaq istəmirəm. 213 00:15:26,710 --> 00:15:32,560 Beləliklə, biz necə çıxış cür artıq görürük 214 00:15:32,560 --> 00:15:35,930 da qəbul olunur ki, command line arguments 215 00:15:35,930 --> 00:15:41,330 Siz simli gördüm Lakin argv həqiqətən bir string array edir. 216 00:15:41,330 --> 00:15:45,740 Belə ki, hələ faktiki olaraq tam deyil, lakin Sezar biz integers ilə məşğul istəyirəm. 217 00:15:45,740 --> 00:15:54,430 Neyse, həqiqətən tam bir string çevirmək bilər ki, bizim üçün yaradılan bir funksiyası var. 218 00:15:54,430 --> 00:15:58,710 Biz onlara isteyen olduğunuz də burada biz istifadəçi girişi ilə məşğul deyil 219 00:15:58,710 --> 00:16:03,740 əsas burada daxil, belə ki, biz, həqiqətən, reprompt və deyə bilmərəm 220 00:16:03,740 --> 00:16:07,840 "Bu etibarlı deyil əgər Oh, demək, məni başqa tam verir." 221 00:16:07,840 --> 00:16:10,540 Amma biz hələ doğru istifadə üçün yoxlamaq lazımdır. 222 00:16:10,540 --> 00:16:13,520 Caesar onlar yalnız 1 ədəd keçmək üçün icazə verilir 223 00:16:13,520 --> 00:16:18,030 və onlar. / Sezar çalıştırmak və sonra onlar bir sıra var. 224 00:16:18,030 --> 00:16:23,660 Belə argc müəyyən olmalıdır. 225 00:16:23,660 --> 00:16:29,060 Onlar sizə. / Sezar və sonra əsas keçməli ne sayı ola bilər? 226 00:16:29,060 --> 00:16:32,920 Argc nədir? >> [Tələbə] 2. >> İki. Exactly. 227 00:16:32,920 --> 00:16:35,490 Beləliklə, siz argc 2 əmin etmək istəyirəm. 228 00:16:35,490 --> 00:16:39,620 Əks halda siz əsasən proqram run imtina edirlər. 229 00:16:39,620 --> 00:16:43,040 Əsas bu, int əsas deyir ki, bir funksiyası var 230 00:16:43,040 --> 00:16:47,360 belə sonra uğurlu proqramının sonunda yaxşı təcrübə qaytarılması 0 həmişə. 231 00:16:47,360 --> 00:16:50,840 Ki, Belə ki, onlar 3 command line arguments əvəzinə 2 vermək 232 00:16:50,840 --> 00:16:54,350 və ya siz kontrol lazımdır nə edəcəyik sonra, məsələn, 1 vermək 233 00:16:54,350 --> 00:16:59,900 və sonra heç deyərək 1 qayıtmaq, bu proqramı ilə davam edə bilməz. 234 00:16:59,900 --> 00:17:03,190 [Tələbə] yoxdur mətn bir yer ola bilməz. >> Əfv ediniz? 235 00:17:03,190 --> 00:17:06,780 [Tələbə] Siz şifrelemek çalışdığınız mətn bir yer ola bilməz. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Biz şifrelemek üçün çalışdığınız, mətn baxımından, əslində sonra gəlir 238 00:17:11,280 --> 00:17:13,970 ki, mətn vermək zaman. 239 00:17:13,970 --> 00:17:18,260 Belə ki, indi biz yalnız faktiki sayı, komanda arqumentlər kimi qəbul edirik 240 00:17:18,260 --> 00:17:21,579 olan Sezar şifreleme üçün faktiki shift. 241 00:17:21,579 --> 00:17:27,569 [Tələbə] yalnız 1 argc qarşı niyə 2 lazımdır? 1 ədəd mütləq var. 242 00:17:27,569 --> 00:17:32,200 Sağ. Biz argc üçün 2 lazımdır səbəb əvəzinə 1 243 00:17:32,200 --> 00:17:36,260 bir proqram run və deyəndə çünki. / Sezar və ya. / hello, 244 00:17:36,260 --> 00:17:38,280 əslində bir command line arqument kimi sayar. 245 00:17:38,280 --> 00:17:43,020 Belə ki, o, artıq 1 çəkir və belə sonra 1 əlavə giren edirik. 246 00:17:45,030 --> 00:17:49,440 Beləliklə, siz həqiqətən command line arqument bir string giren edirik. 247 00:17:49,440 --> 00:17:52,730 Siz istədiyiniz nə Sezar, biz, bir tam həll etmək istəyirik 248 00:17:52,730 --> 00:17:57,180 belə ki, bu atoi funksiyası istifadə edə bilərsiniz. 249 00:17:57,180 --> 00:18:02,850 Və əsasən, bu simli keçmək və sonra bir tam geri qayıdacaq 250 00:18:02,850 --> 00:18:06,070 bu tam o string etmək mümkün olur. 251 00:18:06,070 --> 00:18:10,960 Biz kimi printf ya GetString şeylər ilə məşğul olduğunuz zaman İndi xatırlayıram 252 00:18:10,960 --> 00:18:13,390 bizə xüsusi kitabxanaları daxildir. 253 00:18:13,390 --> 00:18:19,450 Belə ki, ilin əvvəlində biz kimi bir hash tag standart I / O. H, bir şey ilə başlamaq. 254 00:18:19,450 --> 00:18:22,430 Yaxşı, atoi, həmin kitabxana biri ərzində deyil 255 00:18:22,430 --> 00:18:26,600 belə nə var ki, hüququ kitabxana daxil var. 256 00:18:26,600 --> 00:18:32,720 Mən əl funksiyası müzakirə gözden geçirmek 1 geri xatırlayıram. 257 00:18:32,720 --> 00:18:37,110 Siz terminal insan yazın və sonra funksiyanı adı izlədi. 258 00:18:37,110 --> 00:18:39,720 Belə ki, onun istifadəsinin bütün siyahısını gətirəcək 259 00:18:39,720 --> 00:18:42,890 həm də ki, aid olan kitabxana yetişdirmək olacaq. 260 00:18:42,890 --> 00:18:47,000 Mən atoi ilə əl funksiyadan istifadə etmək üçün siz ki, tərk edəcəyik 261 00:18:47,000 --> 00:18:53,360 və atoi funksiyasından istifadə etmək üçün daxil lazım olan kitabxana anlamaq. 262 00:18:54,450 --> 00:18:57,670 Beləliklə, biz əsas var və indi bu düz mətn əldə gəlir 263 00:18:57,670 --> 00:19:01,820 və belə həqiqətən təklif yerləşir istifadəçi daxil olacaq ki,. 264 00:19:01,820 --> 00:19:05,540 Biz eyni damar belə GetInt və GetFloat məşğul və 265 00:19:05,540 --> 00:19:07,670 biz GetString ilə məşğul olmaq üçün olacaq. 266 00:19:07,670 --> 00:19:12,440 Isə ya loops mə Lakin bu halda biz istənilən do etmək lazım deyil. 267 00:19:12,440 --> 00:19:14,480 GetString mütləq bizə bir string verəcək 268 00:19:14,480 --> 00:19:17,630 və biz istifadəçi bizə verir nə şifrelemek olacaq. 269 00:19:17,630 --> 00:19:23,770 Belə ki, bu istifadəçi inputted strings bütün doğru olduğunu bilərik. 270 00:19:23,770 --> 00:19:24,670 Böyük. 271 00:19:24,670 --> 00:19:27,270 Belə ki, sonra bir dəfə əsas var və bir dəfə siz mətn var 272 00:19:27,270 --> 00:19:31,660 indi sol nə siz düz metin encipher üçün var. 273 00:19:31,660 --> 00:19:36,530 Just tez lingo artıq əhatə etmək, düz metin, istifadəçi verir nə 274 00:19:36,530 --> 00:19:41,030 və ciphertext onlara geri edir. 275 00:19:42,450 --> 00:19:45,850 Strings Belə ki, məktubu ilə həqiqətən məktubu vasitəsilə getmək etmək 276 00:19:45,850 --> 00:19:48,550 biz hər məktub keçmək üçün, çünki, 277 00:19:48,550 --> 00:19:51,390 ki strings anlamaq, əgər geri qat qabığı biz növ 278 00:19:51,390 --> 00:19:54,130 biz yalnız həqiqətən simvolların siyahısını olduğunu görürük. 279 00:19:54,130 --> 00:19:55,930 Bir başqa sonra gəlir. 280 00:19:55,930 --> 00:20:01,690 Onlar simvol Diziler, çünki biz seriallarda kimi strings müalicə edə bilər. 281 00:20:01,690 --> 00:20:05,640 , Mətn adlı simli belə demək 282 00:20:05,640 --> 00:20:09,400 və dəyişən mətn ərzində bu CS50 edir saxlanılır. 283 00:20:09,400 --> 00:20:15,680 Sonra index 0 mətn əsaslı T olardı index 1 saat, və s. Olacaq 284 00:20:17,530 --> 00:20:23,970 Və sonra seriallarda ilə args.c ildə argc məsələn, 285 00:20:23,970 --> 00:20:27,090 biz bir sıra üzərində təkrarlamaq olduğunu gördüm 286 00:20:27,090 --> 00:20:32,440 və biz i uzunluğu azdır qədər i əldə = 0 qədər təkrarlamaq idi. 287 00:20:32,440 --> 00:20:35,560 Belə ki, biz simli uzunluğu nə həyata figuring bəzi yol lazımdır 288 00:20:35,560 --> 00:20:37,090 biz artıq təkrarlamaq olacaq əgər. 289 00:20:37,090 --> 00:20:42,300 Neyse yenidən, bizim üçün bir funksiyası baxmayaraq sonradan CS50 də var 290 00:20:42,300 --> 00:20:45,860 siz mütləq öz funksiyasını həyata etmək edə bilərsiniz 291 00:20:45,860 --> 00:20:48,260 bir simli uzunluğu hesablamaq olar. 292 00:20:48,260 --> 00:20:52,120 Amma indi biz simli uzunluğu, belə strlen istifadə olacaq. 293 00:20:52,120 --> 00:21:00,440 Siz simli keçmək, sonra sizin simli uzunluğu təmsil bir int qayıdacaqlar. 294 00:21:00,440 --> 00:21:05,840 Biz bir string hər xarakter üzərində təkrarlamaq edə bilər necə bir nümunə baxaq 295 00:21:05,840 --> 00:21:08,470 və ki, bir şey. 296 00:21:08,470 --> 00:21:13,250 Biz nə istəyirik simli hər bir xarakter üzərində təkrarlamaq deyil 297 00:21:13,250 --> 00:21:19,150 və nə biz bunu istəyirik, biz 1-hər bir xarakter 1 geri çap 298 00:21:19,150 --> 00:21:22,060 biz onun yanında bir şey əlavə istisna olmaqla. 299 00:21:22,060 --> 00:21:27,020 Belə ki, loop üçün başlamaq edək. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Biz vəziyyəti üçün yer tərk etmək olacaq. 301 00:21:32,700 --> 00:21:36,840 Biz simli sonuna çatana qədər, təkrarlamaq istəyirəm sağ? 302 00:21:36,840 --> 00:21:41,340 Beləliklə nə funksiya bizə simli uzunluğu verir? 303 00:21:41,340 --> 00:21:43,160 [Işitilemez tələbə cavab] 304 00:21:43,160 --> 00:21:46,420 Bu command line dəlilləri uzunluğu var. 305 00:21:46,420 --> 00:21:50,650 Amma bir string üçün bizim simli uzunluğu verən funksiyadan istifadə etmək istəyirəm. 306 00:21:50,650 --> 00:21:53,090 Belə ki, simli uzunluğu var. 307 00:21:53,090 --> 00:21:57,130 Və sonra bu simli keçmək lazımdır. 308 00:21:57,130 --> 00:21:59,760 Bu müddəti hesablamaq lazımdır nə string bilmək lazımdır. 309 00:21:59,760 --> 00:22:03,160 Belə ki, bu halda biz simli s ilə məşğul olursunuz. 310 00:22:04,790 --> 00:22:05,860 Böyük. 311 00:22:05,860 --> 00:22:10,770 Beləliklə, biz nə etmək istədiklərini bir-printf bildirin. 312 00:22:10,770 --> 00:22:14,850 İndi simvol ilə məşğul istəyirəm. Biz hər bir fərdi xarakter çap etmək istəyirəm. 313 00:22:14,850 --> 00:22:22,150 Bir float çap istədiyiniz zaman, siz% f kimi tutucu istifadə edir. 314 00:22:22,150 --> 00:22:24,580 Bir int ilə% d istifadə edir. 315 00:22:24,580 --> 00:22:30,890 Və eyni, bir xarakteri ilə mən bir xarakter çap etmək gedirəm demək% c istifadə 316 00:22:30,890 --> 00:22:34,570 bir dəyişən daxilində saxlanılır var. 317 00:22:34,570 --> 00:22:40,840 Belə ki, bu var, nin bu bir müddət və boşluq əlavə edək. 318 00:22:40,840 --> 00:22:45,430 Biz hansı xarakter istifadə edir? 319 00:22:45,430 --> 00:22:49,780 Biz simli bile hansı xarakter istifadə olacaq. 320 00:22:49,780 --> 00:22:52,890 Beləliklə biz, simli ilə bir şey istifadə etmək olacaq 321 00:22:52,890 --> 00:22:56,420 amma biz müəyyən karakter daxil etmək istəyirik. 322 00:22:56,420 --> 00:23:02,740 Simli yalnız bir sıra əgər Belə ki, necə biz serialların elementləri daxil edə bilərəm? 323 00:23:02,740 --> 00:23:06,480 Biz bu kvadratşəkilli mötərizələri var və biz orada indeksi qoydu. 324 00:23:06,480 --> 00:23:11,820 Beləliklə, biz kvadrat mötərizə var. Bu halda bizim index biz yalnız i istifadə edə bilərsiniz. Exactly. 325 00:23:15,290 --> 00:23:22,370 Belə ki, burada biz bir dot və boşluq ardınca xarakter çap etmək olacaq deyərək edirik 326 00:23:22,370 --> 00:23:30,870 və xarakter bizim string s olan İTH məktub olacaq. 327 00:23:32,920 --> 00:23:39,330 Mən yalnız saxlamaq üçün gedirəm. Okay. 328 00:23:42,510 --> 00:23:46,840 İndi string uzunluğu çalıştırmak üçün gedirəm. 329 00:23:46,840 --> 00:23:53,440 Beləliklə, biz OMG adlı simli idi, indi daha vurğuladı oldu. 330 00:23:53,440 --> 00:23:57,870 Eynilə, Gəlin biz, həqiqətən, istifadəçi bir string almaq istəyirlər. 331 00:23:57,870 --> 00:23:59,580 Biz bunu bilər? 332 00:23:59,580 --> 00:24:01,610 Əvvəl, necə bir int əldə etdiniz? 333 00:24:01,610 --> 00:24:08,040 Biz GetInt, sağ dedi? Amma bu int deyil, belə GetString edək. 334 00:24:11,780 --> 00:24:17,770 Nin string uzunluğu etmək edək. Burada xüsusi tez daxil etməyib. 335 00:24:17,770 --> 00:24:19,940 Mən bilmirəm. 336 00:24:19,940 --> 00:24:23,820 Burada mənim adını qoymaq üçün gedirəm və s sonra o şeyi bir edə bilərsiniz 337 00:24:23,820 --> 00:24:29,600 Hesab edirəm ki, kimi hər məktubu və ya bir şey üçün bir söz təyin yerləşir. Cool. 338 00:24:29,600 --> 00:24:31,900 Belə ki, simli uzunluğu var. 339 00:24:33,000 --> 00:24:34,640 Beləliklə, biz Caesar geri istəyirik. 340 00:24:34,640 --> 00:24:38,620 Biz bir simli üzərində təkrarlamaq necə bir neçə tools var 341 00:24:38,620 --> 00:24:41,250 biz hər element daxil necə. 342 00:24:41,250 --> 00:24:44,720 Belə ki, indi biz proqram almaq geri bilər. 343 00:24:44,720 --> 00:24:48,650 Mən əvvəl ASCII masa, sizin ən yaxşı dostu, qeyd edildiyi kimi, 344 00:24:48,650 --> 00:24:52,300 hər məktubu ilə bağlı nömrələrini görmək olacaq. 345 00:24:52,300 --> 00:24:55,900 Belə ki, burada bizim düz metin mən gicəlləndirici edirəm deyə! 346 00:24:55,900 --> 00:25:01,090 Sonra bu simvol hər bir sayı və Bugün ASCII dəyəri gedir 347 00:25:01,090 --> 00:25:04,710 hətta apostrof, hətta kosmik, hətta nida işarəsi, 348 00:25:04,710 --> 00:25:06,600 siz mind ki, saxlamaq lazımdır. 349 00:25:06,600 --> 00:25:12,360 Belə ki, onların command line arqument daxil istifadəçi 6 ki, bizim əsas deyirlər. 350 00:25:12,360 --> 00:25:17,770 73 ilə təmsil edən mən ilk məktubu, üçün o deməkdir ki, 351 00:25:17,770 --> 00:25:25,610 siz 73 + 6 ASCII dəyəri ilə təmsil olunur nə məktubu onlara qayıtmaq istəyirəm. 352 00:25:25,610 --> 00:25:29,020 Bu halda ki, 79 olacaq. 353 00:25:30,840 --> 00:25:35,040 İndi biz növbəti xarakter getmək istəyirəm. 354 00:25:35,040 --> 00:25:40,960 Belə ki, düz metin indeksi 1 yanındakı apostrof olardı. 355 00:25:40,960 --> 00:25:46,780 Amma biz yalnız məktubları encipher istəyirəm xatırlayıram. 356 00:25:46,780 --> 00:25:50,040 Belə ki, biz, apostrof əslində eyni qalır əmin etmək istəyirəm 357 00:25:50,040 --> 00:25:54,310 biz 39 nə 45 dəyişiklik yoxdur ki. 358 00:25:54,310 --> 00:25:57,150 Biz apostrof kimi saxlamaq istəyirəm. 359 00:25:57,150 --> 00:26:00,780 Beləliklə, biz yalnız məktubları encipher unutmayın istəyirəm 360 00:26:00,780 --> 00:26:04,560 biz digər rəmzləri bütün proqram dəyişməz qalır istəyirəm, çünki. 361 00:26:04,560 --> 00:26:07,130 Biz istəyirik ki, başqa bir şey kapitallaşma saxlanılmasıdır. 362 00:26:07,130 --> 00:26:10,250 Belə ki, bir böyük məktubu zaman, bir böyük kimi qalmaq lazımdır. 363 00:26:10,250 --> 00:26:12,830 Lowercases kiçik kimi qalmaq lazımdır. 364 00:26:13,620 --> 00:26:19,480 Belə ki, bəzi faydalı funksiyaları yalnız enciphering hərfləri ilə məşğul ola 365 00:26:19,480 --> 00:26:22,380 və əşyalar kapitallaşma qorunması saxlamaq 366 00:26:22,380 --> 00:26:25,130 bu isalpha, isupper, islower funksiyaları edir. 367 00:26:25,130 --> 00:26:29,270 Və bu bir Boolean dəyər qayıtmaq ki, funksiyaları. 368 00:26:29,270 --> 00:26:34,180 Əsasən, doğru və ya yalan. Bu böyük deyilmi? Bu alfasayısal mı? 369 00:26:34,180 --> 00:26:37,180 Bu əhəmiyyətli bir məktub var. 370 00:26:37,180 --> 00:26:41,070 Belə ki, burada siz funksiyasından istifadə necə 3 nümunələridir. 371 00:26:41,070 --> 00:26:47,060 Ümumiyyətlə, siz dəyəri həmin funksiyası ilə siz geri olmadığını test edə bilər doğru və ya yalan 372 00:26:47,060 --> 00:26:49,400 daxil əsaslanır. 373 00:26:49,400 --> 00:26:54,880 Ya encipher bir şey və ya parol və ya böyük s var əmin etmək 374 00:26:54,880 --> 00:27:01,080 [Tələbə] yalnız bir az daha çox və necə istifadə o izah edə bilərəmmi? >> Bəli, qəti. 375 00:27:01,080 --> 00:27:08,470 Biz geri baxmaq Belə ki, əgər biz burada hüququ, kapital var? 376 00:27:08,470 --> 00:27:14,550 Belə ki, biz + 6 O. çünki Ey gedir bilirik ki, 377 00:27:14,550 --> 00:27:18,740 Ancaq biz O paytaxtı O. olacaq əmin etmək istəyirəm 378 00:27:18,740 --> 00:27:22,940 Belə ki, əsasən, bizim giriş dəyişdirmək gedərək növüdür. 379 00:27:22,940 --> 00:27:26,870 O böyük var ya biz bunu həll yolu dəyişdirmək cür iradə belə olub. 380 00:27:26,870 --> 00:27:32,360 Beləliklə biz xüsusi indeksi üzrə isupper funksiyasından istifadə əgər, 381 00:27:32,360 --> 00:27:36,480 əsl bizim üçün qaytarır ki isupper ("Mən"), belə ki, biz bu üst olduğunu bilirik. 382 00:27:36,480 --> 00:27:40,360 Belə ki, o əsasən, sonra biz bir formula daxil olacaq 383 00:27:40,360 --> 00:27:42,750 siz Caesar şeyi keçmək üçün istifadə lazımdır ki, 384 00:27:42,750 --> 00:27:46,560 o böyük əgər belə sonra əsasən bir az fərqli düstur olmalıdır olacaq 385 00:27:46,560 --> 00:27:50,670 kimi kiçik fərqli. Mənada etmək? 386 00:27:51,020 --> 00:27:52,760 Bəli. Heç bir narahatlıq. 387 00:27:54,900 --> 00:27:58,990 Mən çox mənada etmir hansı bir məktubu, 6 əlavə barədə bir az söhbət 388 00:27:58,990 --> 00:28:05,500 biz cür anlamaq istisna olmaqla bu simvol 389 00:28:05,500 --> 00:28:08,920 integers ilə əvəz növü var. 390 00:28:08,920 --> 00:28:11,250 Biz nə biz istifadə gizli tökmə növü. 391 00:28:11,250 --> 00:28:18,100 Biz bir dəyər bulunduğu bir qədər sonra tökmə getmək lazımdır və bir müxtəlif növ çevrilsin 392 00:28:18,100 --> 00:28:20,440 o ilk daha. 393 00:28:20,440 --> 00:28:25,910 Amma bu pset ilə biz əvəz simvol istifadə cür edə bilərsiniz 394 00:28:25,910 --> 00:28:30,880 və onların müvafiq tam dəyəri. 395 00:28:30,880 --> 00:28:35,140 Siz sadəcə yalnız bir quotes ilə bir xarakter qablaşdırmaq Beləliklə, əgər, 396 00:28:35,140 --> 00:28:40,390 sonra bir tam kimi ilə məşğul olan integers ilə işləmək bilərsiniz. 397 00:28:40,390 --> 00:28:48,040 Belə ki, kapital C 67 aiddir. Kiçik f 102 aiddir. 398 00:28:48,040 --> 00:28:51,480 Bu dəyərlər bilmək istəyirsinizsə Yenə, sizin ASCII masa oldu. 399 00:28:51,480 --> 00:28:56,160 Belə ki, sizə çıxmaq və əlavə edə bilərsiniz necə bəzi nümunələr daxil bildirin, 400 00:28:56,160 --> 00:29:03,130 həqiqətən, həqiqətən, bu simvol ilə işləyə bilər necə əvəz istifadə edin. 401 00:29:03,870 --> 00:29:11,350 Hesab edirəm ki, ASCIIMath bir tam bir xarakterli əlavə hesablamaq gedir demək 402 00:29:11,350 --> 00:29:17,590 və sonra çıxan xarakteri, habelə nəticəsində ASCII dəyəri göstərir. 403 00:29:17,590 --> 00:29:22,290 Və burada mən dedi alıram - bu hissəsi ilə we'll məşğul sonra - 404 00:29:22,290 --> 00:29:29,100 lakin əsasən, I, istifadəçi bir əsas ilə yanaşı run ASCIIMath demək lazımdır ki alıram 405 00:29:29,100 --> 00:29:30,880 və mən əsas sayını olacaq ki alıram 406 00:29:30,880 --> 00:29:34,600 ilə biz bu xarakterli əlavə olacaq. 407 00:29:34,600 --> 00:29:38,560 Belə ki, burada qeyd edirəm ki, əsas tələb alıram-ci ildən, 408 00:29:38,560 --> 00:29:40,590 Mən, mənə 1 şey ötürür tələb edirəm ildən 409 00:29:40,590 --> 00:29:45,600 Mən yalnız. / Asciimath və əsas qəbul etmək istəyirəm. 410 00:29:45,600 --> 00:29:49,330 Mən argc 2 bərabər tələb gedirəm. 411 00:29:49,330 --> 00:29:54,360 O deyil, onda mən 1 qayıtmaq və proqramı çıxış edəcək gedirəm. 412 00:29:55,070 --> 00:29:58,540 Mən, əsas ilk command line dəlil olacaq deyil dedi alıram 413 00:29:58,540 --> 00:30:05,080 , bu, ikinci olacaq və burada bax 414 00:30:05,080 --> 00:30:11,790 Mən tam o açmaq üçün gedirəm. 415 00:30:15,740 --> 00:30:19,230 Sonra mən r olacaq bir simvol təyin etmək üçün gedirəm. 416 00:30:19,230 --> 00:30:23,970 Dəyişən CHR növü həqiqətən tam edək ki. 417 00:30:23,970 --> 00:30:30,480 Mən tam kimi r istifadə edə Ben yolu bu tək quotes ilə encasing edir. 418 00:30:33,850 --> 00:30:40,560 Biz bir xarakter üçün tutucu olduğu bizim printf bəyanat geri 419 00:30:40,560 --> 00:30:43,590 və sonra tam bir tutucu, 420 00:30:43,590 --> 00:30:49,450 karakter CHR təmsil və tam əsas deyil. 421 00:30:49,450 --> 00:30:54,320 Və sonra biz nəticə birlikdə 2 əlavə olacaq. 422 00:30:54,320 --> 00:30:58,420 Belə ki, biz r əlavə etmək üçün gidiyorsun + əsas nə, 423 00:30:58,420 --> 00:31:03,520 və sonra ki, nəticə çap olacaq. 424 00:31:06,210 --> 00:31:14,220 Belə nin asciimath edək. Bu günə qədər, buna nin yalnız asciimath run bildirin. 425 00:31:14,220 --> 00:31:18,290 Biz həqiqətən bir əsas vermir, çünki Oh, amma bax, bu bir şey deyil. 426 00:31:18,290 --> 00:31:23,850 Belə ki, yalnız 1, bizim əsas funksiyası geri zaman, yalnız bizə geri döndü. 427 00:31:23,850 --> 00:31:29,250 Beləliklə üzrə əsas süzmək. Biri mənə bir sıra verir. >> [Tələbə] 4. 428 00:31:29,250 --> 00:31:30,920 4. Okay. 429 00:31:30,920 --> 00:31:39,280 Belə r 4 Bookmark 118 və ASCII dəyəri uyğun olan v vermək gedir artıb. 430 00:31:39,280 --> 00:31:43,880 Belə ki, o, cür mənada ki, edir - 431 00:31:43,880 --> 00:31:51,250 Əslində, mən xahiş edə bilərsiniz r + 4 118 əgər r ASCII dəyəri nə düşünürsünüz? 432 00:31:53,070 --> 00:31:55,470 Sonra Bəli, r 114-dir. 433 00:31:55,470 --> 00:32:03,010 Siz sonra ASCII masa baxmaq əgər, əmin ki, siz r 114 ilə təmsil olunur görəcəksiniz. 434 00:32:03,010 --> 00:32:08,610 Belə ki, indi biz simvol integers əlavə edə bilərsiniz ki, bilirik ki, bu olduqca sadə görünür. 435 00:32:08,610 --> 00:32:12,740 Biz yalnız biz əvvəl bir misal gördüm kimi simli üzərində təkrarlamaq olacaq. 436 00:32:12,740 --> 00:32:17,170 Bir məktub varsa Biz yoxlamaq lazımdır. 437 00:32:17,170 --> 00:32:20,420 Əgər, sonra biz əsas nə ilə keçmək lazımdır. 438 00:32:20,420 --> 00:32:23,650 Pretty sadə, bu kimi almaq hallar istisna olmaqla, 439 00:32:23,650 --> 00:32:32,140 siz z, 122 təmsil, sonra fərqli bir xarakter verir ki, görürük. 440 00:32:32,140 --> 00:32:37,770 Biz, həqiqətən, bizim əlifba ərzində qalmaq istəyirəm sağ? 441 00:32:37,770 --> 00:32:43,180 Beləliklə, biz ətrafında wrapping növü bir şəkildə anlamaq lazımdır. 442 00:32:43,180 --> 00:32:47,190 Siz Zed çatmaq və müəyyən bir sıra artırmaq istədiyiniz zaman, 443 00:32:47,190 --> 00:32:51,230 Siz ASCII əlifba bölmə kənarda getmək istəmirəm; 444 00:32:51,230 --> 00:32:54,140 siz A. bütün yol geri kesmek istəyirəm 445 00:32:54,140 --> 00:32:58,550 Amma siz hələ işin qorunması edirik unutmayın. 446 00:32:58,550 --> 00:33:00,980 Belə ki məktublar bilmədən simvol ola bilməz 447 00:33:00,980 --> 00:33:05,290 yalnız simvol kimi də dəyişən olacaq deyil. 448 00:33:05,290 --> 00:33:08,170 Son pset siz mütləq lazımdır vermədi 449 00:33:08,170 --> 00:33:14,310 lakin bir seçim modulus funksiyası istifadə edərək görməmiş pset həyata idi. 450 00:33:14,310 --> 00:33:17,230 Amma indi biz, həqiqətən, modulus istifadə etmək lazımdır olacaq 451 00:33:17,230 --> 00:33:19,900 belə-in yalnız bu bir az artıq gedək. 452 00:33:19,900 --> 00:33:26,920 Əsasən, siz y bölünür x qalan verir x modulo y, zaman. 453 00:33:26,920 --> 00:33:30,930 Burada bəzi nümunələridir. Biz 27% 15 var. 454 00:33:30,930 --> 00:33:36,200 Ümumiyyətlə, siz mənfi almadan mümkün qədər 27-dən 15-çıxmaq zaman 455 00:33:36,200 --> 00:33:39,060 sonra 12 sol üzərində almaq. 456 00:33:39,060 --> 00:33:44,650 Belə ki, riyaziyyat kontekstində kimi növ, lakin necə həqiqətən bu istifadə edə bilərəm? 457 00:33:44,650 --> 00:33:47,100 Bu, bizim wrapover üçün faydalı olacaq. 458 00:33:47,100 --> 00:33:55,420 Bu, yalnız mən 3 qrupa bölmək bütün xahiş deyək. 459 00:33:55,420 --> 00:33:58,010 Bəzən qruplar və belə bir şey bunu. 460 00:33:58,010 --> 00:34:01,320 Mən "OK, 3 bölmək sizə bütün istəyirəm." Dedi deyə 461 00:34:01,320 --> 00:34:04,240 Necə ki, bunu bilər? 462 00:34:04,240 --> 00:34:06,810 [Işitilemez tələbə cavab] Bəli, dəqiq. Off sayı. Okay. 463 00:34:06,810 --> 00:34:10,260 Həqiqətən bunu edək. Siz başlamaq istəyirsiniz? 464 00:34:10,260 --> 00:34:13,810 1, 2, 3, 4 [tələbələri off sayılması]. 465 00:34:13,810 --> 00:34:16,620 Amma unutmayın ... >> [Tələbə] Oh, sorry. 466 00:34:16,620 --> 00:34:18,730 Bu həqiqətən yaxşı bir nöqtəyə var. 467 00:34:18,730 --> 00:34:24,130 Siz 4, amma biz yalnız 3 qrupa istəyirəm, çünki biz həqiqətən 1 demək istəyirəm. 468 00:34:24,130 --> 00:34:30,159 Beləliklə, necə - sonra necə 1 deyə bilər çünki Xeyr, ki, həqiqətən yaxşı bir misal var? 469 00:34:30,159 --> 00:34:33,370 4 və 1 arasında əlaqələr nədir? 470 00:34:33,370 --> 00:34:36,760 Yaxşı, 4 mod 3 1. 471 00:34:36,760 --> 00:34:41,460 Davam Belə ki, siz 2 olardı. 472 00:34:41,460 --> 00:34:44,540 Belə ki, 1, 2, 3, 1, 2, var. 473 00:34:44,540 --> 00:34:49,420 Yenə, həqiqətən, 5-ci şəxs istəyirik. Necə 2 əvəzinə 5 deyə bilirsiniz? 474 00:34:49,420 --> 00:34:53,760 Siz 5 mod 3 2 deyirlər. 475 00:34:53,760 --> 00:34:59,100 Mən artıq sol neçə 3 qrupları görmək istəyirəm, sonra hansı qaydada I. am 476 00:34:59,100 --> 00:35:02,860 Və biz, bütün otaq boyu davam edərsə, 477 00:35:02,860 --> 00:35:07,760 sonra biz həmişə əslində özümüz üçün mod funksiyası tətbiq etdiyiniz görəcək 478 00:35:07,760 --> 00:35:09,990 növ off saymaq. 479 00:35:09,990 --> 00:35:14,490 Bu, modulo istifadə edə bilər necə maddi Məsələn daha növü 480 00:35:14,490 --> 00:35:17,960 Mən əminəm, çünki bizim ən yəqin ki, prosesi getdi 481 00:35:17,960 --> 00:35:19,630 biz off saymaq etdik yerləşir. 482 00:35:19,630 --> 00:35:21,840 Modulo hər hansı suallar? 483 00:35:21,840 --> 00:35:25,360 O, bu anlayışları anlamaq üçün olduqca əhəmiyyətli olacaq 484 00:35:25,360 --> 00:35:28,640 Mən sizə uşaqlar başa əmin etmək istəyirəm. 485 00:35:28,640 --> 00:35:34,660 [Tələbə] heç bir qalıq varsa, bu faktiki sayı vermək deyil? 486 00:35:34,660 --> 00:35:40,430 Onlardan ilk 3 biri bunu olsaydı, bu, əslində nə onlara olardı 487 00:35:40,430 --> 00:35:43,310 və ya onlara olardı [işitilemez] >> Bu yaxşı sual var. 488 00:35:43,310 --> 00:35:48,750 Bu modulo heç qalan olduqda - 6 mod 3 belə deyirlər - 489 00:35:48,750 --> 00:35:52,340 əslində 0 geri verir. 490 00:35:53,670 --> 00:35:57,290 Biz bir az sonra bu barədə danışmaq lazımdır. 491 00:35:58,810 --> 00:36:07,720 Bəli Oh, məsələn, 3-cü şəxs - 3 mod 3 həqiqətən 0 lakin o 3 bildirib. 492 00:36:07,720 --> 00:36:14,900 Belə ki, məsələn, daxili tutmaq kimi növ var, 493 00:36:14,900 --> 00:36:17,620 MOD sonra 0 ise tamam kimi, mən 3-cü şəxs gedirəm. 494 00:36:17,620 --> 00:36:22,740 Amma biz 0 sonra nə ilə məşğul edə bilərsiniz necə cür nəzərə almaq lazımdır. 495 00:36:22,740 --> 00:36:32,750 Belə ki, indi biz elə hüququ məktubu üçün Zed Xəritəçəkmə yolu var. 496 00:36:32,750 --> 00:36:34,920 Belə ki, indi biz bu misallar vasitəsilə getdi sonra 497 00:36:34,920 --> 00:36:37,880 biz cür Caesar iş ola bilər necə. 498 00:36:37,880 --> 00:36:42,640 Siz 2 əlifbalar görmək və sonra onları keçid oldu. 499 00:36:42,640 --> 00:36:44,430 Belə nin cəhd və formula baxımından ifadə edək. 500 00:36:44,430 --> 00:36:46,940 Bu formula həqiqətən, spec sizə verilir 501 00:36:46,940 --> 00:36:52,070 lakin hər bir dəyişən nə deməkdir vasitəsilə göz edək cür. 502 00:36:52,070 --> 00:36:55,000 Bizim son nəticə ciphertext olacaq. 503 00:36:55,000 --> 00:36:58,300 Beləliklə, bu deyir ki ciphertext və İTH xarakter 504 00:36:58,300 --> 00:37:02,500 bu düz metin və İTH xarakterinə uyğun gedir. 505 00:37:02,500 --> 00:37:08,130 Biz həmişə bu şeylər astarlı istəyirəm, çünki O mənada edir. 506 00:37:08,130 --> 00:37:13,480 Belə ki, bizim əsas olan ciphertext plus k, bu İTH xarakterli olacaq - 507 00:37:13,480 --> 00:37:17,230 Bu mənada edir - və biz bu mod 26 var. 508 00:37:17,230 --> 00:37:19,860 Biz Zed zaman geri saxla 509 00:37:19,860 --> 00:37:24,190 biz xarakteri nəzərə almaq istəmir, biz bu Mod istədi 510 00:37:24,190 --> 00:37:26,540 əlifba ətrafında paketi və növüdür. 511 00:37:26,540 --> 00:37:33,430 Zed sonra siz gedin ki, b, doğru sayı c, d, var qədər. 512 00:37:33,430 --> 00:37:44,690 Beləliklə, biz bilirik ki, Zed, Zed a, b, c, d, e, f gəlir sonra çünki + 6, bizə f verəcək əgər. 513 00:37:44,690 --> 00:37:52,530 Belə ki, biz Zed + 6 Bookmark f vermək gedir bilirəm ki yadda edək. 514 00:37:52,530 --> 00:38:03,530 ASCII dəyərlər, z 122 və f 102-dir. 515 00:38:03,530 --> 00:38:10,570 Belə ki, biz Caesar formula edilməsi bir yol tapmaq üçün bizə 102 vermək 516 00:38:10,570 --> 00:38:13,590 122 sonra. 517 00:38:13,590 --> 00:38:19,550 Biz yalnız bu formula, həqiqətən 24 verir ki, ('z' + 6)% 26 müraciət əgər 518 00:38:19,550 --> 00:38:25,980 122 + 6 128 çünki; 128% 26 24 qalan verir. 519 00:38:25,980 --> 00:38:29,140 Amma həqiqətən f demək deyil. Bu mütləq 102 deyil. 520 00:38:29,140 --> 00:38:33,590 Bu da əlifbası 6-cı məktub deyil. 521 00:38:33,590 --> 00:38:41,550 Belə ki, açıq-aydın, biz tweaking bu bir az bəzi yol lazımdır. 522 00:38:42,970 --> 00:38:51,340 Müntəzəm əlifba baxımından, biz z 26 məktub və f 6 olduğunu bilirik. 523 00:38:51,340 --> 00:38:55,460 Amma biz kompüter istəyirik, biz 0 index olacaq. 524 00:38:55,460 --> 00:39:00,690 Əvəzinə z sayı 26 olan Beləliklə, biz bu sayı 25 demək olacaq 525 00:39:00,690 --> 00:39:02,630 bir 0 çünki. 526 00:39:02,630 --> 00:39:04,770 Belə ki, indi bu formula müraciət edək. 527 00:39:04,770 --> 00:39:11,710 Biz z siz 31 verir, 25 + 6 təmsil var. 528 00:39:11,710 --> 00:39:15,790 Və 31 mod 26 qalan kimi 5 verir. 529 00:39:15,790 --> 00:39:20,500 Biz f əlifbası 5-ci məktub bilirik ki, Çünki mükəmməl. 530 00:39:20,500 --> 00:39:26,400 Amma hələ sağ, f deyil? Bu hələ 102 deyil. 531 00:39:26,400 --> 00:39:32,730 Belə ki, bu pset üçün bir problem əlaqələr tapmaq üçün çalışır olunacaq 532 00:39:32,730 --> 00:39:36,910 Bu ASCII dəyərlər və əlifba index arasında konvertasiya arasında. 533 00:39:36,910 --> 00:39:40,280 Əsasən, nə lazımdır, nə siz ASCII dəyərləri ilə həyata başlamaq istəyirəm 534 00:39:40,280 --> 00:39:45,390 lakin sonra elə bir əlifba index o tərcümə etmək istədiyiniz 535 00:39:45,390 --> 00:39:52,610 sonra olmalıdır nə məktub hesablamaq - əsasən, onun əlifba index nə 536 00:39:52,610 --> 00:39:57,660 olan parol xarakter - o geri ASCII dəyərlərə tərcümə. 537 00:39:57,660 --> 00:40:04,870 Siz ASCII masa həyata whip Belə ki, sonra 102, 5, cəhd və arasında əlaqələrin tapmaq demək 538 00:40:04,870 --> 00:40:10,440 və ya 122 və 25. 539 00:40:12,140 --> 00:40:15,690 Biz command line arguments bizim əsas kazanılmış sonra, biz düz metin kazanılmış etdik 540 00:40:15,690 --> 00:40:17,520 biz bu enciphered etdik. 541 00:40:17,520 --> 00:40:19,820 İndi biz nə yazmayıb bütün çap edir. 542 00:40:19,820 --> 00:40:22,040 Biz bu müxtəlif yollarla bir neçə ola bilər. 543 00:40:22,040 --> 00:40:24,570 Biz boyunca getmək kimi Biz nə edə bilər, həqiqətən, çap olunur. 544 00:40:24,570 --> 00:40:28,250 Biz simli olan simvol üzərində təkrarlamaq kimi, 545 00:40:28,250 --> 00:40:31,660 biz bunu hesablamaq zaman biz sadəcə sağ sonra çap edə bilər. 546 00:40:31,660 --> 00:40:36,030 Alternativ olaraq, həmçinin bir sıra saxlayın və simvol bir sıra ola bilər 547 00:40:36,030 --> 00:40:39,280 və sonunda bu bütün array üzərində təkrarlamaq və çap. 548 00:40:39,280 --> 00:40:40,980 Belə ki, siz üçün bir neçə var. 549 00:40:40,980 --> 00:40:47,280 Və% c xarakteri çap üçün tutucu olacaq unutmayın. 550 00:40:47,280 --> 00:40:50,420 Belə ki, orada biz Sezar var və indi biz Vigenere geçmek 551 00:40:50,420 --> 00:40:57,580 olan Sezar çox oxşar, lakin az daha mürəkkəbdir. 552 00:40:57,580 --> 00:41:03,310 Belə ki, mahiyyətcə Vigenere ilə bir söz keçən etmək olacaq edir. 553 00:41:03,310 --> 00:41:06,510 Əvəzinə bir sıra Belə ki, bir simli var olacaq 554 00:41:06,510 --> 00:41:09,200 və belə ki, söz kimi çıxış edəcək. 555 00:41:09,200 --> 00:41:14,440 Sonra adi kimi, istifadəçi bir string üçün tez almaq olacaq 556 00:41:14,440 --> 00:41:19,050 və sonra encipher və sonra onları ciphertext geri verir. 557 00:41:19,050 --> 00:41:24,650 Dediyim kimi, bu, yerinə sayı müəyyən dəyişkən istisna olmaqla, Sezar çox oxşar 558 00:41:24,650 --> 00:41:30,620 sayı həqiqətən xarakterindən xarakteri hər zaman dəyişdirmək niyyətindədir. 559 00:41:30,620 --> 00:41:34,890 Keçmək üçün faktiki sayı təmsil etmək üçün klaviatura məktublar təmsil edir. 560 00:41:34,890 --> 00:41:43,150 Əgər məsələn bir bir keçid daxil Beləliklə, əgər, o 0 növbədə uyğun olardı. 561 00:41:43,150 --> 00:41:45,900 Belə ki, daha əlifba index geri edir. 562 00:41:45,900 --> 00:41:49,100 Əgər biz həqiqətən ASCII dəyərləri ilə məşğul olduğunuz gördükdə əgər faydalı ola bilər nə 563 00:41:49,100 --> 00:41:51,790 eləcə də məktublar, eləcə də əlifba göstəricisi kimi, 564 00:41:51,790 --> 00:41:58,020 bəlkə 25 0 əlifba indeksi göstərir ki, öz ASCII masa tapmaq və ya etmək 565 00:41:58,020 --> 00:42:03,750 ki, siz cür əlaqələr z vasitəsilə və ASCII dəyərlər bilərsiniz 566 00:42:03,750 --> 00:42:07,020 və eskiz və bəzi nümunələri cəhd tapa bilərsiniz. 567 00:42:07,020 --> 00:42:11,010 Eynilə, siz f tərəfindən müəyyən instansiya dəyişkən halda - 568 00:42:11,010 --> 00:42:21,110 və bu da kiçik və ya böyük f deyil - o 5 uyğun olardı. 569 00:42:21,110 --> 00:42:24,180 Biz bu günə qədər yaxşı nədir? 570 00:42:25,770 --> 00:42:30,050 Vigenere üçün formula bir az fərqli. 571 00:42:30,050 --> 00:42:32,960 Ümumiyyətlə, siz, yalnız Sezar kimi görmək 572 00:42:32,960 --> 00:42:37,390 istisna olmaqla, yerine k biz k index j var. 573 00:42:37,390 --> 00:42:44,810 Biz, çünki mahiyyətcə söz uzunluğu i istifadə etdiyiniz üçün bildirək ki, 574 00:42:44,810 --> 00:42:49,850 bizim ciphertext müddəti mütləq deyil. 575 00:42:49,850 --> 00:42:56,130 Biz sonradan bir az var ki, məsələn, bax bu bir az aydın olacaq. 576 00:42:56,130 --> 00:43:03,160 Ümumiyyətlə, siz ohai bir söz ilə proqram run əgər, 577 00:43:03,160 --> 00:43:08,560 o, hər dəfə ohai sizin shift olacaq deməkdir. 578 00:43:08,560 --> 00:43:11,060 Belə ki, siz söz olan nə mövqe asılı olaraq, 579 00:43:11,060 --> 00:43:15,800 Əgər məbləği ilə müəyyən ciphertext xarakter keçmək olacaq. 580 00:43:15,800 --> 00:43:19,630 Yenə yalnız Sezar kimi, biz hər şeyi kapitallaşma qorumaq əmin etmək istəyirəm 581 00:43:19,630 --> 00:43:22,900 və yalnız encipher məktubları deyil, simvol və ya boşluq. 582 00:43:22,900 --> 00:43:26,330 Belə ki, istifadə edə bilər ki, funksiyaları haqqında Caesar geri baxmaq 583 00:43:26,330 --> 00:43:32,570 şeyi keçmək və burada proqram üçün müraciət etmək necə qərar verən yol. 584 00:43:32,570 --> 00:43:35,260 Belə ki, bu həyata xəritəsi edək. 585 00:43:35,260 --> 00:43:39,680 Biz GetString olan istifadəçi kazanılmış etdik ki, bir düz metin var 586 00:43:39,680 --> 00:43:44,090 Bu deyərək ... CS50 edir! 587 00:43:44,090 --> 00:43:47,090 Sonra ohai bir söz var. 588 00:43:47,090 --> 00:43:50,930 Ilk 4 simvol olduqca sadədir. 589 00:43:50,930 --> 00:43:55,580 Biz T, o ilə keçdikdə olacaq bilirik ki, 590 00:43:55,580 --> 00:44:01,990 h h ilə keçdikdə olacaq, sonra i tərəfindən keçdikdə gedir. 591 00:44:01,990 --> 00:44:04,610 Burada bir 0 təmsil görmək 592 00:44:04,610 --> 00:44:11,940 belə sonra sonunda dəyər həqiqətən əvvəlki kimi yalnız həmin məktub. 593 00:44:11,940 --> 00:44:15,250 Sonra s i keçdikdə. 594 00:44:15,250 --> 00:44:19,370 Amma sonra burada bu dövrlər var. 595 00:44:19,370 --> 00:44:25,960 Biz sonra bir şey ilə dəyişdirmək deyil ki, encipher istəmirəm 596 00:44:25,960 --> 00:44:31,280 və yalnız dəyişməz dövründə çap. 597 00:44:31,280 --> 00:44:38,020 [Tələbə] Mən sizə bu keçdikdə bilirik ki, necə başa düşmürəm - harada etdi - >> Oh, sorry. 598 00:44:38,020 --> 00:44:41,620 Burada üst burada skript line arqument ohai bax 599 00:44:41,620 --> 00:44:43,740 söz olacaq. 600 00:44:43,740 --> 00:44:49,550 Və əsasən, siz söz olan simvol üzərində bisiklet edirik. 601 00:44:49,550 --> 00:44:52,020 [Tələbə] Beləliklə o eyni dəyişkən olacaq - 602 00:44:52,020 --> 00:44:56,260 Belə ki, o əlifba ilə müəyyən uyğundur. 603 00:44:56,260 --> 00:44:58,400 [Tələbə] Sağ. Amma CS50 hissəsi haradan əldə etdiniz? 604 00:44:58,400 --> 00:45:02,540 Oh. Bu, kimi olduğunuz GetString var "Mənə kodlar bir string verin." 605 00:45:02,540 --> 00:45:07,510 [Tələbə] Onlar sizin keçmək üçün arqument vermək olacaq 606 00:45:07,510 --> 00:45:09,380 və sonra siz ilk simli üçün xahiş edəcəyik. >> Bəli. 607 00:45:09,380 --> 00:45:12,440 Belə ki, onlar proqram çalıştırdığınızda, onlar söz daxil olacaq 608 00:45:12,440 --> 00:45:14,740 onların command line arguments, onlar run zaman. 609 00:45:14,740 --> 00:45:19,740 Deyil, az sonra bir dəfə onlar həqiqətən 1 verilmiş etdiyiniz işaretlediğinizden və daha 610 00:45:19,740 --> 00:45:23,750 sonra bir string üçün onlara təklif olacaq demək, "Mənə bir ip verin." 611 00:45:23,750 --> 00:45:27,630 Bu halda siz bu verdiyiniz yerləşir Belə ki, var ... CS50 edir! 612 00:45:27,630 --> 00:45:32,090 Beləliklə siz istifadə ohai istifadə və artıq təkrarlamaq olacaq. 613 00:45:32,090 --> 00:45:38,200 Burada dövrlər Şifreleme üzərində atlandı edək ki, 614 00:45:38,200 --> 00:45:51,660 lakin ohai, növbəti bir bizim mövqe baxımından biz o istifadə etmişdir. 615 00:45:51,660 --> 00:45:54,990 Bu halda, 4 var ki, görmək üçün bir az çətindir 616 00:45:54,990 --> 00:45:57,710 belə-nin bir az davam edək. Məhz burada mənimlə qalmaq. 617 00:45:57,710 --> 00:46:02,960 Sonra sonra müvafiq olaraq o və h tərəfindən tərcümə olunur i və s var. 618 00:46:02,960 --> 00:46:09,370 Sonra bir yer, və sonra biz boşluq encipher niyyətində deyil ki, bilirik. 619 00:46:09,370 --> 00:46:18,930 Lakin xəbərdarlıq yerine burada bu spot bir gedərək, 620 00:46:18,930 --> 00:46:28,330 biz tərəfindən Şifreleme edirik - Burada - Siz görə bilərsiniz əgər mən bilmirəm. 621 00:46:28,330 --> 00:46:33,710 Belə ki, siz həqiqətən müəyyən istəyirəm ki, o burada gedir deyil, h burada gedir, 622 00:46:33,710 --> 00:46:39,200 bir burada gedir, i o, h, a, i, o, h, a, i., burada gedir Siz nə yoxdur. 623 00:46:39,200 --> 00:46:43,760 Siz yalnız söz olaraq mövqe keçmək 624 00:46:43,760 --> 00:46:51,020 Siz, həqiqətən, faktiki məktub Şifreleme üçün olacaq bilirik ki, zaman. 625 00:46:51,020 --> 00:46:53,920 Bu cür mənada edirmi? 626 00:46:53,920 --> 00:46:55,800 Okay. 627 00:46:56,490 --> 00:46:58,500 Belə ki, yalnız bəzi xatırlatmaları. 628 00:46:58,500 --> 00:47:03,760 Siz yalnız söz növbəti məktub əvvəlcədən əmin etmək istəyirəm 629 00:47:03,760 --> 00:47:06,390 Sizin düz metin ilə karakter məktub olsun. 630 00:47:06,390 --> 00:47:09,120 Biz o bile Belə deyirlər. 631 00:47:09,120 --> 00:47:19,310 Biz növbəti xarakter ki, düz metin və i index Məsələn, bir sıra olduğunu görürük. 632 00:47:19,310 --> 00:47:31,630 Başqa bir məktub çatana qədər sonra biz, ğ, bizim söz üçün index inkişaf yoxdur. 633 00:47:31,630 --> 00:47:36,230 Yenə, siz də söz əvvəlinə siz panaromik əmin etmək istəyirəm 634 00:47:36,230 --> 00:47:37,770 siz sonunda olduğunuzda. 635 00:47:37,770 --> 00:47:42,030 Burada biz i bile görürsünüzsə, növbəti bir o olmalıdır. 636 00:47:42,030 --> 00:47:47,690 Belə ki, sizin söz əvvəlinə panaromik edə bəzi yol tapmaq istəyirsinizsə 637 00:47:47,690 --> 00:47:49,470 Əgər sonunda çatmaq hər zaman. 638 00:47:49,470 --> 00:47:55,040 Və yenə, nə operator cür ətrafında wrapping üçün halda faydalıdır? 639 00:47:56,630 --> 00:47:59,840 Məsələn off hesablanmasında kimi. 640 00:47:59,840 --> 00:48:03,710 [Tələbə] faizi işarəsidir. >> Bəli, modulo olan faiz işarəsi. 641 00:48:03,710 --> 00:48:11,250 Belə modulo sizin ohai ildə index üzərində kesmek istədiyiniz zaman burada lazımlı olacaq. 642 00:48:11,250 --> 00:48:17,700 Və yalnız bir sürətli ipucu: bir az hesablama off kimi söz üzərində wrapping hesab edin 643 00:48:17,700 --> 00:48:23,590 3 qrup, 4-cü şəxs, orada olduğu halda, 644 00:48:23,590 --> 00:48:30,610 dedilər ki, onların sayı 1 olan 4 mod 3 idi. 645 00:48:30,610 --> 00:48:32,880 Belə ki, yol cəhd və düşünün. 646 00:48:34,770 --> 00:48:42,740 Əgər sonra KJ ci və sonra pi lakin yerdə, düsturu gördüm ki, 647 00:48:42,740 --> 00:48:44,700 Siz bu takip əmin etmək istəyirəm. 648 00:48:44,700 --> 00:48:47,580 Siz i zəng etmək üçün ehtiyac yoxdur, siz onu j zəng etmək üçün ehtiyac yoxdur 649 00:48:47,580 --> 00:48:53,270 amma siz düz metin ilə siz olduğunuz mövqeyi takip əmin etmək istəyirəm 650 00:48:53,270 --> 00:48:55,790 həmçinin mövqeyi Açar söz ildə olduğunu 651 00:48:55,790 --> 00:48:59,840 o mütləq eyni olacaq çünki. 652 00:48:59,840 --> 00:49:06,400 Söz deyil yalnız - Sizin düz metin çox tamamilə müxtəlif uzunluğu ola bilər. 653 00:49:06,400 --> 00:49:09,140 Ayrıca, düz metin, nömrələri və simvolları var 654 00:49:09,140 --> 00:49:14,450 belə mükəmməl birlikdə uyğun gedən deyil. Bəli. 655 00:49:14,450 --> 00:49:19,280 [Tələbə] orada keçmək üçün bir funksiyası vardırmı? 656 00:49:19,280 --> 00:49:24,530 Siz kapital A bir dəyişiklik edə bilərmi? >> Bəli, mütləq var. 657 00:49:24,530 --> 00:49:27,890 Siz kontrol edə bilərsiniz - Mən bu toupper, bütün 1 söz inanıram. 658 00:49:30,650 --> 00:49:36,310 Amma şeyi Şifreleme və mətn qorumaq üçün çalışdığınız zaman, 659 00:49:36,310 --> 00:49:39,350 ayrı-ayrı hallarda üçün yaxşı əsasən var. 660 00:49:39,350 --> 00:49:42,040 Bu böyük var, onda bu keçmək istəyirəm 661 00:49:42,040 --> 00:49:46,460 Sizin formula, siz geri baxmaq zaman go növü üçün necə çünki 662 00:49:46,460 --> 00:49:50,900 əvəz nömrələri təmsil edən ASCII yol arasında 663 00:49:50,900 --> 00:49:55,020 və faktiki əlifba indeksi, biz əmin etmək istəyirəm 664 00:49:55,020 --> 00:50:01,850 istifadə etmək olacaq ki, model bir növ var olacaq. 665 00:50:01,850 --> 00:50:04,580 Faktiki model başqa bir qeyd. 666 00:50:04,580 --> 00:50:07,250 Siz mütləq nömrələri ilə məşğul olmaq üçün olacaq. 667 00:50:07,250 --> 00:50:11,280 Stil nümunəsi olan sehrli ədəd istifadə verməyəsiniz. 668 00:50:11,280 --> 00:50:18,470 Istədiyiniz hər zaman shift bir şey istəyirəm demək - 669 00:50:18,470 --> 00:50:22,400 Əgər bir şey dəyişkən olacaq olduğunuzda OK, işarə belə, başqa bir spoyler edir 670 00:50:22,400 --> 00:50:26,310 müəyyən məbləğ ilə faktiki sayı tərəfindən təmsil çalışırıq 671 00:50:26,310 --> 00:50:32,810 lakin keçir və növ daha məntiqli olacaq ASCII dəyəri, istifadə edə bilərsiniz əgər baxın. 672 00:50:32,810 --> 00:50:35,470 Başqa bir qeyd: biz düsturlar ilə məşğul olduğunuz Çünki, 673 00:50:35,470 --> 00:50:41,200 Sizin TF cür istifadə edilə bilər nə model biləcəklər baxmayaraq, 674 00:50:41,200 --> 00:50:44,430 Sizin rəy cür etmək yaxşı məntiq kimi izah 675 00:50:44,430 --> 00:50:51,880 "Mən bu model istifadə edirəm ..." və növü üçün şərh müfəssəl şəkildə model izah edir. 676 00:50:54,090 --> 00:50:58,990 [Bu gözden geçirmek 2] hər hansı digər məsələlər var, onda mən yalnız bir az burada qalmaq lazımdır. 677 00:50:58,990 --> 00:51:04,370 Kripto və gələn üçün təşəkkür: Sizin pset 2 Uğurlar. 678 00:51:06,070 --> 00:51:08,620 [Tələbə] təşəkkür edirik. >> Təşəkkür edirik. 679 00:51:09,220 --> 00:51:10,800 [Media Offline intro]