1 00:00:00,000 --> 00:00:11,200 2 00:00:11,200 --> 00:00:12,580 >> DAVID Malan: Bütün sağ, geri salamlayıram. 3 00:00:12,580 --> 00:00:13,290 Bu CS50 edir. 4 00:00:13,290 --> 00:00:15,130 Bu həftə yeddi başlayın. 5 00:00:15,130 --> 00:00:18,890 Belə ki, bir müddət olub, mən, biz istədiyiniz fikir oldu Biz bir qasırğa tur 6 00:00:18,890 --> 00:00:20,760 off tərk harada və biz artıq olacaq. 7 00:00:20,760 --> 00:00:23,310 >> Bu şey burada ola bilər Belə ki, İlk bəzi angst səbəb oldu. 8 00:00:23,310 --> 00:00:27,680 Amma inşallah, siz başlıyoruz burada işarə nə acclimate - 9 00:00:27,680 --> 00:00:32,670 olan göstərici təmsil ulduz daha layman nin baxımından yalnız nə? 10 00:00:32,670 --> 00:00:33,400 Belə ki, bir ünvan var. 11 00:00:33,400 --> 00:00:35,490 >> Belə ki, onun ünvanı var yaddaşında bir şey. 12 00:00:35,490 --> 00:00:38,260 Və biz geri soymaq qat başladı bir neçə həftə əvvəl, hər şeyi istəyirəm 13 00:00:38,260 --> 00:00:41,800 GetString və digər bu kimi funksiyaları bütün bu vaxt qaytarılması edilmişdir 14 00:00:41,800 --> 00:00:46,010 kimi yaddaş şeyi ünvanlarını, ilk xarakter ünvanı 15 00:00:46,010 --> 00:00:46,990 bəzi ardıcıllığı. 16 00:00:46,990 --> 00:00:50,360 >> Beləliklə, biz də, valgrind təqdim edən Bu problem üçün istifadə başlarsınız 17 00:00:50,360 --> 00:00:53,380 xüsusilə növbəti üçün müəyyən problem həmçinin müəyyən edilmişdir. 18 00:00:53,380 --> 00:00:54,980 Və valgrind bizim üçün nə edir? 19 00:00:54,980 --> 00:00:57,520 20 00:00:57,520 --> 00:01:01,020 Bu yaddaş sızıntıları üçün yoxlayır və bu, həmçinin yaddaş sui-istifadə üçün yoxlayır. 21 00:01:01,020 --> 00:01:05,890 >> Ki, bəzi ehtimalı ilə aşkar edə bilər, əgər kodunuzu yaddaş toxunmaq gedir 22 00:01:05,890 --> 00:01:07,100 ki, sadəcə deyil. 23 00:01:07,100 --> 00:01:10,410 Belə ki, baş mütləq, ancaq əgər bəzi hüdudlarından kənarda getmək 24 00:01:10,410 --> 00:01:14,730 dizi, və həqiqətən valgrind çalıştırmak və davranış vadar edərkən 25 00:01:14,730 --> 00:01:17,870 valgrind sizin proqram çalışan onun daxilində çalışan, siz almaq lazımdır 26 00:01:17,870 --> 00:01:21,460 bu kimi mesajlar - "etibarsız sayılması yazmaq , bir neçə geri olan ölçüsü 4 " 27 00:01:21,460 --> 00:01:25,880 həftə bundan əvvəl mən təsadüfən idi ki, nəzərdə çox uzaq bir int olduğu kimi 28 00:01:25,880 --> 00:01:27,250 bir sıra hüdudlarından kənarda. 29 00:01:27,250 --> 00:01:30,790 Və belə ölçüsü 4 burada ölçüsü deməkdir xüsusi int. 30 00:01:30,790 --> 00:01:35,260 >> Belə ki, əslində əmin edir ki, valgrind çıxış, onun formatında, 31 00:01:35,260 --> 00:01:36,170 yalnız dəhşətli deyil. 32 00:01:36,170 --> 00:01:40,180 Bu mess vasitəsilə görmək həqiqətən çətindir maraqlı məlumat üçün. 33 00:01:40,180 --> 00:01:42,910 Bəs biz burada etdik yalnız pasaj edir ətraflı neçə bəzi 34 00:01:42,910 --> 00:01:43,850 maraqlı satır. 35 00:01:43,850 --> 00:01:46,760 Amma dərk edirik ki valgrind-nin 80% çıxışı bir az olacaq 36 00:01:46,760 --> 00:01:47,650 yayındırma. 37 00:01:47,650 --> 00:01:52,820 >> Məhz bu kimi nümunələri axtarmaq - sağ etibarsız etibarsız, 40 bayt oxumaq 38 00:01:52,820 --> 00:01:56,690 və blokları bəzi nömrəsi mütləq kimi açar sözlər, itirdi. 39 00:01:56,690 --> 00:02:01,920 Və nə ümid görürsünüz bəzi funksiyası nə iz növü 40 00:02:01,920 --> 00:02:03,340 səhv daxil əslində 41 00:02:03,340 --> 00:02:07,195 Bu halda, hansı xətti Mənim kodu yəqin səhv idi? 42 00:02:07,195 --> 00:02:09,729 43 00:02:09,729 --> 00:02:14,130 >> Olan memory.c adlı bir fayl, 26 biz oynayan nümunə 44 00:02:14,130 --> 00:02:14,890 vaxt. 45 00:02:14,890 --> 00:02:16,460 Belə ki, malloc yəqin deyil. 46 00:02:16,460 --> 00:02:18,630 Bu əvəzinə mənim kodu yəqin idi. 47 00:02:18,630 --> 00:02:20,910 Beləliklə, biz daha bu görürsünüz və yenə uzun əvvəl. 48 00:02:20,910 --> 00:02:24,080 >> Scanf Belə ki, bu bir qədər gəldi İndiyədək formalarının neçə. 49 00:02:24,080 --> 00:02:26,410 Biz qısa sscanf gördüm. 50 00:02:26,410 --> 00:02:28,330 Bu bir şey sayı Əgər sizin daxil dived 51 00:02:28,330 --> 00:02:29,535 Viktorina hazırlıq. 52 00:02:29,535 --> 00:02:33,130 Və scanf əslində nə CS50 kitabxana altındakı istifadə edilmişdir 53 00:02:33,130 --> 00:02:36,560 üçün çox bir müddət başlıq istifadəçi daxil almaq üçün. 54 00:02:36,560 --> 00:02:40,420 >> Məsələn, mən CS50 üzərində hərəkət əgər cihaz burada, bir məni açmaq bildirin 55 00:02:40,420 --> 00:02:45,315 scanf-0.c deyirlər ki, məsələn, bu gün Və super sadədir. 56 00:02:45,315 --> 00:02:46,590 Bu, sadəcə kodu bir neçə xətləri var. 57 00:02:46,590 --> 00:02:50,880 Amma bu nümayiş etdirir həqiqətən necə getInt Bu zaman bütün çalışır. 58 00:02:50,880 --> 00:02:54,710 >> Line 16 burada bu proqram olaraq, , Mən int bəyan edir ki, bildiriş. 59 00:02:54,710 --> 00:02:57,270 Belə ki, heç bir göstəricilərinə, sehirli heç bir şey var, yalnız bir int. 60 00:02:57,270 --> 00:03:00,330 Sonra line 17, mən təklif bir neçə istifadəçi, xahiş edirik. 61 00:03:00,330 --> 00:03:02,930 Sonra gec 18, mən burada scanf istifadə edin. 62 00:03:02,930 --> 00:03:06,910 Və mən müəyyən növ kimi printf ki, Mən quote gözləyirik alıram ki, 63 00:03:06,910 --> 00:03:08,110 i dırnağı bağlamaq. 64 00:03:08,110 --> 00:03:10,920 >> I Belə ki, əlbəttə, bir int bildirir. 65 00:03:10,920 --> 00:03:14,580 Amma hiss nə, ikinci scanf üçün dəlildir. 66 00:03:14,580 --> 00:03:17,350 Necə ikinci təsvir edərdiniz ki, vergüldən sonra mübahisə? 67 00:03:17,350 --> 00:03:19,450 Ki, nədir? 68 00:03:19,450 --> 00:03:20,670 >> Bu x ünvanı var. 69 00:03:20,670 --> 00:03:25,490 Beləliklə, bu, çünki təmin faydalıdır x ünvanı ilə scanf, nə 70 00:03:25,490 --> 00:03:29,560 Bunu ki, funksiyası həvalə? 71 00:03:29,560 --> 00:03:33,010 Yalnız getmək, həm də nə? 72 00:03:33,010 --> 00:03:34,060 >> Bu bir dəyişiklik olun. 73 00:03:34,060 --> 00:03:38,080 Siz orada getmək bilər, çünki, bu cür var yaddaş bir yer üçün bir harita kimi. 74 00:03:38,080 --> 00:03:41,900 Və belə uzun siz təmin scanf, və ya belə bir xəritə ki, hər hansı bir funksiyası 75 00:03:41,900 --> 00:03:45,840 funksiyası getmək olar yalnız dəyəri baxmaq, lakin o, həmçinin 76 00:03:45,840 --> 00:03:49,670 əgər faydalı olan dəyəri dəyişmək scanf həyatında məqsədi üçün 77 00:03:49,670 --> 00:03:53,060 xüsusilə, istifadəçi daxil scan klaviatura edir. 78 00:03:53,060 --> 00:03:57,830 Və f kimi, biçimlendirilmiş işarə printf, f biçimlendirilmiş işarə 79 00:03:57,830 --> 00:03:58,930 Siz çap etmək istəyirəm ki, simli. 80 00:03:58,930 --> 00:04:04,430 >> Belə ki, qısa, bu xətt 18 sadəcə deyir ki, istifadəçi bir int oxumaq üçün cəhd edin 81 00:04:04,430 --> 00:04:10,420 klaviatura və, x daxilində saxlaya x-da yaşamaq olur nə ünvanı. 82 00:04:10,420 --> 00:04:14,860 Və sonra nəhayət, line 19 yalnız deyir ki, Bu halda int üçün təşəkkür edirik. 83 00:04:14,860 --> 00:04:15,940 >> Mənə davam və bu imkan. 84 00:04:15,940 --> 00:04:18,570 Belə ki, scanf 0 olun. 85 00:04:18,570 --> 00:04:20,130 Mənə davam və daxil zoom edək 86 00:04:20,130 --> 00:04:22,960 Mən getmək və bu çalıştırmak bilərsiniz nöqtələr scanf 0 doğramaq. 87 00:04:22,960 --> 00:04:24,020 Sayı, xahiş edirik? 88 00:04:24,020 --> 00:04:24,720 50. 89 00:04:24,720 --> 00:04:25,730 50 üçün təşəkkür edirik. 90 00:04:25,730 --> 00:04:27,270 Belə ki, kifayət qədər sadədir. 91 00:04:27,270 --> 00:04:28,160 >> İndi nə deyil? 92 00:04:28,160 --> 00:04:29,940 Bu bütün dəstə bunu deyil səhv yoxlanılması. 93 00:04:29,940 --> 00:04:33,000 Məsələn, mən əməkdaşlıq yoxsa, və mən bir sıra yazın deyil, 94 00:04:33,000 --> 00:04:37,860 Bunun əvəzində mən "Salam" kimi bir şey yazmaq ki, qəribə yalnız növü var. 95 00:04:37,860 --> 00:04:41,130 Olan şeylər CS50 və belə bir kitabxana bəzi bizim üçün aparır 96 00:04:41,130 --> 00:04:43,440 vaxt reprompting edir və reprompting. 97 00:04:43,440 --> 00:04:49,320 >> Bu sınamaq söz geri, cs50.c idi və bu getInt səbəbi var 98 00:04:49,320 --> 00:04:51,670 ki, CS50 kitabxana əslində bir bütündür uzun xətləri dəstə, biz istəyirik, çünki 99 00:04:51,670 --> 00:04:53,190 bu kimi axmaq heyəti üçün yoxlanılması. 100 00:04:53,190 --> 00:04:55,730 Istifadəçi vermədi bizim, əslində, bir int? 101 00:04:55,730 --> 00:04:57,910 O bizə bir şey verdin bir əlifba məktub kimi? 102 00:04:57,910 --> 00:05:01,410 Əgər belədirsə, biz aşkar etmək istəyirik və onlara fəğan. 103 00:05:01,410 --> 00:05:03,915 >> Lakin işlər daha maraqlı almaq Bu növbəti nümunə. 104 00:05:03,915 --> 00:05:09,840 Mən scanf-1.c getmək Əgər, nə biridir əsaslı dəyişib şey 105 00:05:09,840 --> 00:05:11,135 Bu növbəti misal? 106 00:05:11,135 --> 00:05:13,690 107 00:05:13,690 --> 00:05:16,010 Mən, əlbəttə, char * kullanıyorum əvəzinə int. 108 00:05:16,010 --> 00:05:19,210 >> Çünki char * Beləliklə, bu, maraqlı geri, yalnız həqiqətən 109 00:05:19,210 --> 00:05:20,190 string kimi eyni şey. 110 00:05:20,190 --> 00:05:23,840 Belə ki, bəlkə kimi bu super hiss GetString sadə tətbiqi. 111 00:05:23,840 --> 00:05:26,010 Amma qat geri soyulmuş sonra ki, CS50 kitabxana, mən deyiləm 112 00:05:26,010 --> 00:05:27,550 İndi bu char * çağırır. 113 00:05:27,550 --> 00:05:30,070 Elə görək yerləşir, hər hansı halda, biz yanlış getmək. 114 00:05:30,070 --> 00:05:30,840 >> Line 17 - 115 00:05:30,840 --> 00:05:33,950 Mən yenə mənə bir şey verin, demək bu halda, simli. 116 00:05:33,950 --> 00:05:37,940 Və sonra növbəti olaraq, I, scanf zəng yenidən, bir format kodu verilməsi, 117 00:05:37,940 --> 00:05:39,310 Ancaq bu dəfə yüzdə s. 118 00:05:39,310 --> 00:05:41,900 Və bu zaman, Ben bu bufer verilməsi. 119 00:05:41,900 --> 00:05:43,550 >> İndi istifadə deyiləm, qeyd ki, işareti. 120 00:05:43,550 --> 00:05:47,120 Amma niyə burada yəqin ki, OK? 121 00:05:47,120 --> 00:05:49,760 Artıq bufer nə çünki? 122 00:05:49,760 --> 00:05:50,770 Artıq bir göstərici var. 123 00:05:50,770 --> 00:05:51,650 Artıq bir ünvan var. 124 00:05:51,650 --> 00:05:54,510 >> Və qoy bu sözü mənə bildirin "çaşdırmaq" var yalnız, məsələn, bu s zəng 125 00:05:54,510 --> 00:05:55,050 sadəlik. 126 00:05:55,050 --> 00:05:58,250 Amma bu bufer adlı etdik, çünki ümumi, proqramlaşdırma, siz var əgər 127 00:05:58,250 --> 00:06:02,130 yaddaş yığın, bir string həqiqətən yalnız, siz onu bir tampon zəng bilər olunur. 128 00:06:02,130 --> 00:06:04,460 Bu məlumat saxlamaq üçün bir yer var. 129 00:06:04,460 --> 00:06:07,400 >> Zaman YouTube, kimi şeylər oxşar Onlar, necə deyərlər, buffering edirik ki, 130 00:06:07,400 --> 00:06:10,270 yalnız bu bit yükləməzdən vasitələri internet və onların saxlanılması 131 00:06:10,270 --> 00:06:14,160 yerli dizi, belə yaddaş yerli yığın sənsiz sonra seyr edə bilərsiniz ki, 132 00:06:14,160 --> 00:06:16,830 bu atlama və ya asma geri oynarken. 133 00:06:16,830 --> 00:06:20,930 >> Belə bir problem olsa da burada var Mən scanf deyirəm, çünki gözləmək 134 00:06:20,930 --> 00:06:22,320 istifadəçi string. 135 00:06:22,320 --> 00:06:24,410 Burada ünvanı var yaddaş yığın. 136 00:06:24,410 --> 00:06:26,180 Var ki, simli qoyun. 137 00:06:26,180 --> 00:06:31,230 Niyə bound vermək deyil baxmayaraq, bizə problem? 138 00:06:31,230 --> 00:06:33,490 >> Nə olub? 139 00:06:33,490 --> 00:06:35,510 Mən daxil olmaq üçün icazə Am yaddaş hissəsidir? 140 00:06:35,510 --> 00:06:36,250 Bilirsiniz, mən bilmirəm. 141 00:06:36,250 --> 00:06:39,210 Bufer başlatılmış çünki bir şey üçün? 142 00:06:39,210 --> 00:06:39,820 Deyil, həqiqətən. 143 00:06:39,820 --> 00:06:43,090 Və belə ki, biz zəng olduğunuz var bir zibil dəyəri, hansı 144 00:06:43,090 --> 00:06:44,040 rəsmi bir söz deyil. 145 00:06:44,040 --> 00:06:49,200 Bu yalnız biz nə bit heç bir fikrim yoxdur deməkdir ki, dörd bayt daxilində var 146 00:06:49,200 --> 00:06:51,240 Mən bufer kimi ayrılmışdır. 147 00:06:51,240 --> 00:06:52,450 >> Mən malloc adlı yoxdur. 148 00:06:52,450 --> 00:06:53,940 Mən mütləq GetString axtarmadı etdik. 149 00:06:53,940 --> 00:06:56,380 Belə ki, kim həqiqətən nə bilir bufer daxilində? 150 00:06:56,380 --> 00:07:00,550 Və hələ scanf izah edən kor-koranə, orada getmək və istifadəçi yazdığınız nə qoydu. 151 00:07:00,550 --> 00:07:04,460 >> Belə ki, səbəb nə bizim kodu biz bunu əgər? 152 00:07:04,460 --> 00:07:05,700 Yəqin ki, bir segfault. 153 00:07:05,700 --> 00:07:07,970 Bəlkə, lakin yəqin ki, bir segfault. 154 00:07:07,970 --> 00:07:10,620 Və demək bəlkə deyil, çünki bəzən Siz bəzən, nə 155 00:07:10,620 --> 00:07:11,380 bir segfault deyil. 156 00:07:11,380 --> 00:07:14,280 Bazen yalnız şanslı almaq, ancaq o yenə olacaq 157 00:07:14,280 --> 00:07:15,340 proqram bir səhv. 158 00:07:15,340 --> 00:07:17,060 >> Mənə davam və bu tərtib edək. 159 00:07:17,060 --> 00:07:18,280 Hesab edirəm ki, köhnə məktəb yolu nə gedirəm. 160 00:07:18,280 --> 00:07:23,825 Belə ki, cingilti Daş 0, scanf-1, scanf-1.c daxil edin. 161 00:07:23,825 --> 00:07:24,720 Bağışlayın, çox köhnə məktəb. 162 00:07:24,720 --> 00:07:26,550 In nəzər salaq. 163 00:07:26,550 --> 00:07:28,440 Mən hara getdi? 164 00:07:28,440 --> 00:07:29,700 Oh, char * bufer. 165 00:07:29,700 --> 00:07:33,595 166 00:07:33,595 --> 00:07:35,130 Oh, sizə təşəkkür edirəm - 167 00:07:35,130 --> 00:07:36,930 OK, Saxla - 168 00:07:36,930 --> 00:07:37,690 çox köhnə məktəb. 169 00:07:37,690 --> 00:07:38,900 Bütün sağ, bir müddət oldu. 170 00:07:38,900 --> 00:07:41,720 >> Beləliklə, mən yalnız fayl sonra xilas etdik müvəqqəti edilməsi 171 00:07:41,720 --> 00:07:42,700 bir an əvvəl dəyişdirin. 172 00:07:42,700 --> 00:07:46,090 İndi mən onu tərtib əl cingilti ilə. 173 00:07:46,090 --> 00:07:49,500 İndi isə irəli getmək gidiyorum və daxil edin, scanf-1 axır. 174 00:07:49,500 --> 00:07:50,290 String edin. 175 00:07:50,290 --> 00:07:51,600 Mən yazın lazımdır "salam". 176 00:07:51,600 --> 00:07:54,070 >> Və indi burada printf, səmimi, nerde bir az annoying bilər. 177 00:07:54,070 --> 00:07:56,020 Bu, faktiki olaraq gedən deyil Bu halda segfault. 178 00:07:56,020 --> 00:07:59,860 Printf bir az xüsusi çünki bu ümumi istifadə belə super ki, 179 00:07:59,860 --> 00:08:03,570 mahiyyətcə printf edir bizə lütf və həyata keçirilməsi, 180 00:08:03,570 --> 00:08:04,830 ki, cari bir göstərici deyil. 181 00:08:04,830 --> 00:08:09,080 Özümü yalnız çap etməyə mənə edək parantez null həyata, hətta 182 00:08:09,080 --> 00:08:13,340 mütləq deyil, baxmayaraq nə biz özümüz gözlənilir. 183 00:08:13,340 --> 00:08:16,940 >> Beləliklə, biz, həqiqətən, asanlıqla vadar edə bilməz Bu aydın bu segfault, lakin 184 00:08:16,940 --> 00:08:18,600 Mən istəyirdim davranış deyil. 185 00:08:18,600 --> 00:08:19,800 Belə ki, sadə həlli var? 186 00:08:19,800 --> 00:08:25,650 Yaxşı, scanf-2, mənə təklif edək ki, əvəzinə faktiki olaraq yalnız bir bölüşdürülməsi 187 00:08:25,650 --> 00:08:30,100 char *, mənə bir az asan haqqında olsun Bu, məni bufer ayrılması bildirin 188 00:08:30,100 --> 00:08:32,940 16 chars bir ardıcıllıqla kimi. 189 00:08:32,940 --> 00:08:34,200 >> Beləliklə, mən yolları bir neçə bu edə bilərsiniz. 190 00:08:34,200 --> 00:08:35,610 Mən tamamilə malloc istifadə edə bilər. 191 00:08:35,610 --> 00:08:38,980 Amma həftə iki geri getmək zaman Mən bütün dəstə lazım 192 00:08:38,980 --> 00:08:39,620 simvol. 193 00:08:39,620 --> 00:08:40,860 Bu yalnız bir sıra var. 194 00:08:40,860 --> 00:08:44,870 Mənə əvəzinə bufer yenidən bildirin 16 simvol bir sıra olacaq. 195 00:08:44,870 --> 00:08:47,340 >> Və indi, zaman mən bufer verilib - 196 00:08:47,340 --> 00:08:49,940 və bu olmadı bir şey həftə iki danışmaq - 197 00:08:49,940 --> 00:08:53,730 Lakin bir sıra kimi müalicə edə bilərsiniz bu bir ünvan baxmayaraq. 198 00:08:53,730 --> 00:08:56,390 Biz gördük kimi texniki, onlar etdiyiniz bir az fərqli. 199 00:08:56,390 --> 00:09:01,290 Siz onu keçmək Lakin scanf ağla deyil bir serialın adı, çünki nə 200 00:09:01,290 --> 00:09:05,030 Bizim mahiyyətcə üçün cingilti edəcəyik kimi ki, serialın adı müalicə 201 00:09:05,030 --> 00:09:08,280 16 bayt yığın ünvanı. 202 00:09:08,280 --> 00:09:09,550 >> Belə ki, bu yaxşıdır. 203 00:09:09,550 --> 00:09:12,110 Bu indi ümid edə bilər o deməkdir ki, aşağıdakıları edin. 204 00:09:12,110 --> 00:09:16,800 Mənə bir an Uzaklaştırmak edək və OK tərtib scanf-2, sarf edirik. 205 00:09:16,800 --> 00:09:19,390 İndi məni çizgi scanf-2 əldə edək. 206 00:09:19,390 --> 00:09:22,430 String edin. "Hello". Və Bu iş görünürdü. 207 00:09:22,430 --> 00:09:26,020 >> Lakin kimsə bir ssenari təklif edə bilər olan hələ iş ola bilər? 208 00:09:26,020 --> 00:09:28,550 Bəli? 209 00:09:28,550 --> 00:09:30,640 16 artıq bir şey. 210 00:09:30,640 --> 00:09:32,020 Və faktiki olaraq, biz ola bilər bir az daha dəqiq. 211 00:09:32,020 --> 00:09:36,540 Daha sonra 15 simvol bir şey, həqiqətən unutmayın lazımdır, çünki 212 00:09:36,540 --> 00:09:39,920 ki, backslash sıfır lazımdır ki, dönmədən simli sonunda, 213 00:09:39,920 --> 00:09:42,950 bir kənara scanf adətən olacaq bizim üçün qayğı. 214 00:09:42,950 --> 00:09:46,210 >> Belə ki, mənim kimi bir şey edək - 215 00:09:46,210 --> 00:09:48,040 bəzən biz yalnız bilərsiniz belə onu tərk. 216 00:09:48,040 --> 00:09:50,630 OK, belə ki, biz indi induksiya etdik bizim seqmentasiya günah. 217 00:09:50,630 --> 00:09:51,000 Niyə? 218 00:09:51,000 --> 00:09:54,940 Mən çox 15 tipli Çünki simvol, və biz, həqiqətən, var 219 00:09:54,940 --> 00:09:58,280 toxunub yaddaş ki, mən, həqiqətən, olmamalıdır. 220 00:09:58,280 --> 00:10:00,180 >> Belə ki, nə həqiqətən burada həlli var? 221 00:10:00,180 --> 00:10:02,210 Yaxşı, biz uzun simli nə lazımdır, əgər? 222 00:10:02,210 --> 00:10:03,960 Yaxşı, biz bəlkə 32 bayt edir. 223 00:10:03,960 --> 00:10:05,160 Yaxşı, nə kifayət qədər uzun deyil, əgər? 224 00:10:05,160 --> 00:10:06,040 Haqqında 64 bayt? 225 00:10:06,040 --> 00:10:07,080 Nə kifayət qədər uzun deyil, əgər? 226 00:10:07,080 --> 00:10:09,640 Necə 128 və ya 200 bayt? 227 00:10:09,640 --> 00:10:12,660 Nə həqiqətən burada həll edir ümumi halda, biz bilmirsinizsə 228 00:10:12,660 --> 00:10:14,460 istifadəçi yazın neler inkişaf? 229 00:10:14,460 --> 00:10:20,000 230 00:10:20,000 --> 00:10:23,050 >> Bu ass böyük bir ağrı yalnız növü var vicdanlı olmaq, bu niyə 231 00:10:23,050 --> 00:10:29,050 CS50 kitabxana bir neçə onlarla xətləri var kollektiv həyata kodu 232 00:10:29,050 --> 00:10:32,390 Biz olmayan bir şəkildə string GetString əvvəlcədən bilmək üçün nə 233 00:10:32,390 --> 00:10:33,430 Yuzerin tipi gedir. 234 00:10:33,430 --> 00:10:37,370 Xüsusilə, əgər geri baxmaq cs50.c iki həftə əvvəl, görəcəksiniz 235 00:10:37,370 --> 00:10:40,480 ki, GetString həqiqətən edir bu şəkildə scanf istifadə etməyin. 236 00:10:40,480 --> 00:10:43,720 Əksinə, bir xarakter oxuyur bir anda. 237 00:10:43,720 --> 00:10:46,010 >> Çünki haqqında bir gözəl şey bir xarakter oxuma biz bilər 238 00:10:46,010 --> 00:10:48,490 həmişə özümüzü təmin ən azı bir char var. 239 00:10:48,490 --> 00:10:51,740 Mən almaq sonra char bəyan bilər yalnız bu həqiqətən körpə addımlar 240 00:10:51,740 --> 00:10:54,380 a bir xarakter oxumaq klaviatura zaman. 241 00:10:54,380 --> 00:10:58,240 Və sonra, sizə nə GetString görürsünüz edir, bunun həyata çalışır hər dəfə 242 00:10:58,240 --> 00:11:02,280 , yaddaş 16 bayt demək, istifadə malloc və ya cousin onun üçün 243 00:11:02,280 --> 00:11:06,810 köhnə çıxarmaq, daha çox yaddaş ayrılması sonra yeni və sürünərək daxil yaddaş 244 00:11:06,810 --> 00:11:09,900 yanaşı, bir-bir xarakter əldə və o həyata çalışır zaman 245 00:11:09,900 --> 00:11:13,370 yaddaş yığın, Polip üz salır yaddaş böyük bir yığın, köhnə nüsxə 246 00:11:13,370 --> 00:11:14,750 yeni və təkrar daxil. 247 00:11:14,750 --> 00:11:18,480 Və bu həqiqətən həqiqətən bir ağrı var kimi sadə bir şey həyata 248 00:11:18,480 --> 00:11:19,710 bir istifadəçi daxil əldə. 249 00:11:19,710 --> 00:11:21,090 >> Beləliklə, siz scanf istifadə edə bilərsiniz. 250 00:11:21,090 --> 00:11:22,430 Siz digər oxşar funksiyaları istifadə edə bilərsiniz. 251 00:11:22,430 --> 00:11:25,420 Və dərsliklərin çox və online nümunələri, lakin onlar bütün istəyirik 252 00:11:25,420 --> 00:11:27,210 Bu kimi problemləri həssas. 253 00:11:27,210 --> 00:11:29,550 Və nəticədə, bir segfault əldə cür annoying edir. 254 00:11:29,550 --> 00:11:30,680 Bu istifadəçi üçün yaxşı deyil. 255 00:11:30,680 --> 00:11:33,560 >> Amma ən pis halda, nə bu əsaslı sizin qoymaq 256 00:11:33,560 --> 00:11:37,160 riski kodu? 257 00:11:37,160 --> 00:11:39,250 Hücum bir növ, potensial. 258 00:11:39,250 --> 00:11:41,680 Biz belə bir hücum haqqında danışdı - yığını coşğun. 259 00:11:41,680 --> 00:11:44,660 Amma, ümumiyyətlə, sizə icazə olduğunuz halda daşqın bufer kimi biz etdik 260 00:11:44,660 --> 00:11:48,070 yalnız yazı ilə həftə öncə neçə, daha yığını haqqında "salam" dən, siz 261 00:11:48,070 --> 00:11:52,330 həqiqətən, potensial, üzərinə götürə bilər kompüter, və ya ən azı məlumatları almaq 262 00:11:52,330 --> 00:11:53,510 Sizə aid deyil. 263 00:11:53,510 --> 00:11:55,970 >> Biz niyə belə qısa, bu bu təlim təkərlər. 264 00:11:55,970 --> 00:11:59,090 Amma indi biz onları çıxarmaq başlayır proqramlar artıq ehtiyac kimi, 265 00:11:59,090 --> 00:12:00,610 istifadəçi mütləq girdi. 266 00:12:00,610 --> 00:12:03,960 Ancaq problem halda, altı müəyyən sizin giriş böyük gələcək 267 00:12:03,960 --> 00:12:07,520 150 lüğət fayl bəzi tək min söz. 268 00:12:07,520 --> 00:12:10,330 >> Beləliklə, siz narahat yoxdur istifadəçi ixtiyari girdi. 269 00:12:10,330 --> 00:12:13,720 Biz bəzi fərziyyələr verəcək fayl haqqında. 270 00:12:13,720 --> 00:12:20,340 Göstəricilərinə və ya scanf haqqında hər hansı bir sual və ya ümumi istifadəçi girişi? 271 00:12:20,340 --> 00:12:24,450 >> Bütün sağ, belə bir, daha sonra bir göz atınız iki həftə əvvəl mövzu arxada. 272 00:12:24,450 --> 00:12:28,590 Və bir struct bu anlayış idi. 273 00:12:28,590 --> 00:12:34,180 Deyil - bir bu anlayışı nə olan struct? 274 00:12:34,180 --> 00:12:35,430 Struct bizim üçün nə idi? 275 00:12:35,430 --> 00:12:39,280 276 00:12:39,280 --> 00:12:39,860 >> Define - 277 00:12:39,860 --> 00:12:41,710 Üzr istəyirik? 278 00:12:41,710 --> 00:12:42,820 Dəyişən növü tanımlayın. 279 00:12:42,820 --> 00:12:44,410 Belə növ. 280 00:12:44,410 --> 00:12:46,180 Biz, həqiqətən, iki mövzu birləşən edirik. 281 00:12:46,180 --> 00:12:49,510 Typedef ilə Belə ki, biz geri bir kimi, öz növü elan 282 00:12:49,510 --> 00:12:51,500 char * üçün string kimi sinonimi. 283 00:12:51,500 --> 00:12:56,200 Lakin typedef və struct istifadə edərək, biz həqiqətən öz data strukturları yaratmaq. 284 00:12:56,200 --> 00:12:59,600 >> Məsələn, mən geri əgər gedit daxil burada yalnız bir an, mən davam 285 00:12:59,600 --> 00:13:08,230 və bir şey kimi etmək, məni xilas edək bu, structs.c, deyək 286 00:13:08,230 --> 00:13:10,840 müvəqqəti olaraq, mən yalnız gedirəm davam və daxil 287 00:13:10,840 --> 00:13:14,360 standardio.h, int əsas edilsin. 288 00:13:14,360 --> 00:13:18,960 Və sonra burada, mən istəyirəm ki, güman saxlayan bir proqram yazmaq üçün 289 00:13:18,960 --> 00:13:21,840 çox birdən çox tələbələr evləri, məsələn. 290 00:13:21,840 --> 00:13:24,430 Belə ki, registrarial kimi bir növ məlumat bazası. 291 00:13:24,430 --> 00:13:29,550 >> Mən adı bir tələbə lazımdır, mən , char * adı kimi bir şey ola bilər 292 00:13:29,550 --> 00:13:31,570 və mən kimi bir şey olacaq - 293 00:13:31,570 --> 00:13:34,410 həqiqətən, ən CS50 kitabxana istifadə edək Yalnız bir an üçün bu etmək 294 00:13:34,410 --> 00:13:38,380 az sadə, biz borc ala kodu xətləri o deməkdir. 295 00:13:38,380 --> 00:13:39,340 Və edək yalnız sadə saxlamaq oldu. 296 00:13:39,340 --> 00:13:42,610 Biz bunu simli davam edəcəyik və indi GetString. 297 00:13:42,610 --> 00:13:47,420 >> Mən adını saxlanılır etdik ki, indi iddia bəzi tələbə və ev 298 00:13:47,420 --> 00:13:50,240 sadəcə dəyişənlər istifadə edərək bəzi tələbəsı, Biz və həftə bir. kimi 299 00:13:50,240 --> 00:13:52,370 Amma indi dəstək istəyirəm Güman çox tələbələr. 300 00:13:52,370 --> 00:13:58,460 Bütün sağ, elə mənim instinktlərdən etmək üçün string name2, GetString, simli olur 301 00:13:58,460 --> 00:14:01,370 house2 GetString olur. 302 00:14:01,370 --> 00:14:05,850 Və sonra üçüncü tələbəsı, name3 GetString nə edək. 303 00:14:05,850 --> 00:14:09,170 >> Bütün sağ, bu inşallah parlaq edir axmaq növü kimi, 304 00:14:09,170 --> 00:14:11,580 Bu proses həqiqətən, heç vaxt, çünki son gedir və yalnız olacaq 305 00:14:11,580 --> 00:14:13,130 Mənim kodu pis baxmaq və pis və pis. 306 00:14:13,130 --> 00:14:14,810 Amma biz həftə iki də bu həll. 307 00:14:14,810 --> 00:14:19,450 Bizim nisbətən təmiz həll nə idi biz çox dəyişənlər var idi 308 00:14:19,450 --> 00:14:23,580 eyni verileri bütün bağlı bu cür, lakin Biz bu dəhşətli mess istəmədi 309 00:14:23,580 --> 00:14:26,870 eyni adlı dəyişənlərin? 310 00:14:26,870 --> 00:14:30,060 Yerine nə idi? 311 00:14:30,060 --> 00:14:31,260 >> Beləliklə, mən bir neçə yerdə eşitdim edirəm. 312 00:14:31,260 --> 00:14:32,590 Biz bir sıra var idi. 313 00:14:32,590 --> 00:14:37,110 Siz çox hallarda istəyirsinizsə bir şey, nə üçün biz bütün bu təmiz yoxdur 314 00:14:37,110 --> 00:14:39,540 və yalnız mənə vermək, demək array adları adlanır? 315 00:14:39,540 --> 00:14:41,640 >> Və indi üçün, sabit kodu 3 bildirin. 316 00:14:41,640 --> 00:14:44,450 Və sonra mənə bir sıra vermək evləri adlanan və mənə bildirin 317 00:14:44,450 --> 00:14:45,800 indi ağır kodu 3. 318 00:14:45,800 --> 00:14:49,220 Və mən kütləvi qədər təmizlənmiş sonra Mən yalnız yaratdığı ortalıq. 319 00:14:49,220 --> 00:14:52,400 İndi mən hələ də ağır 3 kodlu, lakin sonra da 3 dinamik gəlir bilər 320 00:14:52,400 --> 00:14:54,350 istifadəçi və ya argv, və ya kimi. 321 00:14:54,350 --> 00:14:55,720 Yəni bu onsuz da təmiz. 322 00:14:55,720 --> 00:15:00,100 >> Bəs bu barədə annoying ki, deyil indi olsa da adı elə deyil 323 00:15:00,100 --> 00:15:02,280 əsaslı bağlıdır bir tələbə evi - 324 00:15:02,280 --> 00:15:04,720 ki, Mən, həqiqətən, bir şagirdin təmsil etmək istəyirəm - 325 00:15:04,720 --> 00:15:08,080 İndi paralel iki seriallarda var onlar olduğunuzu mənada 326 00:15:08,080 --> 00:15:13,930 eyni ölçüdə və adları bracket 0 ev bracket 0 ehtimalla xəritələr, 327 00:15:13,930 --> 00:15:16,600 və adları bracket 1 xəritələr ev bracket 1. 328 00:15:16,600 --> 00:15:19,280 Başqa sözlə, həmin tələbə yaşayır ki, ev və digər tələbə 329 00:15:19,280 --> 00:15:20,530 digər ev yaşayır. 330 00:15:20,530 --> 00:15:23,720 Ancaq şübhəsiz ki, bu ola bilər daha temiz edilir. 331 00:15:23,720 --> 00:15:24,990 >> Bəli, ola bilər, əslində. 332 00:15:24,990 --> 00:15:28,730 Və mənə davam və açıq bildirin structs.h up, və will 333 00:15:28,730 --> 00:15:31,130 Bu fikir görürük. 334 00:15:31,130 --> 00:15:34,905 Kimi, mən typedef istifadə etdiyiniz Qeyd edək ki, əvvəl elan etmək bir an alluded bizim 335 00:15:34,905 --> 00:15:35,570 öz veri növü. 336 00:15:35,570 --> 00:15:39,660 Amma mən də bu başqa söz kullanıyorum struct adlanan mənə yeni bir verir 337 00:15:39,660 --> 00:15:40,790 data structure. 338 00:15:40,790 --> 00:15:43,980 >> Və mən iddia Bu data strukturu gedir daxilində iki şeyi var 339 00:15:43,980 --> 00:15:47,060 it - adını bir simli və ev adlı simli. 340 00:15:47,060 --> 00:15:49,820 Və gedirəm adını vermək Bu data strukturu gedir 341 00:15:49,820 --> 00:15:51,005 tələbə çağırılacaq. 342 00:15:51,005 --> 00:15:54,030 Mən bunu istəyirəm bir şey zəng edə bilər lakin bu semantically etmək 343 00:15:54,030 --> 00:15:55,810 fikrimi mənə mənada. 344 00:15:55,810 --> 00:15:59,160 >> Belə ki, indi, mən daha yaxşı versiyasını açmaq əgər Proqramın I yazmağa başladı 345 00:15:59,160 --> 00:16:00,390 var, mənə üst diyirləyin bildirin. 346 00:16:00,390 --> 00:16:03,190 Və kodu bir neçə xətləri var Burada, lakin mənə diqqət edək 347 00:16:03,190 --> 00:16:04,160 bir an. 348 00:16:04,160 --> 00:16:07,790 Mən daimi adlandırılan tələbələri elan etdik və ağır indi 3 kodlu. 349 00:16:07,790 --> 00:16:11,110 Amma indi hiss necə təmiz mənim kodunu başlayır. 350 00:16:11,110 --> 00:16:15,030 >> Line 22, mən bəyan tələbə array. 351 00:16:15,030 --> 00:16:18,760 Və tələbə yəqin fark İndi bir veri növü. 352 00:16:18,760 --> 00:16:23,360 Bu faylı üst Qeyd Çünki Hesab edirəm ki, header file daxil etdik 353 00:16:23,360 --> 00:16:24,820 Mən yalnız bir an əvvəl qədər çəkdi. 354 00:16:24,820 --> 00:16:28,820 Və header file sadəcə idi bir tələbənin bu anlayış. 355 00:16:28,820 --> 00:16:32,470 >> Belə ki, indi, mən öz xüsusi data yaratdığınız növü C il müəllifləri 356 00:16:32,470 --> 00:16:33,890 əvvəl əvvəlcədən hesab etməyib. 357 00:16:33,890 --> 00:16:34,570 Amma heç bir problem. 358 00:16:34,570 --> 00:16:35,870 Mən bunu özüm edə bilərsiniz. 359 00:16:35,870 --> 00:16:39,050 Beləliklə, bu, tələbələr adlı bir sıra edir üzvləri hər 360 00:16:39,050 --> 00:16:41,100 bir şagird strukturu. 361 00:16:41,100 --> 00:16:44,270 Və mən o üç istəyirəm serialın edir. 362 00:16:44,270 --> 00:16:46,030 >> İndi, qalan nə Bu proqram nə? 363 00:16:46,030 --> 00:16:47,550 Mən bir az ixtiyari bir şey lazım idi. 364 00:16:47,550 --> 00:16:51,450 Belə ki, online 24 itibaren, I 0 3 təkrarlamaq. 365 00:16:51,450 --> 00:16:54,000 Mən sonra üçün istifadəçi xahiş şagirdin adı. 366 00:16:54,000 --> 00:16:56,110 Və sonra əvvəlki kimi GetString istifadə edin. 367 00:16:56,110 --> 00:16:59,410 Sonra, tələbə evi üçün xahiş və mən əvvəlki kimi GetString istifadə edin. 368 00:16:59,410 --> 00:17:01,780 >> Lakin xəbərdarlıq - az yeni syntax parçası - 369 00:17:01,780 --> 00:17:07,010 Mən i-ci tələbə hələ index bilərsiniz amma konkret məlumatlara necə əldə edirsiniz 370 00:17:07,010 --> 00:17:08,354 ki, struct sahəsində daxili? 371 00:17:08,354 --> 00:17:11,770 Yaxşı, yəqin nə var yeni sintaksis parçası? 372 00:17:11,770 --> 00:17:13,339 Bu, yalnız dot operator var. 373 00:17:13,339 --> 00:17:14,510 >> Biz, həqiqətən, əvvəl görməmişik etdik. 374 00:17:14,510 --> 00:17:17,819 Əgər varsa, Siz pset beş onu gördüm bitmap faylları ilə artıq dived. 375 00:17:17,819 --> 00:17:22,372 Amma dot yalnız bu daxilində deməkdir struct və ya bir çox sahələrdə, nöqtə vermək 376 00:17:22,372 --> 00:17:24,510 adı, ya mənə dot ev verir. 377 00:17:24,510 --> 00:17:28,690 Ki, struct daxilində getmək deməkdir ki, və xüsusən sahələri almaq. 378 00:17:28,690 --> 00:17:30,200 >> Bu proqramın qalan nə? 379 00:17:30,200 --> 00:17:31,190 Bundan sexy deyil. 380 00:17:31,190 --> 00:17:34,640 Mən yenə 0 3 təkrarlamaq Qeyd edək ki, və mən sadəcə İngilis dili yaratmaq 381 00:17:34,640 --> 00:17:40,500 Bunu kimi söz belə edir dən dot adı keçən belə bir evi, 382 00:17:40,500 --> 00:17:43,320 I-ci tələbə və onların evi kimi də. 383 00:17:43,320 --> 00:17:47,560 >> Və sonra nəhayət, indi almaq başlarsınız biz istəyirik indi bu barədə anal, 384 00:17:47,560 --> 00:17:49,580 nə malloc və tanış digər funksiyaları olmuşdur 385 00:17:49,580 --> 00:17:50,570 bütün bu vaxt edir. 386 00:17:50,570 --> 00:17:54,220 Niyə iki ad azad var və ev olsa mən 387 00:17:54,220 --> 00:17:56,960 malloc zəng etmədi? 388 00:17:56,960 --> 00:17:58,020 >> GetString etdi. 389 00:17:58,020 --> 00:18:00,930 Və ki, çirkli az gizli bir neçə həftə, lakin GetString var 390 00:18:00,930 --> 00:18:03,530 bütün üzərində yaddaş sızması edilmişdir İndiyədək bütün semestr yer. 391 00:18:03,530 --> 00:18:05,990 Və valgrand nəhayət olacaq bizə bu göstərir. 392 00:18:05,990 --> 00:18:10,730 >> Mən bilirəm, çünki Lakin bu, böyük deyil Mən sadəcə adını azad edə bilər ki, 393 00:18:10,730 --> 00:18:15,750 və ev, baxmayaraq texniki üçün super, super təhlükəsiz ola, mən olmalıdır 394 00:18:15,750 --> 00:18:17,890 bəzi səhv bunu burada yoxlanılması. 395 00:18:17,890 --> 00:18:19,040 Sizin instinktlərdən Nə izah? 396 00:18:19,040 --> 00:18:22,480 Mən nə yoxlanılması lazım Mən nə azad əvvəl 397 00:18:22,480 --> 00:18:25,470 simli, aka olan char *? 398 00:18:25,470 --> 00:18:33,460 >> Mən, həqiqətən, yoxlanılması lazım tələbələri əgər bracket i dot adı deyil 399 00:18:33,460 --> 00:18:34,840 bərabər null. 400 00:18:34,840 --> 00:18:40,400 Sonra irəli və pulsuz getmək OK olacaq ki, göstərici və eyni və ya digər 401 00:18:40,400 --> 00:18:41,160 biri kimi də. 402 00:18:41,160 --> 00:18:46,860 Tələbələr bracket i dot ev deyilsə null bərabər, indi qoruyacaq 403 00:18:46,860 --> 00:18:52,520 küncündə halda qarşı olan GetString null bir şey qaytarır. 404 00:18:52,520 --> 00:18:57,310 Və biz printf olacaq, bir an əvvəl gördüm yalnız söyləyərək burada bizi qorumaq 405 00:18:57,310 --> 00:18:58,990 null ki, bu qəribə baxmaq üçün gedir. 406 00:18:58,990 --> 00:19:02,340 Lakin ən azı, segfault deyil gördüyümüz kimi. 407 00:19:02,340 --> 00:19:05,990 >> Yaxşı, mənə burada başqa bir şey edək. structs-0 axmaq proqram növü 408 00:19:05,990 --> 00:19:09,700 Mən bütün bu məlumatları daxil, çünki proqram başa bir dəfə məğlub oldu. 409 00:19:09,700 --> 00:19:10,940 Amma mənə davam və bunu bildirin. 410 00:19:10,940 --> 00:19:12,830 Mənə terminal edək bir az daha böyük pəncərə. 411 00:19:12,830 --> 00:19:17,000 , Mənə structs-1 edək ki, Bu yeni versiyası. 412 00:19:17,000 --> 00:19:18,520 >> Mən bir az böyütmək lazımdır. 413 00:19:18,520 --> 00:19:21,620 Və indi mənə dot run edək structs-1 doğramaq. 414 00:19:21,620 --> 00:19:22,590 Tələbə adı - 415 00:19:22,590 --> 00:19:31,500 David Mather, Rob Kirkland nə edək Lauren Leverett nə edək. 416 00:19:31,500 --> 00:19:33,650 Nə maraqlı indi xəbərdarlıq edir - 417 00:19:33,650 --> 00:19:35,540 və mən yalnız bu çünki bilirik Mən proqram yazıb - 418 00:19:35,540 --> 00:19:38,930 bir fayl Mənim cari artıq var kataloq students.csv çağırıb. 419 00:19:38,930 --> 00:19:40,420 Əgər bəziləri görmüşəm bilər real dünyada bu. 420 00:19:40,420 --> 00:19:42,980 >> Bir CSV faylı nedir? 421 00:19:42,980 --> 00:19:44,170 Dəyərlər: virgülle ayrılmış. 422 00:19:44,170 --> 00:19:46,670 Bu yoxsul insan kimi növ var Excel fayl versiyası. 423 00:19:46,670 --> 00:19:50,580 Bu satır ve sütun bir masa var siz, Excel kimi bir proqram aça bilər 424 00:19:50,580 --> 00:19:51,800 bir Mac və ya Nömrələr. 425 00:19:51,800 --> 00:19:55,180 >> Və mən gedit burada bu faylı açmaq əgər, bildiriş - və nömrələr yoxdur. 426 00:19:55,180 --> 00:19:57,360 Yalnız danışanlardan gedit oldu Mənə xətt nömrələri. 427 00:19:57,360 --> 00:19:59,740 Bu ilk on line Xəbər fayl Davud və Mather edir. 428 00:19:59,740 --> 00:20:01,450 Növbəti line Rob vergül Kirkland edir. 429 00:20:01,450 --> 00:20:04,170 Və üçüncü xətt Lauren edir vergül Leverett. 430 00:20:04,170 --> 00:20:05,480 >> Belə ki, nə yaradıb? 431 00:20:05,480 --> 00:20:09,580 İndi bir C proqram yazdıq ki, səmərəli tablolar yaratmaq 432 00:20:09,580 --> 00:20:11,840 bir açıla Excel kimi proqram. 433 00:20:11,840 --> 00:20:15,520 Bütün ki, çekici məlumat dəsti, lakin Siz daha böyük chunks varsa 434 00:20:15,520 --> 00:20:18,440 həqiqətən istəyirəm ki, məlumat manipulyasiya və qrafik və etmək 435 00:20:18,440 --> 00:20:21,260 kimi, bu bəlkə biridir ki, məlumat yaratmaq üçün bir yoldur. 436 00:20:21,260 --> 00:20:25,370 Bundan başqa, CSVs ümumi həqiqətən super var yalnız sadə data saxlanılması üçün - 437 00:20:25,370 --> 00:20:28,940 Yahoo Maliyyə Məsələn, siz almaq əgər onların qondarma vasitəsilə stock quotes 438 00:20:28,940 --> 00:20:33,180 API, siz imkan verir ki, pulsuz xidmət cari up-to-the-tarixi fond almaq 439 00:20:33,180 --> 00:20:35,650 şirkətlər üçün quotes, onlar geri verileri vermək 440 00:20:35,650 --> 00:20:37,800 super sadə CSV format. 441 00:20:37,800 --> 00:20:39,380 >> Beləliklə, biz necə etdiniz? 442 00:20:39,380 --> 00:20:42,530 Bəli, bu proqramın ən qeyd demək olar ki, eyni. 443 00:20:42,530 --> 00:20:46,870 Lakin burada qeyd deyil, Çap line 35 tələbələri out, 444 00:20:46,870 --> 00:20:51,040 irəli, mən qənaət alıram iddia edir ki, disk tələbələr, belə bir fayl qənaət. 445 00:20:51,040 --> 00:20:53,630 >> Mən bir file * elan alıram hiss - 446 00:20:53,630 --> 00:20:57,260 İndi bu C. bir anomaliya növü Hər hansı səbəbdən, fayl, bütün caps edir 447 00:20:57,260 --> 00:21:00,690 ən çox digər məlumatlar növləri kimi deyil C. Lakin bu, daxili 448 00:21:00,690 --> 00:21:02,320 veri növü, fayl *. 449 00:21:02,320 --> 00:21:05,900 Və mən, bir fayl bir göstərici elan alıram ki, hesab edə bilər necə. 450 00:21:05,900 --> 00:21:08,070 >> fopen açıq fayl deməkdir. 451 00:21:08,070 --> 00:21:09,470 Nə faylı açmaq istəyirsiniz? 452 00:21:09,470 --> 00:21:12,620 Mən bir faylı açmaq istəyirəm edəcək ki, özbaşına students.csv çağırırıq. 453 00:21:12,620 --> 00:21:14,480 Mən istəyirəm ki, hər şey zəng edə bilər. 454 00:21:14,480 --> 00:21:15,200 >> Və sonra bir tahmin edir. 455 00:21:15,200 --> 00:21:18,960 İkinci arqument nə fopen yəqin ki, demək? 456 00:21:18,960 --> 00:21:21,480 Sağ, yazmaq üçün w, ola bilər ətraflı r ola bilər. 457 00:21:21,480 --> 00:21:24,120 Əgər əlavə etmək üçün var, sizə satır və əlavə etmək istədiyiniz 458 00:21:24,120 --> 00:21:25,200 bütün şey üzerine. 459 00:21:25,200 --> 00:21:28,005 >> Amma yalnız bu faylı yaratmaq istəyirik bir dəfə, mən quote dırnağı bağlamaq w istifadə edəcəyik. 460 00:21:28,005 --> 00:21:31,880 Və mən oxumaq edərək ki, yalnız bilirik sənədlərin və ya insan page. 461 00:21:31,880 --> 00:21:35,100 Fayl null deyilsə - başqa sözlə, heç bir şey yoxdur yanlış gedib əgər - 462 00:21:35,100 --> 00:21:37,820 mənə üzərində təkrarlamaq bildirin 0 3 tələbələr. 463 00:21:37,820 --> 00:21:40,410 >> İndi bir şey var hiss heç belə az fərqli 464 00:21:40,410 --> 00:21:42,110 Burada line 41. 465 00:21:42,110 --> 00:21:42,960 Bu printf deyil. 466 00:21:42,960 --> 00:21:46,530 Bu printf fayl fprintf var. 467 00:21:46,530 --> 00:21:47,790 Belə ki, fayl yazmaq olacaq. 468 00:21:47,790 --> 00:21:48,860 Hansı fayl? 469 00:21:48,860 --> 00:21:53,630 Olan göstərici belirttiğiniz bir ilk arqument kimi. 470 00:21:53,630 --> 00:21:55,940 >> Sonra format string daxil. 471 00:21:55,940 --> 00:21:59,660 Sonra biz istəyirik nə string müəyyən ilk faiz s üçün plug, və 472 00:21:59,660 --> 00:22:04,320 sonra başqa dəyişkən və ya İkinci faiz s. 473 00:22:04,320 --> 00:22:06,760 Sonra fclose ilə fayl bağlayın. 474 00:22:06,760 --> 00:22:09,380 Mən də, əvvəlki kimi, yaddaş azad daha Mən geri və əlavə etməlidir 475 00:22:09,380 --> 00:22:10,540 null üçün bəzi yoxlayır. 476 00:22:10,540 --> 00:22:12,090 >> Və bu. 477 00:22:12,090 --> 00:22:16,960 fopen, fprintf, fclose mənə verir mətn faylları yaratmaq bacarığı. 478 00:22:16,960 --> 00:22:19,640 İndi, problem set beş görürsünüz images əhatə edən, istifadə olacaq 479 00:22:19,640 --> 00:22:20,990 ikili faylları əvəzinə. 480 00:22:20,990 --> 00:22:24,200 Lakin əsaslı fikir, eyni , hətta will funksiyaları 481 00:22:24,200 --> 00:22:28,710 bir az fərqli oldu. 482 00:22:28,710 --> 00:22:32,580 >> Qasırğa tur Belə ki, ancaq siz əldə edəcək fayl ilə bütün çox tanış I/O-- 483 00:22:32,580 --> 00:22:34,960 giriş və çıxış - pset beş ilə. 484 00:22:34,960 --> 00:22:38,607 Və haqqında suallarınız Burada ilkin əsasları? 485 00:22:38,607 --> 00:22:39,857 Bəli? 486 00:22:39,857 --> 00:22:41,880 487 00:22:41,880 --> 00:22:43,710 >> Nə bir null dəyər pulsuz üçün cəhd edin? 488 00:22:43,710 --> 00:22:48,880 Pulsuz kazanılmış halda mən hesab edirəm ki az daha çox istifadəçi dostu, siz 489 00:22:48,880 --> 00:22:49,890 potensial segfault. 490 00:22:49,890 --> 00:22:54,160 Mən nə çünki null keçən pis pulsuz iman, siz yoxlamaq üçün narahat 491 00:22:54,160 --> 00:22:57,330 O potensial tullantıların olardı, çünki bunun üçün özü nə üçün vaxt 492 00:22:57,330 --> 00:22:59,022 dünyada hər kəs. 493 00:22:59,022 --> 00:23:00,590 Yaxşı sual olsa. 494 00:23:00,590 --> 00:23:04,300 >> Bütün sağ, bu cür olur belə bizə bir maraqlı mövzu. 495 00:23:04,300 --> 00:23:07,010 Problem set mövzusu beş Suclari edir. 496 00:23:07,010 --> 00:23:08,420 Ən azı bir hissəsi var problem dəsti. 497 00:23:08,420 --> 00:23:12,030 Suclari ümumilikdə aiddir ki, bilər və ya məlumat bərpa 498 00:23:12,030 --> 00:23:14,110 silinmiş ola bilər qəsdən. 499 00:23:14,110 --> 00:23:18,680 Və mən sizə tez vermək istədiyiniz düşündüm nə dadı, həqiqətən, bütün gedir 500 00:23:18,680 --> 00:23:21,230 altındakı bu dəfə kompüter başlıq. 501 00:23:21,230 --> 00:23:23,960 >> Məsələn, daxili varsa sizin laptop və ya masa üstü kompüter 502 00:23:23,960 --> 00:23:28,040 sabit, ya mexaniki var həqiqətən spins ki, cihaz - 503 00:23:28,040 --> 00:23:31,650 platters adlı dairəvi şeylər var olduqca ki, kimi baxmaq nə 504 00:23:31,650 --> 00:23:34,540 yalnız baxmayaraq, burada ekranda idi bunu getdikcə köhnə məktəb var. 505 00:23:34,540 --> 00:23:37,370 Bu üç və yarım-düymlük edir sabit. 506 00:23:37,370 --> 00:23:40,070 Və üç yarım düym aiddir siz onu yüklediğinizde şey ilə 507 00:23:40,070 --> 00:23:40,890 bir kompüter. 508 00:23:40,890 --> 00:23:44,890 >> İndi noutbuk sizə çox uşaqlar , bərk-dövlət sürücüler, və ya SSDs var 509 00:23:44,890 --> 00:23:46,260 olan hissələri hərəkət yoxdur. 510 00:23:46,260 --> 00:23:49,170 Onlar RAM kimi daha çox və daha az gibisin Bu mexaniki cihazlar. 511 00:23:49,170 --> 00:23:51,450 Amma ideyaları, hələ də eyni əlbəttə onlar aid 512 00:23:51,450 --> 00:23:52,790 problem beş qurmaq üçün. 513 00:23:52,790 --> 00:23:57,400 >> Və bir sabit disk İndi hesab bir dairə olan təmsil 514 00:23:57,400 --> 00:23:58,930 Mən burada bu kimi çəkmək lazımdır. 515 00:23:58,930 --> 00:24:02,290 Siz bilgisayarınızda bir fayl yaratmaq zaman bu bir SSD, və ya olub 516 00:24:02,290 --> 00:24:06,610 Bu halda, bir yaşlı məktəb sabit disk, fayl birdən çox bit ibarətdir. 517 00:24:06,610 --> 00:24:10,510 Nin bu 0 və 1 ki, deyək, 0s və 1s bütün dəstə. 518 00:24:10,510 --> 00:24:11,660 Belə ki, bu mənim bütün sabit deyil. 519 00:24:11,660 --> 00:24:13,225 Bu yəqin olduqca böyük fayl. 520 00:24:13,225 --> 00:24:18,080 Və o da 0s və 1s up istifadə edir fiziki nömrəli hissəsi. 521 00:24:18,080 --> 00:24:19,750 >> Yaxşı ki, fiziki hissəsi nədir? 522 00:24:19,750 --> 00:24:25,310 Bəli, bu, bir sabit çıxır ki, bu tipli ən azı var 523 00:24:25,310 --> 00:24:27,340 bu kiçik kiçik maqnit hissəcikləri. 524 00:24:27,340 --> 00:24:32,630 Onlar mahiyyətcə şimal və onlara cənub dirəkləri, belə ki, əgər 525 00:24:32,630 --> 00:24:35,710 o maqnit hissəciklərinin biri çevirmək Bu yolla, siz ki, demək olar ki, 526 00:24:35,710 --> 00:24:36,720 1 etdirir. 527 00:24:36,720 --> 00:24:39,340 Və altüst cənub əgər şimal, siz ki, demək olar ki, 528 00:24:39,340 --> 00:24:40,390 A 0 təmsil. 529 00:24:40,390 --> 00:24:43,660 >> Belə ki, real fiziki dünyada var Siz bir şey təmsil edə bilər necə 530 00:24:43,660 --> 00:24:45,670 ikili 0 dövlət və 1. 531 00:24:45,670 --> 00:24:46,720 Belə ki, bütün bir fayl edir. 532 00:24:46,720 --> 00:24:49,300 Maqnit bütün dəstə var onların bu və ya bu şəkildə olan hissəciklər 533 00:24:49,300 --> 00:24:51,920 Bu şəkildə yaradılması nümunələri və 0s və 1s. 534 00:24:51,920 --> 00:24:56,760 >> Lakin bu, bir dosyayı zaman çıxır bəzi məlumatlar ayrıca qeyd olunur. 535 00:24:56,760 --> 00:25:00,000 Beləliklə, bu, bir az masa bir kataloq, belə danışmaq. 536 00:25:00,000 --> 00:25:05,810 Və mən bu sütun adını zəng və edəcəyik Mən bu sütun yeri zəng edəcəyik. 537 00:25:05,810 --> 00:25:08,850 >> Və mən güman, demək gidiyorum bu mənim CV edir. 538 00:25:08,850 --> 00:25:14,050 Mənim resume.doc saxlanılır yer, 123 deyək. 539 00:25:14,050 --> 00:25:15,390 Mən həmişə ki sayı üçün gedin. 540 00:25:15,390 --> 00:25:18,810 Lakin istəyirəm ki, demək kifayətdir RAM, bir sabit disk edə bilərsiniz 541 00:25:18,810 --> 00:25:22,350 bir gigabyte və ya 200 Gb var və ya terabayt, və siz 542 00:25:22,350 --> 00:25:23,750 sayı bayt bütün. 543 00:25:23,750 --> 00:25:26,480 Siz 8 bit bütün chunks sayı. 544 00:25:26,480 --> 00:25:29,030 >> Beləliklə, biz bu deyəcəyəm yeri 123. 545 00:25:29,030 --> 00:25:32,070 Belə ki, mənim əməliyyat bu kataloq daxilində Sistem xatırlayır ki, 546 00:25:32,070 --> 00:25:34,250 CV yeri 123 edir. 547 00:25:34,250 --> 00:25:36,850 Lakin bu zaman maraqlı olur Bir faylı silmək. 548 00:25:36,850 --> 00:25:37,820 >> Məsələn belə - 549 00:25:37,820 --> 00:25:40,790 və təşəkkürlə, dünyanın ən çox Bu üzərində tutuldu - nə olur 550 00:25:40,790 --> 00:25:45,040 Siz Mac OS Zibil qutusuna bir fayl sürükleyin və ya Windows Recycle Bin? 551 00:25:45,040 --> 00:25:48,290 552 00:25:48,290 --> 00:25:50,510 Bunun məqsədi nədir? 553 00:25:50,510 --> 00:25:53,860 Bu fayl qurtarmaq üçün açıq-aydın var lakin nə sürükleyerek akt yoxdur və 554 00:25:53,860 --> 00:25:57,550 Sizin Çöp və ya daxil düşmə üçün Recycle Bin bir kompüter haqqında nə? 555 00:25:57,550 --> 00:25:59,230 >> Həqiqətən tamamilə heç bir şey. 556 00:25:59,230 --> 00:26:00,320 Bu, sadəcə bir qovluq kimi. 557 00:26:00,320 --> 00:26:01,800 O, əmin olmaq üçün xüsusi qovluq var. 558 00:26:01,800 --> 00:26:04,460 Amma bu, həqiqətən faylı silmək edir? 559 00:26:04,460 --> 00:26:06,780 >> Xeyr, Bəli, çünki yəqin ki, bəzi kimi olmuşam, lənətləmək oh, siz yox idi 560 00:26:06,780 --> 00:26:07,420 Bunu etmək deməkdir. 561 00:26:07,420 --> 00:26:09,130 Beləliklə, siz ikiqat basın Çöp və ya Recycle Bin. 562 00:26:09,130 --> 00:26:11,630 Siz ətrafında dürtülmək etdik və bərpa etdik yalnız sürükleyerek fayl 563 00:26:11,630 --> 00:26:12,110 orada həyata. 564 00:26:12,110 --> 00:26:14,420 Belə aydın, bu, mütləq deyil bu təmizlənməsi. 565 00:26:14,420 --> 00:26:15,990 >> OK, siz asan daha istəyirik. 566 00:26:15,990 --> 00:26:18,860 Bilirsiniz ki, yalnız daxil sürükleyerek Çöp və ya Recycle Bin demək deyil 567 00:26:18,860 --> 00:26:19,930 Siz zibil boşaltma edirik. 568 00:26:19,930 --> 00:26:24,110 Belə ki, siz menyu gedin və demək Boş Çöp və ya Boş Recycle Bin. 569 00:26:24,110 --> 00:26:25,360 Sonra nə olar? 570 00:26:25,360 --> 00:26:29,070 571 00:26:29,070 --> 00:26:32,530 >> Bəli, belə ki, daha belə silinir. 572 00:26:32,530 --> 00:26:37,660 Ancaq olur ki, bütün bu. 573 00:26:37,660 --> 00:26:45,350 Kompüter yerləşir unudur resume.doc idi. 574 00:26:45,350 --> 00:26:47,400 >> Amma nə yəqin dəyişməyib şəkil? 575 00:26:47,400 --> 00:26:51,390 576 00:26:51,390 --> 00:26:55,570 Bit, mən iddia edir ki, 0s və 1s var bəzi fiziki aspekt saytda 577 00:26:55,570 --> 00:26:56,280 hardware. 578 00:26:56,280 --> 00:26:57,110 Onlar hələ də istəyirik. 579 00:26:57,110 --> 00:26:58,930 Bu, yalnız kompüter var var unudulmuş nə onlar. 580 00:26:58,930 --> 00:27:03,160 >> Belə ki, mahiyyətcə azad oldu fayl onlar yenidən istifadə edilə bilər bit ki. 581 00:27:03,160 --> 00:27:06,940 Lakin, daha çox fayl yaratmaq deyil qədər və daha çox faylları, və daha çox fayl olacaq 582 00:27:06,940 --> 00:27:12,150 probabilistically, bu 0s və 1s, bu maqnetik hissəciklər, təkrar almaq, 583 00:27:12,150 --> 00:27:16,220 üçün ayaq və ya sağ up, digər faylları 0s və 1s. 584 00:27:16,220 --> 00:27:17,980 >> Belə ki, vaxt bu pəncərə var. 585 00:27:17,980 --> 00:27:19,860 Və gözlənilən deyil ki, uzunluğu, həqiqətən. 586 00:27:19,860 --> 00:27:22,240 Bu çətin ölçüsündən asılıdır sürücü və neçə faylları və 587 00:27:22,240 --> 00:27:23,490 necə tez yeni olun. 588 00:27:23,490 --> 00:27:27,050 Lakin zaman bu pəncərəsində var fayl mükəmməl hələ olan 589 00:27:27,050 --> 00:27:27,770 bərpa. 590 00:27:27,770 --> 00:27:31,050 >> Əgər McAfee kimi proqramları istifadə əgər və ya Norton bərpa etməyə cəhd 591 00:27:31,050 --> 00:27:35,680 data, onlar yapýyorsun bütün çalışır bu dırnaqarası kataloq bərpa 592 00:27:35,680 --> 00:27:37,340 fayl olduğu anlamaq. 593 00:27:37,340 --> 00:27:40,605 Və bəzən Norton və deyəcəklər fayl 93% bərpa. 594 00:27:40,605 --> 00:27:42,020 Yaxşı ki, nə deməkdir? 595 00:27:42,020 --> 00:27:45,690 Yalnız o deməkdir ki, ki, digər fayl təsadüfən, demək, istifadə sona çatdı 596 00:27:45,690 --> 00:27:48,920 orijinal fayl həyata o bit. 597 00:27:48,920 --> 00:27:51,950 >> Yəni əslində nə cəlb edir data bərpa? 598 00:27:51,950 --> 00:27:55,720 Bəli, sizin kimi bir şey yoxdur, əgər Norton, kompüter əvvəlcədən quraşdırılmış 599 00:27:55,720 --> 00:27:59,510 Siz bəzən edə bilərsiniz yaxşı baxmaq edir bütün sabit axtarır at 600 00:27:59,510 --> 00:28:00,510 bit nümunələri. 601 00:28:00,510 --> 00:28:05,350 Və problem dəsti mövzulardan biri Beş axtarış edəcək ki, 602 00:28:05,350 --> 00:28:09,570 bir sabit disk bərabər, məhkəmə a kompakt flash kart image 603 00:28:09,570 --> 00:28:13,660 ki, 0s üçün axtarış digital kamera, yüksək ilə adətən və 1s, 604 00:28:13,660 --> 00:28:16,720 ehtimal, təmsil JPEG image başlayın. 605 00:28:16,720 --> 00:28:21,120 >> Və uşaqlar həmin images bərpa edə bilərsiniz Mən bu model görürsünüzsə, hərfinin 606 00:28:21,120 --> 00:28:24,380 məhkəmə image bit ilə qeyd edir ki, yüksək ehtimalı, 607 00:28:24,380 --> 00:28:25,650 JPEG başlanğıc. 608 00:28:25,650 --> 00:28:29,520 Və mən yenə eyni model görürsünüzsə, ki, yəqin ki başlaması qeyd 609 00:28:29,520 --> 00:28:32,440 başqa JPEG, və başqa JPEG, və digər JPEG. 610 00:28:32,440 --> 00:28:34,970 Bu adətən necə məlumat bərpa işləyəcək. 611 00:28:34,970 --> 00:28:37,870 Nə JPEGs haqqında gözəl belə olsa fayl format özü qədər deyil 612 00:28:37,870 --> 00:28:44,400 hər bir belə kompleksi, əvvəlinə fayl həqiqətən kifayət qədər identifikasiya edir 613 00:28:44,400 --> 00:28:47,370 , gördüyünüz kimi, və sadə Henüz varsa. 614 00:28:47,370 --> 00:28:50,270 >> Elə altından daha yaxından edək oldu tam olaraq nə kimi başlıq 615 00:28:50,270 --> 00:28:53,360 gedir və bu 0s və 1s nə bir bir az daha vermək var 616 00:28:53,360 --> 00:28:55,330 bu problem kontekstində. 617 00:28:55,330 --> 00:28:55,510 >> [Video playback] 618 00:28:55,510 --> 00:28:58,700 >> PC ən saklar-Haradan daimi məlumatlar. 619 00:28:58,700 --> 00:29:03,390 Bunu etmək üçün, veri RAM-dan səfər demək ki, proqram siqnalları ilə birlikdə 620 00:29:03,390 --> 00:29:06,110 necə veri sabit. 621 00:29:06,110 --> 00:29:09,410 Sabit sxemlərin tərcümə gərginlikli həmin siqnalları 622 00:29:09,410 --> 00:29:10,870 dəyişməsi. 623 00:29:10,870 --> 00:29:14,970 Bu, öz növbəsində, sabit nəzarəti hərəkət edən hissələri, bir neçə bəzi 624 00:29:14,970 --> 00:29:17,910 də sol hərəkət edən hissələri müasir kompüter. 625 00:29:17,910 --> 00:29:22,130 >> Siqnalların bəzi motor nəzarət olan metal örtüklü platters spins. 626 00:29:22,130 --> 00:29:25,470 Sizin data faktiki saxlanılır Bu platters haqqında. 627 00:29:25,470 --> 00:29:28,610 Digər siqnalları oxumaq / yazmaq hərəkət oxumaq və ya rəhbərləri 628 00:29:28,610 --> 00:29:30,710 ki, platters haqqında məlumat yazın. 629 00:29:30,710 --> 00:29:35,450 Bu maşın belə dəqiq bir insan ki, saç hətta arasında keçə bilmədi 630 00:29:35,450 --> 00:29:37,280 rəhbərləri və iplik platters. 631 00:29:37,280 --> 00:29:40,316 Lakin, bütün dəhşətli sürətlə işləyir. 632 00:29:40,316 --> 00:29:40,660 >> [END video playback] 633 00:29:40,660 --> 00:29:42,190 >> DAVID Malan: bir az Zoom dərin indi nə 634 00:29:42,190 --> 00:29:44,360 həqiqətən o platters haqqında. 635 00:29:44,360 --> 00:29:44,720 >> [Video playback] 636 00:29:44,720 --> 00:29:47,660 >> Görünüşünü-Gəlin biz yalnız at yavaş hərəkət gördüm. 637 00:29:47,660 --> 00:29:51,710 Elektrik qısa nəbzini olduqda flips varsa, yazmaq / oxumaq baş göndərilib 638 00:29:51,710 --> 00:29:54,650 üçün kiçik elektromaqnit haqqında ikinci bir qismini. 639 00:29:54,650 --> 00:29:58,970 Magnet bir sahə yaradır dəyişikliklər kiçik, kiçik və polarite 640 00:29:58,970 --> 00:30:02,850 metal hissəciklərin hissəsi olan coat hər nömrəli səth. 641 00:30:02,850 --> 00:30:05,940 >> Bu kiçik bir model seriyası, disk təhsil-up sahələri 642 00:30:05,940 --> 00:30:08,470 bir az təmsil ikili sayı data 643 00:30:08,470 --> 00:30:10,530 kompüter istifadə sistemi. 644 00:30:10,530 --> 00:30:13,775 İndi, cari göndərilir əgər bir yol Salt vasitəsilə / ərazidə baş yazmaq 645 00:30:13,775 --> 00:30:15,970 bir istiqamətdə polarized edir. 646 00:30:15,970 --> 00:30:17,950 Cari göndərilən Əgər əks istiqaməti, 647 00:30:17,950 --> 00:30:19,930 qütbləşmə bərpa edilir. 648 00:30:19,930 --> 00:30:22,370 >> Əgər sabit disk off məlumat almaq necə? 649 00:30:22,370 --> 00:30:24,090 Yalnız proses tərsinə. 650 00:30:24,090 --> 00:30:26,550 Belə ki, disk haqqında hissəciklər var ki, cari almaq 651 00:30:26,550 --> 00:30:27,960 baş hərəkət yazmaq / oxumaq. 652 00:30:27,960 --> 00:30:30,700 Bu milyonlarla birlikdə qoyun magnetized seqmentləri və 653 00:30:30,700 --> 00:30:32,160 bir fayl var. 654 00:30:32,160 --> 00:30:36,060 >> İndi bir fayl parçaları bilər bütün sürücü nin səpələnmiş edilir 655 00:30:36,060 --> 00:30:39,970 mess kimi növ platters, sizin masası üzərində bülletenlərinin. 656 00:30:39,970 --> 00:30:43,500 Belə ki, xüsusi bir əlavə fayl tutar hər şey burada. 657 00:30:43,500 --> 00:30:45,985 Əgər olsaydı etməyin belə bir şey? 658 00:30:45,985 --> 00:30:46,470 >> [END video playback] 659 00:30:46,470 --> 00:30:47,820 >> DAVID Malan: OK, yəqin ki, deyil. 660 00:30:47,820 --> 00:30:52,070 Belə ki, necə bir çox uşaqlar Bu ilə böyüyüb? 661 00:30:52,070 --> 00:30:53,970 OK, belə ki, daha az və daha az var əlləri hər il. 662 00:30:53,970 --> 00:30:56,550 Amma ən azı tanış olduğunuzda sevindim onlara, bu, çünki öz 663 00:30:56,550 --> 00:31:00,520 kitab demo, Təəssüf ki, bir çox ölür tanışlıq burada ölüm yavaş. 664 00:31:00,520 --> 00:31:04,010 >> Amma bu ən azı, geri, nə mən yüksək məktəb, yedeklemeler üçün istifadə istifadə. 665 00:31:04,010 --> 00:31:08,110 Və gözəl idi, çünki üzrə 1.4 megabayt saxlaya bilər 666 00:31:08,110 --> 00:31:08,930 Bu xüsusi disk. 667 00:31:08,930 --> 00:31:12,260 Bu, yüksək sıxlığı versiyası idi kimi olan HD, göstərilən 668 00:31:12,260 --> 00:31:14,240 GÜNÜN HD video əvvəl deməkdir. 669 00:31:14,240 --> 00:31:16,400 >> Standard sıxlığı 800 kilobayt idi. 670 00:31:16,400 --> 00:31:18,640 Və bundan əvvəl var idi 400 kilobayt disklər. 671 00:31:18,640 --> 00:31:23,120 Və bundan əvvəl, 5 və 1/4 var idi həqiqətən floppy olan inch disklər, 672 00:31:23,120 --> 00:31:25,680 və bir az daha geniş və taller burada bu şeyi daha. 673 00:31:25,680 --> 00:31:29,150 Amma əslində sözdə bilərsiniz Bu disklər disket aspekt. 674 00:31:29,150 --> 00:31:32,630 >> Və funksional, onlar həqiqətən istəyirik at sabit diskler olduqca oxşar 675 00:31:32,630 --> 00:31:33,570 az bu növü. 676 00:31:33,570 --> 00:31:37,270 Yeni kompüter Yenə SSDs fərqli bir az işləyir. 677 00:31:37,270 --> 00:31:41,530 Amma siz ki, az metal nişanı hərəkət əgər, həqiqətən, bir az cookie bilərsiniz 678 00:31:41,530 --> 00:31:42,560 və ya val. 679 00:31:42,560 --> 00:31:43,830 >> Bu kimi metal deyil. 680 00:31:43,830 --> 00:31:46,000 Bu, həqiqətən, bəzi ucuzdur material plastik. 681 00:31:46,000 --> 00:31:46,750 Və rahat durmamak bu cür bilər. 682 00:31:46,750 --> 00:31:50,310 Və trully yalnız bir off məhv etdik bit və ya maqnit hissəciklərinin sayı 683 00:31:50,310 --> 00:31:51,220 Bu disk. 684 00:31:51,220 --> 00:31:52,710 >> Belə ki, təşəkkürlə, bu barədə heç bir şey yoxdur. 685 00:31:52,710 --> 00:31:55,790 O şey yolunda varsa - və əhatə Gözlerinde və qonşu o - 686 00:31:55,790 --> 00:31:58,865 yalnız cür bu pull bilərsiniz kimi bütün örtük off. 687 00:31:58,865 --> 00:32:01,900 Amma bir az yaz var, belə göz ilə fərqindəyik. 688 00:32:01,900 --> 00:32:03,620 Belə ki, indi siz həqiqətən bir disket var. 689 00:32:03,620 --> 00:32:07,090 >> Və nə bu barədə əlamətdar var bu kimi daha çox olduğu bir 690 00:32:07,090 --> 00:32:10,830 daha böyük kiçik miqyaslı nümayəndəliyi sabit, bu şeylər, super var 691 00:32:10,830 --> 00:32:11,590 super sadə. 692 00:32:11,590 --> 00:32:15,170 İndi, bu alt çimdik ki, əgər ki, metal şey off, və təmizləmək 693 00:32:15,170 --> 00:32:20,990 onları açmaq, orada bütün iki ədəd hiss və sözdə disket 694 00:32:20,990 --> 00:32:22,930 daxili metal bir parça ilə. 695 00:32:22,930 --> 00:32:25,990 >> Və yarım orada gedir mənim disk məzmunu. 696 00:32:25,990 --> 00:32:27,540 Onların başqa bir yarısı var gedir. 697 00:32:27,540 --> 00:32:31,375 Amma bu daxili iplik ki, bütün var yesteryear sizin kompüter. 698 00:32:31,375 --> 00:32:35,220 699 00:32:35,220 --> 00:32:38,310 >> Və yenə, perspektiv bu qoymaq necə böyük sizin ən 700 00:32:38,310 --> 00:32:39,560 çətin bu gün sürücüler? 701 00:32:39,560 --> 00:32:41,960 702 00:32:41,960 --> 00:32:46,230 500 Gb, bir terabayt, bəlkə ildə bir masa üstü kompüter, 2 terabayt, 3 703 00:32:46,230 --> 00:32:47,630 terabayt, 4 terabayt, sağ? 704 00:32:47,630 --> 00:32:52,480 Bu megabyte deyil, vermək və ya almaq hətta tipik MP3 uyğun olmayan 705 00:32:52,480 --> 00:32:55,310 artıq bu gün və ya bəzi oxşar musiqi faylı. 706 00:32:55,310 --> 00:32:59,500 >> Belə ki, bir az sizin üçün xatirə bu gün və da nə contextualize kömək 707 00:32:59,500 --> 00:33:03,570 biz verilən alaraq olacaq İndi problem beş seçin. 708 00:33:03,570 --> 00:33:04,820 Belə ki, o saxlamaq üçün sizin edir. 709 00:33:04,820 --> 00:33:07,340 710 00:33:07,340 --> 00:33:13,370 Belə ki, olacaq mənə keçid bildirin növbəti pset sərf həmçinin. 711 00:33:13,370 --> 00:33:18,470 Beləliklə, biz indi bu səhifə üçün müəyyən sonra - oh, tez elanlar bir neçə. 712 00:33:18,470 --> 00:33:21,730 >> Bu cümə, siz istəyirsinizsə CS50 qoşulmaq nahar üçün, adi yerə getmək 713 00:33:21,730 --> 00:33:23,610 cs50.net/rsvp. 714 00:33:23,610 --> 00:33:25,100 Və yekun layihə - 715 00:33:25,100 --> 00:33:28,520 belə proqramları başına, biz olunub etdiyiniz artıq yekun layihə dəqiqləşdirilməsi. 716 00:33:28,520 --> 00:33:31,410 Demək deyil ki, həyata xüsusilə tezliklə görə var. 717 00:33:31,410 --> 00:33:33,990 Bu, sadəcə almaq üçün, həqiqətən, olunub oldu Uşaqlar bu barədə düşünürük. 718 00:33:33,990 --> 00:33:37,620 And olsun ki, bir super əhəmiyyətli Siz faiz həlli olacaq 719 00:33:37,620 --> 00:33:40,780 material yekun layihələr biz hətta sinif kazanılmış deyil, 720 00:33:40,780 --> 00:33:42,730 lakin gələn həftə olacaq. 721 00:33:42,730 --> 00:33:45,530 >> Azadlıqlar olsa da, spec çağırır ki, ki, bir neçə müxtəlif komponentləri 722 00:33:45,530 --> 00:33:46,190 son layihəsi. 723 00:33:46,190 --> 00:33:49,590 Ilk bir neçə həftə, bir pre-təklifi üçün olduqca təsadüfi e-poçt 724 00:33:49,590 --> 00:33:52,760 Sizin onu demək TF ya nə istəyirik ilə, sizin layihə üçün düşünür 725 00:33:52,760 --> 00:33:53,650 heç bir öhdəlik. 726 00:33:53,650 --> 00:33:56,710 Təklif xüsusi olacaq öhdəlik deyərək, burada, bu nədir 727 00:33:56,710 --> 00:33:57,770 Mən layihə üçün nə etmək istərdim. 728 00:33:57,770 --> 00:33:58,250 Siz nə düşünürsünüz? 729 00:33:58,250 --> 00:33:58,650 Çox böyük? 730 00:33:58,650 --> 00:33:59,145 Çox kiçik? 731 00:33:59,145 --> 00:34:00,330 Bu idarə mi? 732 00:34:00,330 --> 00:34:02,230 Və daha çox ətraflı məlumat üçün spec baxın. 733 00:34:02,230 --> 00:34:05,060 >> Həftə neçə bundan sonra vəziyyəti eyni olan hesabat, 734 00:34:05,060 --> 00:34:08,260 necə demək üçün TF üçün təsadüfi e-poçt Siz son var çox gerisində 735 00:34:08,260 --> 00:34:12,360 təqib layihəsinin həyata keçirilməsi, ki, CS50 Hackathon olan hər kəs 736 00:34:12,360 --> 00:34:17,520 dəvət edir, bir hadisə olacaq 7:00 qədər bir axşam 8:00 PM 737 00:34:17,520 --> 00:34:19,150 Növbəti səhər AM. 738 00:34:19,150 --> 00:34:22,560 Mən həftədə qeyd etdiyim bilər Pizza, sıfır, WIL, 9:00 PM xidmət 739 00:34:22,560 --> 00:34:24,120 1:00-da Çin ərzaq AM. 740 00:34:24,120 --> 00:34:27,929 Və 5:00 hələ oyaq istəyirsinizsə AM, biz səhər yeməyi üçün IHOP aparacağıq. 741 00:34:27,929 --> 00:34:31,310 >> Belə ki, Hackathon daha biri sinif yaddaqalan təcrübə. 742 00:34:31,310 --> 00:34:35,290 Sonra həyata keçirilməsi və sonra iqlim CS50 yarmarkası. 743 00:34:35,290 --> 00:34:38,070 Bütün bunlar haqqında daha ətraflı məlumat həftələrdə gəlib. 744 00:34:38,070 --> 00:34:40,739 >> Amma bir şey geri gidelim köhnə məktəb - 745 00:34:40,739 --> 00:34:41,920 yenə bir sıra. 746 00:34:41,920 --> 00:34:45,040 O həll edir, çünki belə bir sıra gözəl idi biz kimi problemlərin yalnız gördüm 747 00:34:45,040 --> 00:34:49,290 tələbə strukturları ilə əvvəl an nəzarət bir az həyata əldə əgər biz 748 00:34:49,290 --> 00:34:52,405 tələbə bir, tələbə iki olsun tələbə üç tələbə nöqtə nöqtə nöqtə, 749 00:34:52,405 --> 00:34:54,400 tələbə bəzi əsassız sayı. 750 00:34:54,400 --> 00:34:58,850 >> Diziler Belə ki, bir neçə həftə əvvəl də swooped və həll problemlərin deyil, bütün 751 00:34:58,850 --> 00:35:03,340 əvvəlcədən bilmədən necə bir çox şeyi bir növü biz istəyirik bilər. 752 00:35:03,340 --> 00:35:07,390 Və biz structs bizə kömək edə bilər ki, gördüm daha code təşkil saxlamaq 753 00:35:07,390 --> 00:35:11,660 bir kimi konseptual oxşar Dəyişənlər, ad və ev birlikdə ki, biz 754 00:35:11,660 --> 00:35:15,570 daxilində bir şəxs kimi müalicə edə bilərsiniz olan kiçik parçalara var. 755 00:35:15,570 --> 00:35:17,810 >> Amma seriallarda bəzi mənfi cəhətləri var. 756 00:35:17,810 --> 00:35:19,780 Mənfi cəhətləri bir hansılardır biz Karşılaştığınız 757 00:35:19,780 --> 00:35:22,320 Diziler ilə bu günə qədər? 758 00:35:22,320 --> 00:35:23,450 Nə olub? 759 00:35:23,450 --> 00:35:28,130 Sabit ölçüsü - belə siz bilər baxmayaraq bir yaddaş ayrılması edə 760 00:35:28,130 --> 00:35:32,310 array, bir dəfə necə çox şagird siz neçə işarə var 761 00:35:32,310 --> 00:35:35,460 istifadəçi, bir dəfə ayrılan sonra serialın, ne cür boyalı etdik 762 00:35:35,460 --> 00:35:36,740 küncə özünüzü. 763 00:35:36,740 --> 00:35:40,600 >> Siz yeni elementlər daxil edə bilməz, çünki bir sıra orta çevrildi. 764 00:35:40,600 --> 00:35:43,660 Daha çox elementlər daxil edə bilməz bir sıra sonunda. 765 00:35:43,660 --> 00:35:47,750 Həqiqətən, bir yaratmaq üçün müraciət var biz müzakirə etdik kimi bütün yeni dizi, 766 00:35:47,750 --> 00:35:49,320 yeni daxil köhnə çıxarmaq. 767 00:35:49,320 --> 00:35:52,610 Və yenə ki, baş ağrısı olduğunu Sizin üçün ilə məşğul GetString. 768 00:35:52,610 --> 00:35:56,170 >> Ancaq yenə də, hətta ekleyemezsiniz serialın ortasına bir şey 769 00:35:56,170 --> 00:35:58,200 dərəcəsi tamamilə dolu deyil. 770 00:35:58,200 --> 00:36:03,010 Məsələn, bu array əgər burada ölçüsü altı yalnız bu beş şeyi var 771 00:36:03,010 --> 00:36:06,080 yaxşı, yalnız tack bilər sonunda üzərinə bir şey. 772 00:36:06,080 --> 00:36:08,200 Amma bir şey əlavə etmək üçün nə istəyiriksə ortasında daxil 773 00:36:08,200 --> 00:36:11,280 dizi, bu ola bilər, baxmayaraq ki, bu altı şeyi beş həyata? 774 00:36:11,280 --> 00:36:14,250 >> Yaxşı, biz bütün zaman nə idi insan könüllü səhnədə ilə 775 00:36:14,250 --> 00:36:15,110 həftə keçmiş? 776 00:36:15,110 --> 00:36:18,710 Biz burada kimsə qoymaq istəyirdi, ya Bu hərəkət nə bu insanlar 777 00:36:18,710 --> 00:36:22,540 yol və ya bu hərəkət necə bu insanlar yolu, və bahalı oldu. 778 00:36:22,540 --> 00:36:26,950 Bu bir daxilində insanların dəyişir array qədər əlavə və qiymətqoyma qədər başa 779 00:36:26,950 --> 00:36:31,240 bizə vaxt bu səbəbdən bizim üçün çox sevindirici n kvadrat və üçün, durub sort kimi dəfə çalışan 780 00:36:31,240 --> 00:36:32,550 Məsələn, ən pis halda. 781 00:36:32,550 --> 00:36:36,520 Belə ki, seriallarda böyük, ancaq var istədiyiniz necə böyük əvvəlcədən bilirik. 782 00:36:36,520 --> 00:36:38,030 >> Belə ki, OK, burada bir çözüm var. 783 00:36:38,030 --> 00:36:43,860 Mən əvvəlcədən bilmirsinizsə neçə tələbələr Mən ola bilər, və mən bir dəfə bilirəm 784 00:36:43,860 --> 00:36:47,870 Mən qərar olsa da, mən ki, ilə vurulmuş alıram , niyə yalnız həmişə çox şagird yoxdur 785 00:36:47,870 --> 00:36:51,740 iki dəfə çox yer ayırmağa Mən hesab edə bilər kimi mən lazımdır? 786 00:36:51,740 --> 00:36:54,450 Ki, bir ağlabatan həll deyilmi? 787 00:36:54,450 --> 00:36:58,240 >> Real, biz istəyirik ki düşünmürəm 50-dən çox yuva tələb edir 788 00:36:58,240 --> 00:37:02,190 orta ölçülü sinfi üçün bir sıra, elə yalnız dəyirmi bildirin. 789 00:37:02,190 --> 00:37:07,040 Mən yalnız mənim array 100 slots etmək lazımdır belə ki, biz mütləq əldə edə bilərsiniz 790 00:37:07,040 --> 00:37:10,330 Mən gözləyirik tələbələrin sayı Bəzi orta sinif ola bilər. 791 00:37:10,330 --> 00:37:14,320 Belə ki, niyə yalnız dəyirmi və ayırmadığı bir sıra üçün daha çox yaddaş, adətən, 792 00:37:14,320 --> 00:37:16,290 siz hətta lazım bilər edirəm çox? 793 00:37:16,290 --> 00:37:20,190 Bu sadə pushback nədir ki, ideya? 794 00:37:20,190 --> 00:37:21,440 >> Siz yalnız yaddaş israf edirik. 795 00:37:21,440 --> 00:37:25,350 Əgər yazmaq sözün hər proqramı bəlkə iki dəfə çox yaddaş istifadə edir 796 00:37:25,350 --> 00:37:26,680 həqiqətən lazımdır. 797 00:37:26,680 --> 00:37:28,990 Və yalnız bir kimi hiss etmir xüsusilə zərif həll. 798 00:37:28,990 --> 00:37:31,990 Bundan əlavə, yalnız azalır bir problem ehtimalı. 799 00:37:31,990 --> 00:37:35,300 Bir məşhur kurs üçün nə varsa bir dövr və 101 var 800 00:37:35,300 --> 00:37:39,610 tələbələr, proqram hələ də əsaslı eyni məsələ qarşı-qarşıya. 801 00:37:39,610 --> 00:37:44,280 >> Belə ki, təşəkkürlə, bir həll var şəklində bu reklamdan bütün problemlərimizi 802 00:37:44,280 --> 00:37:46,790 ki, data strukturlarının olanları daha mürəkkəb 803 00:37:46,790 --> 00:37:47,970 Biz indiyə qədər gördük. 804 00:37:47,970 --> 00:37:50,530 Bu, mən iddia, bir bağlı siyahısı. 805 00:37:50,530 --> 00:37:51,920 Bu nömrələrin siyahısı - 806 00:37:51,920 --> 00:37:54,970 9, 17, 22, 26, və 34 - 807 00:37:54,970 --> 00:38:00,120 yolu ilə birlikdə bağlı ki, nə mən oxlar kimi tərtib etdik. 808 00:38:00,120 --> 00:38:03,580 >> Başqa sözlə, əgər mən təmsil etmək istədi bir sıra, mən nə edə bilər 809 00:38:03,580 --> 00:38:04,910 bu kimi bir şey. 810 00:38:04,910 --> 00:38:07,310 Mən hava bu qoymaq lazımdır yalnız bir anda. 811 00:38:07,310 --> 00:38:09,970 Mən bilər - 812 00:38:09,970 --> 00:38:12,520 hello, bütün doğru. 813 00:38:12,520 --> 00:38:14,470 Yanındayız. 814 00:38:14,470 --> 00:38:17,360 Burada yeni kompüter, aydın - 815 00:38:17,360 --> 00:38:18,090 Bütün hüquqlar. 816 00:38:18,090 --> 00:38:21,730 >> Beləliklə, mən sıra bu rəqəmlər varsa - 817 00:38:21,730 --> 00:38:28,880 9, 17, 22, 26, 24 - 818 00:38:28,880 --> 00:38:30,530 tərəziyə lazım deyil. 819 00:38:30,530 --> 00:38:33,730 Bütün sağ, belə ki, burada mənim array edir - 820 00:38:33,730 --> 00:38:34,980 Pərvərdigara. 821 00:38:34,980 --> 00:38:38,700 822 00:38:38,700 --> 00:38:40,395 Bütün sağ, belə ki, burada mənim array edir. 823 00:38:40,395 --> 00:38:44,110 824 00:38:44,110 --> 00:38:45,050 Pərvərdigara. 825 00:38:45,050 --> 00:38:48,820 >> [Gülüş] 826 00:38:48,820 --> 00:38:49,440 >> DAVID Malan: Pretend. 827 00:38:49,440 --> 00:38:52,330 Geri getmək üçün çox çox səy var və s var ki, Fix - 828 00:38:52,330 --> 00:38:54,290 26. 829 00:38:54,290 --> 00:38:57,650 Beləliklə, biz bu array var 9, 17, 22, 26, və 34. 830 00:38:57,650 --> 00:39:00,260 Sizin bax bilər utandırıcı səhv Mən yalnız edib, 831 00:39:00,260 --> 00:39:00,830 orada deyil. 832 00:39:00,830 --> 00:39:04,490 >> Mən bu olduğunu iddia bir çox səmərəli həlli. 833 00:39:04,490 --> 00:39:07,310 Mən çox ints ayrılan etdik Mən lazımdır - bir, iki, üç, 834 00:39:07,310 --> 00:39:09,100 dörd, beş və ya altı - 835 00:39:09,100 --> 00:39:11,660 və mən sonra nömrələri saxlanılır etdik Bu serialın içərisində. 836 00:39:11,660 --> 00:39:15,220 Amma güman, sonra mən əlavə etmək istəyirəm sayı 8 kimi bir dəyər? 837 00:39:15,220 --> 00:39:16,100 Yaxşı, burada getmək edir? 838 00:39:16,100 --> 00:39:18,530 Mən əlavə etmək istəyirəm Güman 20 kimi bir sıra. 839 00:39:18,530 --> 00:39:19,790 Yaxşı, burada getmək edir? 840 00:39:19,790 --> 00:39:23,160 Somewhere orada ortasında, və ya sayı 35 getmək üçün var 841 00:39:23,160 --> 00:39:24,010 haradasa sonunda. 842 00:39:24,010 --> 00:39:25,320 Amma alan bütün edirəm. 843 00:39:25,320 --> 00:39:29,120 >> Və bu fundamental problem deyil həll edir ki, serialları. 844 00:39:29,120 --> 00:39:32,280 Mən GetString bir an əvvəl iddia bu problemi həll edir. 845 00:39:32,280 --> 00:39:37,380 Bir altıncı rəqəm daxil etmək istəyirsinizsə Bu massivinə, ən azı bir nə 846 00:39:37,380 --> 00:39:40,090 həll siz əmin üçün geri düşə bilər yalnız biz GetString nə kimi? 847 00:39:40,090 --> 00:39:44,340 848 00:39:44,340 --> 00:39:46,030 Nə olub? 849 00:39:46,030 --> 00:39:48,190 >> Bəli, bu böyük olun asan həyata daha bildirib. 850 00:39:48,190 --> 00:39:52,810 Biz mütləq serialın edə bilməz böyük, lakin biz nə edə bilər? 851 00:39:52,810 --> 00:39:56,570 Ölçüsü böyükdür ki, yeni array etmək 6, və ya bəlkə ölçüsü 10, biz istəyiriksə 852 00:39:56,570 --> 00:40:00,490 irəli şeyi almaq, sonra surəti köhnə yeni daxil dizi, və sonra 853 00:40:00,490 --> 00:40:01,680 köhnə array Pulsuz. 854 00:40:01,680 --> 00:40:05,770 >> Amma çalışan zaman var indi bu prosesin? 855 00:40:05,770 --> 00:40:09,870 Bu, n böyük Ey çünki surətini Siz bəzi kontur başa gedir 856 00:40:09,870 --> 00:40:13,480 biz var zaman, o qədər ideal halda gedir yeni dizi, ayrılması 857 00:40:13,480 --> 00:40:15,610 iki dəfə çox istehlak etmək müvəqqəti yaddaş. 858 00:40:15,610 --> 00:40:16,660 Yeni daxil köhnə surəti - 859 00:40:16,660 --> 00:40:18,800 Mən demək, yalnız bir baş ağrısı, hansı yenə niyə biz yazmışdır 860 00:40:18,800 --> 00:40:19,920 Sizin üçün GetString. 861 00:40:19,920 --> 00:40:21,380 >> Yerine Belə ki, nə ola bilər? 862 00:40:21,380 --> 00:40:25,000 Yaxşı, nə əgər data structure həqiqətən boşluqlar var? 863 00:40:25,000 --> 00:40:30,790 Mən olan mənim qol istirahət Güman yaddaş bitişik chunks, harada 9 864 00:40:30,790 --> 00:40:34,500 olan 17, sağ yanında doğru 22 yanındakı və s. 865 00:40:34,500 --> 00:40:39,570 >> Və 9 Burada artıq ola bilər ki, güman RAM, 17, RAM burada artıq ola bilər 866 00:40:39,570 --> 00:40:40,990 və 22 RAM burada artıq ola bilər. 867 00:40:40,990 --> 00:40:43,610 Başqa sözlə, mən onlara lazım deyil hətta artıq geri geri. 868 00:40:43,610 --> 00:40:47,850 Mən elə bir iynə mövzu var Bu rəqəmlərin hər biri və ya hər vasitəsilə 869 00:40:47,850 --> 00:40:51,010 Bu qovşaqlarının kimi biz zəng edəcəyik Mən onları tərtib etdiyiniz kimi düzbucaqlı üçün 870 00:40:51,010 --> 00:40:55,670 son almaq üçün necə yadda İlk belə node. 871 00:40:55,670 --> 00:40:59,940 >> Belə ki, proqramlaşdırma tikintisi nə biz kifayət qədər yaxınlarda gördüm ki, mən 872 00:40:59,940 --> 00:41:03,030 ki, mövzu həyata, və ya , burada tərtib Mən olan 873 00:41:03,030 --> 00:41:05,430 bu oxlar həyata? 874 00:41:05,430 --> 00:41:06,500 Belə göstəricilər, sağ? 875 00:41:06,500 --> 00:41:09,560 Mən yalnız ayrılması edin int, lakin bir node - və 876 00:41:09,560 --> 00:41:10,810 node, yalnız konteyner nəzərdə tuturam. 877 00:41:10,810 --> 00:41:12,900 Və görmə, bir düzbucaqlı demək. 878 00:41:12,900 --> 00:41:16,420 Bir node yəqin lazımdır Belə ki, iki dəyərlər ehtiva - 879 00:41:16,420 --> 00:41:21,490 ki, int özü, sonra kimi nəzərdə tutulan olan düzbucaqlı alt yarısı, 880 00:41:21,490 --> 00:41:23,010 bir int üçün kifayət qədər yer. 881 00:41:23,010 --> 00:41:26,130 >> Belə ki, yalnız, burada irəli düşünür Bu node bu, necə böyük 882 00:41:26,130 --> 00:41:27,170 sual konteyner? 883 00:41:27,170 --> 00:41:29,250 Ki, int nə qədər bayt? 884 00:41:29,250 --> 00:41:31,310 Ehtimal 4, bu halda həmişə olduğu kimi eyni. 885 00:41:31,310 --> 00:41:33,270 Və sonra neçə bayt göstərici üçün? 886 00:41:33,270 --> 00:41:33,650 4. 887 00:41:33,650 --> 00:41:37,940 Beləliklə, bu konteyner və ya bu node edir 8-byte quruluşu olacaq. 888 00:41:37,940 --> 00:41:41,760 Oh, və bir xoşbəxt təsadüf ki, biz yalnız bu anlayışı daxil 889 00:41:41,760 --> 00:41:44,400 bir struct və ya C quruluşu. 890 00:41:44,400 --> 00:41:48,890 >> Beləliklə, mən bir addım etmək istəyirəm ki, iddia Bu daha mürəkkəb doğru 891 00:41:48,890 --> 00:41:52,560 nömrələrin siyahısı, bir həyata keçirilməsi nömrələrin bağlı siyahı, mən nə etmək lazımdır 892 00:41:52,560 --> 00:41:56,920 az daha ön qədər düşüncə və yalnız bir int, lakin struct elan 893 00:41:56,920 --> 00:41:58,620 Mən zəng lazımdır ki, şərti burada node. 894 00:41:58,620 --> 00:42:01,630 Biz bunu istəyirik bir şey zəng, lakin bilər node bir çox tematik olacaq 895 00:42:01,630 --> 00:42:03,560 şeyi indi baxaraq başlamaq. 896 00:42:03,560 --> 00:42:06,480 >> Ki, node daxilində int n. 897 00:42:06,480 --> 00:42:09,350 Və sonra bu sintaksis, bir az ilk baxışda qəribə - 898 00:42:09,350 --> 00:42:12,960 struct node * gələcək. 899 00:42:12,960 --> 00:42:16,900 Yaxşı pictorially ki, nədir? 900 00:42:16,900 --> 00:42:21,000 Bu alt yarısı gördük ki düzbucaqlı 901 00:42:21,000 --> 00:42:22,730 yalnız bir an əvvəl. 902 00:42:22,730 --> 00:42:27,600 >> Amma niyə I * struct node deyirəm kimi node * qarşı? 903 00:42:27,600 --> 00:42:31,370 Ki, göstərici işarə edir, çünki başqa node da, yalnız var 904 00:42:31,370 --> 00:42:32,760 bir node ünvanı. 905 00:42:32,760 --> 00:42:35,630 Biz var nə ilə uyğun ki, İndiyədək göstəricilərinə müzakirə. 906 00:42:35,630 --> 00:42:39,690 Mən iddia Lakin niyə bu strukturu node adlı, mən struct demək var 907 00:42:39,690 --> 00:42:42,660 Burada daxili node? 908 00:42:42,660 --> 00:42:43,190 >> Eynilə elə. 909 00:42:43,190 --> 00:42:46,490 Bu C. bir axmaq reallıq sort var Bu typedef, belə danışmaq deyil, var 910 00:42:46,490 --> 00:42:47,220 hələ oldu. 911 00:42:47,220 --> 00:42:48,510 C hərfi super. 912 00:42:48,510 --> 00:42:51,050 Bu kodu top oxuyur alt, sağ qalmadı. 913 00:42:51,050 --> 00:42:54,930 Qədər bu ki, nöqtəli vergül edib Alt xətt deyil, nə tahmin 914 00:42:54,930 --> 00:42:57,590 bir veri növü kimi var? 915 00:42:57,590 --> 00:42:59,060 Node, teklif dırnağı bağlamaq node. 916 00:42:59,060 --> 00:43:03,050 >> Lakin daha ayrıntılı və bəyannamə Mən ilk xəttində idi - 917 00:43:03,050 --> 00:43:05,340 typedef struct node - 918 00:43:05,340 --> 00:43:08,790 ki, əvvəl, gəldi, çünki buruq aşırma kimi növ var ki, 919 00:43:08,790 --> 00:43:11,800 pre-maarifləndirilməsi cingilti ki, nə mənə struct vermək 920 00:43:11,800 --> 00:43:13,570 struct node çağırıb. 921 00:43:13,570 --> 00:43:16,270 Açığı, mən zəng şeyi sevmirəm struct node, struct node bütün 922 00:43:16,270 --> 00:43:17,090 Mənim kodu boyunca. 923 00:43:17,090 --> 00:43:20,660 Amma yalnız, yalnız içəridə bir dəfə istifadə edəcəyik belə ki, səmərəli ola bilər 924 00:43:20,660 --> 00:43:25,010 , dairəvi istinad bir növ deyil yaratmaq bir se başına özümə pointer, lakin 925 00:43:25,010 --> 00:43:29,400 başqa to pointer eyni növü. 926 00:43:29,400 --> 00:43:32,330 >> Belə çıxır ki, bir veri strukturu barədə bu kimi bir neçə var 927 00:43:32,330 --> 00:43:34,470 ola bilər ki, əməliyyatlar bizə maraq. 928 00:43:34,470 --> 00:43:37,460 Biz daxil edə bilərsiniz bu kimi bir siyahısına daxil. 929 00:43:37,460 --> 00:43:39,850 Biz silmək istəyirəm bilər bu kimi bir siyahıdan. 930 00:43:39,850 --> 00:43:43,490 Biz üçün siyahı axtarmaq isteyebilirsiniz dəyərdə və ya ümumiyyətlə, axır. 931 00:43:43,490 --> 00:43:46,410 Və traverse yalnız bir xülya yoludur sol start dedi və bütün hərəkət 932 00:43:46,410 --> 00:43:47,650 sağ üçün yol. 933 00:43:47,650 --> 00:43:52,640 >> Və hətta bu qədər çox xəbər təcrübəli data structure, qoy 934 00:43:52,640 --> 00:43:56,510 mənə biz bəzi borc bilər ki, təklif Bu son iki həftə ideya və 935 00:43:56,510 --> 00:43:58,410 adlı bir funksiyası həyata Bu kimi axtarış. 936 00:43:58,410 --> 00:44:01,360 Bu və ya doğru geri olacaq , yalan ifadə Bəli və ya 937 00:44:01,360 --> 00:44:03,390 Xeyr, n sırasındadır. 938 00:44:03,390 --> 00:44:05,960 Onun ikinci arqument bir göstəricisidir siyahısını özü üçün belə bir 939 00:44:05,960 --> 00:44:07,920 bir node göstərici. 940 00:44:07,920 --> 00:44:10,350 >> Mən bunu gidiyorum Bütün bəyan edir müvəqqəti dəyişən. 941 00:44:10,350 --> 00:44:12,730 Biz konvensiya ilə Ptr arayacaðým pointer üçün. 942 00:44:12,730 --> 00:44:15,220 Mən onu bərabər təyin siyahı əvvəli. 943 00:44:15,220 --> 00:44:16,680 >> İndi isə loop bilərsiniz. 944 00:44:16,680 --> 00:44:20,640 Belə ki, uzun göstərici bərabər deyil kimi null, mən yoxlamaq üçün gedirəm. 945 00:44:20,640 --> 00:44:24,520 Mi göstərici arrow n bərabər qəbul ki, n? 946 00:44:24,520 --> 00:44:26,410 Yeni - Və bir dəqiqə gözləyin syntax parçası. 947 00:44:26,410 --> 00:44:29,324 Arrow qəflətən nədir? 948 00:44:29,324 --> 00:44:30,574 Bəli? 949 00:44:30,574 --> 00:44:34,200 950 00:44:34,200 --> 00:44:34,810 >> Eynilə elə. 951 00:44:34,810 --> 00:44:38,860 Belə isə bir neçə dəqiqə əvvəl, biz istifadə bir şey daxil olmaq üçün dot notation 952 00:44:38,860 --> 00:44:43,080 bir struct daxilində, dəyişən əgər Siz struct deyil ki, 953 00:44:43,080 --> 00:44:47,420 özü, lakin struct bir göstərici, təşəkkürlə, sintaksis bir parça ki, 954 00:44:47,420 --> 00:44:48,620 nəhayət intuitiv hissi verir. 955 00:44:48,620 --> 00:44:52,360 Ok, göstərici riayət etmək deməkdir bizim oxlar adətən demək kimi 956 00:44:52,360 --> 00:44:56,570 pictorially, və getmək data sahəsində Inside. 957 00:44:56,570 --> 00:44:59,700 Belə ki, arrow nöqtə kimi eyni şey, ancaq bir göstərici var zaman istifadə edin. 958 00:44:59,700 --> 00:45:05,270 >> Belə ki, yalnız, sonra Recap əgər n sahəsində ki, struct daxilində pointer çağırıb 959 00:45:05,270 --> 00:45:07,760 bərabər n bərabər, doğru qayıdırlar. 960 00:45:07,760 --> 00:45:11,970 Əks halda, burada bu xətti - pointer Növbəti göstərici bərabərdir. 961 00:45:11,970 --> 00:45:17,540 Beləliklə, bu nə bildiriş, əgər mən Hal-hazırda struct da işarə edirəm 962 00:45:17,540 --> 00:45:21,430 9 və 9 olan rəqəm deyil Mən arıyorum - Mən arıyorum Güman 963 00:45:21,430 --> 00:45:22,830 N 50 bərabərdir - 964 00:45:22,830 --> 00:45:25,930 Mən müvəqqəti göstərici yeniləmək üçün gidiyorum Bu node da qeyd etmək 965 00:45:25,930 --> 00:45:31,190 artıq, lakin pointer arrow növbəti, hansı burada mənə qoymaq niyyətindədir. 966 00:45:31,190 --> 00:45:34,270 >> İndi bir qasırğa edir həyata tətbiqi. 967 00:45:34,270 --> 00:45:37,380 Çərşənbə günü, biz, həqiqətən bunu edəcəyik Bəzi insanlar və bəzi daha çox 968 00:45:37,380 --> 00:45:38,900 yavaş bir sürətlə kodu. 969 00:45:38,900 --> 00:45:42,990 Amma həyata, indi bizim data edirik strukturları daha mürəkkəb, belə ki, bizim 970 00:45:42,990 --> 00:45:45,780 alqoritmlər, daha səmərəli əldə edə bilərsiniz ki, üçün zəruri olacaq 971 00:45:45,780 --> 00:45:50,500 pset altı, biz yenə də yük, o 150,000 sözlər, lakin bunu etmək lazımdır 972 00:45:50,500 --> 00:45:55,650 səmərəli və ideal bir yaratmaq bizim istifadəçilər üçün çalışır proqram 973 00:45:55,650 --> 00:46:00,460 xətti deyil, kvadrat n, lakin ideal daimi vaxt. 974 00:46:00,460 --> 00:46:02,300 >> Biz Çərşənbə günü görəcəksiniz. 975 00:46:02,300 --> 00:46:07,240 >> Məruzəçi: Növbəti CS50, David hazırda onun baza halda unudur. 976 00:46:07,240 --> 00:46:12,770 >> DAVID Malan: Və göndərmək necə ilə mətn mesajları C. nə - 977 00:46:12,770 --> 00:46:14,020 >> [AYRI Mətn mesajı BİLDİRİŞ SOUNDS] 978 00:46:14,020 --> 00:46:19,734