1 00:00:00,000 --> 00:00:02,200 [Powered by Google Translate] [Həftə 3] 2 00:00:02,200 --> 00:00:03,950 [David J. Malan - Harvard Universiteti] 3 00:00:03,950 --> 00:00:07,140 [Bu CS50 edir. - CS50.TV] 4 00:00:07,140 --> 00:00:10,720 Mənə biz sonuncu dəfə off sol harada istiqamətdə bizə idare etsin, 5 00:00:10,720 --> 00:00:13,890 sintaksis haqqında bir az daha düşünməyə başlayan olan 6 00:00:13,890 --> 00:00:17,150 və minutiae bütün haqqında bir az daha az düşünmək üçün çalışırıq 7 00:00:17,150 --> 00:00:20,630 ki semicolons baxımından beləliklə qədər acclimate vaxt bir az edir 8 00:00:20,630 --> 00:00:22,360 və parantez və qıvrım aşırma, 9 00:00:22,360 --> 00:00:25,630 yüksək konseptual səviyyədə şeyi bir az alaraq başlamaq üçün 10 00:00:25,630 --> 00:00:28,800 belə ki, biz artıq növbəti bir neçə həftə ərzində həll başlamaq problemləri 11 00:00:28,800 --> 00:00:32,340 yüksək konseptual problemlərini daha çox cəlb edir 12 00:00:32,340 --> 00:00:36,310 və sizin ayaq almaq kimi sintaktik az bir az yaş 13 00:00:36,310 --> 00:00:40,090 və əllərinizi bu son bir neçə həftə sözdizimini bəzi çirkli. 14 00:00:40,090 --> 00:00:43,690 >> Keçən həftə biz bir sıra bu anlayışı daxil ki, xatırlayıram. 15 00:00:43,690 --> 00:00:49,320 Və İngilis bir sıra nə kimi təsvir edilə bilər? >> [Işitilemez tələbə cavab] 16 00:00:49,320 --> 00:00:51,710 Bağışlayın? 17 00:00:51,710 --> 00:00:54,810 Toplusu? >> [Işitilemez tələbə cavab] >> OK, yaxşı. 18 00:00:54,810 --> 00:00:57,820 Maddələrin A toplusu. Beləliklə, biz Not ildə serialların gördüm. 19 00:00:57,820 --> 00:01:01,880 Siz pset üçün şeyi sürükleyin bilər ki, Scratch siyahısını 0 birindən istifadə etmək oldu 20 00:01:01,880 --> 00:01:05,410 növ bir inventar daxil portağal və banan kimi, 21 00:01:05,410 --> 00:01:07,100 ki, bir sıra nə kimi növ var. 22 00:01:07,100 --> 00:01:10,980 Və daha çox texniki, faktiki kompüter kontekstində, 23 00:01:10,980 --> 00:01:14,730 bir sıra sadəcə yaddaş bitişik yığın edir. 24 00:01:14,730 --> 00:01:18,590 Başqa sözlə, sonra sonra başqa byte, başqa byte, başqa byte, bir byte var 25 00:01:18,590 --> 00:01:21,330 və bir şəkil bu bytes cəlb etmək olsaydı, 26 00:01:21,330 --> 00:01:24,510 onlar geri geri geri geri olacaq. Yəni bitişik tərəfindən anlamları. 27 00:01:24,510 --> 00:01:26,690 >> Belə ki, sonra byte sayı 1, 2, 3 var. 28 00:01:26,690 --> 00:01:29,680 Bu qədər burada qədər burada qədər burada qədər demək deyil. 29 00:01:29,680 --> 00:01:33,800 Bir sıra 0 və ya daha bayt bitişik yığın edir. 30 00:01:33,800 --> 00:01:36,160 Beləliklə, nə onlar üçün faydalı? 31 00:01:36,160 --> 00:01:40,090 Biz bir proqram saxlanılması xalq viktorina siniflər göstərdi Məsələn bu cür idi Xatırladaq 32 00:01:40,090 --> 00:01:42,580 bəzi kurs üçün viktorina orta hesablamaq üçün 33 00:01:42,580 --> 00:01:46,780 və biz dəyişən quiz1 elan proqram yazmağa başlayın ki, xatırlayıram. 34 00:01:46,780 --> 00:01:49,550 Sonra quiz2 adlı bir dəyişən ola bilər. 35 00:01:49,550 --> 00:01:52,030 Lakin, sonra bu sinif sınavlar quiz4 3 varmış. 36 00:01:52,030 --> 00:01:55,710 Və ya bir həftəlik viktorina var idi, bu, quiz7 quiz6 quiz5 olardı. 37 00:01:55,710 --> 00:01:58,520 Belə ki, bu dəyişənlərin bütün əsas daxilində elan olardı 38 00:01:58,520 --> 00:02:00,470 və ya başqa bir yerdə proqramı, 39 00:02:00,470 --> 00:02:03,870 və yanaşma ilə problem, o, yalnız seçin və yapışdırıb asan olsa 40 00:02:03,870 --> 00:02:06,120 yalnız çox tez yöndəmsiz olur. 41 00:02:06,120 --> 00:02:09,360 Allah, həqiqətən, 30 viktorina və ya 50 sınavlar var. 42 00:02:09,360 --> 00:02:12,080 Yüksək məktəb stil gündəlik pop viktorina kimi Əgər 43 00:02:12,080 --> 00:02:15,910 sonra, yalnız dəyişənlərin elan olunan bir ridiculously uzun siyahısı var 44 00:02:15,910 --> 00:02:17,780 və bu, yalnız çox tez nəzarət edir. 45 00:02:17,780 --> 00:02:20,820 Bu çirkin, bu saxlamaq üçün çətindir, bir typo etmək çox asandır 46 00:02:20,820 --> 00:02:23,910 siz əgər 1 ədəd proqram yerə mistyped. 47 00:02:23,910 --> 00:02:26,800 >> Belə ki, əvəzinə bir sıra anlayışı təqdim etdi. 48 00:02:26,800 --> 00:02:30,760 Və biz bu kimi bir az bir şey etməklə bu proqram icra xatırlayıram. 49 00:02:30,760 --> 00:02:33,950 Mənə bu gün Kaynak 3 Bazar ertəsi dizine gedək 50 00:02:33,950 --> 00:02:37,160 və biz sonuncu dəfə gördüm ki, dizi, açmaq. 51 00:02:37,160 --> 00:02:39,940 Və yeni C tövsiyələr bir neçə burada olmasına baxmayaraq, 52 00:02:39,940 --> 00:02:41,920 Onların arasında daimi anlayışı, 53 00:02:41,920 --> 00:02:47,140 biz bu sintaksis istifadə edərək mahiyyətcə çox üzüb gedirdi elan xatırlayıram: 54 00:02:47,140 --> 00:02:51,750 float, sonra dəyişən adı, sonra biz ilk dəfə həqiqətən kvadrat aşırma istifadə 55 00:02:51,750 --> 00:02:55,450 və biz bu kvadrat aşırma daxilində nə səmərəli bir sıra verilib. 56 00:02:55,450 --> 00:02:59,780 Lakin əvəzinə bir sıra qoyaraq, bu hərflərlə söz, sınavlar qoydu. 57 00:02:59,780 --> 00:03:03,220 Və kiçik sınavlar kimi hərflərlə söz qoyulması üçün motivasiya nə idi 58 00:03:03,220 --> 00:03:08,170 və sonra line 17 kələyi istifadə burada həqiqətən ki, bir sıra verməli? 59 00:03:08,170 --> 00:03:11,240 Orada motivasiya nə idi? Bəli. 60 00:03:11,240 --> 00:03:13,360 >> [Işitilemez tələbə cavab] >> Exactly. 61 00:03:13,360 --> 00:03:16,630 Ki, dəyəri 2 dəyişmək istəyirsinizsə, biz yalnız 1 yerdə dəyişdirmək üçün 62 00:03:16,630 --> 00:03:19,680 çünki hesab - Mən hətta bu proqram məhz nə xatırlamıram, 63 00:03:19,680 --> 00:03:22,040 lakin yalnız üzsüz əgər sınavlar, sınavlar görürük. 64 00:03:22,040 --> 00:03:24,720 Siz sınavlar, aşağı burada daha sınavlar görürük. 65 00:03:24,720 --> 00:03:28,180 Biz bu daimi yox idi əgər, kəskin bu istifadə müəyyən 66 00:03:28,180 --> 00:03:33,320 biz gözəl olan, sonra 2, sonra 2, sonra 2, 2 tipli olardı. Bu, sadəcə olaraq düzgün olardı. 67 00:03:33,320 --> 00:03:36,220 Amma biz CS50 3 sınavlar ki, gələn il nəzərdə tutur. 68 00:03:36,220 --> 00:03:39,190 Mən kodu getmək və yeniləmək üçün Beləliklə, mən derleyeceğiz var 69 00:03:39,190 --> 00:03:43,820 mən axmaq bir şey, mən 2 1 qeyd etməmək kimi amma problem deyil, 70 00:03:43,820 --> 00:03:46,750 və 3-plug unutmayın, bütün proqram çox yaxşı qıra bilər. 71 00:03:46,750 --> 00:03:48,720 Beləliklə, biz yalnız narahatlıq üçün xahiş edirik. 72 00:03:48,720 --> 00:03:53,170 >> Belə ki, bir daimi anlayışı, məlumatların bir parça faktorinq haqqında bütün 73 00:03:53,170 --> 00:03:56,070 o, simli və ya char və ya bir float və ya hər hansı olub 74 00:03:56,070 --> 00:04:00,070 və daha çox asanlıqla gələcəkdə dəyişə bilər ki, 1 yer elan. 75 00:04:00,070 --> 00:04:03,660 Və bu, yalnız indi bu hesab çünki oxumaq, səmimi, həm də bir az daha asandır 76 00:04:03,660 --> 00:04:07,840 bu sınavlar var, və ya hətta NUMBER_OF_QUIZZES kimi bir şey adını dəyişmək bilər 77 00:04:07,840 --> 00:04:09,430 daha açıq və ya bir şey. 78 00:04:09,430 --> 00:04:11,830 Kodu yalnız bunu nə üçün bir az daha aydın olur 79 00:04:11,830 --> 00:04:15,780 və 2 saylı demək baş verə bilər nə bir az daha az maraqlıdır. 80 00:04:15,780 --> 00:04:18,920 Diziler ilə əsaslı əlaqəsi olmadığını daimi belə. 81 00:04:18,920 --> 00:04:22,990 Serialın bu kvadrat aşırma yolu ilə təqdim edilmişdir. 82 00:04:22,990 --> 00:04:26,610 >> Belə ki, xətt 23-biz istifadəçi xahiş fark, "sizin viktorina puanları nə idi?" 83 00:04:26,610 --> 00:04:31,120 Sonra biz yəqin onların siniflər üçün istifadəçi soruşur bu loop var. Necə? 84 00:04:31,120 --> 00:04:37,460 Bu 0-dan 2-iterates. Bütün caps ilə sınavlar hazırda 2 çünki I 2 deyirlər. 85 00:04:37,460 --> 00:04:42,310 Belə ki, bu qədər 0-dan 2-iterates sonra yazdıran həyata, # bir şey bir şey İlke 86 00:04:42,310 --> 00:04:45,830 və sonra bu istifadəçi bir dəyər almaq üçün GetFloat istifadə edir. 87 00:04:45,830 --> 00:04:49,050 Belə ki, bu son çərşənbə olan sintaksis yalnız başqa yeni parça bilərsiniz. 88 00:04:49,050 --> 00:04:53,120 Siz ki, array xüsusi yer bir şey saxlamaq istəyirsinizsə 89 00:04:53,120 --> 00:04:55,460 siz yenə kvadrat mötərizə istifadə edin. 90 00:04:55,460 --> 00:04:57,030 >> Belə dichotomy bir az burada var. 91 00:04:57,030 --> 00:04:59,040 Siz kvadrat mötərizə istifadə ilk dəfə 92 00:04:59,040 --> 00:05:02,250 siz serialın olmaq istəyirəm necə böyük müəyyən etmək üçün istifadə edin. 93 00:05:02,250 --> 00:05:06,580 Amma burada bu növbəti kontekstdə biz yenə bu kvadratşəkilli mötərizələri işə yerləşir 94 00:05:06,580 --> 00:05:10,540 ki array, siz bəzi dəyəri qoymaq istəyirəm yerləşir deməkdir? 95 00:05:10,540 --> 00:05:13,650 Burada fərq kontekstində nəticə çıxarmaq olar. 96 00:05:13,650 --> 00:05:17,130 Biz data növü burada edək, sonra biz bir dəyişən adı var 97 00:05:17,130 --> 00:05:20,770 sonra nöqtəli vergül, içərisində bir sıra bizim kvadrat aşırma var. Vəssalam. 98 00:05:20,770 --> 00:05:22,290 Belə ki, bir bəyannamə deyil. 99 00:05:22,290 --> 00:05:28,390 Float grade2; Bu float grade1 kimi bir şey etdiyi kimi, baxmayaraq ki; 100 00:05:28,390 --> 00:05:31,730 lakin yenə də, bu, çox tez yol çox surəti, pastası, daxil devolves 101 00:05:31,730 --> 00:05:34,260 əvəzinə biz yalnız, belə kimi sadələşdirilmiş 102 00:05:34,260 --> 00:05:38,800 hansı bundan sonra biz, bracket 0 saxlanıla bilər ki, bir sinif var deməkdir 103 00:05:38,800 --> 00:05:41,760 biz bracket 1 saxlanıla bilər ki, başqa dərəcəli var 104 00:05:41,760 --> 00:05:46,890 amma nə mən axmaq, əgər, məsələn, mənim loop günə qədər gedir - 105 00:05:46,890 --> 00:05:48,740 Məsələn, mən bu daha az və ya bərabər etmək 106 00:05:48,740 --> 00:05:50,620 olan geri bir əvvəlki səhv mənbəyi idi - 107 00:05:50,620 --> 00:05:55,590 hansı səmərəli loop bəzi üçüncü təsadüfi iteration haqqında o deməkdir ki, 108 00:05:55,590 --> 00:06:00,380 Mən bracket 2 istifadə edin. Səmərəli, nə burada baş verə bilər? Bağışlayın? 109 00:06:00,380 --> 00:06:02,860 [Tələbə] Bu əvəz edəcək. >> Onu əvəz olacaq mı? 110 00:06:02,860 --> 00:06:04,520 Nə əvəz olunacaq? 111 00:06:04,520 --> 00:06:10,890 Bu sözün GetFloat qaytarılması dəyəri yeri 2 nə əvəz deyib. 112 00:06:10,890 --> 00:06:13,690 Ancaq problem hekayə bu nöqtədə serialın nə qədər böyük deyil? 113 00:06:13,690 --> 00:06:17,730 [Işitilemez tələbə cavab] >> Bu array yalnız ölçüsü 2-hələ 114 00:06:17,730 --> 00:06:22,730 biz istifadə əvvəl array, çünki hər hansı bir dəyişən kimi, ilk elan edilib 115 00:06:22,730 --> 00:06:27,220 və çünki mən qoymaq gedirəm ki, 2 notları ki, bu daimi Burada müəyyən. 116 00:06:27,220 --> 00:06:29,930 >> Amma unutmayın, kompüter elm 0 hesablanması başlanır. 117 00:06:29,930 --> 00:06:33,620 Belə ki array ilk yeri bracket 0 deyil. 118 00:06:33,620 --> 00:06:40,210 Növbəti yeri 1-dir. Bu şey yan üzərində çox heç belə az deyil. 119 00:06:40,210 --> 00:06:42,870 Belə ki, başqa sözlə, mən həqiqətən bu array əgər - 120 00:06:42,870 --> 00:06:46,790 və mənə bu, bizim üçün burada əməkdaşlıq necə görək - 121 00:06:46,790 --> 00:06:52,360 Mən bir sıra varsa sadəcə aşağıdakı kimi tərtib etdik ki, 122 00:06:52,360 --> 00:06:56,750 və I 2 elementlər üçün yer ayrılıb sonra, mən yaddaş bu kimi bu çəkmək bilər 123 00:06:56,750 --> 00:06:58,020 Bu böyük ağ kətan edir. 124 00:06:58,020 --> 00:07:00,920 Bu yalnız mənim kompüter var RAM, RAM bir konsert, RAM 2 gigs var nə olursa olsun, 125 00:07:00,920 --> 00:07:05,400 lakin bu 2 qutular artıq fərdi bir float, 32 bit təmsil edir. 126 00:07:05,400 --> 00:07:10,860 Mən 1.0 kimi burada 1 ədəd qoymaq Əgər, sonra 3.2 kimi burada bir sıra qoymaq 127 00:07:10,860 --> 00:07:15,280 lakin sonra mən burada bir şey qoyulması kimi ki bracket 2, bunu. 128 00:07:15,280 --> 00:07:17,820 Şəkil təklif kimi, heç bir şey yoxdur var. 129 00:07:17,820 --> 00:07:20,450 Mən əməliyyat sistemi xahiş deyil, çünki heç bir insan torpaq kimi sort var 130 00:07:20,450 --> 00:07:23,550 Bu üçüncü viktorina vermək. 131 00:07:23,550 --> 00:07:26,940 Hesab edirəm ki, üçüncü viktorina istəyirəm idi, mən tedbir idi olmalıdır 132 00:07:26,940 --> 00:07:31,700 bildirərək bunun üçün əməliyyat sistemi soruşmaq üçün 2 olmaq sınavlar 133 00:07:31,700 --> 00:07:34,210 lakin əvəzinə 3 bərabər. 134 00:07:34,210 --> 00:07:39,000 >> Belə ki, başqa sözlə, biz səmərəli tərəfdən olan şəkil burada bu kimi görünür. 135 00:07:39,000 --> 00:07:42,260 Bu bir daha heç kəs torpaq edir. Biz yaxşı burada dəyərləri yazılı cəhd deyil. 136 00:07:42,260 --> 00:07:45,300 Ancaq yenə də, kompüter alimləri, çünki 0 saymaq 137 00:07:45,300 --> 00:07:49,520 biz serialın bu yer haqqında danışmaq zaman ki, yeri 0 ehtimal edir 138 00:07:49,520 --> 00:07:53,890 Bu yeri 1 ehtimal ki, bu da mövcud deyil 139 00:07:53,890 --> 00:07:57,380 biz yalnız 2 belə yerlər üçün əməliyyat sistemi xahiş çünki. 140 00:07:57,380 --> 00:08:00,130 Digər dillərdə əvvəl proqramlaşdırma təcrübə ilə sizin Belə ki, 141 00:08:00,130 --> 00:08:04,150 Bu zaman istiqamətini adlı seriallarda və ya şeyi belə deyil ki, bilirik bilər. 142 00:08:04,150 --> 00:08:06,930 Əksinə, yalnız, əlavə və əlavə və seriallarda şeyi əlavə edə bilərsiniz 143 00:08:06,930 --> 00:08:10,720 olan, səmimi, biz Not ki, imkanı var idi və hələ biz burada bu qədər verilir görünür 144 00:08:10,720 --> 00:08:15,160 C, çünki siz daha aydın proqramlaşdırma olunur. 145 00:08:15,160 --> 00:08:17,980 Bu anda siz və kompüter yalnız, və kompüter yalnız etməyə gedir 146 00:08:17,980 --> 00:08:19,530 nə etmək demək. 147 00:08:19,530 --> 00:08:24,270 Burada yalnız line 22 yolu ilə 2 üzüb gedirdi vermək demək əgər, 148 00:08:24,270 --> 00:08:27,640 2 yer: ki, əməliyyat sistemi geri almaq olacaq bütün var. 149 00:08:27,640 --> 00:08:34,049 >> Belə ki, getdikcə proqramları arabir serialların ilə bağlı arabası olacaq. 150 00:08:34,049 --> 00:08:37,520 Bu, bizim bütün yanılabilir var qovuşdurmağımız heyvan təbiəti yalnız növ, 151 00:08:37,520 --> 00:08:42,490 və bir nöqtədə sizin serialın sərhəd kənarda çox güman index olacaq. 152 00:08:42,490 --> 00:08:45,980 Və yalnız bracket bir şey girdi deyərək bir xülya yolu 153 00:08:45,980 --> 00:08:49,970 və bir şey bir sıra çox böyük idi. Siz array kənarda getdi. 154 00:08:49,970 --> 00:08:51,530 Ancaq ayaq indi bu. 155 00:08:51,530 --> 00:08:54,990 Bu proqramın istirahət həqiqətən serialların ilə əsaslı əlaqəsi yoxdur. 156 00:08:54,990 --> 00:08:58,180 Bu, yalnız kompüter orta üçün bəzi sadə hesab haqqında bütün var. 157 00:08:58,180 --> 00:09:03,200 Beləliklə, biz ilk burada loop biz 0 başlamaq bir dəyişən adlı məbləği burada bu var. 158 00:09:03,200 --> 00:09:09,020 Sonra yenidən 0-dan 2-təkrarlamaq və biz bu toplama dəyişən əlavə 159 00:09:09,020 --> 00:09:12,620 bu İTH dərəcəli, belə bracket 0 sonra bracket 1. 160 00:09:12,620 --> 00:09:15,130 Və sonra, orta hesablamaq üçün dərəcəli məktəb nə kimi 161 00:09:15,130 --> 00:09:19,420 biz sadəcə məbləğ almaq, sınavlar sayı ilə bölmək 162 00:09:19,420 --> 00:09:22,520 və sonra yaxşı tədbir üçün biz dəyirmi adlı burada bir funksiyası zəng. 163 00:09:22,520 --> 00:09:28,580 >> İndi bir kənara kimi, line 34 Bu ara int ilə məşğul nədir? 164 00:09:28,580 --> 00:09:31,730 Bu bölmədə artıq gəlmişəm bilər, həqiqətən, rəsmi burada danışdı deyil 165 00:09:31,730 --> 00:09:35,210 lakin parens yəqin ki, bunu bu int nədir? >> [Işitilemez tələbə cavab] 166 00:09:35,210 --> 00:09:38,500 Bəli, bu, tökmə və ya typecasting aiddir 167 00:09:38,500 --> 00:09:41,690 1-data type alaraq və başqa bu konvertasiya deməkdir. 168 00:09:41,690 --> 00:09:45,400 Bəzən bir az qəribə ola bilər çünki bütün məlumat növləri ilə bunu edə bilməz. 169 00:09:45,400 --> 00:09:49,640 Lakin bu halda, əgər dəyirmi qaytarılması dəyəri float edir 170 00:09:49,640 --> 00:09:53,880 çünki, 2 kimi bütün sonra, mən bir float alaraq alıram və bir sıra bu ayırıcı 171 00:09:53,880 --> 00:09:55,840 Mən bir float geri almaq üçün gedirəm. 172 00:09:55,840 --> 00:10:00,760 Amma dərəcəli məktəb insanların orta 93.4 olduğunu bilmək həqiqətən sevmirəm 173 00:10:00,760 --> 00:10:04,420 onlar heç idi reallaşdırmaq lazımdır, çünki, belə ki, 95 yuvarlaqlaşdırma nöqtəsinə yaxın. 174 00:10:04,420 --> 00:10:09,540 >> Beləliklə, biz yerinə yaxın int hər turda int istifadə etmək istədiyiniz 175 00:10:09,540 --> 00:10:12,730 sonra heç bir nöqtə ilə 94 olacaq bu halda olan. 176 00:10:12,730 --> 00:10:14,530 Belə ki, yalnız bir az riyazi oyun var. 177 00:10:14,530 --> 00:10:17,570 Bu təsir olacaq, çünki biz, tökmə bu anlayışı qayıda bilərsiniz 178 00:10:17,570 --> 00:10:21,640 Əgər siz artıq aşkar əgər, problem üçün 2 seçin. 179 00:10:21,640 --> 00:10:25,210 Bir sıra sonra Beləliklə, siz hesab edə bilər - bu, mənim bütün gün təbəssüm etmək olacaq. 180 00:10:25,210 --> 00:10:27,830 Siz bir şəkil çəkmək əgər ki, bu kimi görünür 181 00:10:27,830 --> 00:10:31,460 lakin əsas ölçüsü də siz seçilir ki, 182 00:10:31,460 --> 00:10:34,050 işletim sistemi istediğimde. 183 00:10:34,050 --> 00:10:39,460 Sonra suallarınız Diziler haqqında? Bəli. 184 00:10:39,460 --> 00:10:47,080 [Işitilemez tələbə sual] 185 00:10:47,080 --> 00:10:49,310 Ah, yaxşı sualdır. 186 00:10:49,310 --> 00:10:53,150 Söhbət array ildə null 0 ne edir? Bu baxımdan mövcud deyil. 187 00:10:53,150 --> 00:10:57,430 Bu yalnız biz yalnız bir anda gəlib olduğunuz olan ip, kontekstində mövcuddur. 188 00:10:57,430 --> 00:11:02,300 Lakin bir sıra, bu işdə olduğu kimi, siz bütün sizin üçün əməliyyat sistemi xahiş edir. 189 00:11:02,300 --> 00:11:04,050 >> Və bir kənara, bu aydın olacaq deyə, kimi 190 00:11:04,050 --> 00:11:07,030 Mən sizin əməliyyat sistemi xahiş deyərək saxlamaq, əməliyyat sistemi soruşurlar. 191 00:11:07,030 --> 00:11:10,090 Bir əməliyyat sistemi, yəqin ki, bildiyiniz kimi, Mac OS, Windows, Linux. 192 00:11:10,090 --> 00:11:13,560 Siz GetFloat kimi funksiyaları zəng etdiyiniz zaman 193 00:11:13,560 --> 00:11:19,280 və ya siz notları kimi dəyişənlərin elan edir 194 00:11:19,280 --> 00:11:23,200 Günün sonunda siz səmərəli başqası siz yaddaş vermək xahiş olunur 195 00:11:23,200 --> 00:11:25,940 biz proqramçılar can çünki 196 00:11:25,940 --> 00:11:28,800 həqiqətən yaddaş fiziki əldə etmək üçün necə heç bir fikrim yoxdur. 197 00:11:28,800 --> 00:11:31,100 Amma kimsə edir: əməliyyat sistemi. 198 00:11:31,100 --> 00:11:36,630 Belə ki, başqa sevimli nişanlar və menyular və qovluqları bizə təqdim və bu kimi 199 00:11:36,630 --> 00:11:39,050 Bir Mac və ya PC olub, masaüstünüzde bax 200 00:11:39,050 --> 00:11:42,240 əməliyyat sistemləri, həmçinin aşağı səviyyədə dünyəvi stuff etmək 201 00:11:42,240 --> 00:11:44,680 bu gigabyte idarə yüksək texniki heyəti 202 00:11:44,680 --> 00:11:48,780 və ya ki, yaddaş 2 giqabayt, siz ki CPU idarə və s. 203 00:11:48,780 --> 00:11:50,170 Siz kodu yazıyoruz Belə ki, 204 00:11:50,170 --> 00:11:53,900 həqiqətən O mənada sizin əməliyyat sistemi üçün qoşulma edirik. 205 00:11:53,900 --> 00:11:55,720 Hesab edirəm ki, minimuma endirmək üçün gedirəm. Bütün hüquqlar. 206 00:11:55,720 --> 00:11:59,980 >> Diziler haqqında Digər suallar? 207 00:12:00,330 --> 00:12:02,520 No? Okay. 208 00:12:02,520 --> 00:12:06,680 Belə ki, keçid təbii seriallarda bir az tanış olan bir mövzu əslində. 209 00:12:06,680 --> 00:12:09,570 Və biz də bu son anda belə qısa heç baxdı. 210 00:12:09,570 --> 00:12:12,500 Bu çərşənbə bir string nümunəsi idi. 211 00:12:12,500 --> 00:12:15,060 Bu simli Məsələn, olduqca sadə proqram idi 212 00:12:15,060 --> 00:12:18,120 və Mən, həqiqətən, bu gün məqsədlər üçün xətləri bir neçə ilə sadələşdirilmiş etdik. 213 00:12:18,120 --> 00:12:22,680 Bu xətt 19-nə bütün, istifadəçi bir string almaq deyil s adlı dəyişən bu saklar. 214 00:12:22,680 --> 00:12:28,670 Sonra line 22 irəli bu yəqin satıra ki, simli 1 xarakterli çap edir. 215 00:12:28,670 --> 00:12:30,730 Amma necə bu edir? 216 00:12:30,730 --> 00:12:33,350 Biz, 0 bərabər bu qəbulu, dəyişən i elan edirik 217 00:12:33,350 --> 00:12:35,770 və bu indi köhnə vərdiş halına gəlir. 218 00:12:35,770 --> 00:12:39,270 Biz çərşənbə qədər bu görmədiyini, lakin onun adı nəticə çıxarmaq cür bilərsiniz 219 00:12:39,270 --> 00:12:44,610 strlen yalnız s verilərkən nə qaytarır? Simli və uzunluğu. 220 00:12:44,610 --> 00:12:47,940 Mən bunu bir simli, quote-dırnağı bağlamaq DAVID, ötürmək əgər 221 00:12:47,940 --> 00:12:51,810 o ümid mənə çünki DAVID sayı 5 qayıtmaq olacaq. 222 00:12:51,810 --> 00:12:55,600 Belə ki, həyat onun məqsədi ağır siz kodlu olub, bir string almaq edir 223 00:12:55,600 --> 00:12:58,840 və ya bu halda bir arqument kimi, bir dəyişən kimi takıldığından 224 00:12:58,840 --> 00:13:01,980 və bu simli uzunluğu nə tutulur. 225 00:13:01,980 --> 00:13:06,470 >> Belə ki, burada indi əvvəlki viktorina Məsələn bəzi notation borc edirik. 226 00:13:06,470 --> 00:13:09,390 Bu, üzüb gedirdi ilə heç bir əlaqəsi yoxdur sınavlar ilə heç bir əlaqəsi yoxdur, 227 00:13:09,390 --> 00:13:13,100 ancaq kiçik ağ yalan biz həftə 1 ildən izah etdik çıxır ki, 228 00:13:13,100 --> 00:13:16,330 C. bir string həqiqətən mövcud deyil ki, 229 00:13:16,330 --> 00:13:20,230 Günün sonunda string həqiqətən yalnız bir sıra edir. 230 00:13:20,230 --> 00:13:25,140 O geri yalnız 8 bit edir bytes bir sıra, belə byte, byte, byte, byte, var 231 00:13:25,140 --> 00:13:28,130 belə yaddaş yığın, yaddaş yığın, yaddaş yığın, yaddaş yığın. 232 00:13:28,130 --> 00:13:31,210 Və simli həyata vasitələri 233 00:13:31,210 --> 00:13:33,070 burada ilk xarakter qoyulması edir 234 00:13:33,070 --> 00:13:37,470 sonra burada, sonra burada, sonra, burada geri kompüter yaddaşında geri geri. 235 00:13:37,470 --> 00:13:42,160 Siz HELLO kimi bir söz heca ilə oxumaq istəyirdi Belə ki, 1 xarakterli H, qoymaq olardı 236 00:13:42,160 --> 00:13:48,240 sonra E, sonra L sonra L, sonra O - cəmi 5 simvol - bir yerdə kompüter RAM. 237 00:13:48,240 --> 00:13:52,080 Amma burada əsas detal, onlar geri geri geri geri olacaq ki, 238 00:13:52,080 --> 00:13:54,200 bir-birinə doğru gələcək. 239 00:13:54,200 --> 00:13:58,820 Deyə zaman s [i] İngilis, nə mənə verən nədir? 240 00:14:01,240 --> 00:14:04,550 S [i] Bu halda nə təmsil edir? Bəli. 241 00:14:04,550 --> 00:14:07,800 >> [Tələbə] simli olan İTH character. Məhz >>. Simli olan İTH character. 242 00:14:07,800 --> 00:14:12,260 İndi, i, burada loop üçün hər 0 başlamaq niyyətindədir 243 00:14:12,260 --> 00:14:14,850 hər şey 0-dan hesablanmasını başlayır, çünki ki, yaxşı. 244 00:14:14,850 --> 00:14:19,160 S Belə [0] HELLO kimi bir sözlə məktubu H təmsil gedir, 245 00:14:19,160 --> 00:14:24,530 s [1] s HELLO kimi bir sözlə E kimi bir məktub təmsil etmək üçün gedir və. 246 00:14:24,530 --> 00:14:27,130 Və biz bu loop hər iteration haqqında bunu görünür 247 00:14:27,130 --> 00:14:32,780 müvəqqəti bir char olan, c adlı dəyişən ildə İTH xarakteri saxlanılması ki, 248 00:14:32,780 --> 00:14:35,010 və biz c həyata çap edirik 249 00:14:35,010 --> 00:14:37,620 belə ki, bu proqram nə Günün sonunda aşağıdakı kimidir. 250 00:14:37,620 --> 00:14:42,900 Mən mənbə qovluğuna girin və mən string1 və mən irəli getmək və string1 çalıştırıyorsanız 251 00:14:42,900 --> 00:14:51,920 və sonra mən HELLO daxil edin kimi bir söz yazın, bunu bütün bir zamanda bu 1 xarakterli çap edir. 252 00:14:51,920 --> 00:14:54,010 >> Belə ki, zəriflik üçün imkan burada var. 253 00:14:54,010 --> 00:14:58,150 Zəruri deyil, bəlkə bu yolla daha aydın belə olsa mən daha çox iş növü edirəm. 254 00:14:58,150 --> 00:15:03,270 Yəqin ki, ümumiyyətlə, burada kodu line tullamaq olar? Bəli. 255 00:15:03,270 --> 00:15:08,290 Line 24. Line 24 ildə bir dəyişən c elan edirəm. 256 00:15:08,290 --> 00:15:14,320 Mən bu s İTH xarakteri saxlanılması, ancaq sonra burada c kullanıyorum. 257 00:15:14,320 --> 00:15:20,160 Mən c kullanıyorum, mən yalnız 24 üz line atmaq bilməz kimi hiss edirəm. 258 00:15:20,160 --> 00:15:23,850 [Işitilemez tələbə comment] >> Exactly. 259 00:15:23,850 --> 00:15:26,240 Belə ki, zaman, proqramların dizayn söhbət gəlir 260 00:15:26,240 --> 00:15:30,740 kimi oxunaqlı olan kodu bu qədər sadələşdirilməsi, qeyd 261 00:15:30,740 --> 00:15:34,680 ancaq yalnız bir dəyişən olduğunu dərk, onun data növü, bir sıra edir 262 00:15:34,680 --> 00:15:38,610 s belə [i] yalnız anında ki, simli ildə İTH xarakter qayıtmaq üçün gedir. 263 00:15:38,610 --> 00:15:40,620 Siz çap istəyirsinizsə, o gözəl deyil. 264 00:15:40,620 --> 00:15:43,680 Siz yalnız bir string çap deyilik çünki% c istifadə etmək 265 00:15:43,680 --> 00:15:48,520 bir simli bir xarakter çap edirik və bu da İTH xarakter çap təsiri var. 266 00:15:48,520 --> 00:15:51,390 Və printf istifadə edərək ötən həftə həqiqətən yalnız fərq geri 267 00:15:51,390 --> 00:15:54,220 həftə isə biz super sadə bir şey edəcəyini keçmiş ki, 268 00:15:54,220 --> 00:15:58,510 % s tutucu kimi sonra burada bir string adı 269 00:15:58,510 --> 00:16:01,190 indi biz başlıq altında bir az daha dərin dalış etdiyiniz və dedi 270 00:16:01,190 --> 00:16:06,090 simli çap etmir; orada bir xarakter çap. 271 00:16:06,090 --> 00:16:10,570 >> 1 digər var Çünki biz burada müxtəlif bir az bir şey edə bilərsiniz - heç səhv 272 00:16:10,570 --> 00:16:14,090 Bu proqram sağ, çünki, lakin mən axmaq bir şey edirəm 273 00:16:14,090 --> 00:16:16,810 Mən Çərşənbə qısaca qeyd. 274 00:16:16,810 --> 00:16:22,680 Lakin bu proqram dizayn daha da arta bilər necə geri düşünür? Bəli. 275 00:16:22,680 --> 00:16:28,280 [Işitilemez tələbə cavab] >> Oh, yaxşı. 276 00:16:28,280 --> 00:16:32,120 Beləliklə, biz adlı ikinci dəyişən n son dəfə tətbiq Xatırladaq ki, 277 00:16:32,120 --> 00:16:34,850 hansı çünki mənim qol ikinci əvvəl özümüzü zidd görünür 278 00:16:34,850 --> 00:16:37,380 , lazımsız kimi bir dəyişən tullamaq yalnız idi 279 00:16:37,380 --> 00:16:40,700 lakin çərşənbə günü biz, həqiqətən, bu ki xatırlayıram. 280 00:16:40,700 --> 00:16:46,170 I, sonra n = strlen, həqiqətən, burada bir vergül üçün loop üçün dəyişdi 281 00:16:46,170 --> 00:16:52,120 və sonra burada artıq Mən 00:16:57,660 Əsas gəlir mən bu mənim başlatma dəyişdirilməsi ilə nail oldum ki, nədir 283 00:16:57,660 --> 00:17:01,590 və bu artıq mənim vəziyyətdə? >> [Işitilemez tələbə cavab] >> Exactly. 284 00:17:01,590 --> 00:17:06,170 Mən xatırlayıram çünki təkrar yenidən strlen xatırladaraq və deyiləm necə loop işləri üçün. 285 00:17:06,170 --> 00:17:08,790 Onlar daha mürəkkəb görünüşlü almaq üçün başlamaq belə 286 00:17:08,790 --> 00:17:12,480 ilk nöqtəli vergül əvvəl şey bir dəfə baş verən başlatma olduğunu xatırlayıram. 287 00:17:12,480 --> 00:17:14,359 Vəziyyəti, baxmayaraq, ortasında 288 00:17:14,359 --> 00:17:17,710 və bu siz loop keçir ki, hər dəfə yoxlanılır olur. 289 00:17:17,710 --> 00:17:22,420 >> Belə ki, axmaq cür təkrar kompüter eyni sualı üçün var - 290 00:17:22,420 --> 00:17:25,920 HELLO müddəti nədir? HELLO müddəti nədir? HELLO müddəti nədir? - 291 00:17:25,920 --> 00:17:29,740 biz bu gün görəcəksiniz kimi, çünki Çərşənbə, bu, mütləq vaxt gedir 292 00:17:29,740 --> 00:17:34,320 bir simli uzunluğu anlamaq üçün, çünki bu zaman çox yaxşı istifadə deyil 293 00:17:34,320 --> 00:17:37,030 həqiqətən səy bir qədər edir. 294 00:17:37,030 --> 00:17:39,760 Bəzi dillərdə olduğu kimi, ani deyil. 295 00:17:39,760 --> 00:17:43,920 Belə ki, n bu dəyişən, mən ödənilməsi alıram qiyməti nədir? 296 00:17:43,920 --> 00:17:45,640 Biz burada bir ticarət-off görüyorsunuz. 297 00:17:45,640 --> 00:17:49,460 Mən təkrar eyni lənətləmək sual deyil zaman saxlaya bilərsiniz 298 00:17:49,460 --> 00:17:51,740 amma mənə nə olan şey başa olacaq? 299 00:17:51,740 --> 00:17:55,050 >> [Tələbə] Siz yaddaş müəyyən bir itirirlər. Məhz >>. Mənə bir yaddaş dəyəri olacaq. 300 00:17:55,050 --> 00:17:56,670 Belə ki, bu halda mənə nə edir? 301 00:17:56,670 --> 00:18:01,530 Digər 32 bit burada söz int nəzərdə tutulmuş kimi n, yalnız int çünki. 302 00:18:01,530 --> 00:18:03,300 Lakin tamam? 303 00:18:03,300 --> 00:18:05,800 Bu barədə düşünüyorsanız, çünki Açığı, o, yəqin ki, tamam 304 00:18:05,800 --> 00:18:09,030 artıq simli, mən israf etmək gidiyorum çox vaxt 305 00:18:09,030 --> 00:18:11,920 strlen təkrar və yenidən deyilən almaq üçün gedir çünki 306 00:18:11,920 --> 00:18:13,520 loop hər iteration üçün. 307 00:18:13,520 --> 00:18:18,070 Və bu gün mənim Mac RAM 2 gigs, bu gün bəzən RAM 4 gigs var. 308 00:18:18,070 --> 00:18:22,420 Mən, həqiqətən, hər şeyi sürətləndirmək həmin bayt 4 ödəyə bilər. 309 00:18:22,420 --> 00:18:26,590 Amma bu proqramlaşdırma və kompüter həqiqətən ticarət-off və bir mövzu olacaq 310 00:18:26,590 --> 00:18:28,320 həqiqətən pulsuz üçün bir şey almaq heç vaxt edir. 311 00:18:28,320 --> 00:18:32,880 Burada bir şey yaxşılaşdırılması üçün istəyirsinizsə, elə digər tərəfdən onu ödəmək üçün. 312 00:18:32,880 --> 00:18:35,880 Bu halda Space qarşı zaman. 313 00:18:35,880 --> 00:18:40,700 >> Belə ki, bu, bütün bu kimi sirli bir şey doğru qədər aparıcı edilib 314 00:18:40,700 --> 00:18:44,070 ki, siz yəqin ki, indi həyata fiqurlu kimi, həqiqətən deyir? 315 00:18:44,070 --> 00:18:47,420 [Işitilemez tələbə cavab] >> Bəli, belə bu, sizin Ovaltine içmək üçün əmin olun 316 00:18:47,420 --> 00:18:52,490 həqiqətən ROT13 adlı alqoritmi, Rot 1-3, istifadə 317 00:18:52,490 --> 00:18:55,500 olan yalnız məktubları bütün 13 yerləri dönüşümlü deməkdir 318 00:18:55,500 --> 00:18:58,720 olan almaq və sonra 13 əlavə və nöqtə, nöqtə, nöqtə getmək deməkdir 319 00:18:58,720 --> 00:19:04,640 üz 13 məktubu bütün yol, s B və C və D eyni şeyi edir. 320 00:19:04,640 --> 00:19:10,850 Və biz, həqiqətən, 13 yerlərin shift istifadə bura çevirmək əgər, 321 00:19:10,850 --> 00:19:14,580 biz az Ralphie nə geri almaq lazımdır, sizin Ovaltine içmək əmin olun edilib. 322 00:19:14,580 --> 00:19:18,160 Amma indi problem üçün, ən azı standart nəşr, 2 müəyyən 323 00:19:18,160 --> 00:19:21,680 Əgər bu özünüz enciphering nə cür var 324 00:19:21,680 --> 00:19:25,990 və biz elə bu kimi daxil almaq və ya decrypt şifrelemek bu var. 325 00:19:25,990 --> 00:19:29,850 >> Belə ki, bu əsasları növ olan imkan bizə gətirib çıxarır? 326 00:19:29,850 --> 00:19:32,650 Nin burada bu üçüncü Məsələn nəzər salaq. 327 00:19:32,650 --> 00:19:38,430 İlk növbədə, bu, ASCII deyirlər. ASCII geri nə aid deyil? 328 00:19:38,430 --> 00:19:40,460 İnformasiya mübadiləsi üçün Amerika Standart Məcəlləsi, 329 00:19:40,460 --> 00:19:43,850 olan nə deyərək həqiqətən uzun bir yol var? ASCII nədir? 330 00:19:43,850 --> 00:19:47,890 [Işitilemez tələbə cavab] >> ki, nə var? >> [Tələbə] A xarakteri xəritəsi. >> A xarakteri xəritəsi. 331 00:19:47,890 --> 00:19:51,390 Dünya standart var, çünki yalnız məktubları nömrələri eşler 332 00:19:51,390 --> 00:19:55,380 nə nömrələri bizim bütün kompüterlər istifadə edə bilərsiniz ki, nə məktublar təmsil edəcək 333 00:19:55,380 --> 00:19:59,340 və proqramları bütün ekranda şeyi çap gəldikdə yalnız uyğun gəlir. 334 00:19:59,340 --> 00:20:04,680 Belə ki, 65 A təmsil olur Xatırladaq ki, 97 kiçik təmsil olur. 335 00:20:04,680 --> 00:20:08,510 Və burada bu sadə proqram ASCII faktı istifadə edir - 336 00:20:08,510 --> 00:20:12,770 dünya kapital A 65 olduğunu bilir ki, - və yalnız birdən çap edir. 337 00:20:12,770 --> 00:20:16,320 >> Biz bu kodu daxil dalış əvvəl Belə ki, mənə əvəzinə terminal pəncərə açmaq bildirin. 338 00:20:16,320 --> 00:20:21,550 Mənə davam və ASCII etmək, sonra-nin yalnız çıxdı korlamaq üçün bu şey run imkan edək. 339 00:20:21,550 --> 00:20:25,960 Yalnız mənə müxtəlif kodları bütün deyir ki, həqiqətən böyük chart: Və yalnız bu deyil 340 00:20:25,960 --> 00:20:27,950 müxtəlif məktublar bütün. 341 00:20:27,950 --> 00:20:32,100 Super sadə proqram Beləliklə, amma ağır kodu çıxış edənlər 52 xətləri olmamışdır: 342 00:20:32,100 --> 00:20:34,860 26 böyük, 26 kiçik. 343 00:20:34,860 --> 00:20:37,790 Əksinə, mən loops bir neçə program bu idi. 344 00:20:37,790 --> 00:20:39,720 Burada nə etdi bildirək. 345 00:20:39,720 --> 00:20:44,790 Mən 26 məktubları çap etmək istədim, çünki mən 65 + 26 haqqında i 65 edir qədər iterated 346 00:20:44,790 --> 00:20:49,860 İngilis əlifbası, i + + hər iteration, və indi yenidən bu bildiriş. 347 00:20:49,860 --> 00:20:52,540 Bu, bizim dost typecasting təkrarlanmaması var 348 00:20:52,540 --> 00:20:54,620 başqa bir 1 data type çevirmək vasitəsi 349 00:20:54,620 --> 00:20:57,480 Mən nə bu proqram nə istəyirsiniz? çünki 350 00:20:57,480 --> 00:21:02,650 S 65, 66, 67, və - Hesab edirəm ki, çünki mən hesablanması böyüyüb necə sayca saymaq istəyirik - 351 00:21:02,650 --> 00:21:04,420 amma yalnız nömrələri çap istəmirəm. 352 00:21:04,420 --> 00:21:08,030 Mən sayı izlədi məktubu çap etmək istəyirəm. 353 00:21:08,030 --> 00:21:18,640 Sayı, B: Mən A çap etmək istəyirəm sayı, amma eyni dəqiq dəyişən ilə bunu edə bilərsiniz. 354 00:21:18,640 --> 00:21:21,630 Mən, bir xarakter üçün tutucu kimi% c çap 355 00:21:21,630 --> 00:21:25,080 Bir rəqəmli və ya sayı bir tutucu kimi% d. 356 00:21:25,080 --> 00:21:27,750 Sonra Mən o 2 placeholders üçün nə yerləşdirin edirsiniz? 357 00:21:27,750 --> 00:21:33,960 Mən xarakteri ekvivalent ilk plug, və sonra i həyata özü çap. 358 00:21:33,960 --> 00:21:36,400 >> Belə ki, bu da yalnız işləri görürük. 359 00:21:36,400 --> 00:21:39,320 Mən int bir float olan tökmə bilər kimi 360 00:21:39,320 --> 00:21:41,750 bir real sayı bir tam getmək üçün 361 00:21:41,750 --> 00:21:46,100 burada mən bir int bir az qəribə bir char, to - 362 00:21:46,100 --> 00:21:48,680 olduqca real dünya üzərində xəritəyə deyil - lakin kompüter 363 00:21:48,680 --> 00:21:51,140 bir char, başlıq altında yalnız bir nömrə 364 00:21:51,140 --> 00:21:53,590 biz deyərək, kompüter burada heç belə aydın olan edirik 365 00:21:53,590 --> 00:21:58,920 printf, i, 65 kimi çap onun rəqəmli ekvivalent kimi çap. 366 00:21:58,920 --> 00:22:02,110 Mən texniki hətta bu lazım deyil həyata Və çevrilir. 367 00:22:02,110 --> 00:22:05,020 Mən bir an əvvəl bunu nə aydın tökmə edir 368 00:22:05,020 --> 00:22:08,760 Mən getmək və istədiyiniz nə data type ifadə edərək. 369 00:22:08,760 --> 00:22:11,840 Amma artıq bu tutucu% c olduğunu fark 370 00:22:11,840 --> 00:22:14,930 burada və bu, digər% c tutucu. 371 00:22:14,930 --> 00:22:18,880 Bu int deyil baxmayaraq, kompüter, bir char həyata keçirir 372 00:22:18,880 --> 00:22:21,080 yalnız başlıq altında bir int var. 373 00:22:21,080 --> 00:22:25,100 >> Mən, həqiqətən, bu derleyeceğiz və ASCII proqram təkrar Beləliklə, əgər, 374 00:22:25,100 --> 00:22:31,210 kompüter bu yazışma olduğunu dərk çünki hələ yalnız işləri görürük. 375 00:22:31,210 --> 00:22:34,870 İndi ints üçün üzüb gedirdi dünyanın açıq tökmə üçün daha çox vacibdir 376 00:22:34,870 --> 00:22:37,460 var, çünki həqiqətən hesablanmış qərar edirik: 377 00:22:37,460 --> 00:22:40,140 Bu kəsir sonra hər şey tullamaq. 378 00:22:40,140 --> 00:22:44,990 Burada bir xarakter bir sıra çünki tullamaq həqiqətən heç bir şey var 379 00:22:44,990 --> 00:22:48,220 və simli yalnız simvol bir sıra edir. 380 00:22:48,220 --> 00:22:52,530 Belə ki, bəzi şifrləmə və ya parol çözme həyata zaman gəldiyi zaman, 381 00:22:52,530 --> 00:22:56,770 Biz həqiqətən bu cəfəngiyyat kimi bir şey, tərcümə edə bilərsiniz ki, necə 382 00:22:56,770 --> 00:22:58,670 Sizin Ovaltine içmək əmin olun? 383 00:22:58,670 --> 00:23:02,700 Biz indi bilirik - nin ehtimal kimi götürək - əsas, 384 00:23:02,700 --> 00:23:08,010 biz, bu məktublar bütün fırlanan etdiyiniz nömrə sayı 13? 385 00:23:08,010 --> 00:23:11,800 Belə ki, biz, məktub B cümlənin əvvəlində Ey bütün yol getdi 386 00:23:11,800 --> 00:23:14,710 Mən B əgər çünki Ovaltine içmək üçün əmin olun 387 00:23:14,710 --> 00:23:19,600 və sonra C, D, E, F, G, H, I, J, K, L, M, N, O, getmək 388 00:23:19,600 --> 00:23:23,760 məktub B şifreleme O olur səbəbdən 389 00:23:23,760 --> 00:23:26,570 Mən yalnız 13 əlavə çünki. 390 00:23:26,570 --> 00:23:33,460 >> Mən decrypt bu istəyirəm əgər, mən mahiyyətcə O almaq və sonra, 13 çıxmaq lazımdır. 391 00:23:33,460 --> 00:23:36,880 Əlifbası 26 məktublar var çünki Və ya, səmimi, bu, gözəl simmetrik deyil 392 00:23:36,880 --> 00:23:41,260 biz də yalnız 13 əlavə edə bilərsiniz və biz məktub B. geri almaq lazımdır 393 00:23:41,260 --> 00:23:44,290 Amma Sezar bu kimi bir şey həyata necə getmək yoxdur 394 00:23:44,290 --> 00:23:46,600 və ya, həqiqətən, ümumi strings manipulyasiya? 395 00:23:46,600 --> 00:23:51,380 Məktub B nə nömrə varsa? 396 00:23:51,380 --> 00:23:55,290 Məktub B nedir? Belə ki, sağ, 66 var? 397 00:23:55,290 --> 00:23:59,220 A məktubu 65 və məktubu B 66 Beləliklə, əgər, 398 00:23:59,220 --> 00:24:03,940 66 ki, nə üçün bütün bu 13 əlavə və bu mənə 79 verir. 399 00:24:03,940 --> 00:24:09,150 Biz az istifadə etmək hesabatı, O. üzərinə 79 həqiqətən xəritələr getmək əgər 400 00:24:09,150 --> 00:24:11,290 >> Amma bir küncündə işin bir az burada var. 401 00:24:11,290 --> 00:24:15,170 Nədir, məktubu Z demək? 402 00:24:15,170 --> 00:24:20,180 Biz əlifba sonuna bütün yol almaq üçün 66 + 25 Əgər biz 91 istəyirik. 403 00:24:20,180 --> 00:24:24,520 91 + 13 mənə 104 verir, nə tahmin? 404 00:24:24,520 --> 00:24:29,200 104 bir böyük məktub bərabər deyil. 405 00:24:29,200 --> 00:24:31,610 Nin burada bir az istifadə etmək hesabatı geri edək. 406 00:24:31,610 --> 00:24:38,070 Mən cihaz, bildiriş bu proqram təkrar edin ki, 104, mən terminal pəncərə geri əgər, 407 00:24:38,070 --> 00:24:41,800 104 yəqin kiçik h. 408 00:24:41,800 --> 00:24:46,400 Belə ki, biz Z-da start zaman əmin etmək üçün burada bəzi əsas oyun lazımdır 409 00:24:46,400 --> 00:24:50,260 və biz yalnız böyük və daha böyük ədəd qabaqda döymə saxlamaq istəmirəm bu 13 əlavə edin. 410 00:24:50,260 --> 00:24:52,600 Biz həqiqətən nə etmək istəyirsiniz? 411 00:24:52,600 --> 00:24:54,570 Siz ətrafında kesmek istəyirlər. 412 00:24:54,570 --> 00:25:00,250 >> Belə ki, indi bölməsində və ya problem set spec özlüyündə, yəqin ki, gördüm ki, həyata çevirir 413 00:25:00,250 --> 00:25:05,730 da faiz işarəsi olduğunu C bu digər operator var ki, 414 00:25:05,730 --> 00:25:11,020 amma tutucu müəyyən etmək üçün bura% istifadə etdiyiniz halda, 415 00:25:11,020 --> 00:25:15,420 xüsusilə problem set 2 üçün bu kimi bir şey də var ki, bilirik: 416 00:25:15,420 --> 00:25:18,990 int x = y% z. 417 00:25:18,990 --> 00:25:22,770 Mənə yalnız bu çox ümumi forması kimi bu təqdim edək. 418 00:25:22,770 --> 00:25:25,580 Yüzdə bir proqramlaşdırma dili nə deməkdir? >> [Tələbə] modulo. 419 00:25:25,580 --> 00:25:28,790 Qalan deyərək bir xülya yoludur modulo. 420 00:25:28,790 --> 00:25:31,620 Orada müəyyən bir cüzi fərq var baxmayaraq 421 00:25:31,620 --> 00:25:37,210 Bu o deməkdir z tərəfindən y bölmək lakin bölgüsü nəticə qayıtmaq yoxdur; 422 00:25:37,210 --> 00:25:39,650 əvəzinə, qalan qaytarın. 423 00:25:39,650 --> 00:25:47,390 >> Y həqiqətən 3 və z, həqiqətən 2 bölünür 3 2 Beləliklə, əgər 1-qalan 1 424 00:25:47,390 --> 00:25:51,550 belə nə x bu ssenari əslində bərabər edir? 1. 425 00:25:51,550 --> 00:25:54,540 Bu sadə, aşağı səviyyədə fikirdir. 426 00:25:54,540 --> 00:25:56,480 Bu fikir ətrafında bükülmüş almaq üçün bir az zaman alır 427 00:25:56,480 --> 00:25:58,740 hətta qalıqları qayğı idi, çünki yəqin ki, bir müddət oldu, çünki 428 00:25:58,740 --> 00:26:01,160 və həqiqətən, məqsədyönlü bir şey üçün istifadə 429 00:26:01,160 --> 00:26:05,290 lakin bu halda 3 kimi bir çox getmək bilər ki, sadə fakt 430 00:26:05,290 --> 00:26:08,920 sonra 2 və kimi nisbətən kiçik sayda səmərəli ətrafında kesmek 431 00:26:08,920 --> 00:26:14,160 1 kimi kiçik dəyəri qalan istifadə əvəzolunmaz oyun olacaq 432 00:26:14,160 --> 00:26:17,690 biz Sezar kimi bir şey və bu digər şey Vigenere üçün də istifadə edə bilər ki, 433 00:26:17,690 --> 00:26:22,240 problemi 2 müəyyən, lakin bu dövr ərzində bir təkrarlanan oyun olacaq. 434 00:26:22,240 --> 00:26:24,880 Yalnız ümumi qalan alaraq bu sadə, sadə fikir 435 00:26:24,880 --> 00:26:26,530 bizə ətrafında kesmek üçün imkan gedir. 436 00:26:26,530 --> 00:26:31,140 Və biz yaddaş özü ilə daha oynayan başlamaq kimi, seriallarda daha çox oynayan başlamaq kimi, 437 00:26:31,140 --> 00:26:35,800 Bu güclü oyun daha çox olmaq niyyətindədir. 438 00:26:35,800 --> 00:26:43,420 >> Belə ASCII sonra hər hansı bir sualınız və ya seriallarda kimi strings nümayəndəliyinin? 439 00:26:43,420 --> 00:26:47,430 Və biz 1 pillə daha da ala bilərsiniz. Bəli. 440 00:26:47,430 --> 00:26:52,350 [Işitilemez tələbə sual] >> Yaxşı sual. 441 00:26:52,350 --> 00:26:55,370 Dəyişən qarşısında bir ulduz var ne deməkdir? 442 00:26:55,370 --> 00:26:57,720 Mənə təxirə edək hər hansı bir ətraflı ki, cavab, 443 00:26:57,720 --> 00:27:00,100 lakin bir göstərici kimi tanınan bir mövzu aiddir. 444 00:27:00,100 --> 00:27:03,440 Pointers yaddaş ilə, və biz, həqiqətən, bu gün edirik 445 00:27:03,440 --> 00:27:06,330 ki, müzakirə doğru ilk addım alaraq, 446 00:27:06,330 --> 00:27:08,600 lakin indi, mənim ulduz mövcud deyil ki, iddia bildirin 447 00:27:08,600 --> 00:27:15,380 və biz strings strings zəng əvəzinə char * istifadə edərək davam edəcəyik 448 00:27:15,380 --> 00:27:19,530 yəqin ki, əvvəl gördüm və mən bir iltifat kimi yalnız bir anda ekranda qoymaq bilərsiniz. 449 00:27:19,530 --> 00:27:23,010 Beləliklə, biz yəqin ki, istəyirəm siz çox çox yol daha ətraflı ki, geri qayıtmaq lazımdır. 450 00:27:23,010 --> 00:27:25,760 Nəhayət, bu gün. Bəli. 451 00:27:25,760 --> 00:27:42,810 >> [Işitilemez tələbə sual] 452 00:27:42,810 --> 00:27:47,080 Nə kontekstində bir xarakter üçün giriş təmin etmək üçün var? >> [Tələbə] Bəli. 453 00:27:47,080 --> 00:27:52,130 Belə ki, ismarıcları, bir + qoymaq deyil zaman, yalnız müsbət ədəd hesab edilir. 454 00:27:52,130 --> 00:27:55,390 Yalnız 1 nömrəli yazmaq Belə ki, bu müsbət 1 var. 455 00:27:55,390 --> 00:27:57,710 Siz həqiqətən dəyər inkar müəyyən etmək istəyirsinizsə, 456 00:27:57,710 --> 00:28:01,060 Siz sözün klavyenizdeki -1 var. 457 00:28:01,060 --> 00:28:20,440 Amma bu yəqin ki, sizin sual deyil. >> [Işitilemez tələbə cavab] 458 00:28:20,440 --> 00:28:22,200 >> Sual Yaxşı. Okay. 459 00:28:22,200 --> 00:28:24,970 Bu səhv bir növ ilə, mən toplamaq, nə var Beləliklə, siz qaçdı 460 00:28:24,970 --> 00:28:27,640 Əgər bir xarakter üçün tam konvertasiya çünki 461 00:28:27,640 --> 00:28:29,780 lakin elə mənfilik, cəlb 462 00:28:29,780 --> 00:28:32,380 və belə yalnız çıxdı karakter birtəhər munged. 463 00:28:32,380 --> 00:28:36,710 Beləliklə, biz mövzunu bu cür qayıda qədər mənə bir az oversimplify bildirin. 464 00:28:36,710 --> 00:28:39,570 İndi, hər şeyi bu yolla edirəm - bu bir oversimplification edir. 465 00:28:39,570 --> 00:28:43,500 Amma tam dünya, sizin sərəncamında neçə bit var? 466 00:28:43,500 --> 00:28:45,190 Siz 32 bit var. 467 00:28:45,190 --> 00:28:49,030 Və bu günə qədər, sizə buna görə də təmsil edə bilər integers sayı danışıb sonra 468 00:28:49,030 --> 00:28:52,430 siz 32 bit, çünki təxminən 4 milyard ümumi edir, 469 00:28:52,430 --> 00:28:55,100 Belə ki, təxminən 4 milyard var ki, 32-2 var. 470 00:28:55,100 --> 00:28:58,810 Amma biz həqiqətən ədəd bir sıra olmayan bir həftə və ya əvvəl 2 gördüm 471 00:28:58,810 --> 00:29:01,240 qədər 0-dan 4 milyard. 472 00:29:01,240 --> 00:29:06,340 Sıra əvəzinə müsbət təxminən mənfi 2 milyard 2 milyard gedir. 473 00:29:06,340 --> 00:29:10,990 Amma bu sonra mənfi 2 milyard anlayışı necə təmsil yoxdur, sual begs 474 00:29:10,990 --> 00:29:13,260 tək mənfi 1 edək? 475 00:29:13,260 --> 00:29:17,960 İndi, biz oversimplify və yalnız biz leftmost az istifadə olacaq demək olar ki, 476 00:29:17,960 --> 00:29:22,380 bir 1 varsa bu 32 bit, bu, mənfi sıra 477 00:29:22,380 --> 00:29:25,090 bir 0 varsa və bu müsbət sıra. 478 00:29:25,090 --> 00:29:28,570 Mənfi ədədlər ki, sadələşdirilmiş nümayəndəliyi ilə problemi 479 00:29:28,570 --> 00:29:33,700 olduğunu bilə-bilə ağıllı olan və bir sıra bir xarakter olan çevirmək üçün çalışırıq, əgər 480 00:29:33,700 --> 00:29:37,190 və ya əksinə, mənfi xarakter kimi şey yoxdur. 481 00:29:37,190 --> 00:29:42,550 Yalnız 8 bit istifadə edən ASCII, o bit məsələ bütün 8, dünya 482 00:29:42,550 --> 00:29:46,810 və leftmost bit mənfilik ilə heç bir əlaqəsi yoxdur. 483 00:29:46,810 --> 00:29:49,670 Və yalnız, mən leftmost bit deyəndə, aydın olmaq 484 00:29:49,670 --> 00:29:54,610 Xatırladaq ki, ilk həftədə bizim bit bağlı nümunələr idi zaman 485 00:29:54,610 --> 00:30:02,570 biz bu kimi bir şey, 1001101 kimi şeylər çəkdi xatırlayıram. 486 00:30:02,570 --> 00:30:07,210 Mən leftmost bit deyəndə, mən yalnız sözün siz sola bütün yol yazmaq ki, 1 deməkdir. 487 00:30:07,210 --> 00:30:11,910 Belə simvol dünyada mənfilik heç bir anlayış var 488 00:30:11,910 --> 00:30:16,360 ki leftmost bit həqiqətən ASCII, mənfilik ilə heç bir əlaqəsi ilə bir şey var. 489 00:30:16,360 --> 00:30:19,390 >> Belə ki, kimi səslənir - və kontekstində tam cavab çətindir - 490 00:30:19,390 --> 00:30:25,840 amma nədənsə, kodu mənfi dəyər təmsil kimi leftmost bit qarıxdırıcı edilmişdir 491 00:30:25,840 --> 00:30:29,160 həqiqətən bu xarakterli hissəsi idi. 492 00:30:29,160 --> 00:30:32,250 Kompüter həqiqətən bir az meraklısı bir şey çünki Və yenə, mən oversimplifying alıram 493 00:30:32,250 --> 00:30:37,080 yalnız bir 0 qarşı mənfi işarəsi üçün 1 ki leftmost bit dəyişən çox. 494 00:30:37,080 --> 00:30:41,270 Google maraqlı olduğunuz halda Onlar əvəzinə, adətən 2 complement deyilən bir şey istifadə 495 00:30:41,270 --> 00:30:43,830 bir yanaşma bir az daha mürəkkəb deyil 496 00:30:43,830 --> 00:30:45,490 ancaq fikir nəticədə eyni. 497 00:30:45,490 --> 00:30:50,530 >> Belə ki, qısa, bir xarakter, bir sıra masaj olması ilə idi 498 00:30:50,530 --> 00:30:53,750 və ya əksinə ancaq kodu faktı biləndir deyil 499 00:30:53,750 --> 00:30:56,510 o bit 1-rəqəmli dünya əhəmiyyətli idi. 500 00:30:56,510 --> 00:30:59,940 Bu xarakter dünyada işi deyil. 501 00:30:59,940 --> 00:31:04,270 İndi mübahisəli olan halda, müəyyən kimi Lakin səslənir. Digər suallar. 502 00:31:06,030 --> 00:31:07,110 Okay. 503 00:31:07,110 --> 00:31:11,560 Belə ki, uzaq, biz yazdıq proqramları bütün istifadəçi bəlkə daxil etmişlər 504 00:31:11,560 --> 00:31:14,330 GetInt, GetString kimi funksiyaları şəklində 505 00:31:14,330 --> 00:31:16,990 və ya müxtəlif kitablar və ya online istinadlar qabaqda oxu olduğunuz halda, 506 00:31:16,990 --> 00:31:21,390 siz özünüzü səmimi, biz CS50 kitabxana istifadə edən scanf kimi funksiyaları istifadə edə bilər. 507 00:31:21,390 --> 00:31:25,370 Amma bir həftə və ya 2-ci, biz, həqiqətən, CS50 kitabxana həyata necə göstərmək lazımdır 508 00:31:25,370 --> 00:31:27,890 biz ümumilikdə bu təlim təkərlər off bilər ki. 509 00:31:27,890 --> 00:31:31,340 >> Bir istifadəçi daxil almaq üçün başqa yol var həyata Amma çevrilir. 510 00:31:31,340 --> 00:31:34,670 Əslində, biz özümüz command line arguments istifadə edirlər 511 00:31:34,670 --> 00:31:36,500 İndi bir neçə həftə üçün. 512 00:31:36,500 --> 00:31:41,150 Biz cingilti çalıştırmak və ya biz run hər zaman etmək, 513 00:31:41,150 --> 00:31:45,050 biz yalnız cingilti tipli deyil, daxil edin, biz daxil etmək tipli deyil. 514 00:31:45,050 --> 00:31:49,340 Biz adətən bizim terminal Windows sətirinə sözü cingilti sonra nə yazılı var? 515 00:31:51,110 --> 00:31:52,900 [Tələbə] fayl adı. >> Fayl adı, sağ? 516 00:31:52,900 --> 00:31:57,560 Hello.c ya mario.c və ya hər hansı müvafiq fayl adı. 517 00:31:57,560 --> 00:32:01,910 Və həqiqətən, etdiyiniz nə mənada siz cingilti davranış təsir etdik olunur 518 00:32:01,910 --> 00:32:05,750 əlbəttə cingilti yazan insanlar az köhnə heç bir fikir siz idi, çünki 519 00:32:05,750 --> 00:32:08,890 mario.c il sonra adlı proqram yazmaq gedirdi. 520 00:32:08,890 --> 00:32:13,150 Beləliklə, elə ki, proqram davranış təsir idi 521 00:32:13,150 --> 00:32:18,140 və proqram cingilti siz daxil qəbul edə bilər ki, belə bir şəkildə yazılı idi 522 00:32:18,140 --> 00:32:23,480 tezliklə haqqında sözləri əlavə istifadəçi Xit daxil əvvəl. 523 00:32:23,480 --> 00:32:27,860 >> Belə ki, bir müddət biz demək olar ki, bütün proqramları elan olunmuşdur çıxır ki, 524 00:32:27,860 --> 00:32:32,840 bu kimi başlamaq - int əsas (void) - və biz qabaqda getdi sonra 525 00:32:32,840 --> 00:32:35,110 və bizim kodu yazmağa başlamışdır. 526 00:32:35,110 --> 00:32:37,910 Və biz, fayl üst daxildir bəzi kəskin ola bilər 527 00:32:37,910 --> 00:32:40,660 lakin demək olar ki, bütün proqramları bu günə qədər bu başlayıb 528 00:32:40,660 --> 00:32:44,200 Siz kitab, bölmə görülə bilər, hətta, online istinadlar 529 00:32:44,200 --> 00:32:46,570 Bu əslində etibarsız olması deyil. 530 00:32:46,570 --> 00:32:55,820 Bu etmək üçün digər qanuni formada argc int və sonra simli argv [] edir. 531 00:32:55,820 --> 00:32:57,500 Belə ki, indi bu nə eyham edir? 532 00:32:57,500 --> 00:33:01,320 Bu insan konvensiya olduğu argc, çıxır - Bu foo zəng edə bilər, 533 00:33:01,320 --> 00:33:03,710 lakin bu, yalnız oxuculara çox daha az aydın olar - 534 00:33:03,710 --> 00:33:09,330 argc yalnız nə təmsil əsas adlanan funksiya bir dəlil var? 535 00:33:09,330 --> 00:33:12,450 Argc tanış olanlar üçün nə dayana bilər? 536 00:33:12,450 --> 00:33:14,980 >> [Işitilemez tələbə cavab] >> Bəli, dəlillər və ya dəlil sayı sayı. 537 00:33:14,980 --> 00:33:16,510 Bu kimi sadə. 538 00:33:16,510 --> 00:33:19,160 Neçə arqumentlər bu proqram qəbul edilmişdir? 539 00:33:19,160 --> 00:33:20,630 Ki, nə deməkdir? 540 00:33:20,630 --> 00:33:27,090 Zınqıltı - Mən bu kimi bir şey Yayınladığınız komanda line Əgər mario.c - 541 00:33:27,090 --> 00:33:35,440 Mən daxil edin hit zaman argc 2, qədər dolaşıq bir dəyər etmək niyyətindədir. 542 00:33:35,440 --> 00:33:40,150 Belə ki, argc dəlil sayı olduğunu çıxır 543 00:33:40,150 --> 00:33:46,280 amma tarixi səbəblərə görə, proqram özü adı ki sayı daxil edilir. 544 00:33:46,280 --> 00:33:51,950 Belə argc mən cingilti mario.c yazarkən 2-dir. 545 00:33:51,950 --> 00:33:54,290 Argv nə ola bilər? 546 00:33:54,290 --> 00:33:57,020 İlk növbədə, argv bir string kimi görünür, lakin olduqca 547 00:33:57,020 --> 00:33:59,310 çünki son çərşənbə və bütün daha bu gün, 548 00:33:59,310 --> 00:34:02,890 bu kvadratşəkilli mötərizələri nə adlanır? Yəni bir sıra var. 549 00:34:02,890 --> 00:34:07,110 Orada array heç sıra və daxilən mənada etməlidir 550 00:34:07,110 --> 00:34:10,790 cingilti il ​​əvvəl insanlar əlbəttə yox idi, çünki 551 00:34:10,790 --> 00:34:16,300 bizim kimi neçə sözlə insanların Enter'a əvvəl sətirinə yazın olardı. 552 00:34:16,300 --> 00:34:22,280 >> Belə ki, burada bu halda onlar arqumentlər bir sıra alınmaqla funksiyası əsas elan 553 00:34:22,280 --> 00:34:24,590 0 və ya daha dəlilləri. 554 00:34:24,590 --> 00:34:26,460 Onlar orada nə qədər çox əvvəlcədən bilmirəm 555 00:34:26,460 --> 00:34:29,690 belə bu kvadratşəkilli mötərizələri heç sıra daxili qəsdən var. 556 00:34:29,690 --> 00:34:32,750 Lakin kvadrat mötərizə var ki, kompüter danışırsınızsa 557 00:34:32,750 --> 00:34:34,639 bir sıra gözləyirik. 558 00:34:34,639 --> 00:34:37,489 Argv yalnız mübahisə vektor üçün stenoqrafiya notation edir. 559 00:34:37,489 --> 00:34:39,889 A vektor, dizi deyərək bir xülya yolu 560 00:34:39,889 --> 00:34:42,980 və array siyahısı və ya kolleksiya deyərək bir xülya yoldur. 561 00:34:42,980 --> 00:34:47,360 Bu yalnız bu kimi əsas yazmaq əgər o deməkdir ki, Belə ki, 562 00:34:47,360 --> 00:34:51,100 əvəzinə biz həftə keçmiş neçə bunu etdik necə kimi, 563 00:34:51,100 --> 00:34:54,699 proqram indi command line arguments qəbul etmək səlahiyyətinə malikdir 564 00:34:54,699 --> 00:34:58,520 artıq siz Enter sonra mario yazmaq və belə ki, 565 00:34:58,520 --> 00:35:01,610 sonra, siz piramida olmaq istəyirəm neçə blok yüksək bir sıra yazın 566 00:35:01,610 --> 00:35:03,100 sonra Enter düyməsini basın. 567 00:35:03,100 --> 00:35:07,720 Biz hətta bu mövzuda artıq və ya GetInt ya GetFloat GetString istifadə etmək lazım deyil. 568 00:35:07,720 --> 00:35:12,370 Biz yalnız istifadəçi tez özünü o sözləri yazın edə bilərsiniz 569 00:35:12,370 --> 00:35:16,850 zınqıltı müəllifləri bir həqiqətən annoying proqram olardı qərar kimi 570 00:35:16,850 --> 00:35:20,550 ilk tipli cingilti kodunuzu tərtib əgər, Enter 571 00:35:20,550 --> 00:35:24,090 sonra biz istifadəçi dedi, siz tərtib istədiyiniz fayl adını yazın edin 572 00:35:24,090 --> 00:35:26,920 sonra biz mario.c yazın və Enter düyməsini basın. 573 00:35:26,920 --> 00:35:29,850 Amma biz istifadəçilər həftə keçmiş neçə etdiyini olduğunuz məhz budur. 574 00:35:29,850 --> 00:35:33,550 Biz GetString istifadə və proqram giriş üçün onlara təklif çalışan qədər biz gözləyin. 575 00:35:33,550 --> 00:35:36,710 Halda lazımdır artıq. 576 00:35:36,710 --> 00:35:41,160 >> Belə ki, burada bu Məsələn, biz indi, simli argv var 577 00:35:41,160 --> 00:35:43,390 və bu da bir oversimplification edir 578 00:35:43,390 --> 00:35:45,610 təlim təkərlər çox tez off gələcək. 579 00:35:45,610 --> 00:35:50,860 Bu əsas bu alternativ bəyannamə yazılı daha düzgün yoldur 580 00:35:50,860 --> 00:35:54,740 nə biz simli zəng edin həqiqətən bir ulduz var ki, çıxır, çünki 581 00:35:54,740 --> 00:35:58,440 bir onun faktiki müəyyən ulduz, lakin bu yalnız mürəkkəb görünür, 582 00:35:58,440 --> 00:36:02,600 o ilk qarıxdırıcı edir, belə ki, biz yalnız növ sinoniminə yaradılması ilə sadələşdirmək 583 00:36:02,600 --> 00:36:09,340 bu CS50 kitabxana ki, bu daha çox istifadəçi dostu sözü simli xəritələr char *. 584 00:36:09,340 --> 00:36:13,180 >> Belə nin əslində bu sonra edək. Mənə irəli getmək və burada gedit açmaq edək. 585 00:36:13,180 --> 00:36:17,010 Mənə davam və 1 argv açmaq edək. 586 00:36:17,010 --> 00:36:21,620 Bu proqram yəqin dəlilləri yazdıran, lakin ingilis baxımından, 587 00:36:21,620 --> 00:36:26,290 Bu kodu baxaraq, bu daha dəqiq nə edir? 588 00:36:26,290 --> 00:36:35,910 Əmri a.out foo bar I növü, mənim ağ-qara pəncərə nə çap olur varsa? 589 00:36:35,910 --> 00:36:41,260 A.out foo bar daxil edin. 590 00:36:43,120 --> 00:36:48,300 Durmayın. Bəli. >> [Işitilemez tələbə cavab] 591 00:36:48,300 --> 00:36:52,730 Yaxşı. Belə a.out, yeni xətt, foo, yeni xətt, bar, yeni xətti. 592 00:36:52,730 --> 00:36:54,980 Niyə bu? Biz, əlbəttə, yalnız bir anda təsdiq edə bilər. 593 00:36:54,980 --> 00:36:56,940 Bu kodu bir tüklü xətti növüdür. 594 00:36:56,940 --> 00:36:59,560  Bu yalnız ekranda şeyi gözəlləşir etmək üçün yeni görüntüler. 595 00:36:59,560 --> 00:37:03,730 Bu, argc qədər dair 0 iterating olan bir loop edir 596 00:37:03,730 --> 00:37:07,210 və bu hər iteration haqqında incrementing edilir + +. 597 00:37:07,210 --> 00:37:12,270 Beləliklə, bu artıq bu% s nəzərdə tutulan kimi, simli çap deyib. 598 00:37:12,270 --> 00:37:16,460 Argv [i] olduqca çox əvvəlki misal eyni fikirdir. 599 00:37:16,460 --> 00:37:19,580 Biz dəyişən s zəng etmək üçün istifadə; indi bu, özbaşına, argv deyirlər. 600 00:37:19,580 --> 00:37:24,270 Bu, command line ilə çap olunmuşdur ki İTH dəlil çap deməkdir 601 00:37:24,270 --> 00:37:28,690 bu bütün şey həyata sonra, sonra, yalnız yaxşı tədbir üçün yeni bir xətt çap. 602 00:37:28,690 --> 00:37:31,600 >> Belə ki, bu görmək bildirin. Mənə terminal pəncərə açmaq edək. 603 00:37:31,600 --> 00:37:37,470 Mənə 1 argv tərtib və indi mənə daxil edin, 1 argv run imkan edək. Hmm. Okay. 604 00:37:37,470 --> 00:37:40,850 Nin foo bar run edək. Maraqlı. Baz. 605 00:37:40,850 --> 00:37:42,640 Mən bu yazın nə heç merak etdiyiniz halda 606 00:37:42,640 --> 00:37:45,010 Bu yalnız də bir axmaq informatika konvensiya deyil. 607 00:37:45,010 --> 00:37:48,050 Dünya tez-tez söz yalnız şifahi placeholders lazımdır. 608 00:37:48,050 --> 00:37:50,090 Siz, bəzi ümumi string haqqında danışmaq istəyirəm əgər 609 00:37:50,090 --> 00:37:53,250 kompüter elm yalnız bir təsadüfi söz lazım foo demək edirlər 610 00:37:53,250 --> 00:37:55,530 Onlar ikinci təsadüfi söz lazımdır, əgər onlar, bar demək 611 00:37:55,530 --> 00:37:59,100 sonra onlar üçüncü bir söz lazımdır, onlar dördüncü söz lazımdır, onda onlar qux demək baz deyirlər 612 00:37:59,100 --> 00:38:01,520 və sonra qux sonra gəlir nə kimi böyük bir dini müzakirə online var 613 00:38:01,520 --> 00:38:04,940 Siz digər ixtiyari söz olmalıdır nə anlamaq üçün Google bilərsiniz. 614 00:38:04,940 --> 00:38:07,480 Lakin bu heç heç mənası var 615 00:38:07,480 --> 00:38:10,100 baxmayaraq foo bar, yəni var ki, Google, əgər 616 00:38:10,100 --> 00:38:12,780 burada etimologiyası hissəsidir. 617 00:38:12,780 --> 00:38:17,550 >> Belə ki, bütün bu sonra edir satıra bu strings 1 çap olunur. 618 00:38:17,550 --> 00:38:19,900 Mən yerinə əgər, baxmayaraq ki, bir az meraklısı almaq istəyirdi 619 00:38:19,900 --> 00:38:22,550 Mən xətt hər simli çap etmək istəmədiyini güman; 620 00:38:22,550 --> 00:38:26,220 Mən xətt hər simli hər xarakter çap etmək istədi. 621 00:38:26,220 --> 00:38:28,550 Mən əvəzinə necə edə bilər? 622 00:38:28,550 --> 00:38:33,720 Mən hər sözü çap etmək istəyirsinizsə, mən bu proqram haqqında dəyişmək üçün nə lazımdır 623 00:38:33,720 --> 00:38:37,290 amma məktub məktubu hər bir söz məktubu çap etmək istəyirəm 624 00:38:37,290 --> 00:38:40,590 məktub məktubu sonra növbəti sözü məktub? 625 00:38:40,590 --> 00:38:43,650 Biz indiyədək bu fikirləri birləşdirmək edirsiniz? Bəli. 626 00:38:43,650 --> 00:38:47,390 [Tələbə]% c. >> Bütün hüququ. Belə ki, haradasa bir% c lazımdır. 627 00:38:47,390 --> 00:38:50,680 Mən bütün strings çap etmək istəmirəm, çünki mən simvol çap Yaxşı istəyirəm. Nə? 628 00:38:50,680 --> 00:38:54,290 >> [Işitilemez tələbə cavab] >> Maraqlı. 629 00:38:54,290 --> 00:38:56,860 Beləliklə, biz indi burada ikinci ölçüsü cür ehtiyac 630 00:38:56,860 --> 00:39:02,300 çünki bir sıra kimi argv hesab, lakin strings bir sıra var. 631 00:39:02,300 --> 00:39:07,170 Amma kimi, kimi, 15 dəqiqə əvvəl, bir string nədir? Bu simvol bir sıra var. 632 00:39:07,170 --> 00:39:12,320 Belə ki, həqiqətən, argv, simvol bir sıra bir sıra edir 633 00:39:12,320 --> 00:39:14,870 simvol Diziler bir sıra. 634 00:39:14,870 --> 00:39:19,170 Belə ki, biz daha çox kvadrat mötərizə notlari istifadə edə çıxır. Belə ki, bunu edək. 635 00:39:19,170 --> 00:39:23,650 Line 19 Bu loop üst, mən qədər i olan argc üçün təkrarlamaq gedirəm 636 00:39:23,650 --> 00:39:25,760 lakin sonra mən bunu gidiyorum: 637 00:39:25,760 --> 00:39:27,580 üçün - İndi i istifadə edə bilməz. 638 00:39:27,580 --> 00:39:30,300 Mən sözləri üzərində təkrarlamaq istəyirəm, çünki mən digər dəyişən ehtiyac 639 00:39:30,300 --> 00:39:32,640 lakin sonra da sözləri məktubları artıq 640 00:39:32,640 --> 00:39:37,280 Mən növ şaquli ox və üfüqi ox, konseptual növ var. 641 00:39:37,280 --> 00:39:43,930 Belə ki, int j 0 alır, sonra j az kimi j etmək istəyirik - və mən bir az bu qədər təmiz olacaq. 642 00:39:43,930 --> 00:39:48,410 Nasıl bir string hərflər üzərində təkrarlamaq edirsiniz? Biz bir an əvvəl bu idi. 643 00:39:48,410 --> 00:39:54,670 Argv və Strlen [i]. Yaxşı. 644 00:39:54,670 --> 00:39:57,860 Və yenə, mən n və ya hər hansı törətməyən burada bir az təsirsizlik edilməsi alıram 645 00:39:57,860 --> 00:39:59,610 lakin biz qayıda bilərsiniz. 646 00:39:59,610 --> 00:40:03,270 >> Belə ki, indi j + +. İndi mən burada daha indent var. 647 00:40:03,270 --> 00:40:06,950 İndi hər iteration çap üçün nə istəyirsiniz? 648 00:40:06,950 --> 00:40:09,720 [Işitilemez tələbə cavab] >> Beləliklə [i] mənə söz verəcək. 649 00:40:09,720 --> 00:40:12,910 [I] [j], sort bir matrix kimi edir. 650 00:40:12,910 --> 00:40:14,810 Riyaziyyat-y fonları ilə o, 651 00:40:14,810 --> 00:40:19,340 biz, serialların bu matris və ya bu array daxil endekslenmesini növ hətta dərin edirik 652 00:40:19,340 --> 00:40:21,380 bu 2 ölçülü strukturu. 653 00:40:21,380 --> 00:40:25,070 İndi burada nə görmək edək. Mənə böyük terminal pəncərə açmaq edək. 654 00:40:25,070 --> 00:40:28,170 Mənə 1 argv markası təkrar edək. 655 00:40:28,170 --> 00:40:33,090 Mən də bunu unuttum çünki yaxşı bir dərs, burada qıfıllar etdik. 656 00:40:33,090 --> 00:40:37,150 Dolayısı növü 'unsigned ilə C kitabxana funksiyası "strlen" elan - 657 00:40:37,150 --> 00:40:40,360 , Mən hətta o deməkdir ki, nə qalan bilmirəm, amma mən əvvəl bu görmüşəm 658 00:40:40,360 --> 00:40:42,000 dolayısı elan. 659 00:40:42,000 --> 00:40:45,540 Biz bu səhv görmək zaman, bu adətən nə demek deyil? 660 00:40:45,540 --> 00:40:48,520 >> [Işitilemez tələbə cavab] >> mən üst bir kitabxana unuttum. Amma bir dəqiqə gözləyin. 661 00:40:48,520 --> 00:40:51,690 Mən CS50 kitabxana unuttum çünki adətən Mən berbat sonra, lakin var. 662 00:40:51,690 --> 00:40:54,480 Mən standart I / O. unuttuysanız çünki adətən Mən berbat sonra 663 00:40:54,480 --> 00:40:57,960 Və səmimi, mən hətta bu lazım deyil. Biz bu gün GetString istifadə edirik. 664 00:40:57,960 --> 00:40:59,900 Belə ki, nə əskik edirəm? 665 00:40:59,900 --> 00:41:04,860 Indi biz bəzən adlı string.h istifadə etmək lazımdır ki, başqa bir kitabxana var 666 00:41:04,860 --> 00:41:08,980 və bu, yalnız hələ standart I / O. olmayan çox funksiyaları var ki, başqa kitabxana 667 00:41:08,980 --> 00:41:11,640 >> Belə nin mənim böyük terminal pəncərə geri imkan verir. 668 00:41:11,640 --> 00:41:16,670 Okay. İndi Lanet olsun, mən yanlış idi danışarlar. Mən CS50 kitabxana istifadə edilmişdir. 669 00:41:16,670 --> 00:41:18,460 Belə ki, 2 yollarla ya bu düzeltebilirsiniz. 670 00:41:18,460 --> 00:41:21,510 Biz hazırda təlim təkərlər çıxarmaq və yalnız bu edə bilərsiniz 671 00:41:21,510 --> 00:41:26,600 ya yalnız indi üçün sadələşdirilməsi saxlamaq və alaq cür, bu geri yapışdırıb 672 00:41:26,600 --> 00:41:30,180 ki, problem həll və indi terminal pəncərə geri gedin. 673 00:41:30,180 --> 00:41:33,080 Belə ki, CS50 kitabxana, aydın olmaq, yalnız funksiyaları deyil 674 00:41:33,080 --> 00:41:36,920 bunun da səhv oldu səbəb olan söz simli var. 675 00:41:36,920 --> 00:41:43,010 >> Belə ki, burada biz gedin. Mən kitabxana məsələləri də müəyyən. Daxil edin. Yaxşı. 676 00:41:43,010 --> 00:41:49,250 1 Argv, foo bar daxil edin. Əla. 677 00:41:49,250 --> 00:41:52,830 Belə ki, indi biz, line 1 çıxmış hər bir söz, hər bir məktub var 678 00:41:52,830 --> 00:41:55,290 çox maraqlı bir proqram üçün etmək deyil 679 00:41:55,290 --> 00:41:59,350 lakin bildiriş indi biz yalnız söz üzərində iterating deyil qabiliyyəti 680 00:41:59,350 --> 00:42:04,090 həm də bağrı tanış səslənir hansı sözləri fərdi məktublar, üzərində 681 00:42:04,090 --> 00:42:10,330 bu kimi bir simli ilə Scrambling məktublar kimi proqram sadə belə etmək. 682 00:42:10,330 --> 00:42:12,410 Nin irəli getmək və burada bizim 5 dəqiqəlik fasilə edək. 683 00:42:12,410 --> 00:42:14,410 Və biz geri gələndə, biz səmərəliliyinin söhbət başlar 684 00:42:14,410 --> 00:42:17,670 ilə daha yaxşı bu şeyi edə bilərsiniz. 685 00:42:19,370 --> 00:42:21,900 >> Bütün hüquqlar. Biz geri. 686 00:42:21,900 --> 00:42:26,970 Bananagrams bir çox oynayan bizim TFS biri sayəsində, 687 00:42:26,970 --> 00:42:30,000 biz, həqiqətən, bu gün burada bizimlə chars bütün dəstə var 688 00:42:30,000 --> 00:42:32,520 fiziki, bu kiçik plastik parçaları ilə incarnated 689 00:42:32,520 --> 00:42:36,910 və bu boş ağ şifer burada mənim kompüter RAM təmsil mənə təklif qoy - 690 00:42:36,910 --> 00:42:39,790 laptop, masa üstü, nə - və orada bir çox kimi görünür 691 00:42:39,790 --> 00:42:44,090 çünki biz kiçik byte ölçülü parçalara bu RAM up Doğrama başlamaq əgər, 692 00:42:44,090 --> 00:42:48,970 Gəlin özbaşına ölçüsü və bulanık təmsil ki, bir şey demək - 693 00:42:48,970 --> 00:42:52,430 orada getmək və alaq burada bir az kiçiltmək - 694 00:42:52,430 --> 00:42:56,120 həcmindən bir byte təmsil bir şey deyim. 695 00:42:56,120 --> 00:43:00,400 Belə ki, biz, həqiqətən, bu yaddaş daxilində bayt və ya simvol bütün dəstə uyğun 696 00:43:00,400 --> 00:43:02,860 Burada nisbi ölçüsü ilə təklif edir. 697 00:43:02,860 --> 00:43:06,780 >> Belə ki, məqsəd bir string üçün yaddaş ayrılması ki, indi güman edirlər. 698 00:43:06,780 --> 00:43:08,680 Bu həqiqətən işləyir? 699 00:43:08,680 --> 00:43:11,380 Biz yazılı etdiyiniz proqramları, biz, adətən, GetString istifadə etdik 700 00:43:11,380 --> 00:43:16,300 lakin indi, aydın, biz argv istifadəçi giriş əldə edə bilərsiniz vasitəsilə bu başqa kanal var 701 00:43:16,300 --> 00:43:18,190 command line dəlilləri ilə. 702 00:43:18,190 --> 00:43:20,580 Amma nə həqiqətən başlıq altında olub? 703 00:43:20,580 --> 00:43:24,920 Biz zəng əgər çıxır - GetString geri hərəkət edək - funksiyası GetString 704 00:43:24,920 --> 00:43:28,190 bu CS50 kitabxana, istifadəçi, bir string istenirse edir 705 00:43:28,190 --> 00:43:30,780 bir söz istifadəçi növləri - nin HELLO zəng edək. 706 00:43:30,780 --> 00:43:35,410 Biz həftə keçmiş neçə deyərək olduğunuzu GetString qaytarılması dəyər 707 00:43:35,410 --> 00:43:37,750 HELLO sözü kimi, əslində bir simli edir. 708 00:43:37,750 --> 00:43:39,660 >> Amma nə həqiqətən bunu GetString edir? 709 00:43:39,660 --> 00:43:45,230 Daxil edin, HELLO istifadəçi növləri kimi, GetString həyata figuring edir 710 00:43:45,230 --> 00:43:47,930 tamam, bu neçə simvol var? Bu H-E-L-L-O deyil. 711 00:43:47,930 --> 00:43:52,500 Bu halda Linux - Belə ki, ayrılması lazımdır, bu əməliyyat sistemi soruşmaq lazımdır - 712 00:43:52,500 --> 00:43:55,410 ən azı 5 bytes üçün HELLO saxlamaq üçün. 713 00:43:55,410 --> 00:43:59,570 Bu əməliyyat sistemi geri o 5 bytes olur bir dəfə və sonra nə gəlir 714 00:43:59,570 --> 00:44:04,120 geri geri geri HELLO geri salmaq üçün. 715 00:44:04,120 --> 00:44:11,070 Və nə həqiqətən GetString döndü oldu belə görünür ki, məlumatların bir yığın edir. 716 00:44:11,070 --> 00:44:16,850 Bu kimi sadə deyil ki, çevrilir, çünki bu bir az yanlış 717 00:44:16,850 --> 00:44:20,310 yalnız kompüter yaddaşında HELLO saxlanılması kimi 718 00:44:20,310 --> 00:44:24,140 çünki, mən C yazılı alıram ki, proqram sonra GetString çağırır güman 719 00:44:24,140 --> 00:44:28,210 və istifadəçi növləri növbəti sözü bye, bye edir. 720 00:44:28,210 --> 00:44:31,300 Bəli, mən yaddaş haradasa söz bye uyğun lazımdır. 721 00:44:31,300 --> 00:44:33,790 Mən HELLO döymək bilməz. 722 00:44:33,790 --> 00:44:37,320 Məsələn, mən kompüter yalnız bu kimi yadda başlamaq istəmirəm 723 00:44:37,320 --> 00:44:41,400 Mən hələ bir dəyişən HELLO sözü istifadə edilə bilər, çünki orijinal söz 724 00:44:41,400 --> 00:44:43,070 başqa yerdə mənim proqram. 725 00:44:43,070 --> 00:44:45,900 >> Belə ki, B-Y-E başqa bir yerdə yaddaş başa var. 726 00:44:45,900 --> 00:44:50,460 Lakin Konvensiyanın adətən olduğunu ayrılması növbəti string 727 00:44:50,460 --> 00:44:54,940 Yəqin ki, lakin həmişə, növbəti yaddaş yerdə başa gedir. 728 00:44:54,940 --> 00:44:57,370 Mən hər hansı bir yaddaş üçün əməliyyat sistemi xahiş əgər 729 00:44:57,370 --> 00:45:01,380 Mən GetString adlı son vaxtdan, odds sözü Bye var 730 00:45:01,380 --> 00:45:05,790 HELLO yaddaş sözündən sonra sağ sonuna qədər davam edir. 731 00:45:05,790 --> 00:45:10,550 Potensial problem yaranır yerləşir Amma bu nöqtədə bəlkə bilərsiniz. 732 00:45:10,550 --> 00:45:13,310 Çünki yaddaş növbəti chunks, yalnız pulsuz ki, növbəti bytes - 733 00:45:13,310 --> 00:45:18,230 ağ şifer təmiz - kompüter yaddaşında, HELLO hüququ sonrakı idi 734 00:45:18,230 --> 00:45:23,670 Mən birdən artıq dəyişə bilər istədi ilk simli kimi hiss 735 00:45:23,670 --> 00:45:26,410 Mən mahiyyətcə değiştirdik çünki HELLOBYE üçün 736 00:45:26,410 --> 00:45:31,310 əvəzinə elə Bye başlanğıc və HELLO sonunda demarcing. 737 00:45:31,310 --> 00:45:33,920 >> Belə ki, nə həqiqətən başlıq altında gedən çıxır ki, 738 00:45:33,920 --> 00:45:37,570 siz online istinadlar və ya bölmə və ya kitab glimpsed edə biləcək 739 00:45:37,570 --> 00:45:41,780 və ya sadəcə hələ bütün qəsdən demarkasiyası həqiqətən var ki, 740 00:45:41,780 --> 00:45:45,890 kompüter yaddaşında sözlər arasında. 741 00:45:45,890 --> 00:45:52,480 Və əslində, burada, bu halda deyil, yalnız sağ sonrakı HELLO üçün Bye qoymaq 742 00:45:52,480 --> 00:45:58,610 əvəzinə, kompüter xüsusi xarakteri, xüsusi null xarakteri, belə danışmaq, qoyur 743 00:45:58,610 --> 00:46:03,050 olan backslash 0 ilə marker ilə təmsil olunur. 744 00:46:03,050 --> 00:46:06,700 Belə ki, uzun hekayə qısa, simvol ASCII təmsil olunur ki, xatırlayıram. 745 00:46:06,700 --> 00:46:09,680 ASCII, yalnız nömrələri və məktublar arasında bir harita edir 746 00:46:09,680 --> 00:46:13,870 və həmin məktubların çoxu kapital A təxminən 65 başlamaq 747 00:46:13,870 --> 00:46:19,780 əlbəttə bir tam kimi və ya ikili sayı 0 təmsil edə bilər həyata lakin çevrilir 748 00:46:19,780 --> 00:46:22,690 və dünya çoxdan, Uzunmüddətli qərar çıxır "Siz nə?" 749 00:46:22,690 --> 00:46:27,550 Klaviatura hər hansı simvol təmsil deyil "edək ehtiyat sayı 0 - 750 00:46:27,550 --> 00:46:30,810 "Heç məktublar, heç bir nömrə, heç bir durğu. 0 xüsusi edir." 751 00:46:30,810 --> 00:46:35,830 "Bu xüsusi null xarakterli olacaq və biz \ 0 kimi yazmaq olacaq." 752 00:46:35,830 --> 00:46:41,170 Biz yalnız 0, 0 yazdı əgər olan fərq bir karakter. 753 00:46:41,170 --> 00:46:45,700 3, 2, 1, 0 ASCII kodları var Xatırladaq ki, 754 00:46:45,700 --> 00:46:50,570 xarakteri 0 sayı 0-dan fərqli deyil. 755 00:46:50,570 --> 00:46:54,270 Və siz həftə 1-dən geri baxmaq əgər biz ilk ASCII danışıb zaman görə bilərsiniz 756 00:46:54,270 --> 00:46:59,130 9 0 və 1 və 2 və 3 bütün yol öz ASCII kodları idi. 757 00:46:59,130 --> 00:47:02,300 Onlar coincidentally, 9 vasitəsilə 0 deyil. Onlar çox müxtəlif istəyirik. 758 00:47:02,300 --> 00:47:08,770 Belə 0 yalnız "mən xüsusi edirəm" deməkdir və \ 0 vasitələri, sanki, "Mən 0 xarakterli deyiləm." 759 00:47:08,770 --> 00:47:11,360 "Mən bu xüsusi dəyəri, null xarakterli deyiləm." 760 00:47:11,360 --> 00:47:16,930 Mən iki dəfə eyni səhvi edə bilməz ildən Mən, həqiqətən, bu başqa bir lazımdır. 761 00:47:16,930 --> 00:47:21,550 >> Belə ki, söz bye sonra biz də bu null simvol başqa bir ehtiyac olacaq. 762 00:47:21,550 --> 00:47:27,090 Mənə burada mənim qələm işğalçı və mənə tez bir \ 0 çəkmək qoy edək 763 00:47:27,090 --> 00:47:30,480 belə ki, mən 2 strings üçün əməliyyat sistemi xahiş sonra 764 00:47:30,480 --> 00:47:33,270 GetString başqa bir zəng sonra GetString vasitəsilə 765 00:47:33,270 --> 00:47:35,640 Bu yaddaş əslində nə deyil. 766 00:47:35,640 --> 00:47:39,900 Mən bir string geri almaq zaman, həqiqətən, geri ki alıram 767 00:47:39,900 --> 00:47:43,450 və mən növbəti string almaq zaman, həqiqətən, geri alıram. 768 00:47:43,450 --> 00:47:47,910 Belə ki, bu ilk növbədə, strlen, sual begs, nə qayıtmaq lazımdır? 769 00:47:47,910 --> 00:47:54,650 Mən string s strlen zəng və s HELLO istifadəçi yazdığınız söz olanda, 770 00:47:54,650 --> 00:47:57,800 biz açıq-aydın HELLO müddəti bir neçə dəqiqə əvvəl nə demək idi? 771 00:47:57,800 --> 00:48:01,290 Bu doğru, 5 idi? H-E-L-L-O. Və həqiqətən necə strlen işləri var. 772 00:48:01,290 --> 00:48:05,670 Bu normal insan olmaq üçün bir simli uzunluğu beklediğiniz qaytarır. 773 00:48:05,670 --> 00:48:11,030 Amma əslində, salam saxlanılması ki, simvol array necə böyük? 774 00:48:11,030 --> 00:48:12,770 Bu, faktiki olaraq 6 deyil. 775 00:48:12,770 --> 00:48:15,740 Strlen Beləliklə, siz ki, faktı qeyd deyil. 776 00:48:15,740 --> 00:48:20,300 Amma başlıq altında kompüter həqiqətən, 5-məktub söz saxlamaq üçün 6 bytes istifadə 777 00:48:20,300 --> 00:48:22,380 və bu sözü nə qədər uzun olursa olsun doğrudur. 778 00:48:22,380 --> 00:48:26,470 Həmişə simli sonunda xüsusi null xitam xarakter olmalıdır olacaq 779 00:48:26,470 --> 00:48:28,800 onun ümumi uzunluğu demarc üçün. 780 00:48:28,800 --> 00:48:33,430 >> İndi, 30 il əvvəl, strlen 20 həyata keçirən şəxs Beləliklə əgər 781 00:48:33,430 --> 00:48:35,520 siz strlen özü həyata barədə necə getmək yoxdur? 782 00:48:35,520 --> 00:48:39,980 Verilən üçün printf mövcud verilən biz almaq kimi, biz ki, mövcud almaq, 783 00:48:39,980 --> 00:48:42,850 lakin HELLO bu söz əgər 784 00:48:42,850 --> 00:48:45,220 və nə yaddaş var, bu kimi bir şey 785 00:48:45,220 --> 00:48:48,130 siz istəndi çünki reimplement strlen idi əgər 786 00:48:48,130 --> 00:48:50,260 və ya, çünki, səmimi, siz strlen mövcud bilmirdim - 787 00:48:50,260 --> 00:48:54,280 öz Bu bir roll idi - necə strlen həyata bilər 788 00:48:54,280 --> 00:48:57,760 Bu kimi görünür ki, bir şey verilmiş? 789 00:48:57,760 --> 00:49:02,750 İndi biz bir simli bir sıra olduğunu, biz fərdi simvol hər üzərində təkrarlamaq bilər 790 00:49:02,750 --> 00:49:06,320 kimi bir şey istifadə - Let Tez bu etmək üçün cəhd edir. 791 00:49:06,320 --> 00:49:12,060 >> Mənə cihaz daxil edək. Mənə bir yeni fayl, strlen.c yaratmaq edək. 792 00:49:12,060 --> 00:49:19,260 Mənə indi davam və stdio.h biz printf çıxış var ki, daxil olar edək. 793 00:49:19,260 --> 00:49:25,820 Mənə int əsas (void) nə edək. Oh. Mən sadəcə sonra artıq öz Bu edəcəyik. [Chuckles] 794 00:49:25,820 --> 00:49:28,300 Təşəkkür edirik. 795 00:49:28,300 --> 00:49:31,000 Bu yapýyorum nə. Bütün hüquqlar. 796 00:49:31,000 --> 00:49:34,820 Mən ekran açıq Belə ki, əvvəl mən bütün yazılmış. 797 00:49:34,820 --> 00:49:37,550 İndi mən gedirəm nə aşağıdakı kimidir: 798 00:49:37,550 --> 00:49:40,360 printf ("Mənə bir string ver:") 799 00:49:40,360 --> 00:49:42,700 Bu yalnız tüklü təlimat var. 800 00:49:42,700 --> 00:49:45,700 İndi mənə string s = GetString bunu bildirin. 801 00:49:45,700 --> 00:49:47,260 Mən artıq bir dəyişiklik etmək lazımdır. 802 00:49:47,260 --> 00:49:52,740 Mən CS50 kitabxana kullanıyorum birdən Mənə davam və cs50.h. yazın bildirin 803 00:49:52,740 --> 00:50:00,720 -% D, strlen [s]: printf ("The uzunluğu: İndi bunu edək 804 00:50:00,720 --> 00:50:03,540 və mən hələ həyata deyiləm. Nə mən bu proqram əlavə etmək üçün var? 805 00:50:03,540 --> 00:50:05,740 >> [Tələbə] string.h. >> String.h. 806 00:50:05,740 --> 00:50:10,800 Beləliklə, biz strlen istifadə edirsinizsə ki, in ki, burada compiler bilir əmin edək 807 00:50:10,800 --> 00:50:12,390 bir az ağlı başında olma kontrol edin. 808 00:50:12,390 --> 00:50:16,400 Mən line 8 bir string alıram və line 9 I% d onun uzunluğu həyata çap edirəm. 809 00:50:16,400 --> 00:50:19,400 Belə nin irəli getmək və bu qədər açıq olsun. 810 00:50:19,400 --> 00:50:23,380 Biz strlen etmək var - tamam tərtib - 811 00:50:23,380 --> 00:50:30,120 strlen - Mənə zoom imkan - daxil edin, H-E-L-L-O, daxil edin. Uzunluğu 5. 812 00:50:30,120 --> 00:50:32,730 >> OK, belə strlen iş görünür, lakin dünya ki, bilirdi. 813 00:50:32,730 --> 00:50:37,310 Belə ki, indi özümüzü belə strlen həyata bildirin. 814 00:50:37,310 --> 00:50:39,490 Mənə üz kitabxana edək. 815 00:50:39,490 --> 00:50:42,590 Biz artıq mən hətta mövcud bilmirdim çünki string.h girmə imkanı vardır. 816 00:50:42,590 --> 00:50:45,970 Mən strlen özüm həyata bilər, çünki Lakin tamam 817 00:50:45,970 --> 00:50:50,200 var və o, giriş adlı simli almaq 818 00:50:50,200 --> 00:50:53,830 və indi bu simli uzunluğu anlamaq lazımdır. 819 00:50:53,830 --> 00:50:55,880 Belə ki, necə bunu edə bilər? 820 00:50:55,880 --> 00:51:00,190 Mən nə - siz nə istəyirsiniz - bu necə görmək edək? 821 00:51:00,190 --> 00:51:04,130 >> [Işitilemez tələbə cavab] >> OK. 822 00:51:04,130 --> 00:51:05,970 Belə ki, yolları bir dəstə ilə bunu edə bilərsiniz. Bu yanaşma cəhd edək. 823 00:51:05,970 --> 00:51:10,220 Mənə özümü bir int dəyişən i verim, ona i 0 başlayır. 824 00:51:10,220 --> 00:51:19,380 Və mənə bu deyək: giriş isə [i] nə bərabər deyil? \ 0. 825 00:51:19,380 --> 00:51:23,480 Belə ki, bir proqram sanki onlara yazarkən bütün chars ilə işi ilə kimi çıxır 826 00:51:23,480 --> 00:51:25,940 siz tək quotes deyil, ikiqat quotes istifadə etmək lazımdır. 827 00:51:25,940 --> 00:51:29,250 Mən məktubu yazılı idi əgər, mən məktubu b bunu ki, mən bunu istəyirəm. 828 00:51:29,250 --> 00:51:33,440 Bu, əksinə, deyil, fərdi xarakter simli olardı. 829 00:51:33,440 --> 00:51:38,470 >> Mən sözün \ 0 istəyirəm. Mən bu loop etmək istəyirsiniz? 830 00:51:38,470 --> 00:51:42,650 Əslində, mən bir dəyişən lazımdır, belə ki, int uzunluğu 0 alır. 831 00:51:42,650 --> 00:51:46,190 Biz etdi yol açılmış nə əmin deyil bile, 832 00:51:46,190 --> 00:51:50,110 biz bu yol aşağı olacaq indi ki, mən line 9-nə istəyirsiniz? 833 00:51:50,110 --> 00:51:55,820 uzunluğu + + və sonra aşağı burada line 10, geri uzunluğu. 834 00:51:55,820 --> 00:51:58,370 Belə strlen necə həyata keçirilir? 835 00:51:58,370 --> 00:52:00,550 Bu, faktiki olaraq bu kimi yəqin ki, həyata var. 836 00:52:00,550 --> 00:52:03,470 Kim bilir - bəlkə şəxsin loop üçün istifadə loop isə, bəlkə var? 837 00:52:03,470 --> 00:52:05,940 Biz, həqiqətən, faktiki mənbə kodu ilə başlıq altında baxmaq istədiyiniz 838 00:52:05,940 --> 00:52:08,520 bir fayl yəqin string.c çağırıb. 839 00:52:08,520 --> 00:52:10,480 >> Amma burada mən edirəm nə düşünmək bildirin. 840 00:52:10,480 --> 00:52:13,640 Mən 0 bərabər yaradılması, i adlı dəyişən elan edirəm. 841 00:52:13,640 --> 00:52:17,520 Mən 0 bərabər qəbulu, digər dəyişən adlı uzunluğu elan edirəm. 842 00:52:17,520 --> 00:52:25,440 Daxil olan İTH xarakterli xüsusi null xarakteri, \ 0 bərabər deyil isə Sonra dedi alıram 843 00:52:25,440 --> 00:52:27,070 uzunluğu arttırmayı. 844 00:52:27,070 --> 00:52:32,550 Amma tezliklə İTH xarakteri bu xüsusi simvolu kimi, nə loop olur? 845 00:52:32,550 --> 00:52:36,540 Bu qısa sxemlərin. Bu, biz sonra dərhal uzunluğu qayıtmaq deməkdir vermir. 846 00:52:36,540 --> 00:52:40,740 >> Mən mess etməyib Belə ki, in irəli getmək və terminal pəncərə geri imkan verir. 847 00:52:40,740 --> 00:52:43,550 Mənə derleyeceğiz edək. Mən qıymaq idi. 848 00:52:43,550 --> 00:52:46,320 Kitabxana funksiyası strlen və Uyumsuz redeclaration. 849 00:52:46,320 --> 00:52:48,650 Mən burada öz yaxşı üçün çox ağıllı olmaq üçün çalışırdı. 850 00:52:48,650 --> 00:52:51,610 Bu compiler həqiqətən strlen adlı bir funksiyası olduğunu bilir 851 00:52:51,610 --> 00:52:55,290 biz kitabxana daxil deyil baxmayaraq. Bu gözəl deyil. Neyse. 852 00:52:55,290 --> 00:52:58,230 Biz yalnız sonra əməkdaşlıq olacaq. Bu uzunluğu adını edək. 853 00:52:58,230 --> 00:53:04,110 Mənə burada uzunluğu üçün istifadə dəyişdirmək edək və bu cingilti xoşbəxt edəcək. 854 00:53:04,110 --> 00:53:08,900 - Bir kənara, bu funksiyaların bəziləri belə darn ümumi çünki 855 00:53:08,900 --> 00:53:12,390 strlen, prinf - onlar həqiqətən xüsusi status növ var. 856 00:53:12,390 --> 00:53:15,310 Və cingilti yalnız onlar haqqında xüsusi bir az bir şey bilir. 857 00:53:15,310 --> 00:53:18,760 Həmişə ən funksiyaları ilə hal deyil ki, biz yelled oldu niyə ki. 858 00:53:18,760 --> 00:53:21,350 >> Mənə daha cəhd edək. Şükür ki, bu zaman işləyib. 859 00:53:21,350 --> 00:53:23,560 Belə ki, indi mənə öz strlen proqram run imkan verir. 860 00:53:23,560 --> 00:53:29,740 Mənə bir ip verin: H-E-L-L-O, daxil edin. Mən qıfıllar var. 861 00:53:29,740 --> 00:53:34,750 Niyə? >> [Işitilemez tələbə cavab] >> Exactly. 862 00:53:34,750 --> 00:53:39,180 Mən özümü burada çox gözəl görünüşlü sonsuz loop var 863 00:53:39,180 --> 00:53:42,270 Mən hər iteration haqqında uzunluğu incrementing alıram baxmayaraq, çünki 864 00:53:42,270 --> 00:53:47,860 Mən aydın nə deyiləm? Mən incrementing deyiləm. Okay. Easy fix. Bəli? 865 00:53:47,860 --> 00:53:52,430 Okay. Mən mötərizələrin lazım saylı İndi bəzi digər ümumi səhv afoul çalışır. 866 00:53:52,430 --> 00:53:54,430 Və səmimi, bu kodu, çirkin baxmaq başlayır 867 00:53:54,430 --> 00:53:56,460 biz bir anda bu təmizlənməsi bir zərbə almaq lazımdır. 868 00:53:56,460 --> 00:53:58,810 Amma indi uzunluğu i həm incrementing alıram. 869 00:53:58,810 --> 00:54:02,630 Açığı, mən artıq burada yaxşılaşdırılması üçün imkanlar görmək, lakin biz qayıda bilərsiniz. 870 00:54:02,630 --> 00:54:05,270 >> Belə ki, indi-nin yalnız biz irəliləyiş azı etdiyiniz əmin olun bildirin. 871 00:54:05,270 --> 00:54:08,320 Bu bir neçə baş verib, mən əvvəlcədən bu qeyd baxımsız. 872 00:54:08,320 --> 00:54:12,420 Bu kimi bir ssenari müsibət var zaman, necə siz bu düzeltirim 873 00:54:12,420 --> 00:54:15,130 Aracın və ya sizin kompüter yeniden ya pəncərə bağlanması qısa? 874 00:54:15,130 --> 00:54:16,860 Bu, həqiqətən asandır. 875 00:54:16,860 --> 00:54:21,680 Nəzarət C bu kiçik kök simvolu C göndərmək, və yalnız ən proqramları ləğv ki, olacaq. 876 00:54:21,680 --> 00:54:25,990 Siz stuff sonsuz dəfələrlə çap ki, həqiqətən, pis sonsuz loop varsa, 877 00:54:25,990 --> 00:54:29,960 bəzən Control C faktiki eşitmək üçün min dəfə hit ola bilər. 878 00:54:29,960 --> 00:54:33,910 Mən çox asan idi ki, bir şey, çap deyiləm çünki Belə ki, yalnız indi bilirik. 879 00:54:33,910 --> 00:54:37,970 Və texniki dəfə kifayət edər, amma səbirsiz almaq və mən adətən bu ki, bir çox dəfə təşkil edib. 880 00:54:37,970 --> 00:54:43,400 >> Strlen belə. Mənə bir ip verin: HELLO. Bu iş gedir? 881 00:54:44,580 --> 00:54:47,490 Okay. Digər ümumi səhv. Derleyeceğiz var. 882 00:54:47,490 --> 00:54:50,430 Ki, bir qəsdən idi. Bütün hüquqlar. 883 00:54:50,430 --> 00:54:54,260 Strlen Belə ki, H-E-L-L-O, daxil edin. Əla. 884 00:54:54,260 --> 00:54:55,910 Beləliklə, biz indi strlen üçün 5 var. 885 00:54:55,910 --> 00:54:58,100 Beləliklə, biz sözün ki, Həcm reimplemented var. 886 00:54:58,100 --> 00:55:02,080 Belə ki, indi bu məni təsir etmir, çünki bu qədər təmiz bildirin 887 00:55:02,080 --> 00:55:04,080 mənim kod dizayn. 888 00:55:04,080 --> 00:55:07,200 Biz aydın bu təmizlənməsi üçün bu proqram nə aradan qaldırmaq olar? 889 00:55:07,200 --> 00:55:11,840 [Işitilemez tələbə cavab] >> Bəli. , Sanki biz eyni i və uzunluğu müalicə edirik. 890 00:55:11,840 --> 00:55:16,440 Belə ki, niyə biz yalnız smart almaq və uzunluğu isə demək deyil? 891 00:55:16,440 --> 00:55:20,450 Əksinə, yalnız ilə başlamaq üçün uzunluğu zəng 0 onu başlamaq imkan 892 00:55:20,450 --> 00:55:23,340 biz nə anlamaq qədər ismarıcları simli heç uzunluğu çünki. 893 00:55:23,340 --> 00:55:26,160 >> İndi biz bunu, indi bu olduqca zərif proqramdır. 894 00:55:26,160 --> 00:55:28,660 Bir dəyişən. Hesab edirəm ki, təmizlənmiş qədər dartılmış. 895 00:55:28,660 --> 00:55:31,980 İndi beni terminal pəncərə geri imkan verir. Nin irəli getmək və bu run edək. 896 00:55:31,980 --> 00:55:35,670 Strlen olun. Yaxşı görünür. Daxil edin, daha strlen Run. 897 00:55:35,670 --> 00:55:40,680 Mənə bir ip verin: HELLO daxil edin. Və bu 5 iş görünür. 898 00:55:40,680 --> 00:55:45,580 Mən yazılı olmasaydı, indi HELLO 1 simli ilə, məsələn, aydın olmaq 899 00:55:45,580 --> 00:55:48,840 və sonra başqa bye, əlbəttə ki, çox sözlə ola bilər. 900 00:55:48,840 --> 00:55:53,150 Mən, həqiqətən, yazın istədi ifadə HELLO deyil amma, məsələn, əgər 901 00:55:53,150 --> 00:55:58,920 DÜNYA, nə biz olmazdı burada bu vəziyyət olduğunu bildiriş hüququ HELLO? 902 00:55:58,920 --> 00:56:00,580 Yəni 2 strings ki, gəlir ki. 903 00:56:00,580 --> 00:56:06,060 Siz əlbəttə ki, biz, həqiqətən, uzun söz yazdığınız əgər, kosmik bar simvol ola bilər 904 00:56:06,060 --> 00:56:08,390 HELLO WORLD kimi, biz, həqiqətən yaddaş nə var ki, 905 00:56:08,390 --> 00:56:12,730 var kimi bir az bir şey görünür. 906 00:56:12,730 --> 00:56:18,910 >> Bütün hüquqlar. Hər hansı bir sualınız sonra strings burada nümayəndəlik haqqında? 907 00:56:18,910 --> 00:56:20,450 No? Bütün hüquqlar. 908 00:56:20,450 --> 00:56:25,130 Mən yenə strlen zəng və yenidən qəsdən belə ki əvvəllər bildirib 909 00:56:25,130 --> 00:56:28,070 Siz iş bütün çox məşğul olacaq çünki yəqin ki, yaxşı fikir deyil 910 00:56:28,070 --> 00:56:30,280 təkrar və yenidən. 911 00:56:30,280 --> 00:56:36,150 Həqiqətən, nə iş cür görünür, bir simli uzunluğu həyata figuring üçün lazımdır? 912 00:56:36,150 --> 00:56:40,720 Siz başında və sonra baxmaq, bax, bax, bax, baxmaq 913 00:56:40,720 --> 00:56:44,930 nəhayət ki, xüsusi xarakter görməyincə hansı nöqtədə ah, indi uzunluğu bilirik. 914 00:56:44,930 --> 00:56:48,040 Belə ki, əvvəllər biz strlen təkrar və yenidən adlanan zaman, 915 00:56:48,040 --> 00:56:52,080 yenidən ki, string kimi görünür, çünki axmaq cür idi ki, mən təklif səbəb olur. 916 00:56:52,080 --> 00:56:54,880 Bu, bəzi loop vasitəsilə təkrarlamaq hər dəfə dəyişmək niyyətində deyil 917 00:56:54,880 --> 00:56:56,890 belə lazımsız iş edirik. 918 00:56:56,890 --> 00:57:00,620 Eyni zamanda bir kənara kimi, cingilti kimi ki derleyiciler bu gün bilməlidir 919 00:57:00,620 --> 00:57:02,530 çox il ərzində işlənib hazırlanmışdır, 920 00:57:02,530 --> 00:57:05,690 və compiler yazıçılar, proqramçılar, olduqca ağıllı olur. 921 00:57:05,690 --> 00:57:10,170 Və belə cingilti və digər derleyiciler həqiqətən anlamaq olar ki çıxır ki, 922 00:57:10,170 --> 00:57:13,650 tamam, bəli, sizin vəziyyətdə strlen yazdı 923 00:57:13,650 --> 00:57:17,520 olan texniki biz təkrar və yenidən zəng ki, deməkdir. 924 00:57:17,520 --> 00:57:21,880 Amma ağıllı derleyiciler həqiqətən zəif istifadəçi qərarları bu cür optimize edə bilərsiniz 925 00:57:21,880 --> 00:57:23,870 şeyi bərpa etmək üçün kod həyata. 926 00:57:23,870 --> 00:57:27,360 >> Belə ki, yalnız bəzən compiler asan bizdən olduğunu dərk etmirlər 927 00:57:27,360 --> 00:57:29,210 və növ öz səhvləri gizlətmək edəcək. 928 00:57:29,210 --> 00:57:31,620 Amma əlbəttə ki, problem dəstləri və kimi gəldiyi zaman 929 00:57:31,620 --> 00:57:35,340 o əsaslı səhv dizayn qərarları barədə düşünür ola bilərəm 930 00:57:35,340 --> 00:57:38,110 potensial biz yol daha iş olarıq ki, sadə səbəbdən 931 00:57:38,110 --> 00:57:41,330 biz, həqiqətən, var artıq. Amma nə qədər çox iş? 932 00:57:41,330 --> 00:57:44,960 HELLO WORLD halda, bu problem həcmi ümumiləşdirmək başlamaq edək. 933 00:57:44,960 --> 00:57:48,100 Problemin uzunluğu və ya problemin ölçüsü nədir 934 00:57:48,100 --> 00:57:50,770 zaman söz Yığdığınız istifadəçi HELLO edir? 935 00:57:50,770 --> 00:57:53,790 Bu, bəlkə yəqin 5 6 var. Müsbət və ya mənfi 1. Neyse. 936 00:57:53,790 --> 00:57:55,680 Biz yalnız 5 zəng bilərsiniz yaxın. 937 00:57:55,680 --> 00:58:00,480 >> HELLO müddəti həyata rəqəm çalışır Belə ki, problemin ölçüsü burada nə var? 938 00:58:00,480 --> 00:58:06,790 Bu son xarakter üçün bəlkə 1, 2, 3, 4, 5, 6, lakin ümumiləşdirmək edək n kimi. 939 00:58:06,790 --> 00:58:10,300 Belə ki, n, yalnız dəyişən n, kompüter alimləri adətən istifadə edir nə 940 00:58:10,300 --> 00:58:13,890 əl bir problem ölçüsü və problem təsvir etmək üçün HELLO necə uzun? 941 00:58:13,890 --> 00:58:17,050 Strlen nə qədər vaxt lazımdır? 942 00:58:17,050 --> 00:58:21,010 Hər bir addım bir xarakter baxmaq deməkdir harada, n addımlar üçün qalır 943 00:58:21,010 --> 00:58:23,350 bir xarakter baxmaq, bir xarakter oldu. 944 00:58:23,350 --> 00:58:26,850 Və biz bir müddət geri bu müzakirə idi, əməliyyatların sayı bir şey edir. 945 00:58:26,850 --> 00:58:29,910 Kateqoriyasının ilk gün hər kəs yöndəmsiz, durmaq etmişdir 946 00:58:29,910 --> 00:58:32,060 və sonra hər kəs bir-biri ilə off cütləşmə açılmış 947 00:58:32,060 --> 00:58:35,990 üçün həqiqətən otaqda ideal neçə nəfər saymaq. 948 00:58:35,990 --> 00:58:39,860 Və biz də bir şey olmadı elə mən əvəzinə köhnə məktəb yol əgər 949 00:58:39,860 --> 00:58:44,800 yalnız s 1, 2, 3, 4, 5, 6 başlayan və, 950 00:58:44,800 --> 00:58:49,360 çox ki, problemin ölçüsü ölçüsü n idi. Oda n insanlar var idi. 951 00:58:49,360 --> 00:58:52,010 Amma doğru olduğunu sürətləndirmək bilər? Az məktəb stil mən 2s ilə hesablanması başlamaq bilər. 952 00:58:52,010 --> 00:58:55,560 2, 4, 6, 8, 10, 12. Və çox daha sürətli, və həqiqətən ki, hiss edir. 953 00:58:55,560 --> 00:59:01,720 Başqa 400 nəfər bu otağa getdi əgər yenə sözün iki dəfə sürətli kimi, lakin 954 00:59:01,720 --> 00:59:08,250 bir dəfə bütün bu alqoritmlərin başqa 400 və ya bəlkə 200 addımlar olacaq. 955 00:59:08,250 --> 00:59:13,310 >> Biz həqiqətən ağıllı almaq və biz əvəzinə varsa Lakin əksinə, siz bütün sizin saymaq 956 00:59:13,310 --> 00:59:15,280 ki, alqoritm işləmişdir necə xatırlayıram. 957 00:59:15,280 --> 00:59:17,110 Siz bütün ayağa qalxdı. Bu fast-irəli mənə edək. 958 00:59:17,110 --> 00:59:20,430 Siz bütün, siz yarım oturdu, sonra off qoşalaşmış, ayağa qalxaraq 959 00:59:20,430 --> 00:59:22,510 Siz yarım oturdu, siz yarım oturdu 960 00:59:22,510 --> 00:59:27,350 və həftə 0 Bu loop hər iteration də biz tərəfdən problem halved 961 00:59:27,350 --> 00:59:30,040 və sonra n / 8, sonra n / 4, n / 2 getdi. 962 00:59:30,040 --> 00:59:35,350 Və ki, dolayısı ki, başqa 400 nəfər otağı, heç bir böyük daxil gəzmək əgər 963 00:59:35,350 --> 00:59:40,120 bu, bizi 400 daha el deyil, 200 daha tur 1 daha dəyirmi keçiriləcək. 964 00:59:40,120 --> 00:59:43,640 Və biz geri isə bildirib hekayə bu bir az bir şey idi. 965 00:59:43,640 --> 00:59:47,750 Bu qırmızı xətt burada xətti, bu düz deyil, və n kimi etiketli edir 966 00:59:47,750 --> 00:59:50,250 bir problem həcmi artır kimi, çünki 967 00:59:50,250 --> 00:59:54,690 Sizin alqoritm və proqram ilə siz həll edirsinizsə o, n addımlar atır 968 00:59:54,690 --> 00:59:58,620 biz bu problemin böyük ölçüdə daha çox zaman alır bir düz xətt kimi sahəsi bilərsiniz. 969 00:59:58,620 --> 01:00:03,280 Və yalnız bir az daha yaxşı 2 hesablanmasını twosies yanaşma, 4, 6, 8, hələ bir düz xətt. 970 01:00:03,280 --> 01:00:08,440 Bu bir az daha az vaxt tələb edir, sarı xətt nöqtəsi üçün qırmızı xətt baxımdan aşağıda belə. 971 01:00:08,440 --> 01:00:12,580 >> Lakin daha yaxşı biz logarithmic zaman adlandırdığı bu müqəddəs grail idi 972 01:00:12,580 --> 01:00:14,830 Ü yenə biz oda insanların sayı iki dəfə, hətta, 973 01:00:14,830 --> 01:00:18,240 biz sinif ilk gündən ki, telefon kitab həcmini ikiqat 974 01:00:18,240 --> 01:00:22,310 heç bir böyük, 1 daha səhifə gözyaşardıcı edir, 1 daha iclası aşağı edir 975 01:00:22,310 --> 01:00:25,550 iki dəfə böyük olduğunu bir problem həll etmək üçün. 976 01:00:25,550 --> 01:00:27,460 Və söhbət biz İndi malik başlamaq almaq 977 01:00:27,460 --> 01:00:30,380 necə həqiqətən səmərəli problemləri həll yoxdur 978 01:00:30,380 --> 01:00:32,510 biz bu kimi problemlərin sadə hesab? əgər 979 01:00:32,510 --> 01:00:36,210 , Bəzi nömrələri olan arxasında 8 qapı var düşünək 980 01:00:36,210 --> 01:00:39,720 və bu ədəd hər hansı bir şəkildə sıralanır deyil 981 01:00:39,720 --> 01:00:42,830 onlar bu qapılar arxasında yalnız təsadüfi integers edirik 982 01:00:42,830 --> 01:00:47,290 Kim bilir - və biz necə sayı tapmaq yaparsınız sual - 983 01:00:47,290 --> 01:00:50,250 Bu qapılar arxasında 7? 984 01:00:50,250 --> 01:00:53,400 Əgər bir insan, mənə sayı 7 tapmaq üçün nə edərdiniz 985 01:00:53,400 --> 01:00:56,810 yenə bu hər qapı və bir dəyər görmək əgər bir qapı açmaq lazımdır? 986 01:00:56,810 --> 01:00:59,650 Sizin alqoritm bəlkə ola bilər? 987 01:00:59,650 --> 01:01:05,310 >> [Işitilemez tələbə cavab] >> Belə ki, sol ilə başlamaq və bir qapı açmaq, bir qapı açmaq, bir qapı açın. 988 01:01:05,310 --> 01:01:08,570 Və ən pis halda, nə qədər sayı 7 tapmaq bizə etmək üçün gedir? 989 01:01:08,570 --> 01:01:12,800 Və yenə onlar sıralanır deyil, belə ki, kimi asan deyil edirik, yaxşı, mən 7-ci qapı açmaq üçün gedirəm. 990 01:01:12,800 --> 01:01:15,240 Bu, maksimum, 8 addımlar bizi bilər. 991 01:01:15,240 --> 01:01:19,940 Ən pis halda, 7, qapı xəttinin çox sonunda təsadüfi deyil 992 01:01:19,940 --> 01:01:22,090 biz bütün n qapı cəhd ola bilər. 993 01:01:22,090 --> 01:01:24,440 Belə ki, burada, biz xətti alqoritm var görünür. 994 01:01:24,440 --> 01:01:27,030 Əslində, biz bir neçə il yalnız əvvəl bu idi. 995 01:01:27,030 --> 01:01:29,910 Sizin sələfləri biri məhz ilə etiraz edildi 996 01:01:29,910 --> 01:01:32,050 biz bir digital versiyası olmadığı, biz əvəzinə yazı taxtası oldu 997 01:01:32,050 --> 01:01:33,780 bu kağız bəzi parçaları. 998 01:01:33,780 --> 01:01:36,940 Nə mən nə düşündüm, bu getdi necə geri sürətli bir nəzər edir 999 01:01:36,940 --> 01:01:40,760 mərhələdə ən yaxşı və bəlkə də ən yöndəmsiz imkanlardan biri 1000 01:01:40,760 --> 01:01:42,530 Burada Sanders bir nümayiş var. 1001 01:01:42,530 --> 01:01:44,000 Biz ədəd 2 satır idi. 1002 01:01:44,000 --> 01:01:47,280 Biz yalnız bu satır çox üst üçün Sean burada nə baxmaq olacaq. 1003 01:01:47,280 --> 01:01:49,660 Halda yenə heç kimsə CS50 könüllüləri, 1004 01:01:49,660 --> 01:01:52,010 biz, kamera bu saxlamaq Sean xeyir-dua idi 1005 01:01:52,010 --> 01:01:54,670 o yüzlərlə ildir bu seyr edilmişdir ki, bilir. 1006 01:01:54,670 --> 01:01:59,500 Amma Sean inanılmaz bir iş idi - və ya o idi - həqiqətən bizə xüsusi sayı tapmaq edir. 1007 01:01:59,500 --> 01:02:04,570 >> Belə ki, uzun əvvəl bu söhbət davam edəcəyik ki, o, bu alqoritm necə həll nin görək 1008 01:02:04,570 --> 01:02:08,300 necə səmərəli şeyi tapa bilərsiniz. 1009 01:02:08,300 --> 01:02:12,300 [Video Malan] Mən, bu qapılar arxasında sayı 7 gizlediniz 1010 01:02:12,300 --> 01:02:16,710 ancaq bu qapı bəzi üz tucked, habelə digər qeyri-mənfi nömrələr 1011 01:02:16,710 --> 01:02:19,980 və məqsədi yalnız bir sıra kimi nömrələri bu üst sıra hesab edir 1012 01:02:19,980 --> 01:02:22,920 və ya onların arxasında ədəd kağız parçaları bir ardıcıllıqla, 1013 01:02:22,920 --> 01:02:26,960 və məqsədi yalnız burada üst sıra istifadə edərək,, mənə sayı 7 tapa bilərsiniz. 1014 01:02:26,960 --> 01:02:30,800 Və biz o zaman bunu haqqında getmək necə tənqid edir. >> Bütün hüququ. 1015 01:02:30,800 --> 01:02:33,880 [Malan] Bookmark sayı 7 tap, xahiş edirik. 1016 01:02:36,210 --> 01:02:38,350 [Gülüş] 1017 01:02:41,610 --> 01:02:44,460 [Malan] saylı [gülüş] 1018 01:02:45,760 --> 01:02:58,080 5, 19, 13, [gülüş]. Bu oyun sual deyil. 1019 01:03:00,560 --> 01:03:02,390 1. 1020 01:03:04,560 --> 01:03:06,910 [Gülüş] 1021 01:03:06,910 --> 01:03:10,760 Bu nöqtədə hesab çox yaxşı deyil, belə ki, siz də davam edə bilər. [Gülüş] 1022 01:03:12,490 --> 01:03:14,070 3. 1023 01:03:17,340 --> 01:03:23,480 Gedin. Açığı, mən kömək lakin hətta haqqında düşünür istəyirsinizsə görəsən bilməz. [Gülüş] 1024 01:03:25,010 --> 01:03:28,870 Yalnız üst sıra, belə ki, 3 sol var. Mənə 7 tapa bilərsiniz. 1025 01:03:28,870 --> 01:03:45,360 [Tələbələri murmuring] 1026 01:03:46,270 --> 01:03:49,870 [Malan] 17. 1027 01:03:49,870 --> 01:03:55,460 [Tələbələri murmuring] 1028 01:03:56,920 --> 01:04:01,550 [Malan] 7! [Alqış] 1029 01:04:01,550 --> 01:04:06,080 >> Belə ki, çərşənbə günü biz hər şeyi tapmaq üçün bu və daha çox inkişaf etmiş alqoritmlər daxil dalış edəcək. 1030 01:04:06,080 --> 01:04:10,200 İndi biz Sean ilə tərk edəcəyik və çərşənbə günü görürsünüz. 1031 01:04:11,280 --> 01:04:13,000 [CS50.TV]