1 00:00:00,000 --> 00:00:03,395 >> [MUSIC PLAYING] 2 00:00:03,395 --> 00:00:11,031 3 00:00:11,031 --> 00:00:13,280 DAVID J. MALAN: Bu kimi birinci seminar bu gün. 4 00:00:13,280 --> 00:00:14,060 OLDU. 5 00:00:14,060 --> 00:00:15,024 Həyata Belə ki, çox yağışlı. 6 00:00:15,024 --> 00:00:17,690 Bu çərşənbə baş çalışır, lakin bütün daha çox imkan 7 00:00:17,690 --> 00:00:18,700 suallar üçün bu gün. 8 00:00:18,700 --> 00:00:22,210 Belə ki, həqiqətən başlamaq edək yalnız bir anda film. 9 00:00:22,210 --> 00:00:24,560 Amma biz hər zaman olduğu kimi şəstlə başlamaq lazımdır. 10 00:00:24,560 --> 00:00:28,000 >> Bu CS50 və bu Həftə 4 sonu. 11 00:00:28,000 --> 00:00:30,820 Əgər seyr etdik əgər Belə ki, TV və ya bir film çıxdığı 12 00:00:30,820 --> 00:00:34,690 bəzi kompüter ekspertlər var və polis, və ya FBI, və ya agentliyi 13 00:00:34,690 --> 00:00:36,930 bəzi tutmaq üçün çalışır rəqib, yaxşı, siz var 14 00:00:36,930 --> 00:00:40,850 yəqin ki, "artırmaq" ifadəsini eşitdim vasitəsi texnik birtəhər 15 00:00:40,850 --> 00:00:44,750 magically sonsuz zooms cinayətkarlar görmək üçün uzaq 16 00:00:44,750 --> 00:00:48,640 şəxsiyyət və ya plaka nömrəsi Bir güzgü belə parıltılı 17 00:00:48,640 --> 00:00:50,390 və ya kiminsə göz glint. 18 00:00:50,390 --> 00:00:55,196 Belə ki, həqiqətən, bu nəzər edək Hollywood bir neçə belə səhnələri. 19 00:00:55,196 --> 00:00:55,862 [Video playback] 20 00:00:55,862 --> 00:00:59,243 -Yaxşı, Indi sizə yaxşı bir nəzər almaq imkan verir. 21 00:00:59,243 --> 00:01:06,488 22 00:01:06,488 --> 00:01:07,415 >> Onu tutun. 23 00:01:07,415 --> 00:01:08,267 Geri axır. 24 00:01:08,267 --> 00:01:09,121 >> -Bir dəqiqə gözlə. 25 00:01:09,121 --> 00:01:11,300 Doğru getmək. 26 00:01:11,300 --> 00:01:12,209 >> -Var Ki, dondurmaq. 27 00:01:12,209 --> 00:01:12,750 -Tam ekran. 28 00:01:12,750 --> 00:01:13,558 -Yaxşı Ki, dondurmaq. 29 00:01:13,558 --> 00:01:14,820 Siz ki, edəcək -Tighten? 30 00:01:14,820 --> 00:01:16,530 Ki,-da Vector geri təkər ilə oğlan. 31 00:01:16,530 --> 00:01:19,400 Burada bu yerində olan Zoom. 32 00:01:19,400 --> 00:01:22,846 Doğru avadanlıq -Ilə, image genişləndirilmiş və itilənmiş bilər. 33 00:01:22,846 --> 00:01:24,065 -Bu nədir? 34 00:01:24,065 --> 00:01:25,600 -Bu Bir genişləndirilməsi proqram. 35 00:01:25,600 --> 00:01:26,860 Qədər hər hansı bir aydın -Can? 36 00:01:26,860 --> 00:01:27,890 Mən bilmirəm. 37 00:01:27,890 --> 00:01:29,050 Nin artırmaq edək. 38 00:01:29,050 --> 00:01:31,575 >> Gücləndirilməsi bölmə A6. 39 00:01:31,575 --> 00:01:33,642 >> -Mən Ətraflı inkişaf etmiş, and-- Mən hesab edirəm 40 00:01:33,642 --> 00:01:35,433 artırmaq üçün kifayət qədər, Mənim ekran üçün azad. 41 00:01:35,433 --> 00:01:37,080 Mən onun göz əks artırmışdır. 42 00:01:37,080 --> 00:01:38,830 >> Bağının bu run video genişləndirilməsi. 43 00:01:38,830 --> 00:01:40,100 -Edgar, Bu gücləndirə bilər? 44 00:01:40,100 --> 00:01:41,875 >> On -Hang. 45 00:01:41,875 --> 00:01:44,010 >> Bu əks işləyir -I've. 46 00:01:44,010 --> 00:01:44,995 >> -Biri Nin əks. 47 00:01:44,995 --> 00:01:45,495 -Reflection. 48 00:01:45,495 --> 00:01:47,399 Insanın üz əks -Var var. 49 00:01:47,399 --> 00:01:48,065 -Bu Əks. 50 00:01:48,065 --> 00:01:48,981 Bir əks -Var var. 51 00:01:48,981 --> 00:01:50,600 Güzgü üzrə Zoom. 52 00:01:50,600 --> 00:01:52,712 -Siz Bir əks bilərsiniz. 53 00:01:52,712 --> 00:01:54,350 Burada image artırmaq edə bilərəmmi? 54 00:01:54,350 --> 00:01:55,370 Burada onu artırmaq edə bilərəmmi? 55 00:01:55,370 --> 00:01:56,210 Siz onu artırmaq edə bilərəmmi? 56 00:01:56,210 --> 00:01:56,900 Siz onu gücləndirə bilər? 57 00:01:56,900 --> 00:01:57,870 >> Bu artırmaq edə bilərəmmi? 58 00:01:57,870 --> 00:01:58,717 >> Siz onu artırmaq edə bilərəmmi? 59 00:01:58,717 --> 00:02:00,050 Bir ikinci tutun, mən artırmaq lazımdır. 60 00:02:00,050 --> 00:02:00,924 Qapını da Zoom. 61 00:02:00,924 --> 00:02:01,700 10 keçir. 62 00:02:01,700 --> 00:02:02,586 Zoom. 63 00:02:02,586 --> 00:02:03,490 Da Move. 64 00:02:03,490 --> 00:02:03,990 -Daha. 65 00:02:03,990 --> 00:02:04,690 Gözləyin dayandırmaq. 66 00:02:04,690 --> 00:02:05,190 Stop. 67 00:02:05,190 --> 00:02:05,970 Onu -Pause. 68 00:02:05,970 --> 00:02:09,460 Bizə 75 dərəcə qayıt şaquli ətrafında edin. 69 00:02:09,460 --> 00:02:10,962 Stop. 70 00:02:10,962 --> 00:02:14,040 Hissəsi geri dön yenidən qapı, haqqında. 71 00:02:14,040 --> 00:02:15,860 >> Bitmap bilər bir image Gücləndirici-var? 72 00:02:15,860 --> 00:02:18,776 >> -Hey, Bəlkə biz Pradeep istifadə edə bilərsiniz Sen üsul Windows görmək. 73 00:02:18,776 --> 00:02:20,372 -Bu Proqram sənət dövlətdir. 74 00:02:20,372 --> 00:02:21,845 >> -Bu Eigenvalue off edir. 75 00:02:21,845 --> 00:02:24,300 >> Sağ -Ilə alqoritm birləşməsi 76 00:02:24,300 --> 00:02:26,755 >> O nin qəbul aradan qaldırılması Növbəti səviyyəsi alqoritmlər, 77 00:02:26,755 --> 00:02:28,730 və mən onları istifadə edə bilərsiniz Bu fotoşəkil artırmaq. 78 00:02:28,730 --> 00:02:31,286 >> On Lock və z-ox genişləndirmək. 79 00:02:31,286 --> 00:02:32,560 >> Gücləndirilməsi. 80 00:02:32,560 --> 00:02:33,100 >> Gücləndirilməsi. 81 00:02:33,100 --> 00:02:33,600 >> Gücləndirilməsi. 82 00:02:33,600 --> 00:02:34,960 Freeze və artırmaq. 83 00:02:34,960 --> 00:02:37,180 >> [END playback] 84 00:02:37,180 --> 00:02:41,160 >> DAVID J. MALAN: Bütün sağ, belə ki, o bütün həqiqətən sözləri var. 85 00:02:41,160 --> 00:02:44,450 Onlar yalnız bir birlikdə sinirli edirik həqiqətən həssas deyil yol. 86 00:02:44,450 --> 00:02:48,400 Bu kimi və, əslində, CS50 və kurslar TV və film bir çox məhv çalışır 87 00:02:48,400 --> 00:02:48,900 sizin üçün. 88 00:02:48,900 --> 00:02:52,330 O kompüter mütəxəssisləri, çünki şərtləri off şaqqıltılı və söyləyərək 89 00:02:52,330 --> 00:02:56,860 kimi xülya şeyi eigenvectors, və z ox, 90 00:02:56,860 --> 00:02:59,572 və digər hər hansı bir sayı həqiqətən, çox texniki şərtlər, 91 00:02:59,572 --> 00:03:02,030 Onlar, həqiqətən, yalnız stringing edirik sözləri birlikdə bütün çox tez-tez. 92 00:03:02,030 --> 00:03:05,020 Bizim ümid biri olduğunu ki, alaraq kursları bir yan təsiri olaraq 93 00:03:05,020 --> 00:03:08,245 bu kimi olacaq daha çox insan Dünya həqiqətən çəkin biləcəklər 94 00:03:08,245 --> 00:03:12,040 və yalnız heç belə yüngül təsir keyfiyyətli və həmin filmlərin dəqiqliyi? 95 00:03:12,040 --> 00:03:14,350 >> Əslində, əslində bir nəzər salaq. 96 00:03:14,350 --> 00:03:18,070 Belə ki, burada heyəti şəkil Mary, bizim tədris yoldaşları biridir. 97 00:03:18,070 --> 00:03:20,050 O güman bir şey şübhəli. 98 00:03:20,050 --> 00:03:23,730 Və hələ, işığı var onun göz dəlil bəzi parça, 99 00:03:23,730 --> 00:03:25,480 və ya onun gözlük əks. 100 00:03:25,480 --> 00:03:30,760 Bəli, biz filmlərin tam olaraq əgər biz zoom və "artırmaq" orada, təklif, 101 00:03:30,760 --> 00:03:34,080 Bu nə qədər məlumat Mary qarşısında deyil 102 00:03:34,080 --> 00:03:36,795 Bir şəkil çəkmək zaman orijinal həlli ilə. 103 00:03:36,795 --> 00:03:39,120 >> Və əslində, bu nöqtələr bilərsiniz. 104 00:03:39,120 --> 00:03:41,900 Bu, nə var adlı piksel, P-I-X-E-L-S, 105 00:03:41,900 --> 00:03:45,740 olan adətən yalnız bir kvadrat ki, bir şəkil bəstələyir bir dot edir. 106 00:03:45,740 --> 00:03:49,200 Və geri gün, və, həqiqətən, hətta Bugünkü LED TV bəzi bu gün 107 00:03:49,200 --> 00:03:51,950 və ya LCD TV, siz var, əgər Sizin otaq və ya evdə bir, 108 00:03:51,950 --> 00:03:55,100 Siz bu super yaxın getmək, və əgər Bu bir qədər yaşlı TV var, xüsusilə də əgər, 109 00:03:55,100 --> 00:03:58,760 Siz yəqin ki, hətta bu nöqtələr bilərsiniz ki, bir şəkil yaratmaq budur. 110 00:03:58,760 --> 00:04:00,980 >> Və heç bir daha çox var Bu daha məlumat. 111 00:04:00,980 --> 00:04:05,400 Biz mənada, "artırmaq" bilər üzərində və sort şeyi hamarlanması 112 00:04:05,400 --> 00:04:09,040 növ, sort nə inferring rəng Mary göz yanında olmalıdır 113 00:04:09,040 --> 00:04:10,910 ki, həqiqətən belə pixelated deyil. 114 00:04:10,910 --> 00:04:14,510 Amma yakınlaştırma saxlamaq əgər orada onun göz pis oğlan deyil. 115 00:04:14,510 --> 00:04:16,600 Kimi bütün məlumat olduq. 116 00:04:16,600 --> 00:04:18,920 Siz yarada bilməz heç bir şey həyata məlumat. 117 00:04:18,920 --> 00:04:20,790 Yalnız məhdud var orada bit sayı. 118 00:04:20,790 --> 00:04:22,873 >> Problem Set 4, belə Siz imkanı var 119 00:04:22,873 --> 00:04:24,580 Dünyanın bu cür oynamaq. 120 00:04:24,580 --> 00:04:27,610 Problem Set 4, siz araşdırmaq lazımdır qrafika, və Suclari dünya, 121 00:04:27,610 --> 00:04:30,870 və həqiqətən kodu yazmaq ki, itirilmiş images bərpa. 122 00:04:30,870 --> 00:04:33,510 Siz kod yazmaq lazımdır ki, mövcud images manipulates 123 00:04:33,510 --> 00:04:36,120 və nəticədə nə anlamaq başlıq altında gedir. 124 00:04:36,120 --> 00:04:38,540 >> Və bu, bu, həqiqətən var, çıxır bütün mürəkkəb deyil. 125 00:04:38,540 --> 00:04:41,320 Məsələn, əgər biz istədi bir smiley face burada təmsil 126 00:04:41,320 --> 00:04:44,160 bu qara piksel ilə, və ya bu qara nöqtələr, 127 00:04:44,160 --> 00:04:47,230 yaxşı, biz sadəcə təmsil edə bilər onlara həqiqətən bitmap. 128 00:04:47,230 --> 00:04:50,040 Əgər Əgər ki eşitmiş ifadə bitmap, bəlkə 129 00:04:50,040 --> 00:04:52,330 indi bir etmək üçün başlayır az daha mənada bu gün. 130 00:04:52,330 --> 00:04:53,580 >> Biz artıq bir az nə. 131 00:04:53,580 --> 00:04:54,160 Bu 0 və ya 1 var. 132 00:04:54,160 --> 00:04:56,201 Və bir xəritə yalnız bir şey deyil bir kağız parçası kimi 133 00:04:56,201 --> 00:04:59,180 ki, istiqamətləri verir və var bəlkə x və y koordinatları bir grid. 134 00:04:59,180 --> 00:05:00,540 Belə ki, burada bir bitmap edir. 135 00:05:00,540 --> 00:05:03,680 Bu bit bir xəritə var qovuşdurmağımız 1 yəqin deyil 136 00:05:03,680 --> 00:05:07,857 ağ pixel təmsil gedir, və 0 qara pixel təmsil edir. 137 00:05:07,857 --> 00:05:09,440 Amma biz, əlbəttə ki, ətrafında flip bilər. 138 00:05:09,440 --> 00:05:11,648 Bu həqiqətən belə yoxdur biz ardıcıl etdiyiniz kimi uzun. 139 00:05:11,648 --> 00:05:15,570 Və burada daxili ikili, necə kompüter yaddaş, və ya hətta daxili 140 00:05:15,570 --> 00:05:18,160 sabit bir fayl drive-- saxlamaq bilər 141 00:05:18,160 --> 00:05:20,240 smiley face şəkillər sadə. 142 00:05:20,240 --> 00:05:23,990 Amma biz nə var, əlbəttə, Bu şəkil yoxdur? 143 00:05:23,990 --> 00:05:24,610 Color, sağ? 144 00:05:24,610 --> 00:05:28,220 Bu aydın növbəti addım və ya genişləndirilməsi rəng ilə bu yaxşılaşdırılması üçün. 145 00:05:28,220 --> 00:05:32,230 Belə ki, təəssüf ki, yalnız bir ilə bit, 0 və ya 1, biz rəng təmsil edə bilər. 146 00:05:32,230 --> 00:05:36,100 Ki, qırmızı və ya mavi, və ya bilər qara, ya ağ və ya yaşıl və ya çəhrayı, 147 00:05:36,100 --> 00:05:37,420 ya rəng hər hansı bir cüt. 148 00:05:37,420 --> 00:05:40,860 Amma sadəlik naminə alacağıq yalnız qara və ağ daşımır. 149 00:05:40,860 --> 00:05:45,930 >> Belə ki, məntiqi, biz əgər ehtiyac nə biz bir resim rəng həyata keçirmək istəyirsiniz? 150 00:05:45,930 --> 00:05:49,080 Biz nə etmək lazımdır? 151 00:05:49,080 --> 00:05:51,900 Burada məhdudlaşdıran amil əgər kimi ki, bir bit ilə yalnız bilərsiniz edir 152 00:05:51,900 --> 00:05:55,977 iki dövlət, 0 və ya 1, ağ təmsil və ya qara, nə etmək istəyirsiniz? 153 00:05:55,977 --> 00:05:56,810 Auditoriya: Daha data. 154 00:05:56,810 --> 00:05:58,813 DAVID J. MALAN: Daha bit, Bəli daha çox məlumat, daha çox bit. 155 00:05:58,813 --> 00:06:01,440 Və həqiqətən, məhz necə rəngli görünüşlər təmsil olunur. 156 00:06:01,440 --> 00:06:05,120 Bir az istifadə daha çox bir 0 və ya hər pixel üçün 1, hər dot, 157 00:06:05,120 --> 00:06:06,170 Siz yalnız çox istifadə edin. 158 00:06:06,170 --> 00:06:09,660 Bəlkə, bəlkə, daha çox, 8 istifadə Problem Set, həqiqətən 24 istifadə və 159 00:06:09,660 --> 00:06:13,300 4, bir fayl ilə oynayacaq adətən 24 bit istifadə format. 160 00:06:13,300 --> 00:06:15,430 >> Lakin sizin əksəriyyətiniz yəqin ki, JPEGs ilə tanış. 161 00:06:15,430 --> 00:06:17,460 Əgər qəbul etdik Əgər Telefonunuzda bir şəkil, 162 00:06:17,460 --> 00:06:20,360 və ya daşıyanlar və ya bir şey göründüyü Facebook, və ya Flickr, hər hansı bir sayı 163 00:06:20,360 --> 00:06:24,882 foto-based web, siz var yəqin ki, əvvəl bir JPEG image görüldü. 164 00:06:24,882 --> 00:06:27,840 Və bu faylı çıxır format biz pset 4 istifadə etmək olacaq 165 00:06:27,840 --> 00:06:30,340 vasitəsi siz olacaq images bərpa etmək 166 00:06:30,340 --> 00:06:35,160 Mən təsadüfən bir silindi etdik ki, kamera bad yaddaş kartı, 167 00:06:35,160 --> 00:06:35,800 Siz əgər. 168 00:06:35,800 --> 00:06:38,490 >> Və bu çıxır ki, baxmayaraq ki, JPEG olduqca sophisticated-- deyil 169 00:06:38,490 --> 00:06:40,906 Bu daha çox inkişaf etmiş var qara və ağ nöqtələr çox 170 00:06:40,906 --> 00:06:44,480 var, çünki biz bir an əvvəl gördüm həqiqətən xülya alqoritmlər ki 171 00:06:44,480 --> 00:06:47,410 belə ki, JPEG kompres üçün istifadə olunur Siz həqiqətən gözəl ola bilər ki, 172 00:06:47,410 --> 00:06:49,832 keyfiyyətli şəkil lakin istifadə nisbətən az bit. 173 00:06:49,832 --> 00:06:51,790 Və biz geri gəlmək lazımdır uzun əvvəl sıxılma. 174 00:06:51,790 --> 00:06:56,280 Bu ilk çıxır ki, bir JPEG image-- üç bytes 175 00:06:56,280 --> 00:07:02,750 olursa olsun bir fotoşəkil qəbul etdiyiniz nə of-- dəyərlər 255, 216, 255 var. 176 00:07:02,750 --> 00:07:05,990 >> Başqa sözlə, əgər yalnız bit ki, model görmək, 177 00:07:05,990 --> 00:07:09,180 üç burada təmsil bytes, və ya 24 bit, cəmi 178 00:07:09,180 --> 00:07:13,810 yüksək ehtimalı ilə ki, nəticə çıxarmaq olar Bu ilk üç onu axtarır 179 00:07:13,810 --> 00:07:15,230 bir JPEG bytes. 180 00:07:15,230 --> 00:07:18,040 Bu nə məlum var edir bir JPEG imzası kimi. 181 00:07:18,040 --> 00:07:20,540 Fayl formatları bir çox başlamaq üçün var edirlər həyata 182 00:07:20,540 --> 00:07:23,735 0s və 1s müəyyən nümunələri ilə, ki, Windows və Mac OS və iOS, belə ki, 183 00:07:23,735 --> 00:07:28,272 və Android bilmək fayl nə cür sözdə fayl əlavə var 184 00:07:28,272 --> 00:07:29,730 uzadılması faylları bir çox var. 185 00:07:29,730 --> 00:07:32,590 Siz .jpg varsa, ki Kompüter üçün başqa bir ipucu. 186 00:07:32,590 --> 00:07:35,310 >> Belə ki, indi bu baxmaq edək daha texniki bir az. 187 00:07:35,310 --> 00:07:37,390 Biz decimal bilirik Sistem 9 0. 188 00:07:37,390 --> 00:07:38,740 Biz ikili 0 və 1 bilirik. 189 00:07:38,740 --> 00:07:41,842 Və pset geri düşünüyorsanız 0, biz, siz güləşmək idi 190 00:07:41,842 --> 00:07:43,800 bir az bir şey hexadecimal adlı, 191 00:07:43,800 --> 00:07:47,320 16 rəqəm olduğu, əvəzinə 10 və ya əvəzinə 2. 192 00:07:47,320 --> 00:07:50,405 Və o rəqəm, Konvensiya ilə, sonra 9 vasitəsilə 0 var 193 00:07:50,405 --> 00:07:55,040 f nə təmsil f vasitəsilə yalnız bir sürətli ağlı başında olma kimi bu sayı, 194 00:07:55,040 --> 00:07:56,640 yoxlamaq? 195 00:07:56,640 --> 00:07:57,610 Belə ki, 15. 196 00:07:57,610 --> 00:08:01,390 Və sadəcə, 10 təmsil etməlidir Mən təqdim etdik sifariş xarakteri. 197 00:08:01,390 --> 00:08:04,350 Bu, yalnız bir ixtiyari konvensiya var lakin kifayət qədər standart var. 198 00:08:04,350 --> 00:08:06,870 >> Bu model baxmaq Belə ki üç edək bayt 199 00:08:06,870 --> 00:08:09,620 yalnız baxmaq başlayır necə uyğun bir şəkildə 200 00:08:09,620 --> 00:08:12,450 ümumiyyətlə kompüter alimləri baxmaq və faylları haqqında düşünürəm. 201 00:08:12,450 --> 00:08:15,580 Siz əlbəttə ki, haqqında düşünmək olar 0s faylları, və 1s və decimal, 202 00:08:15,580 --> 00:08:19,340 lakin əslində, biz ikili istifadə edirlər və ya daha çox adətən hexadecimal-- 203 00:08:19,340 --> 00:08:20,760 geri pset 0. 204 00:08:20,760 --> 00:08:25,857 Belə ki, mənə təklif edək ki, 255, 216, və 255 0s və 1s yalnız bu nümunələrindəndir. 205 00:08:25,857 --> 00:08:28,440 Və bu yoxlamaq edə bilərsiniz Həftə 0 riyaziyyat etmək istəyirəm. 206 00:08:28,440 --> 00:08:30,810 Amma indi üçün, yalnız güman Bu, həqiqətən doğru deyil. 207 00:08:30,810 --> 00:08:33,850 Mən yalnız üç decimal yenidən etdik üç ikili dəyərlər nömrələri. 208 00:08:33,850 --> 00:08:36,100 İndi mən nə gedirəm edir yalnız bir ağ boşluq əlavə, 209 00:08:36,100 --> 00:08:37,266 yalnız okunabilirlik xatirinə. 210 00:08:37,266 --> 00:08:39,940 Və bildiriş, mən yalnız gedirəm şeyi ayrı hərəkət etmək. 211 00:08:39,940 --> 00:08:43,090 Belə ki, əvvəl, sonra, əvvəl, sonra. 212 00:08:43,090 --> 00:08:46,180 Mən digər maraqlı bir şey edirəm yalnız belə şeyi yayılması çox 213 00:08:46,180 --> 00:08:50,380 ki, bildiriş səkkiz hər set bit dörd bit iki dəst var. 214 00:08:50,380 --> 00:08:54,920 Bu hexadecimal çünki faydalıdır xüsusilə dəbli 215 00:08:54,920 --> 00:09:00,930 çünki hər bir hexadecimal rəqəmli 0 vasitəsilə f, və ya daha çox xüsusi 0 vasitəsilə 15, 216 00:09:00,930 --> 00:09:03,430 təmsil oluna bilər məhz dörd bit ilə. 217 00:09:03,430 --> 00:09:07,960 Başqa sözlə, hexadecimal əgər yalnız 0000, bir 0 təmsil etmək istəyirəm, 218 00:09:07,960 --> 00:09:08,780 Dörd adet sıfır. 219 00:09:08,780 --> 00:09:13,997 Və 15 təmsil etmək istəyirsinizsə, dörd bit olan 1111 deyil. 220 00:09:13,997 --> 00:09:16,080 Və riyaziyyat əgər, Bu isə yer olduğu halda, 221 00:09:16,080 --> 00:09:18,210 Bu, 16'lar yer ki, Səninlə vermək olacaq 222 00:09:18,210 --> 00:09:19,960 deyil ki, olacaq sorry to--, ikili, 223 00:09:19,960 --> 00:09:23,660 15 vermək olacaq, olanları yeri, ikilər yeri, dörd ayaq və səkkizinci yer. 224 00:09:23,660 --> 00:09:26,821 Mənə ki, təklif edək sol, dörd bit set 225 00:09:26,821 --> 00:09:28,070 biz f zəng olacaq nə. 226 00:09:28,070 --> 00:09:30,110 Bu ən böyük sayı siz Dörd bit ilə təmsil edə bilər. 227 00:09:30,110 --> 00:09:33,300 Və biz artıq hexadecimal bilirik, f hexadecimal ən böyük rəqəmdir. 228 00:09:33,300 --> 00:09:36,020 Biz orada bir f var iki orada daha çox. 229 00:09:36,020 --> 00:09:38,980 Və indi üçün, yalnız iman etmək Mən riyaziyyat hüququ etmiş olduğumuz 230 00:09:38,980 --> 00:09:41,890 ki, sol yarım bu bit, 1101, 231 00:09:41,890 --> 00:09:43,980 hexadecimal d eyni şeydir. 232 00:09:43,980 --> 00:09:46,490 Və sağ, 1000, yalnız 8 var. 233 00:09:46,490 --> 00:09:48,140 >> Və asan ki, bir sağ, görmək üçün? 234 00:09:48,140 --> 00:09:51,670 8 represents-- doğru ki, səkkizinci yerdə altında. 235 00:09:51,670 --> 00:09:56,040 Beləliklə, biz səkkizinci sütun bir var və dörd ayaq, ikilər və ya olanları heç bir şey. 236 00:09:56,040 --> 00:09:59,830 Belə ki, indi daha çox şərti, insanlar edirlər oxşar hexadecimal rəqəm yazmaq, 237 00:09:59,830 --> 00:10:03,000 yalnız onlara birlikdə squish və sonra 0x ilə prefiks. 238 00:10:03,000 --> 00:10:05,920 Bu başqa heç bir şey deməkdir bir human-- vizual ipucu 239 00:10:05,920 --> 00:10:10,350 Burada hexadecimal dəyər, çünki gəlir başqa aydın ola bilər. 240 00:10:10,350 --> 00:10:13,629 >> Hansı ki, nəticədə, demək deyil adet sıfır və olanları model 241 00:10:13,629 --> 00:10:16,170 və ya hexadecimal model rəqəm equivalently sen ki, 242 00:10:16,170 --> 00:10:18,990 axtarır başlamaq üçün gedir Problem Set 4 şeylərdir deyil 243 00:10:18,990 --> 00:10:22,120 və Problem Set 4 spec gəzmək olacaq daha detail-- bu vasitəsilə 244 00:10:22,120 --> 00:10:25,344 lakin oynamasından sort kimi həyata Bu, ilk baxışda ola bilər 245 00:10:25,344 --> 00:10:27,010 Bu bir çox görən başlamaq olacaq. 246 00:10:27,010 --> 00:10:30,320 Və əslində, hətta gdb, ayıklama biz bazar ertəsi təqdim 247 00:10:30,320 --> 00:10:35,440 və Dan pset 3, gedir təqdim tez-tez hexadecimal dəyərləri göstərmək üçün 248 00:10:35,440 --> 00:10:39,910 yalnız onlar daha çox olur, çünki bu və ya ikili daha şərti 249 00:10:39,910 --> 00:10:41,157 kompüter dünyada. 250 00:10:41,157 --> 00:10:42,490 İndi kontekstində bu qoymaq bildirin. 251 00:10:42,490 --> 00:10:48,040 Bir çox bu xatırlayıram bilər of nə gəldi ki, burada şəkil? 252 00:10:48,040 --> 00:10:51,240 Vista, belə ki, hətta daha əvvəl ki, Windows XP bu debüt etdi. 253 00:10:51,240 --> 00:10:52,620 Belə ki, bu bir gözəl mənzərə var. 254 00:10:52,620 --> 00:10:55,940 Və əslində, online-- ətrafında soxmaq əgər Mən bir Wikipedia article var ki, 255 00:10:55,940 --> 00:11:00,110 orada kimsə çox qəribə çıxdı aşkar dünyada bu yer qurmaq 256 00:11:00,110 --> 00:11:02,240 onun kamera dəqiq sağ place-- 257 00:11:02,240 --> 00:11:06,510 və bu gün like-- görünür, ancaq Bu eyni qəbulu var. 258 00:11:06,510 --> 00:11:10,060 Bu şəkil, baxmayaraq ki, bir fayl var format adlı bitmap, b-m-p. 259 00:11:10,060 --> 00:11:12,910 Və biz bir super almaq olacaq o deməkdir ki, nə tez nəzər. 260 00:11:12,910 --> 00:11:17,770 >> Amma bitmap yalnız bir müxtəlif yolu təmsil images hələ piksel istifadə 261 00:11:17,770 --> 00:11:19,580 0s və 1s, nəticədə. 262 00:11:19,580 --> 00:11:23,282 Amma tez baxışda, o daha maraqlı imza 263 00:11:23,282 --> 00:11:24,490 fayl başında. 264 00:11:24,490 --> 00:11:26,670 Bu, yalnız üç deyil bytes, daha var 265 00:11:26,670 --> 00:11:30,770 bayt nümunələri bütün dəstə ki, mənası müəyyən edirlər. 266 00:11:30,770 --> 00:11:34,490 Məsələn, bir yerdə bir bitmap image ilk bir neçə bayt 267 00:11:34,490 --> 00:11:37,440 ölçüsü olacaq image image eni, 268 00:11:37,440 --> 00:11:40,390 image hündürlüyü, belə ki, faydalı metadata, siz əgər. 269 00:11:40,390 --> 00:11:43,940 Faydalı məlumatlar Photoshop və ya hər hansı qrafik istifadə etdiyiniz proqram 270 00:11:43,940 --> 00:11:45,180 həqiqətən qayğı bilər. 271 00:11:45,180 --> 00:11:47,170 >> Bu barədə daha çox Problem 4 Set, lakin bu 272 00:11:47,170 --> 00:11:49,220 ki, yalnız Günün sonunda 273 00:11:49,220 --> 00:11:52,390 Siz istifadə etdiyiniz bütün fayl formatları il ərzində Microsoft Word faylları, 274 00:11:52,390 --> 00:11:55,820 Numbers faylları, Excel faylları, fayl formatları hər hansı bir sayı 275 00:11:55,820 --> 00:11:57,770 ki, bir ola bilər məlum fayl uzantısı 276 00:11:57,770 --> 00:12:00,130 başlıq altında yalnız 0s və 1s var. 277 00:12:00,130 --> 00:12:02,970 Və insanlar qərarına gəldik konvensiyalar nə, 278 00:12:02,970 --> 00:12:08,340 nə 0s və 1s nümunələri təmsil Word, Excel fayl qarşı fayl 279 00:12:08,340 --> 00:12:10,322 digər fayl formatları bir sıra qarşı. 280 00:12:10,322 --> 00:12:12,780 Pset 4 Belə ki, bir lazımdır imkan ilə oynamaq. 281 00:12:12,780 --> 00:12:14,405 >> Amma nə bir struct var demək. 282 00:12:14,405 --> 00:12:18,012 Bu indi həqiqətən gözəl segue yalnız bir neçə var daxil C, 283 00:12:18,012 --> 00:12:20,220 əlavə xüsusiyyətləri ki, biz hələ baxdı yoxdur. 284 00:12:20,220 --> 00:12:24,230 Bu olduqca kiçik dil və biri C gözəl xüsusiyyətləri bir struct edir. 285 00:12:24,230 --> 00:12:27,300 Məsələn, əgər edək represent-- istədi 286 00:12:27,300 --> 00:12:33,690 Bir dəyişən etmək istəyirdi deyirlər ki, bəzi proqramda bir tələbə təmsil edir. 287 00:12:33,690 --> 00:12:37,330 Bəlkə bir kurs yazılı idi qeydiyyat proqram və ya əsas alış-veriş 288 00:12:37,330 --> 00:12:38,870 alət, və ya kimi bir şey. 289 00:12:38,870 --> 00:12:42,922 Bağlı məlumatların ədəd hansılardır ağla gələn bir tələbə üçün necə? 290 00:12:42,922 --> 00:12:44,880 Tələbə kimi dəyərlər nə ilə təmsil? 291 00:12:44,880 --> 00:12:45,732 Evet? 292 00:12:45,732 --> 00:12:46,940 Siz bir tələbə kimi bir ad var. 293 00:12:46,940 --> 00:12:48,900 Tipik tələbə başqa nə var? 294 00:12:48,900 --> 00:12:49,320 >> Auditoriya: [işitilemez] 295 00:12:49,320 --> 00:12:50,200 >> DAVID J. MALAN: Belə ki, sorry. 296 00:12:50,200 --> 00:12:50,660 >> Auditoriya: Age. 297 00:12:50,660 --> 00:12:52,980 >> DAVID J. MALAN: An yaş və ya ad equivalently, yep. 298 00:12:52,980 --> 00:12:53,557 Başqa? 299 00:12:53,557 --> 00:12:54,390 Auditoriya: ID sayı? 300 00:12:54,390 --> 00:12:57,460 DAVID J. MALAN: Bəlkə belə bir şəxsiyyət nömrəsi, telefon nömrəsi, bəlkə bir yurt və ya ev, 301 00:12:57,460 --> 00:12:58,670 kollec, və ya kimi bir şey və ya. 302 00:12:58,670 --> 00:13:01,820 Məlumatların ədəd hər hansı bir sayı ki, Siz kontaktlar siyahısında ola bilər 303 00:13:01,820 --> 00:13:03,890 tələbə müəyyən edə bilər nə. 304 00:13:03,890 --> 00:13:08,490 Biz kodu, bu etmək istəyirdi Belə ki, Biz bu kimi sadə bir şey ola bilər. 305 00:13:08,490 --> 00:13:15,670 Biz ki, bir proqram ola bilər var, demək int əsas (void) bildirin. 306 00:13:15,670 --> 00:13:18,920 Mən bir təmsil etmək istəyirsinizsə, Mən, məsələn, ola bilər, tələbə, 307 00:13:18,920 --> 00:13:24,330 ki, tələbə adı adlı simli, ki tələbə üçün yurt adlı simli, 308 00:13:24,330 --> 00:13:26,900 bəlkə bir int ki tələbə üçün ID çağırıb. 309 00:13:26,900 --> 00:13:30,840 Mən string istifadə edirəm, çünki mən cs50.h. geri getmək və qoymaq lazımdır 310 00:13:30,840 --> 00:13:33,300 Bəlkə stdio.h lazımdır gedirəm. 311 00:13:33,300 --> 00:13:38,190 Mənə preemptively o bunu bildirin və mən indi bu student.c zəng olacaq 312 00:13:38,190 --> 00:13:40,080 bu edin. 313 00:13:40,080 --> 00:13:44,206 >> İndi bir şey edə bilərsiniz bu dəyişənlərin. 314 00:13:44,206 --> 00:13:46,830 Və biz yalnız yazmaq olacaq ki, yalançı kodu bir comment kimi, 315 00:13:46,830 --> 00:13:48,829 maraqlı deyil, çünki biz indi üçün nə. 316 00:13:48,829 --> 00:13:51,242 OK, belə ki, bu bir proqramdır ki, elə bir tələbə saklar. 317 00:13:51,242 --> 00:13:53,450 Mən əgər nə istəyirsiniz mən iki şagird saxlamaq istəyirsiniz? 318 00:13:53,450 --> 00:13:55,991 Belə ki, mənim ilk instinkt gedir bir dəqiqə gözləyin, bütün sağ olmaq, 319 00:13:55,991 --> 00:14:01,920 Mən bir tələbə varsa, niyə mən deyil yalnız simli adı 2 string yurt 2 yoxdur, 320 00:14:01,920 --> 00:14:04,190 int id2. 321 00:14:04,190 --> 00:14:06,540 Və biz getdi etdik Bu yolun əvvəl aşağı 322 00:14:06,540 --> 00:14:10,890 və görünür nə üçün həll nə idi bir hackish surəti pastası cür 323 00:14:10,890 --> 00:14:11,555 burada iş? 324 00:14:11,555 --> 00:14:12,346 Auditoriya: bir sıra. 325 00:14:12,346 --> 00:14:13,830 DAVID J. MALAN: Bəli, biz bir sıra istifadə edə bilər. 326 00:14:13,830 --> 00:14:15,620 Right bu çox tez yöndəmsiz olur. 327 00:14:15,620 --> 00:14:18,453 Siz özbaşına düzmək lazımdır bu dəyişənlərin bütün adlandırma başlayın. 328 00:14:18,453 --> 00:14:22,190 Və insan, saxlamaq lazımdır OK name2 uyğundur izlemek 329 00:14:22,190 --> 00:14:25,060 dorm2 ilə id2 ilə uyğundur. 330 00:14:25,060 --> 00:14:26,200 Bu, sadəcə bir mess olur. 331 00:14:26,200 --> 00:14:29,350 Belə ki, bir çox asandır bir neçə həftə əvvəl geri, 332 00:14:29,350 --> 00:14:34,300 yalnız adlı simli adları olan və bəlkə bizə bu üç verir. 333 00:14:34,300 --> 00:14:36,940 Və sonra bəlkə biz string yurdda və var 334 00:14:36,940 --> 00:14:41,900 o üç və ya daimi ilə, kimlikleri int və həmin üç var. 335 00:14:41,900 --> 00:14:45,250 Lakin hətta indi bu hiss bir az sloppy, doğru. 336 00:14:45,250 --> 00:14:49,440 Biz hələ tələbə və söhbət edirik Mən, həqiqətən, aşağı səviyyədə yaşayış alıram 337 00:14:49,440 --> 00:14:50,470 həyata keçirilməsi ətraflı. 338 00:14:50,470 --> 00:14:52,790 tələbə adı və bir yurt və ID edir. 339 00:14:52,790 --> 00:14:59,814 >> Niyə yalnız bir dəyişən elan edə bilməz tələbə adlanır və bu s zəng. 340 00:14:59,814 --> 00:15:02,230 Mən bir tələbə istəyirsinizsə, niyə yalnız t demirik. 341 00:15:02,230 --> 00:15:05,260 Və ya bütün dəstə istəyirsinizsə tələbə, niyə yalnız deyil 342 00:15:05,260 --> 00:15:09,740 Mən bütün sinif var demək tələbələr, və onların üç var. 343 00:15:09,740 --> 00:15:12,470 Başqa sözlə, niyə gələ bilər adlı öz data növü ilə qədər 344 00:15:12,470 --> 00:15:15,641 Şagirdlər, içərisində olan var bir ad, bir ID bir yurt var, 345 00:15:15,641 --> 00:15:16,890 digər sahələrdə hər hansı bir sayı. 346 00:15:16,890 --> 00:15:19,030 Və bu çıxır məhz edə bilərsiniz. 347 00:15:19,030 --> 00:15:21,850 >> Belə ki, C struct adlanan bu xüsusiyyət var. 348 00:15:21,850 --> 00:15:24,700 Ki, bir dil xüsusiyyət var ki, Bizə məhz bunu etməyə imkan verir. 349 00:15:24,700 --> 00:15:28,370 Mən irəli getmək üçün gedirəm və structs.h açmaq 350 00:15:28,370 --> 00:15:32,299 biz görmək olacaq harada tələbə anlayışına aşağıdakı. 351 00:15:32,299 --> 00:15:35,215 Belə çıxır - və bu bir daha var ID cəlb bir çox sadə 352 00:15:35,215 --> 00:15:36,080 bir an əvvəl. 353 00:15:36,080 --> 00:15:39,120 Siz ilə gəlmək istəyirsinizsə Sizin ev data type, 354 00:15:39,120 --> 00:15:42,750 və int əlavə və char və mövcud və bütün bu başqaları sal 355 00:15:42,750 --> 00:15:45,810 Siz sözün bunu edə bilərsiniz typedef struct yazı, 356 00:15:45,810 --> 00:15:47,880 sonra bəzi qıvrım aşırma, olan daxilində 357 00:15:47,880 --> 00:15:51,460 Istədiyiniz dəyişənlərin siyahısı Bu yeni xüsusi data şərik 358 00:15:51,460 --> 00:15:55,670 bir adı və bir yurt kimi yazın, və sonra qıvrım aşırma sonra 359 00:15:55,670 --> 00:15:57,860 Yeni data növü bir ad verin. 360 00:15:57,860 --> 00:15:59,220 Belə ki, məsələn, tələbə. 361 00:15:59,220 --> 00:16:03,247 >> Və indi bu barədə gözəl ki, biz müvafiq kodu baxsaq, 362 00:16:03,247 --> 00:16:05,080 ilk konqres, bütün bu qoymaq üçün 363 00:16:05,080 --> 00:16:08,230 bir fayl deyilən bir şey dot saat, biz bir header file, 364 00:16:08,230 --> 00:16:09,780 çox özümüzü istifadə edərək başladı. 365 00:16:09,780 --> 00:16:12,120 Amma biz başlamaq olacaq İndi bir qədər istifadə. 366 00:16:12,120 --> 00:16:18,650 Və biz bu nə edə bilər, nəticədə, kodu bu bir neçə xətləri 367 00:16:18,650 --> 00:16:22,130 dəqiq bəyan edir data type, tələbə. 368 00:16:22,130 --> 00:16:23,230 İndi onu istifadə edək. 369 00:16:23,230 --> 00:16:27,274 >> İndi getmək üçün gedirəm bir fayl structs1.c çağırıb. 370 00:16:27,274 --> 00:16:29,440 Və bir nəzər edək Burada bir neçə xüsusiyyətləri. 371 00:16:29,440 --> 00:16:32,250 Belə ki, burada stuff deyil əsasən tanış, və biz lazımdır 372 00:16:32,250 --> 00:16:35,040 nə deyil qayıda yalnız bir anda tanış. 373 00:16:35,040 --> 00:16:39,880 Əlbəttə, bu mənim öz daxil edir eləcə də yeni header file, 374 00:16:39,880 --> 00:16:42,580 pset 3 istisna olmaqla, Xatırladaq ki, biz helpers.h var. 375 00:16:42,580 --> 00:16:45,150 Belə ki, # daxildir helpers.h xatırlayıram bilər. 376 00:16:45,150 --> 00:16:49,381 >> Niyə olsa quotes istifadə edirəm əvəzinə bucaqlı mötərizələr? 377 00:16:49,381 --> 00:16:50,630 Mən onların arasında seçim edə bilərəm? 378 00:16:50,630 --> 00:16:52,310 Demək olar ki, həmişə görünür bucaqlı Mötərizədə istifadə etmək. 379 00:16:52,310 --> 00:16:55,040 Və sonra, bir bütün qəflətən line altı Mən ikiqat quotes istifadə edirəm. 380 00:16:55,040 --> 00:16:55,860 Nə ola bilər? 381 00:16:55,860 --> 00:16:56,700 Evet? 382 00:16:56,700 --> 00:16:57,725 >> Auditoriya: [işitilemez] 383 00:16:57,725 --> 00:16:59,350 DAVID J. MALAN: Bu, nə faktiki var? 384 00:16:59,350 --> 00:17:00,559 Auditoriya: Ki, IDE var. 385 00:17:00,559 --> 00:17:02,475 DAVID J. MALAN: Bəli, ki, mənim faktiki IDE var. 386 00:17:02,475 --> 00:17:05,690 Və çünki IDE dayanmaq deyil bildirin ki, yalnız mən istifadə edirəm bir aracıdır. 387 00:17:05,690 --> 00:17:08,119 Mənim cari var directory, xüsusi. 388 00:17:08,119 --> 00:17:11,647 Belə ki, structs.h öz fayl IDE yüklü deyil, 389 00:17:11,647 --> 00:17:14,480 əməliyyat sistemi özü, əksinə mənim cari kataloq var. 390 00:17:14,480 --> 00:17:16,910 Belə ki, Konvensiyanın istəyirsinizsə deyil Öz header fayl daxil, 391 00:17:16,910 --> 00:17:18,200 Yalnız ikiqat quotes istifadə edin. 392 00:17:18,200 --> 00:17:23,290 >> Biz bu şey zəng nə line 8, ümumiyyətlə? 393 00:17:23,290 --> 00:17:25,200 Bu nədir? 394 00:17:25,200 --> 00:17:28,220 # müəyyən bir şey. 395 00:17:28,220 --> 00:17:31,040 Bu hüquq, sabitləri təmsil? 396 00:17:31,040 --> 00:17:33,140 Bir istəyirsinizsə Proqram dəyəri 397 00:17:33,140 --> 00:17:35,110 Bir bütün istifadə dəfə dəstə, bu 398 00:17:35,110 --> 00:17:39,330 onu amil Konvensiyanın yaxşı hash simvolu ilə, bəyan 399 00:17:39,330 --> 00:17:43,340 bütün konvensiya, sonra müəyyən bu deyil, baxmayaraq word-- böyük və 400 00:17:43,340 --> 00:17:45,320 ciddi zəruri, lakin insan konvensiya var 401 00:17:45,320 --> 00:17:47,210 sabitləri kapitallaşdırmaq onlar sıçramaq ki 402 00:17:47,210 --> 00:17:50,380 Siz yer visually-- və sonra istədiyiniz dəyər olmaq 403 00:17:50,380 --> 00:17:52,250 ki, daimi adı ekvivalent. 404 00:17:52,250 --> 00:17:56,110 No nöqtəli vergül, sadəcə orada model edin. 405 00:17:56,110 --> 00:17:57,770 >> Belə ki, nə bu faktiki kodu edirəm. 406 00:17:57,770 --> 00:18:00,660 Belə ki, bir nəzər salaq Burada əsas proqram. 407 00:18:00,660 --> 00:18:04,080 Line 12 Çünki structs.h daxil, 408 00:18:04,080 --> 00:18:06,492 Mən indi magically mənim silinmə yeni data növü. 409 00:18:06,492 --> 00:18:09,200 Mən yalnız int çıxışı yoxdur və char və float, və simli, 410 00:18:09,200 --> 00:18:10,060 və mavi və s. 411 00:18:10,060 --> 00:18:12,470 İndi etmək imkanı var tələbə data type. 412 00:18:12,470 --> 00:18:17,740 Line 12, mən iki birləşən alıram So , bir xüsusi data növü və iki ideas-- 413 00:18:17,740 --> 00:18:18,940 bir sıra istifadə edərək. 414 00:18:18,940 --> 00:18:21,700 Və bu proqram əgər Mən, həqiqətən, dəstək istəyirəm 415 00:18:21,700 --> 00:18:24,320 Üç müxtəlif tələbələr mənim proqram, mən 416 00:18:24,320 --> 00:18:30,480 Mənə bir dəyişən vermək demək sadəcə bilər hər biri adlı tələbələr, 417 00:18:30,480 --> 00:18:32,970 növü tələbə olan Mənim xüsusi data növüdür. 418 00:18:32,970 --> 00:18:35,890 Və, xüsusilə, mənə vermək Mənim array həmin üç. 419 00:18:35,890 --> 00:18:37,750 >> Belə ki, indi biz bu proqramı nə etməliyəm? 420 00:18:37,750 --> 00:18:40,670 Burada yalnız bir loop iterating üçün var ki, çünki, 3 0 421 00:18:40,670 --> 00:18:42,110 tələbə dəyəri nə. 422 00:18:42,110 --> 00:18:44,420 Mən yalnız istifadəçi isteyen alıram Mənə tələbə adını verir. 423 00:18:44,420 --> 00:18:48,090 Və sonra line 17, biz əsasən tanış xətt var. 424 00:18:48,090 --> 00:18:50,370 Bizim köhnə dostumuz var Sağ GetString. 425 00:18:50,370 --> 00:18:52,345 Sintaksis və nə parça , yəqin yeni 426 00:18:52,345 --> 00:18:55,130 Əvvəl C proqramlaşdırılmış heç vaxt varsa, və structs istifadə heç vaxt? 427 00:18:55,130 --> 00:18:55,510 Evet? 428 00:18:55,510 --> 00:18:56,417 >> Auditoriya: .Adı. 429 00:18:56,417 --> 00:18:57,500 DAVID J. MALAN: .Adı. 430 00:18:57,500 --> 00:19:01,220 Amma bu, bir sıçrayış çox deyil İndi tələbələr i bracket, çünki 431 00:19:01,220 --> 00:19:02,590 siz i-ci tələbə verir. 432 00:19:02,590 --> 00:19:04,730 Və dalış istəyirsinizsə ki, strukturu daxilində, 433 00:19:04,730 --> 00:19:09,490 Siz yalnız bir müddət istifadə və sonra daxili dəyişən adı, 434 00:19:09,490 --> 00:19:11,900 və ya daxili əmlak Siz əldə etmək istəyirəm. 435 00:19:11,900 --> 00:19:14,816 Eynilə sonra, mən sonra təklif, əgər istifadəçi mənə tələbə yurd vermək, 436 00:19:14,816 --> 00:19:18,390 Siz eyni ki, bilərsiniz daxili yurt dəyişən string 437 00:19:18,390 --> 00:19:19,940 tələbə strukturunun. 438 00:19:19,940 --> 00:19:21,410 >> İndi hər şeyi bir az xülya almaq. 439 00:19:21,410 --> 00:19:24,420 Bu baxmaq üçün gedir bəlkə bir çox olduqca tezliklə. 440 00:19:24,420 --> 00:19:27,970 Amma pset bu qədər daha çox olacaq 4, belə ki, indi yalnız nəzər edək. 441 00:19:27,970 --> 00:19:33,364 Bu xətt 23 vasitəsilə çıxır ki, 38, mən bəlkə edirəm nə düşünürsünüz? 442 00:19:33,364 --> 00:19:35,530 Mən şərh xaric etdik Bu gün, lakin versiyası 443 00:19:35,530 --> 00:19:38,660 üçün online kod reference bütün yapılan yorumlar. 444 00:19:38,660 --> 00:19:40,171 Mən bunu nə görünür? 445 00:19:40,171 --> 00:19:42,530 >> Auditoriya: bütün fayl Saving istifadəçi daxil məlumat. 446 00:19:42,530 --> 00:19:44,530 >> DAVID J. MALAN: Bəli, məhz, bu yeni bir yoldur 447 00:19:44,530 --> 00:19:46,370 biz iki gördükdə ki, C başqa bir xüsusiyyət, 448 00:19:46,370 --> 00:19:48,700 vasitəsi Mən öz faylları yarada. 449 00:19:48,700 --> 00:19:51,580 Bu günə qədər, demək olar ki, hər bir proqram yazdıq Siz vətəndaşlığı olmayan edir. 450 00:19:51,580 --> 00:19:53,334 Kimi tezliklə çalışan həyata kimi, ki, var. 451 00:19:53,334 --> 00:19:55,000 Heç bir yaddaş və ya onun xatirə var. 452 00:19:55,000 --> 00:19:56,110 Xilas heç bir fayl var. 453 00:19:56,110 --> 00:19:58,120 Amma istəyirsiniz əgər var daxil saxlamaq 454 00:19:58,120 --> 00:20:02,100 Bir oyun və ya bir proqram kimi, baş Bu kimi, biz bunu edə bilərsiniz çıxır. 455 00:20:02,100 --> 00:20:04,360 Və bu daha çox lazımdır pset 4 və Bölmə. 456 00:20:04,360 --> 00:20:08,661 Amma bu xətt 23 mahiyyətcə students.csv adlı bir fayl yaradır. 457 00:20:08,661 --> 00:20:10,160 Və əvvəl bu görmüşəm bilər. 458 00:20:10,160 --> 00:20:14,250 Əvvəl CS tədqiq heç etdik, hətta, CSV virgülle ayrılmış dəyişənlər var. 459 00:20:14,250 --> 00:20:19,000 Bu, çox yoxsul insanın kimi Excel fayl versiyası 460 00:20:19,000 --> 00:20:22,270 bu da açıla bilər o deməkdir ki, Excel və Apple Nömrələr, 461 00:20:22,270 --> 00:20:23,830 və satır ve sütun var. 462 00:20:23,830 --> 00:20:26,485 Amma bu xüsusi deyil Microsoft və ya Apple kimi format. 463 00:20:26,485 --> 00:20:29,840 Bu ayıran yalnız vergülləri var biz bir anda görəcəksiniz dəyərlər. 464 00:20:29,840 --> 00:20:31,010 >> Və yalnız bir tahmin edir. 465 00:20:31,010 --> 00:20:33,480 Çox xətti 23-da sonunda, mənim ikinci dəlil 466 00:20:33,480 --> 00:20:37,700 adlanan bu yeni funksiya f faylı açmaq üçün açıqdır w edir. 467 00:20:37,700 --> 00:20:39,430 W nə işarə ola bilər? 468 00:20:39,430 --> 00:20:40,022 Evet? 469 00:20:40,022 --> 00:20:41,260 >> Auditoriya: Bu fayl yazmaq imkan verir? 470 00:20:41,260 --> 00:20:42,630 >> DAVID J. MALAN: Bu imkan verir Siz fayl yazmaq. 471 00:20:42,630 --> 00:20:44,810 Belə ki, variantlar bir neçə var ki, biz burada plug bilər. 472 00:20:44,810 --> 00:20:47,184 Amma yalnız oxumaq istəyirsinizsə fayl ki, ona baxmaq 473 00:20:47,184 --> 00:20:50,010 və yaddaş onu oxumaq yalnız quote dırnağı bağlamaq "r" istifadə edin. 474 00:20:50,010 --> 00:20:53,110 Siz yazmaq istəyirsinizsə, fayl, siz "w" dırnağı bağlamaq quote istifadə edin. 475 00:20:53,110 --> 00:20:55,190 Orada da əlavə edir və digər şeyi bir neçə 476 00:20:55,190 --> 00:20:57,356 mövcud faylları dəyişdirmək istəyirsinizsə. 477 00:20:57,356 --> 00:21:00,480 İndi biz bu görən saxlamaq olacaq 24 sıralamaq üçün bir şey, biz geri gəlmək lazımdır. 478 00:21:00,480 --> 00:21:02,640 NULL, bu çıxır, var xüsusi dəyər ki, 479 00:21:02,640 --> 00:21:06,070 müəyyən funksiyaları ilə geri bilər bir şey wrong-- getdi əgər 480 00:21:06,070 --> 00:21:08,490 fayl mövcud deyil, əgər, yaddaş tökülmək olsanız, 481 00:21:08,490 --> 00:21:09,620 digər səhvlər və ya bir dəstə. 482 00:21:09,620 --> 00:21:13,470 Amma indi üçün, yalnız bu ki, güman edək yalnız şərti səhv yoxlanılması edir. 483 00:21:13,470 --> 00:21:17,090 Burada line 26, mən iterating alıram 0-dan bütün tələbələr üzərində 3. 484 00:21:17,090 --> 00:21:20,470 Və bu sort cür yeni funksiyası, fprintf, 485 00:21:20,470 --> 00:21:21,460 lakin yalnız bir tahmin edir. 486 00:21:21,460 --> 00:21:24,370 Printf yalnız çap əgər biçimlendirilmiş string, 487 00:21:24,370 --> 00:21:26,507 fprintf yəqin ki, nə deməkdir? 488 00:21:26,507 --> 00:21:27,590 Auditoriya: bir fayl yazdırın. 489 00:21:27,590 --> 00:21:29,290 DAVID J. MALAN: Print bir fayl biçimlendirilmiş string. 490 00:21:29,290 --> 00:21:31,180 Əlavə nə var f deməkdir fayl. 491 00:21:31,180 --> 00:21:36,420 Və yeni ilk dəlil olmalıdır fayl təmsil dəyişən. 492 00:21:36,420 --> 00:21:38,866 Sonra biz yalnız bir format var yalnız printf kimi string. 493 00:21:38,866 --> 00:21:40,740 Və hətta bu olsa syntax bu yalnız yeni, 494 00:21:40,740 --> 00:21:44,610 tələbə adı plug deməkdir, tələbə yurt plug-in, sonra 495 00:21:44,610 --> 00:21:47,160 fclose ilə, fayl bağlayın. 496 00:21:47,160 --> 00:21:49,730 Və sonra bu yeni lastly-- və biz bu geri gəlmək lazımdır 497 00:21:49,730 --> 00:21:53,240 Mən azad edirəm long-- əvvəl səbəblərdən tələbə 498 00:21:53,240 --> 00:21:54,860 ki, orada yuxarıda baş verib. 499 00:21:54,860 --> 00:21:56,820 Amma biz geri gəlmək lazımdır ki, long-- əvvəl 500 00:21:56,820 --> 00:21:59,820 çünki GetString nə qədər var həqiqətən başlıq altında çalışır. 501 00:21:59,820 --> 00:22:01,280 >> Belə ki, burada tez nəzər salaq. 502 00:22:01,280 --> 00:22:04,380 Mən kataloq ls yazın əgər, Mən bunu ki, qeyd 503 00:22:04,380 --> 00:22:09,360 , students.csv adlı bir fayl var yalnız orada yoxdur. 504 00:22:09,360 --> 00:22:14,965 Mən indi bu proqram tərtib Belə ki, , structs-1 olun. / Structs-1, 505 00:22:14,965 --> 00:22:20,570 Mən irəli getmək və yazın gedirəm Yale Berkeley yaşayır Andi. 506 00:22:20,570 --> 00:22:26,350 Biz Rob olacaq olan bu gün Thayer yaşayır. 507 00:22:26,350 --> 00:22:33,760 Və burada ilə gəlmək imkan , mən hesab edirəm ki, Maria, Mather edir 508 00:22:33,760 --> 00:22:35,100 əgər mən doğru xatırladım. 509 00:22:35,100 --> 00:22:36,460 >> Belə ki, heç bir şey baş görünür. 510 00:22:36,460 --> 00:22:40,680 Amma indi ls yazın əgər, students.csv var. 511 00:22:40,680 --> 00:22:43,080 Nin irəli və açıq students.csv gedək. 512 00:22:43,080 --> 00:22:46,050 Bu yenidən çox deyil yüngül fayl format. 513 00:22:46,050 --> 00:22:49,570 Amma sadəcə bir konvensiya qəbul etdik ki, mən burada iki satır ve sütun var. 514 00:22:49,570 --> 00:22:52,020 ilk sütun edir insanların adları. 515 00:22:52,020 --> 00:22:55,740 İkinci sütun tələbə deyil yurt, və ya kollec, və ya ev və ya etajer. 516 00:22:55,740 --> 00:22:57,900 Və indi bu xilas etdik daimi bir fayl. 517 00:22:57,900 --> 00:22:59,280 >> Belə ki, bütün maraqlı deyil. 518 00:22:59,280 --> 00:23:02,980 Amma bu yalnız bir step daş indi məlumat davam edə olan 519 00:23:02,980 --> 00:23:04,040 daimi. 520 00:23:04,040 --> 00:23:08,340 Belə ki, indi nə daha biz görək bu və digər xüsusiyyətləri ilə. 521 00:23:08,340 --> 00:23:10,729 Lakin ilk, hər hansı bir sualınız? 522 00:23:10,729 --> 00:23:12,145 Ki, bir çox idi ki, sürətli idi. 523 00:23:12,145 --> 00:23:16,131 Amma bir çox görəcəksiniz pset 4 daha, həm də. 524 00:23:16,131 --> 00:23:16,630 Evet? 525 00:23:16,630 --> 00:23:19,360 >> Auditoriya: bir yol var ki, fayl adları əlavə davam? 526 00:23:19,360 --> 00:23:19,880 >> DAVID J. MALAN: Yaxşı sualdır. 527 00:23:19,880 --> 00:23:21,800 Davam etmək üçün bir yolu var mı ki, fayl adları əlavə? 528 00:23:21,800 --> 00:23:22,340 Bəli. 529 00:23:22,340 --> 00:23:24,630 Və əslində, başa əgər up, faylı açılması 530 00:23:24,630 --> 00:23:26,780 Siz quote istifadə edir dırnağı bağlamaq "a" əlavə etmək üçün, 531 00:23:26,780 --> 00:23:31,090 olan yalnız yeni xətt əlavə edəcək bir yeni xətt təkrar, dəqiq. 532 00:23:31,090 --> 00:23:32,010 Yaxşı sualdır. 533 00:23:32,010 --> 00:23:32,950 Digər suallar? 534 00:23:32,950 --> 00:23:33,450 Evet? 535 00:23:33,450 --> 00:23:35,580 Auditoriya: siz qaçdı varsa proqramı yenidən indi, 536 00:23:35,580 --> 00:23:38,000 bu adları əlavə saxlamaq olardı fayl və ya yeni bir fayl açmaq olar? 537 00:23:38,000 --> 00:23:38,740 >> DAVID J. MALAN: Ah, yaxşı sual. 538 00:23:38,740 --> 00:23:41,448 Siz yenə sağ proqram qaçdı əgər İndi, bəlkə yeni adlar tipli, 539 00:23:41,448 --> 00:23:44,820 Bu fayl əlavə edəcək və ya fayl üzerine? 540 00:23:44,820 --> 00:23:47,420 Sonuncu, mən deyiləm, çünki Əlavə rejimi istifadə. 541 00:23:47,420 --> 00:23:49,930 Mən yalnız kor-koranə deyiləm, çünki yazmaq üçün faylı açılması, 542 00:23:49,930 --> 00:23:51,310 yalnız fayl üzerine olacaq. 543 00:23:51,310 --> 00:23:54,570 Beləliklə, mən, həqiqətən, əlavə nə etmək lazımdır ki, Mən, həqiqətən, uzun müddət etmək istəyirsinizsə 544 00:23:54,570 --> 00:23:55,350 verilənlər bazası. 545 00:23:55,350 --> 00:23:58,220 >> İndi CSV hətta səmimi, faydalı kimi değilseniz writing-- 546 00:23:58,220 --> 00:24:00,100 və biz nəhayət bu görürsünüz sonra zaman dövr 547 00:24:00,100 --> 00:24:01,455 digər məqsədlər üçün CSVs istifadə edin. 548 00:24:01,455 --> 00:24:04,920 Siz insanların bütün saxlamaq istəyirsinizsə olan bəzi hadisə üçün qeydiyyatdan 549 00:24:04,920 --> 00:24:07,420 və ya tələbə üçün imzalanmış qrup, və ya kimi bir şey, 550 00:24:07,420 --> 00:24:10,330 bu cür məlumatların saxlanılması format super rahatdır. 551 00:24:10,330 --> 00:24:12,580 Sözün Çünki, mən əgər Bu faylı yükləmək üçün idi. 552 00:24:12,580 --> 00:24:14,540 Mən double-- bilər və nin əslində bu cəhd edək 553 00:24:14,540 --> 00:24:16,720 Mən burada Excel və ya Nömrələr varsa. 554 00:24:16,720 --> 00:24:19,130 >> Mən sağ-klik gedirəm və ya fayl nəzarət basın. 555 00:24:19,130 --> 00:24:20,020 Whoops. 556 00:24:20,020 --> 00:24:21,830 Sağ basın və ya fayl nəzarət basın. 557 00:24:21,830 --> 00:24:24,960 Hadi, mənim siçan əməkdaşlıq deyil. 558 00:24:24,960 --> 00:24:32,694 Mən gedirəm DOWNLOAD belə ki, burada bütün faylları yükləmək 559 00:24:32,694 --> 00:24:33,860 yalnız mən bu bir qamarlamaq bilər. 560 00:24:33,860 --> 00:24:37,850 Bu işləri nin görək students.csv-- ilk dəfə 561 00:24:37,850 --> 00:24:39,310 Mən aktiv etdik. 562 00:24:39,310 --> 00:24:41,360 İndi onlar mənim əlaqə görmək istəyirik. 563 00:24:41,360 --> 00:24:44,310 İndi qeydiyyatdan lazımdır. 564 00:24:44,310 --> 00:24:47,620 Bu CSVs istifadə etmək nə qədər asan oldu? 565 00:24:47,620 --> 00:24:50,840 Bəli, bu günə qədər saxlamaq. 566 00:24:50,840 --> 00:24:52,375 OK, indi biz sinfi üçün hazırıq. 567 00:24:52,375 --> 00:24:58,750 568 00:24:58,750 --> 00:25:00,370 Oh, OK, yeni nə var? 569 00:25:00,370 --> 00:25:02,920 OK, yaxın. 570 00:25:02,920 --> 00:25:04,750 Ki, sehrli idi. 571 00:25:04,750 --> 00:25:07,280 OK, indi biz yeniləmə var. 572 00:25:07,280 --> 00:25:10,890 Və indi, bu unuttum nə Mən ilk açılan fayl, 573 00:25:10,890 --> 00:25:13,090 lakin a-- biz getmək. 574 00:25:13,090 --> 00:25:16,341 OK, belə ki, indi biz bir Excel fayl var. 575 00:25:16,341 --> 00:25:18,290 Təşəkkür edirəm. 576 00:25:18,290 --> 00:25:20,764 >> OK, mən belə nə asan hissəsi idi. 577 00:25:20,764 --> 00:25:23,930 Təbii ki önceden götürmüş ola bilər Excel, və ya Nömrələr, və ya hər hansı proqram. 578 00:25:23,930 --> 00:25:25,846 Amma bu, çünki, gözəl indi manipulyasiya edə bilər 579 00:25:25,846 --> 00:25:28,090 standart formatda data. 580 00:25:28,090 --> 00:25:30,294 >> Belə ki, indi edək kontekstində biz off sol harada keçmək 581 00:25:30,294 --> 00:25:32,710 başlamaq üçün idi son dəfə, təlim təkərlər çıxarmaq. 582 00:25:32,710 --> 00:25:34,543 Amma ilk, siz etmədi Bu əvvəllər nahar görmək 583 00:25:34,543 --> 00:25:38,150 yenidən Yanğın burada baş və New Haven Cambridge, Sitar buz. 584 00:25:38,150 --> 00:25:43,150 ASAP CS50s saytında qeydiyyatdan CS50 tələbə və heyətinə qatmaq üçün. 585 00:25:43,150 --> 00:25:46,090 >> Beləliklə, biz təlim təkərlər etdi bazar ertəsi off Bu aşağıdakı kimi 586 00:25:46,090 --> 00:25:49,120 string elan edildi Bir müddət CS50s kitabxana. 587 00:25:49,120 --> 00:25:52,650 Bu imkan verir, çünki bu, gözəl Bizə kimi dəyişənlər haqqında danışmaq 588 00:25:52,650 --> 00:25:54,660 tam söz və cümlələr və daha çox. 589 00:25:54,660 --> 00:25:56,710 Amma bu mövcud deyil simli çıxır. 590 00:25:56,710 --> 00:26:00,200 Bu yalnız bir sinonimi və ya ləqəbidir, biz bir şey yaratdıq ki, 591 00:26:00,200 --> 00:26:03,780 əslində bir az daha çox texniki * Bir char çağırıb. 592 00:26:03,780 --> 00:26:07,900 >> Həqiqətən, biz nümunə gördüm bazar ertəsi proqramı 593 00:26:07,900 --> 00:26:11,200 ki, gözlədiyimiz olduqca kimi davranmaq etməyib. 594 00:26:11,200 --> 00:26:13,630 Bu müqayisə-0, fayl idi. 595 00:26:13,630 --> 00:26:17,910 Və əgər müqayisə-0 geri Mən Bazar ertəsi proqram derleyeceğiz 596 00:26:17,910 --> 00:26:22,670 və run-0 müqayisə və ana yazın daha kiçik kiçik və ana. 597 00:26:22,670 --> 00:26:25,320 Proqram I israr fərqli şeylər yazın, 598 00:26:25,320 --> 00:26:29,210 hətta ana, bütün baxmayaraq kiçik, vizual eynidir. 599 00:26:29,210 --> 00:26:31,990 Belə ki, qısa cavab nə idi kompüter düşünür nə üçün 600 00:26:31,990 --> 00:26:34,500 bu iki strings müxtəlif var? 601 00:26:34,500 --> 00:26:35,250 Evet? 602 00:26:35,250 --> 00:26:36,534 >> Auditoriya: [işitilemez] 603 00:26:36,534 --> 00:26:37,450 DAVID J. MALAN: Sağ. 604 00:26:37,450 --> 00:26:39,600 Belə ki, ana, first time Mən olunur, onu yazın 605 00:26:39,600 --> 00:26:42,710 mənim kompüter yerdə saxlanılır yaddaş lakin müxtəlif yerdə 606 00:26:42,710 --> 00:26:44,690 ikinci dəfə daha mən ana yazın. 607 00:26:44,690 --> 00:26:46,580 İndi əlbəttə optimize bilər. 608 00:26:46,580 --> 00:26:49,205 kompüter ağıllı ola bilər və , hey, bu iki strings həyata 609 00:26:49,205 --> 00:26:49,954 Onlar eyni istəyirik. 610 00:26:49,954 --> 00:26:51,520 Mənə redundantly onu saxlamaq edək. 611 00:26:51,520 --> 00:26:54,229 Lakin kompüter bunu etməyin optimallaşdırılması onlara demək halda. 612 00:26:54,229 --> 00:26:56,061 Belə ki, ismarıcları, onlar yalnız başa gedir 613 00:26:56,061 --> 00:26:57,670 yaddaşında iki müxtəlif yerlərdə. 614 00:26:57,670 --> 00:27:01,570 Belə ki, daha çox aydın olmaq biz iki strings müqayisə 615 00:27:01,570 --> 00:27:03,950 ilk çağırıldı s, ikinci çağırıldı 616 00:27:03,950 --> 00:27:08,530 t, xüsusilə mən nə idi line 13-də burada müqayisə? 617 00:27:08,530 --> 00:27:09,494 Bəli. 618 00:27:09,494 --> 00:27:12,390 >> Auditoriya: Bu yaddaş yer dəyişən qeyd edəcək. 619 00:27:12,390 --> 00:27:14,900 >> DAVID J. MALAN: Məhz, mən yaddaş yer müqayisə 620 00:27:14,900 --> 00:27:16,300 ki, həmin dəyişənlərin işarə etdi. 621 00:27:16,300 --> 00:27:20,560 Belə ki, xüsusilə, əgər ana idi byte sayı 1, 2 və 3, 622 00:27:20,560 --> 00:27:24,020 və 4-- çünki backslash xatırlayıram 0 sonunda bütün yol olmalıdır. 623 00:27:24,020 --> 00:27:29,420 Və ana, m-o-metr digər instansiya, 10, 11, 12, və 13 idi. 624 00:27:29,420 --> 00:27:33,100 I 1 müqayisə olunmuşdur ki, ünvan, yaddaş ki, yeri, 625 00:27:33,100 --> 00:27:35,160 10 qarşı olan açıq-aydın deyil, eyni. 626 00:27:35,160 --> 00:27:36,260 1 10 deyil. 627 00:27:36,260 --> 00:27:39,620 >> Belə ki, bu ki, gözəl bu, olduqca sadə. 628 00:27:39,620 --> 00:27:42,870 Amma bu kimi insofar problem var biz strings müqayisə üçün görünə bilməz. 629 00:27:42,870 --> 00:27:44,930 Belə ki, fundamentally-- və bu aşağı səviyyədə, 630 00:27:44,930 --> 00:27:47,300 Siz həyata keçirmək istəyirdi bir proqram müqayisə etmək 631 00:27:47,300 --> 00:27:50,270 iki ayrı sözləri istifadəçi keyfiyyəti tipli 632 00:27:50,270 --> 00:27:53,944 Onlar üçün char xətti yoxdur yalnız ümumi baxımından char, 633 00:27:53,944 --> 00:27:55,360 nə biz, yəqin, nə etmək lazımdır? 634 00:27:55,360 --> 00:27:57,940 Bu, sadəcə kifayət qədər deyil bu iki ünvana baxın. 635 00:27:57,940 --> 00:27:58,860 Biz nə etmək lazımdır? 636 00:27:58,860 --> 00:27:59,360 Evet? 637 00:27:59,360 --> 00:28:01,120 >> Auditoriya: vasitəsilə təkrarlamaq string [işitilemez]. 638 00:28:01,120 --> 00:28:02,600 >> DAVID J. MALAN: Bəli, edək simli vasitəsilə təkrarlamaq. 639 00:28:02,600 --> 00:28:05,808 Nin loop, bir müddət loop üçün istifadə edək, və ya Siz ən rahat olduğunuz nə. 640 00:28:05,808 --> 00:28:08,840 Və biz bir yerdə iki strings var, əgər yaddaş, bir-birinin baxaq 641 00:28:08,840 --> 00:28:11,770 ilk xarakteri, sonra hər ikinci var xarakteri, sonra üçüncü və dördüncü, 642 00:28:11,770 --> 00:28:15,206 və beşinci biz hit qədər nə xüsusi sentinel dəyər? 643 00:28:15,206 --> 00:28:16,080 Auditoriya: [işitilemez] 644 00:28:16,080 --> 00:28:18,800 DAVID J. MALAN: Bəli, backslash sıfır ya simli hansı nöqtədə 645 00:28:18,800 --> 00:28:20,100 biz ki, var seçə bilərsiniz. 646 00:28:20,100 --> 00:28:21,970 Biz hər bir xarakter eşlemeli var? 647 00:28:21,970 --> 00:28:22,990 Əgər, saxta qayıtmaq. 648 00:28:22,990 --> 00:28:24,770 Əgər belədirsə, doğru qayıtmaq. 649 00:28:24,770 --> 00:28:28,800 Və belə ki, nə bu versiyası dəqiq Proqramın müqayisə-1.c yoxdur. 650 00:28:28,800 --> 00:28:31,677 Bu eynidir biz Mən var istisna olmaqla, Bazar ertəsi baxdı 651 00:28:31,677 --> 00:28:34,760 baxmayaraq söz string xilas kazanılmış ki, heç bir funksional impact-- var 652 00:28:34,760 --> 00:28:37,450 İndi edirəm qaldırır bəzi vizual təlim disklər, 653 00:28:37,450 --> 00:28:40,880 lakin aydın görmək s və t ünvanları var. 654 00:28:40,880 --> 00:28:43,020 Və nə ulduz var ulduz, təmsil 655 00:28:43,020 --> 00:28:46,690 bir ünvan başqa tanınan, daha texniki bir göstərici kimi. 656 00:28:46,690 --> 00:28:49,880 >> Belə ki, mən s bəyan zaman line 9 və char * s demək, 657 00:28:49,880 --> 00:28:52,160 mənə bir string vermək demək deyil. 658 00:28:52,160 --> 00:28:56,360 Mənə onun bir dəyişən vermək deməkdir həyat məqsədi ünvan saxlamaq üçün. 659 00:28:56,360 --> 00:29:00,400 Mən qoymaq haqqında am çünki bu bir simli ünvanı. 660 00:29:00,400 --> 00:29:03,500 Həqiqətən, GetString olmaq aydın, bir simli qayıtmaq deyil. 661 00:29:03,500 --> 00:29:06,110 Bu ana qayıtmaq deyil backslash sıfır, özlüyündə. 662 00:29:06,110 --> 00:29:10,005 Xüsusi nə GetString edir və dəqiq qayıtmaq? 663 00:29:10,005 --> 00:29:10,880 Auditoriya: [işitilemez] 664 00:29:10,880 --> 00:29:14,080 DAVID J. MALAN: An ünvan, ilk xarakterli ünvanı 665 00:29:14,080 --> 00:29:16,070 bəzi simli bu kazanılmış etmişdir. 666 00:29:16,070 --> 00:29:19,250 Və indi biz gördükdə daha xüsusi bir söz. 667 00:29:19,250 --> 00:29:20,640 Və mən bu əvvəllər üçün alluded. 668 00:29:20,640 --> 00:29:23,620 Bu yaxşı konqres olacaq indi təkrar görəcəksiniz ki. 669 00:29:23,620 --> 00:29:27,540 Hesab edirəm ki, əmin etmək yoxlanılması alıram s null deyil və t null deyil. 670 00:29:27,540 --> 00:29:30,100 Həqiqətən, mənim əsasında Çünki tez qeyd əvvəl, 671 00:29:30,100 --> 00:29:35,510 GetString deyil qaytarır əgər demək bilər nə bir ünvan lakin yenə N-U-L-L, 672 00:29:35,510 --> 00:29:36,990 bəzi xüsusi dəyər? 673 00:29:36,990 --> 00:29:37,890 >> Auditoriya: Error. 674 00:29:37,890 --> 00:29:38,600 >> DAVID J. MALAN: Bu bir səhv deyil. 675 00:29:38,600 --> 00:29:39,550 Bir şey yanlış getdi. 676 00:29:39,550 --> 00:29:41,341 Və nə adətən xüsusilə, baş verə bilər 677 00:29:41,341 --> 00:29:45,162 strings-- olan ola bilər advance-- naməlum uzunluğu 678 00:29:45,162 --> 00:29:46,870 bəlkə kompüter " yaddaş, bəlkə 679 00:29:46,870 --> 00:29:49,280 Siz belə bir Yığdığınız Uzun söz və ya cümlə 680 00:29:49,280 --> 00:29:51,880 və ya belə böyük bir esse yapışdırılır yalnız kifayət qədər yaddaş var. 681 00:29:51,880 --> 00:29:55,340 Və belə GetString geri bilməz bütün şey ünvan, 682 00:29:55,340 --> 00:29:56,620 belə ki, yalnız bir şey qaytarır. 683 00:29:56,620 --> 00:30:00,580 Və bir səhv baş verib xüsusi NULL dəyəri qaytarılması ilə. 684 00:30:00,580 --> 00:30:02,890 Bu, belə danışmaq, sıfır ünvanı var. 685 00:30:02,890 --> 00:30:06,157 >> İndi çıxır C ilə gəlir ki, iteration yoxdur fəaliyyət göstərir. 686 00:30:06,157 --> 00:30:09,240 Biz bu həyata yoxdur loop və ya bir müddət loop özümüz üçün. 687 00:30:09,240 --> 00:30:11,150 Biz bir funksiyası istifadə edə bilərsiniz, müfəssəl adlı, 688 00:30:11,150 --> 00:30:15,400 kimin, comp tərpənmək, və ya simli müqayisə həyat məqsədi məhz bunu edir. 689 00:30:15,400 --> 00:30:19,990 Siz bu iki göstəricilərinə, iki ünvanlarını verir, və bu ünvanlara gedəcək 690 00:30:19,990 --> 00:30:23,130 və sonra üçün məktub müqayisə keyfiyyəti hərf üçün məktub, 691 00:30:23,130 --> 00:30:26,610 doğru nə yalnız dayandırılması? 692 00:30:26,610 --> 00:30:31,540 Daxilən comp tərpənmək lazımdır zaman , yalnız aydın iterating olmaq dayandırmaq? 693 00:30:31,540 --> 00:30:35,400 Bu bir backslash 0 xit zaman bilərsiniz simli, hansı nöqtədə bu qərar qəbul edə bilər 694 00:30:35,400 --> 00:30:38,910 hər şey, eşlemeli və ya bir uyğunsuzluq olmuşdur? 695 00:30:38,910 --> 00:30:42,740 >> Biz indi bu run əgər Belə ki, cəhd Bizim kiçik kapitallaşma oyun 696 00:30:42,740 --> 00:30:49,260 belə müqayisə-1, ./compare-1 etmək və kiçik iki dəfə ana yazın. 697 00:30:49,260 --> 00:30:50,560 İndi eyni şey. 698 00:30:50,560 --> 00:30:54,080 Və mən bir daha bunu əgər kiçik və sonra bəlkə böyük. 699 00:30:54,080 --> 00:30:56,720 İndi həqiqətən fərqləndirir yuxarı və kiçik arasında. 700 00:30:56,720 --> 00:31:00,440 Belə ki, bütün ağır ya sehrli, lakin indi izah edir 701 00:31:00,440 --> 00:31:03,140 nə başlıq altında olacaq. 702 00:31:03,140 --> 00:31:07,640 >> Belə ki, daha biz çıxarış bilər nə Dərsin bu cür? 703 00:31:07,640 --> 00:31:08,980 Belə ki, bu nəzər salaq. 704 00:31:08,980 --> 00:31:15,380 Mən irəli getmək və bir yazmaq üçün gedirəm sürətli proqram burada surəti 0 çağırıb. 705 00:31:15,380 --> 00:31:21,594 İndi irəli və həqiqətən gedək , surəti-0 şeylərdir edək 706 00:31:21,594 --> 00:31:23,010 Mən burada var nə bir göz atın. 707 00:31:23,010 --> 00:31:24,712 Mən ilk istifadəçi demək, bir şey demək. 708 00:31:24,712 --> 00:31:26,420 Sonra mən bir string almaq və mən s saxlanılır. 709 00:31:26,420 --> 00:31:29,810 S bərabərdir əgər mən yoxlamaq NULL bərabərdir, yalnız 1 qayıtmaq. 710 00:31:29,810 --> 00:31:31,590 Belə ki, bu yalnız standart səhv yoxlanılması edir. 711 00:31:31,590 --> 00:31:33,112 Maraqlı bir şey baş verib. 712 00:31:33,112 --> 00:31:36,320 Və əslində, biz səhv xilas əgər yoxlanılması, bu həftə 1 kodu kimi görünür 713 00:31:36,320 --> 00:31:36,985 bu anda. 714 00:31:36,985 --> 00:31:39,110 Amma bir almaq üçün açılmış etdik bu barədə daha az. 715 00:31:39,110 --> 00:31:43,340 >> İndi line 16, bir həftə əvvəl, bəlkə hətta bir neçə gün və ya dəqiqə əvvəl, 716 00:31:43,340 --> 00:31:46,720 Siz line 16 deyə bilər adlı dəyişən t yaradılması 717 00:31:46,720 --> 00:31:48,219 və çıxarmaq onu s. 718 00:31:48,219 --> 00:31:50,010 Və bir mükəmməl var ağlabatan paket. 719 00:31:50,010 --> 00:31:51,560 Amma indi daha dəqiq ola bilər. 720 00:31:51,560 --> 00:31:54,190 Line 16 nə baş verir? 721 00:31:54,190 --> 00:31:56,170 Nə sitemizi olur sağ sol? 722 00:31:56,170 --> 00:31:56,669 Evet? 723 00:31:56,669 --> 00:31:58,490 Auditoriya: t s ünvanı əldə edilir? 724 00:31:58,490 --> 00:32:01,220 >> DAVID J. MALAN: Məhz, t s ünvanı olur. 725 00:32:01,220 --> 00:32:05,170 Mən getmək əgər Belə ki, indi aydın olmaq geri ki, əvvəllər Məsələn 726 00:32:05,170 --> 00:32:08,520 və mən çap etdik şey cəlb edir. 727 00:32:08,520 --> 00:32:11,640 Mən tipli nə in-- burada, və burada 728 00:32:11,640 --> 00:32:15,830 Mən haradasa çap etdik nə yaddaş, mom and sonra backslash 729 00:32:15,830 --> 00:32:17,840 Mənim üçün əlavə edib 0. 730 00:32:17,840 --> 00:32:23,060 Mən burada saxlanılır, geri Bu, yeri 1, 2, 3, 4 edir 731 00:32:23,060 --> 00:32:24,655 bu s hazırda nə. 732 00:32:24,655 --> 00:32:29,220 Line 16 Belə ki, mənə vermək demək başqa dəyişən adlı t və mağaza 733 00:32:29,220 --> 00:32:33,590 s dəyəri ilə, nə burada saxlanılır olur ana olmayacaq 734 00:32:33,590 --> 00:32:35,480 deyil, yalnız 1 nömrəli. 735 00:32:35,480 --> 00:32:38,520 >> Bu proqramda irəli baxmaq Belə ki İndi nə baş verəcək? 736 00:32:38,520 --> 00:32:40,690 Belə ki, var ki, qeyd Bu funksiya bilər 737 00:32:40,690 --> 00:32:44,410 Sezar üçün bir müddət əvvəl bu istifadə, və ya Vigenere, və ya bəlkə deyil, bütün. 738 00:32:44,410 --> 00:32:48,170 Mən deyiləm, mənim printf ilə iddia surəti t kapitallaşdırmaq gedir. 739 00:32:48,170 --> 00:32:51,616 Birinci xətt 19, sürətli ağlı başında olma ilə , t strlen yoxlayır uzunluğu edin. 740 00:32:51,616 --> 00:32:53,740 Mən istəmirəm, çünki bir kapitallaşdırmaq üçün cəhd edin 741 00:32:53,740 --> 00:32:55,104 əgər heç bir string var. 742 00:32:55,104 --> 00:32:57,520 Istifadəçi yalnız Enter hit varsa, kapitallaşdırmaq üçün heç bir şey yoxdur. 743 00:32:57,520 --> 00:33:01,100 Belə ki, xətt 21 etmək istəmirəm. 744 00:33:01,100 --> 00:33:05,758 Belə ki, line 21 hərflə olan yəqin məktub, t? 745 00:33:05,758 --> 00:33:06,514 >> Auditoriya: m? 746 00:33:06,514 --> 00:33:08,722 DAVID J. MALAN: görünür kimi çıxarmaq olan biri? 747 00:33:08,722 --> 00:33:09,486 Auditoriya: m. 748 00:33:09,486 --> 00:33:10,450 DAVID J. MALAN: Uh, m. 749 00:33:10,450 --> 00:33:12,685 OK, ilk m ki, Mən xəbəri çünki 750 00:33:12,685 --> 00:33:14,935 , toupper üçün keçən hansı Siz onu görməmişəm, əgər bu 751 00:33:14,935 --> 00:33:16,980 yalnız bir funksiyası onun giriş kimi kapitallaşdırmaq. 752 00:33:16,980 --> 00:33:20,240 t bracket sıfır vermək deməkdir Mənə t sıfır xarakter. 753 00:33:20,240 --> 00:33:22,550 Və belə ki, necə bu yoxdur şəkil dəyişikliyi, aydın olmaq? 754 00:33:22,550 --> 00:33:25,490 755 00:33:25,490 --> 00:33:29,160 Nə yenidən və ya dəyişdirilə almaq lazımdır s hörmət və t və anası ilə 756 00:33:29,160 --> 00:33:30,097 backslash sıfır. 757 00:33:30,097 --> 00:33:31,470 >> Auditoriya: [işitilemez] 758 00:33:31,470 --> 00:33:34,030 >> DAVID J. MALAN: Bəli, bu bir burada sadəcə 759 00:33:34,030 --> 00:33:40,860 şeylərdir düzeltmek to-- dəyişdi almaq lazımdır kapital m dəyişib almaq lazımdır. 760 00:33:40,860 --> 00:33:44,330 Amma indi, sonra baxmaq proqram, Mən çap əgər 761 00:33:44,330 --> 00:33:49,800 Mən burada təmiz kimi və t, nə baxın s və t çap baş verəcək. 762 00:33:49,800 --> 00:33:54,310 Belə ki, surəti-0, ./copy-0 edir. 763 00:33:54,310 --> 00:33:57,140 Mənə davam və yazın imkan bütün kiçik ana. 764 00:33:57,140 --> 00:34:00,140 Qeyd edək, həm də orijinal və surəti kapitallaşdırılır edilmişdir. 765 00:34:00,140 --> 00:34:00,850 Niyə? 766 00:34:00,850 --> 00:34:04,431 Yaxşı, s və t, həm də işarə olunur, Siz, yaddaş eyni yığın. 767 00:34:04,431 --> 00:34:06,930 Və səmimi, bu olur Həqiqətən faktı uninteresting-- 768 00:34:06,930 --> 00:34:09,150 Biz burada ünvan sıfır istifadə etdiyiniz. 769 00:34:09,150 --> 00:34:11,719 Mən demək, mən, həqiqətən, qayğı yoxdur burada stuff yaddaş var. 770 00:34:11,719 --> 00:34:13,550 Bağışlayın mən bir az çox pozulma, qaralama edirəm. 771 00:34:13,550 --> 00:34:15,674 Lakin mən, həqiqətən, qayğı yoxdur hər şeyi yaddaşında olduğu. 772 00:34:15,674 --> 00:34:18,510 Belə ki, həqiqətən nə proqramçılar haqqında hesab edirlər 773 00:34:18,510 --> 00:34:21,080 Siz haqqında danışmaq zaman ki, bir ünvanı və ya bir göstərici, 774 00:34:21,080 --> 00:34:22,679 bu yaddaş olduğu kimin umurunda. 775 00:34:22,679 --> 00:34:24,989 Bu da var, əgər mən qayğı yoxdur byte bir və ya bir milyard. 776 00:34:24,989 --> 00:34:27,920 Mən yalnız bu ki, qayğı dəyişən səmərəli 777 00:34:27,920 --> 00:34:29,620 yaddaş ki, yığın işarə. 778 00:34:29,620 --> 00:34:33,350 Belə ki, bundan sonra, daha çox söz oyunu ixtiyari yaddaş ünvanları üzərində edək 779 00:34:33,350 --> 00:34:36,710 yalnız göstəricilərinə çəkmək başlamaq oxlar kimi göstəricilər kimi. 780 00:34:36,710 --> 00:34:39,340 Belə ki, t həqiqətən, nə oldu Bu proqrama əsasən, 781 00:34:39,340 --> 00:34:42,130 Mən t yaradılmışdır necə görə yalnız iki ayrı dəyişənlər var 782 00:34:42,130 --> 00:34:43,840 yaddaş eyni yığın işarə. 783 00:34:43,840 --> 00:34:45,215 Onlar harada və biz qayğı yoxdur. 784 00:34:45,215 --> 00:34:47,130 Beləliklə, biz mücərrəd üz ki, ətraflı bilərsiniz. 785 00:34:47,130 --> 00:34:48,780 >> Belə ki, necə bu düzeltmek edirsiniz? 786 00:34:48,780 --> 00:34:54,120 Mən surəti bir versiyası yazmaq istəyirsinizsə Proqram əslində nüsxə string 787 00:34:54,120 --> 00:34:56,840 və yalnız capitalizes surəti, yalnız daxilən, 788 00:34:56,840 --> 00:34:59,766 nə var ki, bir olmaq Bizim həll tərkib? 789 00:34:59,766 --> 00:35:00,640 Auditoriya: [işitilemez] 790 00:35:00,640 --> 00:35:01,420 DAVID J. MALAN: Biz nə lazımdır? 791 00:35:01,420 --> 00:35:01,820 Auditoriya: yaddaş Chunk. 792 00:35:01,820 --> 00:35:03,280 DAVID J. MALAN: Biz lazımdır yaddaş bir yığın, sağ? 793 00:35:03,280 --> 00:35:05,360 Biz bilmirik necə mütləq hələ bunu. 794 00:35:05,360 --> 00:35:11,330 Amma cür belə bu baş lazımdır ki, aşağı halda orijinal ana 795 00:35:11,330 --> 00:35:14,170 yaddaş əlavə yığın ildə başa çatır. 796 00:35:14,170 --> 00:35:19,770 Və sonra mən surəti dəyişdirmək zaman, mən Burada bu surəti dəyişdirmək istəmirəm. 797 00:35:19,770 --> 00:35:26,020 Mən əvəzinə yalnız bu dəyişmək istəyirsinizsə surəti ki, orijinal dəyişməz. 798 00:35:26,020 --> 00:35:27,980 >> Belə ki, biz bunu edə bilər necə edək. 799 00:35:27,980 --> 00:35:31,800 Surəti-1, artıq şərh lüt edilmişdir, 800 00:35:31,800 --> 00:35:33,250 lakin online şərh olunur. 801 00:35:33,250 --> 00:35:36,710 Biz yerinə aşağıdakıları edin bu nə xətləri eyni, mənə bir string almaq 802 00:35:36,710 --> 00:35:38,340 və s zəng. 803 00:35:38,340 --> 00:35:43,500 Amma indi bizim ən biri baxaq kompleks lakin mürəkkəbliyi son 804 00:35:43,500 --> 00:35:47,340 biraz üçün, line 16 məhz bu yoxdur. 805 00:35:47,340 --> 00:35:49,400 Ilə rahat, əgər belə şəkil biz yalnız drew-- 806 00:35:49,400 --> 00:35:51,790 mənə yaddaş yeni bir yığın vermək onu hər şeyi surəti 807 00:35:51,790 --> 00:35:53,730 Biz kodu ki, tərcümə necə edək. 808 00:35:53,730 --> 00:35:59,400 >> Belə ki, line 16, sol tərəfində, char * t burada mənə bu kutuyu verir. 809 00:35:59,400 --> 00:36:00,230 Bu nə bütün var. 810 00:36:00,230 --> 00:36:03,240 Sağ tərəfində, m alloc və ya malloc, 811 00:36:03,240 --> 00:36:06,480 super xülya yaddaş ayrılması deyil, yalnız deyərək bir sirli yol 812 00:36:06,480 --> 00:36:07,640 Mənə yaddaş yığın verir. 813 00:36:07,640 --> 00:36:09,290 Biz nə qədər yaddaş lazımdır? 814 00:36:09,290 --> 00:36:10,910 Bəli, böyük bir ifadə növüdür. 815 00:36:10,910 --> 00:36:12,570 Amma burada deyir nə edək. 816 00:36:12,570 --> 00:36:15,940 Belə ki, bu, əlbəttə, verir Mənə s simli uzunluğu. 817 00:36:15,940 --> 00:36:19,094 Belə ki, ana nə olmalıdır? 818 00:36:19,094 --> 00:36:21,010 Belə ki, yalnız üç, sağ? ana üç simvol var. 819 00:36:21,010 --> 00:36:22,830 Siz sayılmaz backslash sıfır sizə 820 00:36:22,830 --> 00:36:25,960 bu bir simli uzunluğu haqqında danışmaq həqiqətən insan görünən məktublar. 821 00:36:25,960 --> 00:36:28,020 Belə ki, ana, belə ki, bu 3 mənə verir. 822 00:36:28,020 --> 00:36:31,170 Amma indi 1 əlavə edirəm, bir dəqiqə gözləyin. 823 00:36:31,170 --> 00:36:34,861 Niyə həqiqətən istəyirəm 4 bayt və yalnız 3 ayıracaq? 824 00:36:34,861 --> 00:36:35,360 Evet? 825 00:36:35,360 --> 00:36:36,910 >> Auditoriya: sentinel dəyər üçün? 826 00:36:36,910 --> 00:36:38,951 >> DAVID J. MALAN: Məhz, ki sentinel dəyər. 827 00:36:38,951 --> 00:36:40,840 Backslash sıfır üçün, I 4 bayt cəmi lazımdır. 828 00:36:40,840 --> 00:36:42,870 Belə ki, uzunluğu lazımdır simli plus 1. 829 00:36:42,870 --> 00:36:45,400 Və sonra yalnız yaxşı measure-- üçün hətta bu sistemi olsa da, 830 00:36:45,400 --> 00:36:49,390 Bu həmişə mən deyirəm 1 var olacaq bir char ölçüsü bu çoxaltmaq. 831 00:36:49,390 --> 00:36:51,552 Sizeof çıxır C operator ki 832 00:36:51,552 --> 00:36:53,260 yalnız sizə deyir var bayt sayı 833 00:36:53,260 --> 00:36:54,700 müəyyən bir veri növü üçün tələb olunur. 834 00:36:54,700 --> 00:36:57,740 Bu serialların üçün iş deyil, adətən, bəzən bunu edir. 835 00:36:57,740 --> 00:36:59,210 Amma ümumi halda, no. 836 00:36:59,210 --> 00:37:02,330 Çox bytes necə Amma bu mənə izah edəcək çıxır char, həmişə 1-dir. 837 00:37:02,330 --> 00:37:04,080 Belə ki, bu 1-vurulması kimi. 838 00:37:04,080 --> 00:37:05,900 >> Kod Belə ki, super sirli axtarır line. 839 00:37:05,900 --> 00:37:09,320 Amma bunu bütün verir Mənə yaddaş yığın. 840 00:37:09,320 --> 00:37:13,590 Amma bu çıxarmaq görünür deyil ki, yaddaş daxil bir şey? 841 00:37:13,590 --> 00:37:14,560 Hələ yox. 842 00:37:14,560 --> 00:37:22,040 Və belə xətt 22-də mən nə, və 23, 24, 25, yaxşı, mən sadəcə bunu. 843 00:37:22,040 --> 00:37:23,760 Bu sort edir İndi köhnə məktəb stuff. 844 00:37:23,760 --> 00:37:26,010 Bu pset 2, kimi Siz şeyi hərəkət edirik 845 00:37:26,010 --> 00:37:28,620 ətrafında yaddaş, daha doğrusu strings. 846 00:37:28,620 --> 00:37:31,920 >> Belə ki, 0-dan iterating alıram string s uzunluğu. 847 00:37:31,920 --> 00:37:37,820 Mən i-ci xarakter çıxarmaq alıram t i-ci xarakter s. 848 00:37:37,820 --> 00:37:41,820 Və mən, çünki, proqramçı etdi tam olaraq bir çox bayt ayrılması əmin 849 00:37:41,820 --> 00:37:44,600 Mən lazım kimi, mükəmməl bir-bir əlaqələr. 850 00:37:44,600 --> 00:37:47,060 Və mən ana surəti yeni bir kiçik. 851 00:37:47,060 --> 00:37:50,170 Və sonra nəhayət, mən bu xətti yoxdur. 852 00:37:50,170 --> 00:37:54,637 Və belə təsiri yalnız Burada bu t kapitallaşdırmaq. 853 00:37:54,637 --> 00:37:56,470 Belə ki, bir çox udmaq, lakin Yalnız nəzərə alsaq 854 00:37:56,470 --> 00:37:58,220 həqiqətən nə olacaq başlıq altında 855 00:37:58,220 --> 00:38:00,880 yalnız bu hərəkət edir bütün ətrafında bayt 856 00:38:00,880 --> 00:38:06,617 Bu problem həll etmək üçün tələb olunur yalnız bizə yaddaş bu yığın vermək. 857 00:38:06,617 --> 00:38:08,450 İndi riski böyük, mənə göstərmək bildirin 858 00:38:08,450 --> 00:38:13,200 demək olar ki, var bir başqa nümunə bu bir istisna olmaqla, eyni 859 00:38:13,200 --> 00:38:14,350 kod line. 860 00:38:14,350 --> 00:38:18,870 Belə ki, bu hacker versiyası Bu proqram, siz olacaq. 861 00:38:18,870 --> 00:38:21,050 Amma yalnız çəkmək imkan Bu neler daxil. 862 00:38:21,050 --> 00:38:28,920 Line 24 Bu t olmaq üçün istifadə bracket i s bracket i alır. 863 00:38:28,920 --> 00:38:33,370 İndi bu dəyişən alıram daha çox sirli ulduz t 864 00:38:33,370 --> 00:38:36,280 plus 1 ulduz s plus 1 bərabərdir. 865 00:38:36,280 --> 00:38:38,702 >> Belə ki, nə və niyə biz bir ulduz xarakter var? 866 00:38:38,702 --> 00:38:41,410 Biz əvvəl ulduz gördüm, Bu fərqli burada istifadə olunur. 867 00:38:41,410 --> 00:38:45,490 Biz əvvəllər indi görürəm, char * gördüm Bir əvvəlində ulduz, və OK. 868 00:38:45,490 --> 00:38:48,190 Biz çıxır, çünki cür yalnız nəticə çıxarmaq olar 869 00:38:48,190 --> 00:38:50,280 o ilk prinsipləri neler. 870 00:38:50,280 --> 00:38:53,860 Belə ki, yalnız aydın olmaq, s nədir? 871 00:38:53,860 --> 00:38:55,052 Ötən həftə, bir string idi. 872 00:38:55,052 --> 00:38:56,260 Ki, artıq kifayət deyil. 873 00:38:56,260 --> 00:38:57,690 Xüsusi, s nədir? 874 00:38:57,690 --> 00:38:58,590 >> Auditoriya: [işitilemez] 875 00:38:58,590 --> 00:38:59,881 >> DAVID J. MALAN: Bu bir göstərici var. 876 00:38:59,881 --> 00:39:02,610 Bu ünvanı var ilk xarakter biz yazılmış. 877 00:39:02,610 --> 00:39:04,780 OK, t nədir? 878 00:39:04,780 --> 00:39:05,660 >> Auditoriya: [işitilemez] 879 00:39:05,660 --> 00:39:07,950 >> DAVID J. MALAN: ilk byte ünvanı 880 00:39:07,950 --> 00:39:10,490 t, yaddaş ki, yığın yenidən bölüşdürülür. 881 00:39:10,490 --> 00:39:14,720 Belə ki, çıxır ki, zaman simli qədər 0 təkrarlamaq 882 00:39:14,720 --> 00:39:17,424 uzunluğu ilk növbədə, i çünki 0 off başlayır 883 00:39:17,424 --> 00:39:18,840 loop şey üçün bu köhnə məktəb. 884 00:39:18,840 --> 00:39:22,400 Belə ki, yalnız sadəlik üçün, edək kodu ilk xətti güman 885 00:39:22,400 --> 00:39:23,760 həqiqətən, yalnız bu, doğru deyil. 886 00:39:23,760 --> 00:39:26,080 I sıfır əlavə, sıfır olarsa bir şey ehtimalla 887 00:39:26,080 --> 00:39:27,540 təsir etmək niyyətində deyil. 888 00:39:27,540 --> 00:39:28,560 >> Belə ki, bu söz nədir? 889 00:39:28,560 --> 00:39:31,600 Bu ulduz çıxır ki, bu çərçivədə operator 890 00:39:31,600 --> 00:39:33,700 dereference edir yalnız operator, 891 00:39:33,700 --> 00:39:37,530 getmək deyərək bir xülya yolu aşağıdakı ünvana. 892 00:39:37,530 --> 00:39:42,080 Belə ki, əgər ilk ünvanı yaddaş bu yığın xarakter, 893 00:39:42,080 --> 00:39:43,630 * s deməkdir getmək. 894 00:39:43,630 --> 00:39:45,630 Və biz tərtib etdik, çünki bu şəkildə şəkil, 895 00:39:45,630 --> 00:39:47,430 Siz qəbul edə bilər ruhi model aşağıdakı. 896 00:39:47,430 --> 00:39:51,030 Bu s, və * s * s demək olarsa cür oluklar və Nərdivanlar kimi, 897 00:39:51,030 --> 00:39:54,540 Siz uşaqlıqdan oyun xatırlayıram, ki arrow edin və getmək kimi 898 00:39:54,540 --> 00:39:55,570 ünvana. 899 00:39:55,570 --> 00:39:57,080 >> * T eyni şeydir. 900 00:39:57,080 --> 00:39:59,855 Belə ki, burada başlamaq, onun yığın gedin. 901 00:39:59,855 --> 00:40:03,350 Mən yalnız cəlb edə bilməz Bu ekran ki, yol. 902 00:40:03,350 --> 00:40:05,560 * T burada getmək deməkdir. 903 00:40:05,560 --> 00:40:08,830 Və sonra, loop üçün yalnız , burada bu xarakter hərəkət söyləyərək 904 00:40:08,830 --> 00:40:11,330 Burada bu xarakter hərəkət, Burada bu xarakter hərəkət. 905 00:40:11,330 --> 00:40:12,890 Amma necə ki, incrementation etməliyəm? 906 00:40:12,890 --> 00:40:15,430 Mən yalnız silindi nə geri lazımdır. 907 00:40:15,430 --> 00:40:18,140 Bu adətən deyirlər nə göstərici hesab olan 908 00:40:18,140 --> 00:40:20,040 ünvanları ilə riyaziyyat deməkdir. 909 00:40:20,040 --> 00:40:22,460 >> Əgər, bu loop üçün, Mən incrementing saxlamaq 910 00:40:22,460 --> 00:40:26,880 və s bir ünvanı və t bir deyil ünvan, mən yalnız 1 əlavə saxlamaq əgər, 911 00:40:26,880 --> 00:40:31,406 yalnız irəli hərəkət saxlamaq deməkdir, və irəli, və yaddaş irəli. 912 00:40:31,406 --> 00:40:34,030 Bu Oxford Street kimi, CS bina edir küç. 913 00:40:34,030 --> 00:40:36,490 CS binalar 33 Oxford Street edir. 914 00:40:36,490 --> 00:40:39,870 Belə ki, əgər 33 etmək idi Oxford Street plus 1, 915 00:40:39,870 --> 00:40:42,870 34 Oxford sizi gətirir Street, sonra 35 Oxford Street, 916 00:40:42,870 --> 00:40:46,380 sonra 36 Oxford Street, nə o binalar, həqiqətən, - onlar varsa. 917 00:40:46,380 --> 00:40:50,540 Və belə ki, biz yapýyorsun bütün var burada göstərici hesab ilə. 918 00:40:50,540 --> 00:40:53,820 >> Belə ki, bir super gizli yoldur özümüzü ifadə. 919 00:40:53,820 --> 00:40:56,160 Lakin bütün baş verən başlıq altında 920 00:40:56,160 --> 00:40:59,330 yalnız bu ünvanları izləyir, bir xəritə aşağıdakı kimi Siz, 921 00:40:59,330 --> 00:41:02,692 və ya kimi oxlar aşağıdakı biz ekranda tərtib etdik. 922 00:41:02,692 --> 00:41:04,910 OK, bir çox həzm. 923 00:41:04,910 --> 00:41:10,410 Sintaksis haqqında sual, anlayışlar, göstəricilər, malloc, və ya kimi. 924 00:41:10,410 --> 00:41:11,480 Bəli, burada ilk. 925 00:41:11,480 --> 00:41:13,755 >> Auditoriya: Belə ki, burada * t toupper * t bərabərdir deyir 926 00:41:13,755 --> 00:41:15,575 kapitallaşdırmaq gedir ki, bütün məktublar və ya izlersin 927 00:41:15,575 --> 00:41:17,283 >> DAVID J. MALAN: Ah, həqiqətən yaxşı sual. 928 00:41:17,283 --> 00:41:19,805 Burada bu xətt Belə ki, 31, bu kapitallaşdırmaq gedir 929 00:41:19,805 --> 00:41:21,430 ilk məktubu və ya məktublar bütün. 930 00:41:21,430 --> 00:41:23,460 Belə ki, gedir ki, cavab verək geri ilk prinsiplərinə. 931 00:41:23,460 --> 00:41:26,168 Və burada ilk prinsipləri demək yalnız əsas anlayışlar getmək 932 00:41:26,168 --> 00:41:27,000 cəlb nə. 933 00:41:27,000 --> 00:41:29,770 Belə ki, toupper bir funksiyası var ki, bir char capitalizes. 934 00:41:29,770 --> 00:41:30,530 Bu hamısıdır. 935 00:41:30,530 --> 00:41:36,740 * T first-- getmək deməkdir t Ünvan gedin. 936 00:41:36,740 --> 00:41:40,350 Belə ki, şəkil, bu yığın əgər yaddaş biz malloc ilə ayrılan, 937 00:41:40,350 --> 00:41:43,310 bu t * t burada getmək deməkdir edir. 938 00:41:43,310 --> 00:41:46,710 >> Bu arada, siz keçən edirik ki, dəyəri, kiçik m 939 00:41:46,710 --> 00:41:50,040 toupper üçün, geri alırıq kapital M, harada qoyulması olunur? 940 00:41:50,040 --> 00:41:52,410 Siz eyni yerdə onu qoyulması edirik. 941 00:41:52,410 --> 00:41:55,540 Və həmin o məntiqi ilə Əsas anlayışlar yalnız var 942 00:41:55,540 --> 00:41:58,792 ilk məktub hərflə Siz i və ya A təkrarlamaq halda 943 00:41:58,792 --> 00:42:02,000 loop və ya bir müddət loop üçün, bu niyyətində deyil Siz xahiş daha çox şey etmək. 944 00:42:02,000 --> 00:42:02,583 Yaxşı sualdır. 945 00:42:02,583 --> 00:42:03,237 Evet? 946 00:42:03,237 --> 00:42:05,369 >> Auditoriya: Niyə istifadə etmədi metodu daha çox dereference 947 00:42:05,369 --> 00:42:05,979 array? 948 00:42:05,979 --> 00:42:07,395 >> DAVID J. MALAN: Ah, yaxşı sual. 949 00:42:07,395 --> 00:42:10,672 Niyə dereference istifadə edir əvəzinə array metodu? 950 00:42:10,672 --> 00:42:12,130 No xüsusi səbəb vicdanlı olmalıdır. 951 00:42:12,130 --> 00:42:15,290 Və əslində, bu Məsələn cür, sağ, 952 00:42:15,290 --> 00:42:17,556 Mən yalnız edilməsi mübahisə alıram daha mürəkkəb proqram, 953 00:42:17,556 --> 00:42:19,680 daha gözlər üzərində cam olunur insanlar həyata yoxlanılması 954 00:42:19,680 --> 00:42:22,830 Bu, super gizli görünür, çünki hətta eyni şey bunu baxmayaraq. 955 00:42:22,830 --> 00:42:26,695 Belə ki, səmimi, bu bir lazımsız vizual kompleks həlli 956 00:42:26,695 --> 00:42:27,320 problemin. 957 00:42:27,320 --> 00:42:29,580 >> Bu, hələ yaxşı dizayn var Beş dizayn beş həyata, 958 00:42:29,580 --> 00:42:33,140 Bu bracket olub notation və ya göstərici notation. 959 00:42:33,140 --> 00:42:36,299 Biz almaq zaman, xüsusilə də ancaq sonra kurs pset 5 960 00:42:36,299 --> 00:42:39,340 ki, lüğət həyata zaman ki, Mən dəfə təkrar bir neçə qeyd etdik 961 00:42:39,340 --> 00:42:42,300 biz, həqiqətən, qayğı lazımdır aşağı səviyyədə yaddaş ünvanları 962 00:42:42,300 --> 00:42:44,140 Biz, həqiqətən, başa düşürük ki, nə baş verir. 963 00:42:44,140 --> 00:42:48,300 >> Amma indi üçün, bu çıxır ki, code burada kvadrat mötərizədə xətti 964 00:42:48,300 --> 00:42:49,900 həqiqətən yoxdur. 965 00:42:49,900 --> 00:42:52,230 Onlar deyirlər nə var sintaktik şəkər olan 966 00:42:52,230 --> 00:42:58,390 deyərək bir weirdly sərin yoldur compiler kvadrat mötərizədə olmaq çevirir 967 00:42:58,390 --> 00:43:00,420 ki, riyazi ifadəsidir. 968 00:43:00,420 --> 00:43:02,660 Belə ki, bir insan konvensiya var yalnız yazmaq etmək 969 00:43:02,660 --> 00:43:04,220 bu çox istifadəçi dostu mötərizədə. 970 00:43:04,220 --> 00:43:06,850 Amma nə compiler, cingilti, həqiqətən heç bir zaman edir 971 00:43:06,850 --> 00:43:10,970 Siz line qeyd nə yazmaq 24 başlıq altında bu, həqiqətən var 972 00:43:10,970 --> 00:43:12,330 Bu konvertasiya. 973 00:43:12,330 --> 00:43:16,200 Bu bir insan kimi yalnız daha ləzzətli var oxumaq və line 24 kimi kod yazmaq üçün. 974 00:43:16,200 --> 00:43:18,530 Amma nəticədə o təlim təkərlər çox off gəlib 975 00:43:18,530 --> 00:43:21,780 öz rahatlıq güclü olur zaman. 976 00:43:21,780 --> 00:43:27,240 >> Bütün hüquqlar, belə ki, bu geri ən böyük problem cür idi 977 00:43:27,240 --> 00:43:27,807 biz qaçdı. 978 00:43:27,807 --> 00:43:30,640 Və bu bütün səbəb nə göstəricilər haqqında lənətləmək söhbət, 979 00:43:30,640 --> 00:43:32,340 və ünvanları, və çıxarmaq şeylər. 980 00:43:32,340 --> 00:43:35,410 Biz artıq takıldım çünki bu idi Bu axmaq, axmaq məsələ vasitəsi 981 00:43:35,410 --> 00:43:38,830 Mən Lauren ilə logically-- həyata burada demo və portağal şirəsi qədər 982 00:43:38,830 --> 00:43:43,770 milk-- bir mükəmməl algorithmically düzgün funksiyası 983 00:43:43,770 --> 00:43:47,010 iki dəyişənlərin "dəyişdirmə üçün dəyərlər, lakin lənətləmək şey 984 00:43:47,010 --> 00:43:50,550 Hər hansı bir davamlı və ya etməyib mənim kodu daimi, təsiri. 985 00:43:50,550 --> 00:43:51,820 >> Və niyə nə idi? 986 00:43:51,820 --> 00:43:54,650 Özetle, niyə bu svop həyata keçirilməsi 987 00:43:54,650 --> 00:43:58,740 məntiqi doğru, lakin heç bir təsiri var bu qəbul olunur dəyişənlərin, 988 00:43:58,740 --> 00:44:01,119 əsas üçün x və y kimi? 989 00:44:01,119 --> 00:44:02,410 Məsələnin mahiyyət nə idi? 990 00:44:02,410 --> 00:44:02,909 Evet? 991 00:44:02,909 --> 00:44:05,532 Auditoriya: dəyişən etdi, çünki pass dəyişən surətləri 992 00:44:05,532 --> 00:44:06,240 funksiyası vasitəsilə. 993 00:44:06,240 --> 00:44:09,060 >> DAVID J. MALAN: Məhz, zaman keçir funksiyası daxil dəyişənlər, və ya dəlilləri 994 00:44:09,060 --> 00:44:11,030 funksiyası daxil, onlar surəti, keçdiyi hansı 995 00:44:11,030 --> 00:44:14,770 Siz axtarır eyni almaq deməkdir x və y üçün bit model, 996 00:44:14,770 --> 00:44:15,955 bir və b burada çağırıb. 997 00:44:15,955 --> 00:44:18,080 Və bir şey edə bilərsiniz bu nüsxə ilə istədiyiniz, 998 00:44:18,080 --> 00:44:20,657 lakin onlar heç bir olacaq zəng funksiyası təsir. 999 00:44:20,657 --> 00:44:22,990 Və əslində, biz çəkdi ekran, geri şəkil 1000 00:44:22,990 --> 00:44:25,520 Sonuncu dəfə vasitəsi əgər həqiqətən nə haqqında düşünmək 1001 00:44:25,520 --> 00:44:28,570 əgər hood-- altında gedir bu, kompüter yaddaş 1002 00:44:28,570 --> 00:44:31,650 və aşağı yığın yaddaş, əsas üçün istifadə olunur 1003 00:44:31,650 --> 00:44:34,020 Bu yığın yaddaş, svop üçün istifadə olunur 1004 00:44:34,020 --> 00:44:37,090 və belə olsa əsas var iki dəyişənlərin, x və y, 1005 00:44:37,090 --> 00:44:41,840 svop eyni axtarır ola bilər 1 və 2 həm olan dəyərləri, 1006 00:44:41,840 --> 00:44:44,520 lakin onlar tamamilə istəyirik yaddaş müxtəlif chunks. 1007 00:44:44,520 --> 00:44:46,130 >> Beləliklə, biz bu həll lazımdır. 1008 00:44:46,130 --> 00:44:51,580 Və səmimi, indi biz ki, görünür sağ, bu problemin həlli var. 1009 00:44:51,580 --> 00:44:55,760 Biz indi imkanı varsa URL yolu ilə şeyi manipulyasiya 1010 00:44:55,760 --> 00:44:59,310 və sort oluklar və Nərdivanlar style, bu okları edin 1011 00:44:59,310 --> 00:45:02,820 və biz istəyirik hər yerdə getmək yaddaş, biz bilmədi 1012 00:45:02,820 --> 00:45:06,220 bu problemi həll Əsas keçən dəyişdirmək üçün 1013 00:45:06,220 --> 00:45:09,650 Biz dəyərlər istəyirik svop, ancaq daxilən 1014 00:45:09,650 --> 00:45:11,630 biz əvəzinə dəyişdirmək keçə bilər? 1015 00:45:11,630 --> 00:45:12,620 >> [SƏSLƏRİ INTERPOSING] 1016 00:45:12,620 --> 00:45:15,244 >> DAVID J. MALAN: Niyə biz yalnız deyil sağ ünvanları keçmək? 1017 00:45:15,244 --> 00:45:17,470 Niyə biz mübadilə a vermir xəzinə xəritə, Siz, 1018 00:45:17,470 --> 00:45:20,950 ki, ona rəhbərlik edir faktiki dəyərlər x və y. 1019 00:45:20,950 --> 00:45:24,340 Gəlin svop, həqiqətən dəyişə o orijinal bit deyil, 1020 00:45:24,340 --> 00:45:26,797 yalnız bit surətlərini keçən. 1021 00:45:26,797 --> 00:45:29,130 Belə ki, əslində, nə var gedən həll olmalıdır. 1022 00:45:29,130 --> 00:45:31,899 Bu versiya burada aydın pis və flawed. 1023 00:45:31,899 --> 00:45:35,190 İndi, ilk baxışdan, bu, yalnız görünür kimi biz təsadüfi ulduz bir dəstə əlavə 1024 00:45:35,190 --> 00:45:37,106 və barmaqlarını keçdi Bu tərtib ki. 1025 00:45:37,106 --> 00:45:38,460 Lakin, indi tərtib olardı. 1026 00:45:38,460 --> 00:45:40,090 >> Amma bunların mənasını nə edək. 1027 00:45:40,090 --> 00:45:43,990 Və təəssüf ki, müəlliflər C bir simvolu seçilmiş ola bilər 1028 00:45:43,990 --> 00:45:46,380 bu bir az etmək təmiz, lakin star operator 1029 00:45:46,380 --> 00:45:48,610 müxtəlif mənası var iki müxtəlif kontekstlərdə. 1030 00:45:48,610 --> 00:45:50,890 Və biz də gördüm, amma ayırmaq imkan verir. 1031 00:45:50,890 --> 00:45:55,310 >> Orada üst qədər So Mən A və B dəyişib zaman 1032 00:45:55,310 --> 00:46:00,470 pis int nin olan version ulduz, a və b int, 1033 00:46:00,470 --> 00:46:01,740 əvvəllər integers idi. 1034 00:46:01,740 --> 00:46:05,752 İndi bir və b hansılardır yaxşı, yaşıl versiyası? 1035 00:46:05,752 --> 00:46:06,900 Onlar URL istəyirik. 1036 00:46:06,900 --> 00:46:09,610 Nə, ünvanları aydın olacaq? 1037 00:46:09,610 --> 00:46:10,770 Integers ünvanları. 1038 00:46:10,770 --> 00:46:12,520 Mən ki, belə int ulduz vasitələri söyləyərək 1039 00:46:12,520 --> 00:46:15,440 bu ünvanı tam, xüsusi. 1040 00:46:15,440 --> 00:46:19,120 >> Belə ki, indi kodu xətləri qeyd, başqa bir şey çox dəyişdi. 1041 00:46:19,120 --> 00:46:22,770 tmp, çünki eyni qalır yalnız müvəqqəti tam var, 1042 00:46:22,770 --> 00:46:24,110 heç bir yaddaş sehrli. 1043 00:46:24,110 --> 00:46:26,370 Amma indi bir ulduz lazımdır. 1044 00:46:26,370 --> 00:46:28,560 Və əslində, hər bir və b digər qeyd 1045 00:46:28,560 --> 00:46:31,780 bütün var ki, qeyd yaşıl qırmızı dəyişən 1046 00:46:31,780 --> 00:46:34,209 Mən prefixing edirəm ki, ulduzları ilə o dəyişənlər. 1047 00:46:34,209 --> 00:46:35,750 Mən və b surəti istəmirəm, çünki. 1048 00:46:35,750 --> 00:46:40,350 Çünki Mən yalnız bir və b və svop surəti əgər bir və b, mən, həqiqətən nə dəyişdirmə edirəm? 1049 00:46:40,350 --> 00:46:43,760 Just ünvanları, mən dəyişdirmək istəyirəm nə o ünvanlarda var. 1050 00:46:43,760 --> 00:46:44,860 Mən orada getmək istəyirəm. 1051 00:46:44,860 --> 00:46:48,000 Və belə star operator Mənim funksiyası daxilində, 1052 00:46:48,000 --> 00:46:51,700 Biz parametri siyahı daxilində, bu ünvanlara getmək deməkdir 1053 00:46:51,700 --> 00:46:54,490 və həqiqətən o dəyərləri dəyişdirmək. 1054 00:46:54,490 --> 00:46:56,500 >> Belə ki, nə şəkil yoxdur İndi əvəzinə kimi görünür. 1055 00:46:56,500 --> 00:47:03,250 Bəli, əvəzinə, mən keçən alıram bir üçün deyil, 1 və b 2-- 1056 00:47:03,250 --> 00:47:05,790 Mən, həqiqətən, əlavə etmək lazımdır Burada başqa bir müəyyən. 1057 00:47:05,790 --> 00:47:09,030 Belə ki, bu yığın Güman yaddaş yeri 10 edir. 1058 00:47:09,030 --> 00:47:12,960 >> Bu yerdə 11, lakin bu bir sadələşdirilməsi bir az, 1059 00:47:12,960 --> 00:47:18,900 İndi x iki seçim I keçmək nə var və y və ya onların ünvanları keçmək edirsiniz? 1060 00:47:18,900 --> 00:47:22,500 Mən onların ünvanlarını keçmək əgər bu kimi mən yalnız 1061 00:47:22,500 --> 00:47:25,390 indi həyata keçirmək lazımdır Yaşıl kodu başına swap 1062 00:47:25,390 --> 00:47:29,080 ki, gördüyü zaman belə bir və zaman b, yalnız bir və b surəti deyil görür 1063 00:47:29,080 --> 00:47:30,540 və süd və portağal şirəsi hərəkət. 1064 00:47:30,540 --> 00:47:32,664 süd və portağal şirəsi məcaz indi aşağı pozur 1065 00:47:32,664 --> 00:47:35,060 o, çünki fincan var maye və xəritələr. 1066 00:47:35,060 --> 00:47:37,750 Biz yerinə getmək lazımdır 10 və biz üçün 1067 00:47:37,750 --> 00:47:42,420 11 ünvana getmək lazımdır, və o dəyişdirmə məntiq həyata keçirir. 1068 00:47:42,420 --> 00:47:45,580 >> Belə ki, məntiq, eyni, lakin biz bir az fərqli yol lazımdır 1069 00:47:45,580 --> 00:47:47,160 o dəyişənlər daxil. 1070 00:47:47,160 --> 00:47:52,400 Və belə sonunda, nə proqram bu kimi baxmaq var. 1071 00:47:52,400 --> 00:47:56,610 Swap.c sözün sitemizi və yaşıl versiyası yapışdırılır. 1072 00:47:56,610 --> 00:47:58,450 Amma bir dəyişiklik etmək lazımdır. 1073 00:47:58,450 --> 00:48:00,180 Bu, sadəcə svop dəyişdirmək üçün kifayət deyil. 1074 00:48:00,180 --> 00:48:03,830 Nə kodu digər line Mən dəyişmək lazımdır? 1075 00:48:03,830 --> 00:48:04,330 Evet? 1076 00:48:04,330 --> 00:48:05,770 >> Auditoriya: dəlilləri. 1077 00:48:05,770 --> 00:48:07,603 >> DAVID J. MALAN: onun mübahisə edir. 1078 00:48:07,603 --> 00:48:09,985 Beləliklə, mən əsas diyirləyin, mən yalnız x və y keçmək bilməz, 1079 00:48:09,985 --> 00:48:12,820 və mən son söz yeni sintaksis parça bu gün. 1080 00:48:12,820 --> 00:48:17,200 Mən x keçmək lazımdır və y lakin x və y ünvanı. 1081 00:48:17,200 --> 00:48:20,400 Və bu, rəmzi çıxır C müəllifləri seçdi ki, 1082 00:48:20,400 --> 00:48:23,860 burada bir işareti istifadə əgər deyil, deyil bitwise işareti ilə səhv, 1083 00:48:23,860 --> 00:48:27,130 Bir işareti istifadə əgər burada və burada bir işareti, 1084 00:48:27,130 --> 00:48:29,570 Bu, sizin üçün rəqəmlər x ünvanı nə var, 1085 00:48:29,570 --> 00:48:31,740 bəlkə 10 var, nə var y ünvanı, bəlkə bu 1086 00:48:31,740 --> 00:48:35,400 11, əvəzinə həmin keçir. 1087 00:48:35,400 --> 00:48:37,210 >> Belə ki, bir çox dəfə bütün udmaq. 1088 00:48:37,210 --> 00:48:40,190 Amma tez indi görək Qalan dörd dəqiqə 1089 00:48:40,190 --> 00:48:42,150 burada şeyi əyri getmək bilər. 1090 00:48:42,150 --> 00:48:45,120 Və bir kənara, həqiqətən Mən bu şəkil aldı, 1091 00:48:45,120 --> 00:48:46,920 TF bir il və ya iki əvvəl şəkil aldı. 1092 00:48:46,920 --> 00:48:49,190 Belə ki, bu geri künc edir Eliot Dining Hall. 1093 00:48:49,190 --> 00:48:52,310 Pointers bəlkə çətin olur biz CS50 əhatə mövzu. 1094 00:48:52,310 --> 00:48:54,810 Siz sort narahat əgər Belə ki, bəlkə bu kimi yamacında edir 1095 00:48:54,810 --> 00:48:56,770 bir xokkey ağacı daha bu kimi həyata 1096 00:48:56,770 --> 00:49:00,160 biz növ zirvəsi olan üzrədir edirik konseptual mürəkkəbliyi şərtləri. 1097 00:49:00,160 --> 00:49:02,300 >> Və mən bu gətirmək foto, mən and olsun, çünki 1098 00:49:02,300 --> 00:49:05,920 Payız 1996-ci ildə Allaha, mən aldı Mənim tədris fellow ilə CS50, 1099 00:49:05,920 --> 00:49:09,620 Nishat Mehta, o, mənə oturdu nahar üzərində Eliot D. Hall küncündə, 1100 00:49:09,620 --> 00:49:12,330 və ya nahar, və ya bir şey cəhd Mənə göstəricilərinə anlamaq kömək. 1101 00:49:12,330 --> 00:49:16,520 Mən həftə sonra olduğu və bu Bu mühazirə zaman təqdim edilib 1102 00:49:16,520 --> 00:49:18,170 Mən nəhayət göstəricilərinə başa düşülür. 1103 00:49:18,170 --> 00:49:20,590 Mən bu ümid edirəm ki, qədər tez sizin üçün basın olacaq. 1104 00:49:20,590 --> 00:49:23,540 Lakin tamamilə arasında həyata daha mürəkkəb mövzular 1105 00:49:23,540 --> 00:49:24,420 biz baxdı etdik. 1106 00:49:24,420 --> 00:49:25,819 Amma bu ən güclü arasında var. 1107 00:49:25,819 --> 00:49:28,860 Siz onu almaq zaman, həqiqətən bütün yalnız nəhayət bir araya gəlib gedir. 1108 00:49:28,860 --> 00:49:31,460 Belə ki, qalan bu deyil arxayın Bu gün bütün sink lazımdır. 1109 00:49:31,460 --> 00:49:32,980 >> Belə ki, burada son proqram Biz baxmaq olacaq. 1110 00:49:32,980 --> 00:49:35,605 Və biz bir ilə son olacaq claymation tez üç dəqiqə 1111 00:49:35,605 --> 00:49:37,030 bizim dostumuz, Nick Parlante tərəfindən. 1112 00:49:37,030 --> 00:49:41,440 Burada bir proqram üst iki ki, var xətləri dəyişən x və y bəyan edir. 1113 00:49:41,440 --> 00:49:44,780 Həm də olan ünvanları integers, AKA göstəricilər. 1114 00:49:44,780 --> 00:49:48,125 Biz sonra kifayət qədər vəsait ayıracaq yaddaş int saxlamaq üçün 1115 00:49:48,125 --> 00:49:51,344 və ünvanı saxlamaq x ki, yaddaş. 1116 00:49:51,344 --> 00:49:53,260 Belə ki, hətta sadə deyil əvvəl, məsələn daha. 1117 00:49:53,260 --> 00:49:56,100 Mənə yaddaş dörd bayt verin ki, bir int ölçüsü var, 1118 00:49:56,100 --> 00:49:58,000 və x ki ünvanını qoydu. 1119 00:49:58,000 --> 00:50:01,070 Bu xətt burada deməkdir x ünvana getmək 1120 00:50:01,070 --> 00:50:05,270 və mənasını qoymaq həyat, orada sayı 42. 1121 00:50:05,270 --> 00:50:07,710 Amma bu xətt məni narahat edir. 1122 00:50:07,710 --> 00:50:12,620 Y y Ünvan getmək deməkdir ulduz, və orada uğursuz sayı 13 qoydu. 1123 00:50:12,620 --> 00:50:15,780 Niyə bu nöqtədə, bu təhlükəlidir story-- olsa sürətlə bildirib 1124 00:50:15,780 --> 00:50:17,980 Bizim çıxması dəqiqə burada niyə pis 1125 00:50:17,980 --> 00:50:19,660 Mənə demək üçün, y ünvana getmək? 1126 00:50:19,660 --> 00:50:21,077 >> Auditoriya: Siz yoxdur [işitilemez]. 1127 00:50:21,077 --> 00:50:22,910 DAVID J. MALAN: Mən var y şey qoymaq. 1128 00:50:22,910 --> 00:50:25,520 Belə ki, y dəyəri nə, hekayə bu nöqtədə? 1129 00:50:25,520 --> 00:50:26,570 Biz heç bir fikrim yoxdur. 1130 00:50:26,570 --> 00:50:29,190 Bəzi zibil dəyəri var və nə də Binky bilir. 1131 00:50:29,190 --> 00:50:32,532 Bu qeyd bitirmək bilər. 1132 00:50:32,532 --> 00:50:34,832 >> [Video playback] 1133 00:50:34,832 --> 00:50:36,500 >> -Hey, Binky, oyanmaq. 1134 00:50:36,500 --> 00:50:39,140 Bu göstərici əyləncə üçün vaxt var. 1135 00:50:39,140 --> 00:50:40,210 >> -Bu nədir? 1136 00:50:40,210 --> 00:50:41,690 Göstəricilər haqqında məlumat əldə edin? 1137 00:50:41,690 --> 00:50:43,570 Oh, goody. 1138 00:50:43,570 --> 00:50:46,600 >> -Yaxşı, Başlamaq üçün, biz istəyirik tapmaq bir neçə göstəricilərinə lazım olacaq. 1139 00:50:46,600 --> 00:50:47,380 >> -OLDU. 1140 00:50:47,380 --> 00:50:51,120 Bu kodu iki göstəricilərinə ayırır olan integers qeyd edə bilərsiniz. 1141 00:50:51,120 --> 00:50:53,557 >> -Yaxşı, Yaxşı görürəm iki göstəricilərinə, lakin onlar 1142 00:50:53,557 --> 00:50:55,140 bir şey işarə ola görünmür. 1143 00:50:55,140 --> 00:50:55,970 >> -Düzdür. 1144 00:50:55,970 --> 00:50:58,100 Əvvəlcə göstəricilər bir şey qeyd yoxdur. 1145 00:50:58,100 --> 00:51:00,950 Onlar qeyd şeylər pointees adlanır və onlara yaradılması 1146 00:51:00,950 --> 00:51:02,330 ayrı addımdır. 1147 00:51:02,330 --> 00:51:03,210 >> Sağ, sağ, -Oh. 1148 00:51:03,210 --> 00:51:03,940 Hesab edirəm ki, bilirdi. 1149 00:51:03,940 --> 00:51:05,730 pointees ayrıdır. 1150 00:51:05,730 --> 00:51:08,310 Belə ki, necə bir pointee ayrılması edirsiniz? 1151 00:51:08,310 --> 00:51:11,960 >> -Yaxşı, Yaxşı bu kodu ayırıb yeni tam pointee, 1152 00:51:11,960 --> 00:51:15,050 və bu hissəsi dəstləri x onu qeyd etmək. 1153 00:51:15,050 --> 00:51:16,240 >> -Hey, Daha yaxşı görünür. 1154 00:51:16,240 --> 00:51:17,743 Belə ki, bir şey etmək. 1155 00:51:17,743 --> 00:51:23,580 >> -Yaxşı, Mən göstərici x dereference onun pointee daxil sayı 42 saxlamayın. 1156 00:51:23,580 --> 00:51:27,130 Bu oyun, mən lazımdır mənim dereferencing sehrli wand. 1157 00:51:27,130 --> 00:51:30,200 >> Dereferencing -Sizin sehrli wand? 1158 00:51:30,200 --> 00:51:32,310 Uh ki, böyük deyil. 1159 00:51:32,310 --> 00:51:34,270 >> -Bu Code kimi görünür. 1160 00:51:34,270 --> 00:51:35,970 Mən yalnız sayı qurmaq lazımdır and-- 1161 00:51:35,970 --> 00:51:37,070 >> [POP SES] 1162 00:51:37,070 --> 00:51:39,140 >> -Hey, Gedir orada baxmaq. 1163 00:51:39,140 --> 00:51:43,980 Belə ki, x bir dereference bunu belə arrow onun pointee daxil olmaq üçün. 1164 00:51:43,980 --> 00:51:46,150 Bu halda, orada 42 saxlamaq üçün. 1165 00:51:46,150 --> 00:51:50,700 Hey, sayı saxlamaq üçün istifadə edin Digər göstərici vasitəsilə 13 y. 1166 00:51:50,700 --> 00:51:51,840 >> -OLDU. 1167 00:51:51,840 --> 00:51:56,270 Mən y burada artıq getmək lazımdır, və sayı 13 set up almaq. 1168 00:51:56,270 --> 00:52:00,380 Və sonra çubuq almaq dereferencing və yalnız 1169 00:52:00,380 --> 00:52:01,646 >> [Buzzer səs] 1170 00:52:01,646 --> 00:52:04,080 >> -Oh, Hey ki, iş deyildi. 1171 00:52:04,080 --> 00:52:06,470 , Binky uh, mən deyil, demək dereferencing edirəm 1172 00:52:06,470 --> 00:52:10,850 qəbulu, çünki y, yaxşı bir fikirdir pointee qədər ayrı addımdır. 1173 00:52:10,850 --> 00:52:12,480 Mən biz heç bunu düşünmürəm. 1174 00:52:12,480 --> 00:52:14,620 >> -Hmm, Yaxşı bir nöqtəyə. 1175 00:52:14,620 --> 00:52:19,810 >> -Bəli, Biz göstərici, y ayrılan amma bir pointee qeyd etmək müəyyən heç vaxt. 1176 00:52:19,810 --> 00:52:21,590 >> -Hmm, Çox müşahidəçi. 1177 00:52:21,590 --> 00:52:23,215 -Hey, Siz orada Binky yaxşı axtarır edirik. 1178 00:52:23,215 --> 00:52:26,390 Siz ki, bunu düzeltmek y xal x eyni pointee. 1179 00:52:26,390 --> 00:52:29,290 >> -Əlbəttə, Mən sehrli wand istifadə pointer təyin. 1180 00:52:29,290 --> 00:52:31,970 >> Bir olacaq ki edirmi problem, əvvəl kimi? 1181 00:52:31,970 --> 00:52:33,790 >> Xeyr, bu pointees toxunmaq deyil. 1182 00:52:33,790 --> 00:52:35,840 Bu, sadəcə bir göstərici dəyişikliklər eyni şey qeyd etmək 1183 00:52:35,840 --> 00:52:36,465 >> [Yaratma SES] 1184 00:52:36,465 --> 00:52:37,450 başqa işarəsi. 1185 00:52:37,450 --> 00:52:38,440 >> -Oh Görürəm. 1186 00:52:38,440 --> 00:52:41,200 X eyni yerə İndi y xal. 1187 00:52:41,200 --> 00:52:42,950 Belə ki, indi y müəyyən edilir, gözləyin. 1188 00:52:42,950 --> 00:52:44,110 Bu pointee var. 1189 00:52:44,110 --> 00:52:47,779 Belə ki, çubuq cəhd edə bilərsiniz 13 göndərmək üçün yenidən dereferencing. 1190 00:52:47,779 --> 00:52:51,110 >> -Oh, OK, burada gedir. 1191 00:52:51,110 --> 00:52:52,330 >> -Hey Ki, oldu. 1192 00:52:52,330 --> 00:52:53,570 İndi y üzrə işləri dereferencing. 1193 00:52:53,570 --> 00:52:57,900 Və göstəricilər mübadiləsi, çünki bir pointee ki, onlar həm 13 görürük. 1194 00:52:57,900 --> 00:52:59,952 >> -Bəli, Mübadiləsi, uh, nə. 1195 00:52:59,952 --> 00:53:01,535 Belə ki, biz indi yerlərdə keçid gedir? 1196 00:53:01,535 --> 00:53:03,730 >> -Oh, Biz vaxt bitti baxmaq. 1197 00:53:03,730 --> 00:53:04,660 >> -But-- 1198 00:53:04,660 --> 00:53:06,520 >> Üç pointer qaydaları xatırlamaq -Yalnız. 1199 00:53:06,520 --> 00:53:09,550 Number 1, əsas struktur bir göstərici var ki, 1200 00:53:09,550 --> 00:53:11,630 və bir pointee üzərində göstərir. 1201 00:53:11,630 --> 00:53:13,740 Amma pointer və pointee ayrıdır. 1202 00:53:13,740 --> 00:53:15,620 Və ümumi səhv bir göstərici qurmaq üçün 1203 00:53:15,620 --> 00:53:18,000 lakin bir pointee vermək unutmaq. 1204 00:53:18,000 --> 00:53:21,170 >> Number 2, pointer dereferencing göstərici başlayır 1205 00:53:21,170 --> 00:53:24,020 və üzərində arrow aşağıdakı onun pointee daxil olmaq üçün. 1206 00:53:24,020 --> 00:53:27,815 Biz bütün Bildiyiniz kimi, bu, yalnız orada çalışır cür geri alır bir pointee edir 1207 00:53:27,815 --> 00:53:29,260 1 nömrəli idarə etmək. 1208 00:53:29,260 --> 00:53:31,990 >> Sayı 3, pointer təyin edir bir pointer 1209 00:53:31,990 --> 00:53:35,330 və qeyd etmək dəyişir başqa göstərici eyni pointee. 1210 00:53:35,330 --> 00:53:37,150 Tapşırıq sonra belə, iki göstəricilərinə 1211 00:53:37,150 --> 00:53:40,927 eyni pointee qeyd edəcək, bəzən mübadiləsi deyirlər. 1212 00:53:40,927 --> 00:53:42,510 Və həqiqətən, bu var bütün var. 1213 00:53:42,510 --> 00:53:43,130 Bye-bye indi. 1214 00:53:43,130 --> 00:53:43,475 >> [END playback] 1215 00:53:43,475 --> 00:53:44,830 >> DAVID J. MALAN: Bu CS50 üçün var. 1216 00:53:44,830 --> 00:53:46,246 Professor Nick Parlante üçün təşəkkür edirik. 1217 00:53:46,246 --> 00:53:47,730 Biz gələn həftə görəcəksiniz. 1218 00:53:47,730 --> 00:53:51,706 1219 00:53:51,706 --> 00:53:56,435 >> [ELECTRONIC MUSIC PLAYING] 1220 00:53:56,435 --> 00:57:22,775