1 00:00:00,000 --> 00:00:10,970 >> [Musiqi ifa] 2 00:00:10,970 --> 00:00:12,536 >> DAVID J. Malan: Yaxşı. 3 00:00:12,536 --> 00:00:13,392 >> [Gülüş] 4 00:00:13,392 --> 00:00:14,240 >> Geri xoş gəlmisiniz. 5 00:00:14,240 --> 00:00:14,990 Bu CS50 edir. 6 00:00:14,990 --> 00:00:16,890 Bu həftə beş sonu. 7 00:00:16,890 --> 00:00:20,020 Və indiyə qədər, biz olduqca çox var verilən qəbul olunub ki, 8 00:00:20,020 --> 00:00:23,480 siz var ki, bu compiler, cingilti mövcud Bu yolu ilə invoking edilmişdir 9 00:00:23,480 --> 00:00:27,100 digər alət ki, birtəhər olun çağırıb magically sizin mənbə kodu çevirir 10 00:00:27,100 --> 00:00:31,350 obyekt kodu da adet sıfır və olanları nəzərə ki, kompüter CPU, mərkəzi 11 00:00:31,350 --> 00:00:33,410 processing unit, həqiqətən anlayır. 12 00:00:33,410 --> 00:00:36,770 Ki, bir sıra var həyata Lakin bu çevrilir olan başlıq altında gedir 13 00:00:36,770 --> 00:00:38,690 giriş və çıxış arasında. 14 00:00:38,690 --> 00:00:41,800 >> Və mən ki, biz əti təklif etmək istərdim bir az daha açıqlamaq ki, həyata 15 00:00:41,800 --> 00:00:45,130 bu dörd addımı adlı bir şey var pre-emalı, bir şey 16 00:00:45,130 --> 00:00:48,300 gördük ki, tərtibi, adlı bir şey montaj adlanır və 17 00:00:48,300 --> 00:00:49,420 bir şey birləşdirən çağırıb. 18 00:00:49,420 --> 00:00:53,270 Belə ki, indiyə qədər bizim bəzi proqramları, biz kəskin daxildir etdi. 19 00:00:53,270 --> 00:00:56,650 Bu yaxınlarda bəzi kəskin yaşadım sabitləri üçün müəyyən edir. 20 00:00:56,650 --> 00:01:00,660 Belə çıxır o şeyi ki, hash simvolu və ya prefixed olunur 21 00:01:00,660 --> 00:01:04,150 funt-simvolu pre-prosessor var direktivləri. 22 00:01:04,150 --> 00:01:07,960 Yalnız bu söyləyən bir xülya yolu həqiqətən ki, bir kod line 23 00:01:07,960 --> 00:01:12,280 əvvəl başqa bir şey çevrilir kompüter hətta çevirmək üçün cəhd üçün 24 00:01:12,280 --> 00:01:13,800 adet sıfır və olanları nəzərə proqramı. 25 00:01:13,800 --> 00:01:19,000 >> Məsələn, kəskin standart daxildir I / O. H, olduqca çox yalnız getmək deməkdir 26 00:01:19,000 --> 00:01:24,010 qabaqda, faylları məzmunu qamarlamaq stdio.h və sağ orada yapışdırıb. 27 00:01:24,010 --> 00:01:25,880 Belə ki, heç bir adet sıfır və yenilərinin hələ o nöqtədə. 28 00:01:25,880 --> 00:01:27,470 Bu, həqiqətən yalnız bir əvəz var. 29 00:01:27,470 --> 00:01:30,790 Və sözdə zamanı həyata pre-emal mərhələ, zaman 30 00:01:30,790 --> 00:01:34,230 həqiqətən xüsusi cingilti çalıştırmak və ya Əksər hallarda olun. 31 00:01:34,230 --> 00:01:36,950 Belə ki, bütün bu baş edilmişdir İlk avtomatik beləliklə qədər. 32 00:01:36,950 --> 00:01:38,800 >> Sonra tərtib addım gəlir. 33 00:01:38,800 --> 00:01:40,920 Amma biz oversimplified olduğunuz tərtibi. 34 00:01:40,920 --> 00:01:45,060 Bir proqram tərtib həqiqətən deməkdir ki, C kimi bir şey almaq 35 00:01:45,060 --> 00:01:48,430 mənbə kodu biz, yazı olduğunuz bir şey toplaşmaq adlı etmək. 36 00:01:48,430 --> 00:01:52,900 Məclis dil aşağı səviyyədə dil ki, təşəkkürlə, biz olacaq 37 00:01:52,900 --> 00:01:55,480 qədər nəsib olmaq Bu dövr yazın. 38 00:01:55,480 --> 00:01:59,100 Lakin ən aşağı səviyyədə var sözün yazmağa başlayın Bu mənada 39 00:01:59,100 --> 00:02:04,270 əlavə və çıxmaq və çoxaltmaq və yük yaddaşından və saxlamaq yaddaş üçün 40 00:02:04,270 --> 00:02:08,259 çox əsas təlimat bir kompüter, başlıq altında, 41 00:02:08,259 --> 00:02:09,639 həqiqətən anlayır. 42 00:02:09,639 --> 00:02:14,930 >> Nəhayət, montaj dil edir biz də etdik ki, adet sıfır və olanları 43 00:02:14,930 --> 00:02:16,190 İndiyədək izah. 44 00:02:16,190 --> 00:02:19,270 Və həqiqətən Nəhayət, sözdə var faza birləşdirən hansı rəftar 45 00:02:19,270 --> 00:02:22,360 birləşdirən yalnız bir an görmək Sizin adet sıfır və adet sıfır ilə olanları və 46 00:02:22,360 --> 00:02:24,870 əvvəl olanları digər insanların Siz yaratmışdır. 47 00:02:24,870 --> 00:02:26,660 >> Beləliklə, bu super sadə proqram hesab edir. 48 00:02:26,660 --> 00:02:27,560 Bu həftə 1 idi. 49 00:02:27,560 --> 00:02:29,610 Bu, sadəcə, Dünya Salam, dedi: ekranda. 50 00:02:29,610 --> 00:02:30,920 Biz cingilti bu qaçdım. 51 00:02:30,920 --> 00:02:33,200 Yoxsa biz onun vasitəsilə olun qaçdı olan cingilti qaçdım. 52 00:02:33,200 --> 00:02:36,170 Və vaxt outputted yerləşir bir adet sıfır və olanları. 53 00:02:36,170 --> 00:02:38,100 Var həyata Lakin bu çevrilir Bir ara addım. 54 00:02:38,100 --> 00:02:40,460 Burada artıq getmək varsa - oops etmədi, hələ onu görmək istəyirəm. 55 00:02:40,460 --> 00:02:44,800 Mən avadanlığına buraya gedin və mən hello.c, burada açmaq 56 00:02:44,800 --> 00:02:46,160 Eyni proqramdır. 57 00:02:46,160 --> 00:02:48,600 Bəs mən terminal etmək gidiyorum burada pəncərə Mən gidiyorum edir 58 00:02:48,600 --> 00:02:51,430 , cingilti run daha çox Yap bütün dörd avtomatlaşdırır 59 00:02:51,430 --> 00:02:52,870 bizim üçün o addımlar. 60 00:02:52,870 --> 00:02:58,620 Və mən cingilti-S edəcəyəm və alıram daxil sonra hello.c və sonra. 61 00:02:58,620 --> 00:03:00,590 >> Mən bir yanıb-sönən tez almaq yenidən, bu yaxşıdır. 62 00:03:00,590 --> 00:03:05,280 İndi bir az böyük pəncərə, Mən burada gedit açmaq üçün gedirəm. 63 00:03:05,280 --> 00:03:09,610 Mən bir fayl açmaq üçün gidiyorum çıxır, hello.s bu adlanır 64 00:03:09,610 --> 00:03:11,870 ki, montaj dil ehtiva edir Mən əvvəllər edilir. 65 00:03:11,870 --> 00:03:15,060 Bu toplantının deyirlər nə dil, kifayət qədər aşağı səviyyədə 66 00:03:15,060 --> 00:03:18,470 talimatları ki, Intel CPU və ya hər hansı bu, daxili ki, deyil 67 00:03:18,470 --> 00:03:19,350 anlayır. 68 00:03:19,350 --> 00:03:24,480 Və mov hərəkət edir. zəng üçün , çox aşağı səviyyədə funksiyası zəng. 69 00:03:24,480 --> 00:03:26,380 alt çıxmaq üçün. 70 00:03:26,380 --> 00:03:30,370 >> Siz daxilində müəyyən bir CPU var zaman kompüter, nə edir 71 00:03:30,370 --> 00:03:34,300 haqqında fərqli, qarşı digər CPU'lar bazar, olan təlimat o 72 00:03:34,300 --> 00:03:39,460 anlayır və tez-tez necə ondan səmərəli bəzi icra edir necə sürətli edir 73 00:03:39,460 --> 00:03:40,380 həmin təlimatlar. 74 00:03:40,380 --> 00:03:45,150 İndi bu barədə daha ətraflı üçün, siz bilər kollec növbəti Fall CS61. 75 00:03:45,150 --> 00:03:48,170 Amma burada bir neçə, məsələn, var tanış ola bilər ki, tanımlayıcıları. 76 00:03:48,170 --> 00:03:50,150 hello.c proqramın adıdır. 77 00:03:50,150 --> 00:03:51,070 >> . Mətn - 78 00:03:51,070 --> 00:03:54,190 maraq çox orada deyil yalnız indi xatırlayıram, mətn 79 00:03:54,190 --> 00:03:59,190 harada seqment, Bazar ertəsi kimi, yaddaş Proqram həqiqətən qədər çatır. 80 00:03:59,190 --> 00:04:01,330 Belə ki, ən azı yayğın var orada tanış olmuşlar. 81 00:04:01,330 --> 00:04:03,730 Burada, əlbəttə, bir qeyd edir əsas funksiyası. 82 00:04:03,730 --> 00:04:07,220 Aşağı scrolling, bu şeylər baxın adlandırılan aparatlarının, çox kiçik chunks 83 00:04:07,220 --> 00:04:09,190 haqq CPU yaddaş daxilində. 84 00:04:09,190 --> 00:04:12,930 Və mən hətta aşağıya fırladın əgər daha, mən bir növ bax 85 00:04:12,930 --> 00:04:14,240 ASCII dolayısı ilə qeyd. 86 00:04:14,240 --> 00:04:17,120 Və həqiqətən ki, simli var hello, vergül, dünya. 87 00:04:17,120 --> 00:04:20,079 >> Belə ki, uzun hekayə qısa, bu olmuşdur avtomatik olaraq, sizin üçün baş 88 00:04:20,079 --> 00:04:22,140 başlıq altında bu dəfə bütün. 89 00:04:22,140 --> 00:04:26,450 Və nə baş edilmişdir həqiqətən dəfə siz cingilti run, və ya yolu ilə etdik 90 00:04:26,450 --> 00:04:29,150 , Ilk əldə etdiyiniz etmək kodunu, bu 91 00:04:29,150 --> 00:04:30,700 montaj dil deyilən. 92 00:04:30,700 --> 00:04:35,210 Sonra cingilti bu toplantının konvertasiya edilir aşağı adet sıfır və olanları dil. 93 00:04:35,210 --> 00:04:38,340 Və biz başlayan Slayd edir on Həftə 0 bizim müzakirə - 94 00:04:38,340 --> 00:04:39,840 ve sonra həftə 1. 95 00:04:39,840 --> 00:04:44,030 Və sonra nəhayət, o adet sıfır və yenilərinin ki, adet sıfır və olanları ilə birləşir 96 00:04:44,030 --> 00:04:47,190 həmin kitabxanalardan biz alaraq olduğunuz Standard I / O və ya kimi verilən 97 00:04:47,190 --> 00:04:50,010 String Kitabxana və ya hətta ki, CS50 kitabxana. 98 00:04:50,010 --> 00:04:54,200 >> Belə ki, daha bu şəkil çəkmək vizual, biz hello.c var. 99 00:04:54,200 --> 00:04:57,220 Və bu, əlbəttə, printf istifadə Salam dünya, demək fəaliyyət göstərir. 100 00:04:57,220 --> 00:05:01,810 Tərtibi addım onu ​​aşağı edir fayl biz yalnız, hətta hello.s gördüm 101 00:05:01,810 --> 00:05:04,290 adətən silindi ki, baxmayaraq ki, sizin üçün avtomatik olaraq. 102 00:05:04,290 --> 00:05:06,050 Amma bu toplantı kod orta addım. 103 00:05:06,050 --> 00:05:09,750 Və sonra biz toplaşmaq toplaşmaq zaman zaman dil, necə deyərlər, ki, 104 00:05:09,750 --> 00:05:10,830 o adet sıfır və olanları almaq. 105 00:05:10,830 --> 00:05:13,920 Beləliklə, biz bu gün səmərəli zoomed sonra nə verilən biz alaraq sonra, 106 00:05:13,920 --> 00:05:16,430 mənbə kodu gedir deməkdir kodu etiraz edir. 107 00:05:16,430 --> 00:05:18,850 >> Amma nəhayət, indi həmin şəkil - üzərində ilə itələmək edək 108 00:05:18,850 --> 00:05:20,020 sol tərəfdəki. 109 00:05:20,020 --> 00:05:22,880 Və Qeyd edək ki, top var Mən stdio.h bildirdi. 110 00:05:22,880 --> 00:05:25,030 Ki, daxil olduğunuz bir faylı demək olar ki, bütün-ci 111 00:05:25,030 --> 00:05:26,250 biz yazdıq proqramları. 112 00:05:26,250 --> 00:05:28,830 Və onun məzmunu faylı surəti yapışdırılır almaq, 113 00:05:28,830 --> 00:05:30,350 effektiv kodu üstün. 114 00:05:30,350 --> 00:05:34,170 Lakin bu ki, bir kompüter çıxır sistemi bir yerdə, ehtimalla bir var 115 00:05:34,170 --> 00:05:39,150 kimsə illərdə yazmışdır ki stdio.c fayl əvvəl ki, bütün həyata keçirir 116 00:05:39,150 --> 00:05:41,870 elan edilmişdir funksiyaları stdio.h edir. 117 00:05:41,870 --> 00:05:45,465 >> İndi əslində bu yəqin ki, deyil, və ya hətta sizin Mac və ya PC 118 00:05:45,465 --> 00:05:47,660 CS50 Aracı xam C koddur. 119 00:05:47,660 --> 00:05:52,710 Kimsə artıq tərtib daxil . O obyekt kodu üçün fayl və ya. A 120 00:05:52,710 --> 00:05:56,020 Paylaşılan bir kitabxana istinad olan fayl, ki, önceden götürmüş və oldu 121 00:05:56,020 --> 00:05:57,240 sizin üçün əvvəlcədən tərtib. 122 00:05:57,240 --> 00:06:01,950 Amma həqiqətən var Güman paralel olaraq bizim kompüter stdio.c haqqında 123 00:06:01,950 --> 00:06:02,650 cingilti ilə. 124 00:06:02,650 --> 00:06:04,960 Sizin kodu tərtib edib və toplandı. 125 00:06:04,960 --> 00:06:09,200 stdio.c 's kodu tərtib olunur yığılmış, bu son ki, 126 00:06:09,200 --> 00:06:13,730 burada, addım, biz birtəhər var link, belə danışmaq, sizin adet sıfır və yenilərinin 127 00:06:13,730 --> 00:06:18,430 birinə onun adet sıfır və olanları ilə nəticə etibarilə ki, sadə proqram 128 00:06:18,430 --> 00:06:20,540 Salam yalnız çağırıb. 129 00:06:20,540 --> 00:06:23,340 >> Belə ki, ki, sehrli bütün var İndiyədək baş vermişdir. 130 00:06:23,340 --> 00:06:26,430 Və bu davam edəcək prosesləri verilmiş, lakin həyata 131 00:06:26,430 --> 00:06:28,750 şirəli ətraflı çox var orada altında davam. 132 00:06:28,750 --> 00:06:31,920 Bu nə sizin Intel içərisində kompüter 133 00:06:31,920 --> 00:06:33,940 xüsusilə fərqli. 134 00:06:33,940 --> 00:06:37,020 >> Belə ki qeyd, siz istəyirəm əgər bu cümə nahar üçün bizə qoşulmaq getmək nə 135 00:06:37,020 --> 00:06:41,570 adi yer cs50.net/rsvp üçün, 1:15 PM bu cümə. 136 00:06:41,570 --> 00:06:43,400 İndi bir neçə elanlar. 137 00:06:43,400 --> 00:06:44,670 Beləliklə, biz yaxşı xəbər var. 138 00:06:44,670 --> 00:06:45,970 Və biz bəzi pis xəbər var. 139 00:06:45,970 --> 00:06:47,260 Burada yaxşı xəbər ilə başlayın. 140 00:06:47,260 --> 00:06:52,038 141 00:06:52,038 --> 00:06:54,510 >> [Iniltili] 142 00:06:54,510 --> 00:06:54,710 >> Bütün hüquqlar. 143 00:06:54,710 --> 00:06:56,670 Bəli, belə ki, texniki bir bayram var o qədər bizdən hədiyyə deyil. 144 00:06:56,670 --> 00:06:58,030 Əlbəttə Ancaq daha sonra pis xəbər. 145 00:06:58,030 --> 00:07:00,550 146 00:07:00,550 --> 00:07:01,880 >> [Iniltili] 147 00:07:01,880 --> 00:07:03,530 >> Mən çox vaxt sərf Bu animasiyalar haqqında. 148 00:07:03,530 --> 00:07:04,690 >> [Gülüş] 149 00:07:04,690 --> 00:07:07,000 >> Nəzərdən sessiyası olacaq Bu Bazar ertəsi gəlir. 150 00:07:07,000 --> 00:07:08,340 Bu 5:30 PM olacaq. 151 00:07:08,340 --> 00:07:11,210 Biz bütün bu detalları sizə xatırlatmaq olacaq kurs üzrə e-mail vasitəsilə 152 00:07:11,210 --> 00:07:13,470 gün yalnız bir neçə haqqinda. 153 00:07:13,470 --> 00:07:16,610 Bu film və mövcud ediləcək qısa müddət sonra. 154 00:07:16,610 --> 00:07:19,200 Edə bilməz, belə ki, əgər Bazar ertəsi gecə slot, narahat olmayın. 155 00:07:19,200 --> 00:07:22,270 Bölmələr bu gələn həftə də olacaq viktorina üçün baxış yönəldir. 156 00:07:22,270 --> 00:07:25,670 Sizin bölmə olan Monday, aktivdirsə həqiqətən universitet bayramı biz 157 00:07:25,670 --> 00:07:26,920 hələ bölməsində cavab verir. 158 00:07:26,920 --> 00:07:28,890 Siz sadəcə edə bilməz Bölmə siz davam olduğunuz 159 00:07:28,890 --> 00:07:29,860 üz ki, gözəl. 160 00:07:29,860 --> 00:07:33,710 Bir bazar və ya çərşənbə axşamı bölmə və ya iştirak Jason bölməsində ilə tune-in, olan 161 00:07:33,710 --> 00:07:35,110 mövcud online. 162 00:07:35,110 --> 00:07:37,490 >> Belə ki, bir pis xəbər daha. 163 00:07:37,490 --> 00:07:41,960 Belə ki, tədris görə, Gələn cümə mühazirə var. 164 00:07:41,960 --> 00:07:43,690 Amma yaxşı xəbər - 165 00:07:43,690 --> 00:07:44,860 Aydındır ki, mən bu barədə çox vaxt sərf etmişdir. 166 00:07:44,860 --> 00:07:45,280 >> [Gülüş] 167 00:07:45,280 --> 00:07:47,140 >> Biz cümə mühazirələr növbəti qeyri-edəcəyik. 168 00:07:47,140 --> 00:07:50,590 Belə ki, bizim üçün bir hədiyyə olacaq, belə ki, həqiqətən gözəl möhlət ola bilər 169 00:07:50,590 --> 00:07:52,990 Bu həftə və bu səbəbdən iki həftə arasında. 170 00:07:52,990 --> 00:07:57,460 Heç mühazirələr gələn həftə, yalnız kiçik bir Belə ki, Siz olmalıdır olan kiçik viktorina, 171 00:07:57,460 --> 00:07:59,030 getdikcə heyecan almaq. 172 00:07:59,030 --> 00:08:03,870 >> Belə ki, indi bizim diqqət çevirmək bildirin həqiqətən daha əyani bir şey 173 00:08:03,870 --> 00:08:06,990 və daha çox maraqlı və səhnəyə təyin etmək üçün üfüqdə olacaq nə üçün 174 00:08:06,990 --> 00:08:08,420 həftə yalnız bir neçə. 175 00:08:08,420 --> 00:08:12,160 Ilk viktorina sonra biz çevirmək lazımdır bizim problem dəstləri başqa diqqət 176 00:08:12,160 --> 00:08:16,710 domain xüsusi problem, ki, ümumiyyətlə Suclari və ya təhlükəsizlik. 177 00:08:16,710 --> 00:08:19,550 >> Bu məsələ ilə Əslində, ənənə set mənim üçün biri 178 00:08:19,550 --> 00:08:24,850 arasında gəzmək fellow ya CA'lar tədris bəzi fotoşəkillər alaraq kampus 179 00:08:24,850 --> 00:08:29,450 müəyyən edilə bilən lakin qeyri Aşkar insanlar, sonra yerləri, və ya şeyi, hər il 180 00:08:29,450 --> 00:08:34,520 elə təsadüfən silmək üçün idarə və ya digital media kart korlaya 181 00:08:34,520 --> 00:08:35,720 ki, kamera daxilində var. 182 00:08:35,720 --> 00:08:36,860 Amma heç bir böyük. 183 00:08:36,860 --> 00:08:39,200 Mən irəli getmək və plug bilər mənim kompüter edir. 184 00:08:39,200 --> 00:08:43,010 Mən, bu, bir məhkəmə image edə bilərsiniz ki, adet sıfır çıxarmaq, danışmaq və 185 00:08:43,010 --> 00:08:46,830 ki, yaddaş kartı olanlar off, olub onun bir SD kart və ya kompakt flash kart və ya 186 00:08:46,830 --> 00:08:48,100 Sizinlə tanış olduğunuzda nə. 187 00:08:48,100 --> 00:08:49,300 Və sonra, biz ki, əl bilər. 188 00:08:49,300 --> 00:08:53,190 >> Və beləcə digər arasında qabaqda meydan, Sizin üçün hər şeyi, yazmaq olacaq 189 00:08:53,190 --> 00:08:58,630 Bütün dəstə bərpa ki, C kodu Mənim üçün JPEGs və aşkar olacaq 190 00:08:58,630 --> 00:09:00,190 insanların, yerləri, və ya şeyi. 191 00:09:00,190 --> 00:09:03,340 Və biz də bu problemi, danışmaq lazımdır seçin və gün haqqında, gəlmək 192 00:09:03,340 --> 00:09:04,440 ümumiyyətlə qrafika. 193 00:09:04,440 --> 00:09:06,140 Biz, bir kurs onları istifadə etdiyiniz çıxmaq üçün. 194 00:09:06,140 --> 00:09:09,080 Verilən Amma cür qəbul etdik Bu yüksək səviyyəli anlayışlar var 195 00:09:09,080 --> 00:09:10,680 düzbucaqlı və oval edir. 196 00:09:10,680 --> 00:09:12,450 Amma başlıq altında piksel var. 197 00:09:12,450 --> 00:09:14,370 Və başlamaq üçün idi bu barədə düşünürük. 198 00:09:14,370 --> 00:09:18,800 Yoxsa p-set 4 düşünmək lazımdır üçün Sizin kərpic arasında fərq haqqında nə 199 00:09:18,800 --> 00:09:21,990 tez top arasında hərəkət edirik üçün ekran çıxmaq. 200 00:09:21,990 --> 00:09:24,830 Belə ki, bu anlayışı var ki, ekranda nöqtələr 201 00:09:24,830 --> 00:09:26,290 artıq oyun minir. 202 00:09:26,290 --> 00:09:29,430 >> İndi görürsünüz nə olsa da, nə bir kompüter ekran alın. 203 00:09:29,430 --> 00:09:33,680 Əgər yaxşı və ya izləyib varsa pis TV, bahis onlar olduqca çox var 204 00:09:33,680 --> 00:09:36,280 technophobes kimi tamaşaçılar müalicə kim həqiqətən 205 00:09:36,280 --> 00:09:37,630 çox kompüter haqqında bilirik. 206 00:09:37,630 --> 00:09:40,840 Və belə ki, polis üçün çox asandır demək əməliyyat, siz 207 00:09:40,840 --> 00:09:41,710 mənim üçün o qədər təmiz? 208 00:09:41,710 --> 00:09:42,710 Və ya sağ, artırmaq? 209 00:09:42,710 --> 00:09:45,550 Gücləndirilməsi ildə buzz söz kimi ən hər hansı bir cinayət bağlı şou. 210 00:09:45,550 --> 00:09:49,240 Bir çox almaq əgər reallığıdır bunu bir şübhəli bulanık şəkil 211 00:09:49,240 --> 00:09:51,620 pis bir şey, siz bilməzsiniz yalnız artırır. 212 00:09:51,620 --> 00:09:53,080 Siz sonsuz zoom edə bilməz. 213 00:09:53,080 --> 00:09:56,350 Siz kimsə nin glint görmək bilməz ki törətmiş göz 214 00:09:56,350 --> 00:09:59,860 baxmayaraq xüsusilə cinayət TV Bu yayılması. 215 00:09:59,860 --> 00:10:04,110 >> Və belə ki, motivasiya edək ki, Qarşıdan gələn problem bir fikir ilə müəyyən 216 00:10:04,110 --> 00:10:05,765 Bəzi göstərir ilə tanış ola bilər. 217 00:10:05,765 --> 00:10:06,500 >> [Video playback] 218 00:10:06,500 --> 00:10:07,835 >> -OK. 219 00:10:07,835 --> 00:10:09,956 İndi yaxşı bir görünüşünü almaq edək. 220 00:10:09,956 --> 00:10:17,060 221 00:10:17,060 --> 00:10:17,766 >> It-tutun. 222 00:10:17,766 --> 00:10:18,658 Geri Run. 223 00:10:18,658 --> 00:10:19,550 >> Bir dəqiqə gözləyin. 224 00:10:19,550 --> 00:10:21,580 Doğru gedin. 225 00:10:21,580 --> 00:10:21,800 >> -Var. 226 00:10:21,800 --> 00:10:22,690 Ki Freeze. 227 00:10:22,690 --> 00:10:23,692 >> Ekran-Tam. 228 00:10:23,692 --> 00:10:23,846 >> -OK. 229 00:10:23,846 --> 00:10:24,154 Ki Freeze. 230 00:10:24,154 --> 00:10:25,140 >> Ya, ki edəcək up-bərkidin? 231 00:10:25,140 --> 00:10:27,090 >> Ki, oğlan üzrə-Vector arxa təkər ilə. 232 00:10:27,090 --> 00:10:29,730 >> Bu spot sağ burada-Zoom. 233 00:10:29,730 --> 00:10:33,700 >> -Ilə sağ avadanlıq, imaged genişləndirmiş və itilənmiş bilər. 234 00:10:33,700 --> 00:10:34,490 >> -Ne var? 235 00:10:34,490 --> 00:10:35,870 >> -Bu genişləndirilməsi proqramıdır. 236 00:10:35,870 --> 00:10:36,793 >> -Can hər hansı bir qədər ki, sil? 237 00:10:36,793 --> 00:10:38,560 >> -Bilmirəm. 238 00:10:38,560 --> 00:10:39,090 İT artırmaq edək. 239 00:10:39,090 --> 00:10:41,690 >> Bölmə A-6-gücləndirilməsi. 240 00:10:41,690 --> 00:10:43,510 >> -I ətraflı genişləndirilir və - 241 00:10:43,510 --> 00:10:44,456 >> -I artırmaq üçün kifayət qədər var edirəm. 242 00:10:44,456 --> 00:10:45,402 Mənim ekran üçün buraxın. 243 00:10:45,402 --> 00:10:47,300 >> Onun göz əks-gücləndirilməsi. 244 00:10:47,300 --> 00:10:49,330 >> Bu axır-Let video genişləndirilməsi. 245 00:10:49,330 --> 00:10:50,340 >> -Edgar, bu gücləndirə bilər? 246 00:10:50,340 --> 00:10:52,320 >> On-Bekle. 247 00:10:52,320 --> 00:10:54,290 >> -I've bu əks üzərində çalışır. 248 00:10:54,290 --> 00:10:55,560 >> -Kiminsə əks. 249 00:10:55,560 --> 00:10:56,440 >> -Reflection. 250 00:10:56,440 --> 00:10:57,940 >> Bir əks-var insanın üzü. 251 00:10:57,940 --> 00:10:58,860 >> -Bu əks. 252 00:10:58,860 --> 00:10:59,710 >> -Bir əks edir. 253 00:10:59,710 --> 00:11:00,900 >> Güzgü üzrə-zoom. 254 00:11:00,900 --> 00:11:03,500 >> -Siz bir əks bilərsiniz. 255 00:11:03,500 --> 00:11:04,700 >> -Bilərsinizmi buradan image artırmaq? 256 00:11:04,700 --> 00:11:05,700 >> -Can sağ burada onu artırmaq? 257 00:11:05,700 --> 00:11:06,500 >> -Can siz onu artırmaq? 258 00:11:06,500 --> 00:11:07,380 >> -Can siz onu artırmaq? 259 00:11:07,380 --> 00:11:08,190 >> -Can biz bu inkişaf? 260 00:11:08,190 --> 00:11:08,940 >> -Can siz onu artırmaq? 261 00:11:08,940 --> 00:11:10,280 >> Ikinci on-tutun, mən artırmaq lazımdır. 262 00:11:10,280 --> 00:11:11,570 >> Qapısını in-kiçildin. 263 00:11:11,570 --> 00:11:12,180 >> -X10. 264 00:11:12,180 --> 00:11:13,052 >> -Zoom. 265 00:11:13,052 --> 00:11:13,197 >> [Gülüş] 266 00:11:13,197 --> 00:11:14,360 >> Daxil Move 267 00:11:14,360 --> 00:11:15,100 >> Dayandırmaq, gözləyin. 268 00:11:15,100 --> 00:11:15,740 >> -Stop. 269 00:11:15,740 --> 00:11:16,290 >> It-durdur. 270 00:11:16,290 --> 00:11:19,390 >> Ətrafında 75 dərəcə-Qayıt şaquli edin. 271 00:11:19,390 --> 00:11:19,886 >> [Gülüş] 272 00:11:19,886 --> 00:11:24,350 >> Hissəsi ilə geri dayandırmaq və qapı haqqında yenidən. 273 00:11:24,350 --> 00:11:26,330 >> Bir resim Gücləndirici-Got ki, bitmap bilər? 274 00:11:26,330 --> 00:11:28,990 >> -Bəlkə biz Pradeep Sen istifadə edə bilərsiniz metodu Windows daxil görürük. 275 00:11:28,990 --> 00:11:30,680 >> -Bu proqram sənətinin dövlətdir. 276 00:11:30,680 --> 00:11:31,676 >> -Bu icon dəyər off edir. 277 00:11:31,676 --> 00:11:34,166 >> -Ilə sağ birləşməsi alqoritmləri. 278 00:11:34,166 --> 00:11:38,399 >> -O işıqlandırma alqoritmlər qəbul oldu növbəti səviyyəsi və mən onları istifadə edə bilərsiniz 279 00:11:38,399 --> 00:11:38,648 Bu fotoşəkil artırır. 280 00:11:38,648 --> 00:11:42,050 >> On-Lock və Z-axis genişləndirmək. 281 00:11:42,050 --> 00:11:42,760 >> -Gücləndirilməsi. 282 00:11:42,760 --> 00:11:43,060 >> -Gücləndirilməsi. 283 00:11:43,060 --> 00:11:43,760 >> -Gücləndirilməsi. 284 00:11:43,760 --> 00:11:45,010 >> -Freeze və genişlənəcəkdir. 285 00:11:45,010 --> 00:11:47,470 286 00:11:47,470 --> 00:11:47,910 >> [END video playback] 287 00:11:47,910 --> 00:11:51,470 >> DAVID J. Malan: Belə ki, Problem Set 5 orada irəli yalan nə edir. 288 00:11:51,470 --> 00:11:55,260 Beləliklə, biz tezliklə daha yaxşı anlaşma əldə edəcəyik vaxt və niyə bilər 289 00:11:55,260 --> 00:11:57,300 və bu yolla təmin edə bilməz. 290 00:11:57,300 --> 00:12:00,090 Amma birincisi, bizim diqqət qayıtmağınıza imkan biz will bloklar bəzi 291 00:12:00,090 --> 00:12:02,250 ki, hekayə demək lazımdır. 292 00:12:02,250 --> 00:12:05,580 >> Beləliklə, biz bu şəkil çəkdi Xatırladaq Bazar ertəsi və bir az keçən həftə. 293 00:12:05,580 --> 00:12:09,970 Və bu şeyi layout təsvir kompüter yaddaşında zaman 294 00:12:09,970 --> 00:12:11,000 Bəzi proqram çalışan. 295 00:12:11,000 --> 00:12:14,310 Top texnologiya seqment, geri, istinad faktiki adet sıfır və olanları 296 00:12:14,310 --> 00:12:16,000 ki, proqram daxildir. 297 00:12:16,000 --> 00:12:19,340 Var ki, aşağıda, bir sıra başlatılmış və ya uninitialized data, hansı adətən 298 00:12:19,340 --> 00:12:22,910 və ya sabitləri kimi şeylər aiddir strings və ya ki, qlobal dəyişənlər 299 00:12:22,910 --> 00:12:24,200 əvvəlcədən elan edilmişdir. 300 00:12:24,200 --> 00:12:26,500 Orada yığın, amma biz edəcəyik geri bir az olduğu. 301 00:12:26,500 --> 00:12:27,410 >> Və sonra yığını var. 302 00:12:27,410 --> 00:12:30,660 Çox da tepsiler bir yığın kimi yaddaş olur yerləşir yeməkxana, bu 303 00:12:30,660 --> 00:12:33,610 laylı və zaman laylı bir proqram nə? 304 00:12:33,610 --> 00:12:36,380 305 00:12:36,380 --> 00:12:37,730 Üçün yığını istifadə nədir? 306 00:12:37,730 --> 00:12:39,320 >> Bəli? 307 00:12:39,320 --> 00:12:40,000 >> Funksiyasının edin. 308 00:12:40,000 --> 00:12:42,890 Bir funksiyası zəng heç bir zaman, bu, onun yaddaş qəlpə verilən 309 00:12:42,890 --> 00:12:45,020 yerli dəyişənlər və ya onun parametrləri. 310 00:12:45,020 --> 00:12:48,810 Və pictorially, biz görürük ki, hər bir ilə zaman ardıcıl funksiyası adlanır 311 00:12:48,810 --> 00:12:52,520 zənglər B zənglər C zənglər D, onlar yığını üzərində laylı almaq. 312 00:12:52,520 --> 00:12:55,630 Və bu dilim hər ərzində yaddaş əhəmiyyətli bir unikal vüsət edir 313 00:12:55,630 --> 00:12:58,590 ki, funksiya üçün, bu, əlbəttə, siz tərəfdən istəyirsinizsə problemlidir 314 00:12:58,590 --> 00:13:01,850 bir funksiyası başqa bir parça istədiyiniz veri 315 00:13:01,850 --> 00:13:03,500 mutate və ya dəyişdirmək üçün. 316 00:13:03,500 --> 00:13:08,060 >> Belə ki, imkan bizim həll nə idi Bir yığın təmsil funksiyası 317 00:13:08,060 --> 00:13:11,390 daxili yaddaş dəyişdirmək üçün nizama salmaq başqa yığını çərçivəsində? 318 00:13:11,390 --> 00:13:14,590 Necə bir-birinə bu iki söhbət edirsiniz? 319 00:13:14,590 --> 00:13:18,510 Belə göstəricilərinə və ya URL yolu ilə, burada olan, yenə yalnız təsvir 320 00:13:18,510 --> 00:13:22,280 xüsusi xatirəsinə tərəfindən yol bite sayı, xüsusi 321 00:13:22,280 --> 00:13:23,830 dəyər bilər. 322 00:13:23,830 --> 00:13:26,860 Beləliklə də biz davam son dəfə xatırlayıram bir də hekayə və baxdı 323 00:13:26,860 --> 00:13:28,280 ədalətli arabası proqramı. 324 00:13:28,280 --> 00:13:32,900 Bu proqram bir neçə arabası deyil səbəbləri, lakin ən worrisome biridir 325 00:13:32,900 --> 00:13:34,620 nə yoxlamaq üçün uğursuz çünki? 326 00:13:34,620 --> 00:13:39,111 327 00:13:39,111 --> 00:13:40,450 >> Bəli, bu girişinizi kontrol edə bilmir. 328 00:13:40,450 --> 00:13:41,870 Üzr istəyirik? 329 00:13:41,870 --> 00:13:43,880 >> 12 simvol daha çox edin. 330 00:13:43,880 --> 00:13:47,260 Belə çox şıq, memcopy zəng zaman, ki, adı təklif kimi, yalnız 331 00:13:47,260 --> 00:13:50,630 ikinci arqument dən nüsxədə yaddaş ilk mübahisəyə. 332 00:13:50,630 --> 00:13:54,730 Üçüncü dəlil, çox şıq edir Siz əmin olun yoxlanılır 333 00:13:54,730 --> 00:13:59,400 , bu halda, uzunluğu daha çox surəti bar, simvol sayı, 334 00:13:59,400 --> 00:14:03,810 hedef daxil olan bu array C. Amma problem olduğunu nə 335 00:14:03,810 --> 00:14:07,230 C özü kifayət qədər böyük olmadıqda ki, idarə etmək? 336 00:14:07,230 --> 00:14:09,900 Siz sayı surəti olacaq Sizə verilən olduğunuzu bayt. 337 00:14:09,900 --> 00:14:13,040 Amma əslində nə var sizin üçün yer çox bayt? 338 00:14:13,040 --> 00:14:16,770 >> Bəli, bu proqram çox ağılsızlıq yalnız kor-koranə bu nə almaq üçün gəlir 339 00:14:16,770 --> 00:14:20,650 verilmiş, hello backslash 0 edir simli qısa böyük əgər 340 00:14:20,650 --> 00:14:22,040 ki, beş chars kimi. 341 00:14:22,040 --> 00:14:26,470 Amma faktiki 12 simvol var və ya əgər 1200 simvol, biz sonuncu dəfə gördüm 342 00:14:26,470 --> 00:14:29,380 yalnız tamamilə olacaq ki, yaddaş üzerine ki, 343 00:14:29,380 --> 00:14:30,470 Sizə aid deyil. 344 00:14:30,470 --> 00:14:34,390 Və ən pis halda, siz yazmaq ki, əgər biz deyilir ki, orada qırmızı hissəsi 345 00:14:34,390 --> 00:14:35,380 ünvan qayıdıb - 346 00:14:35,380 --> 00:14:38,370 Bu yalnız burada kompüter avtomatik, sizin üçün, arxasında 347 00:14:38,370 --> 00:14:43,130 üz səhnələri, tucks 32-bit dəyəri lazımdır nə ünvan üçün xatırladır 348 00:14:43,130 --> 00:14:47,080 qayıtdığınız zaman foo, bu digər funksiyası, icra edilir. 349 00:14:47,080 --> 00:14:49,320 Bu növ çörək qırıntı var bu qayıdır. 350 00:14:49,320 --> 00:14:52,490 Siz potensial ki, üzerine edin siz pis adam istəyirsinizsə, ola bilər bilər 351 00:14:52,490 --> 00:14:54,750 potensial təhvil almaq Birinin kompüter. 352 00:14:54,750 --> 00:14:58,020 Və ən əlbəttə will əksər hallarda bu qəza. 353 00:14:58,020 --> 00:15:01,690 >> İndi bu problem yalnız mürəkkəbləşdirirdi Biz yaddaş haqqında danışmağa başladı kimi 354 00:15:01,690 --> 00:15:03,010 ümumiyyətlə idarə edilməsi. 355 00:15:03,010 --> 00:15:07,150 Və malloc, yaddaş ayrılması, bir biz ayrılması üçün istifadə edə bilərsiniz ki, funksiyası 356 00:15:07,150 --> 00:15:11,260 Biz əvvəlcədən bilmirəm zaman yaddaş bəzi lazımdır bilər. 357 00:15:11,260 --> 00:15:13,960 Belə ki, məsələn, mən geri əgər burada avadanlığına. 358 00:15:13,960 --> 00:15:21,010 Mən keçən dəfə hello2.c dən açmaq baxdı burada bu proqram, geri 359 00:15:21,010 --> 00:15:23,500 bu kimi bir az bir şey, yalnız üç xətləri - 360 00:15:23,500 --> 00:15:27,940 Adınızı, sonra simli adı, dövlət sol, getstring bərabərdir. 361 00:15:27,940 --> 00:15:29,690 Və sonra biz onu çap istifadəçi adı. 362 00:15:29,690 --> 00:15:31,170 >> Belə ki, bu super sadə proqram idi. 363 00:15:31,170 --> 00:15:34,870 Aydın, mənə davam bildirin və salam-2 edir. 364 00:15:34,870 --> 00:15:36,680 Mən dot çizgi salam-2 etmək gedirəm. 365 00:15:36,680 --> 00:15:37,750 Adınızı dövlət - 366 00:15:37,750 --> 00:15:38,140 David. 367 00:15:38,140 --> 00:15:38,840 Daxil edin. 368 00:15:38,840 --> 00:15:39,540 David Salam. 369 00:15:39,540 --> 00:15:41,060 OK iş görünür. 370 00:15:41,060 --> 00:15:43,140 Amma nə həqiqətən davam burada başlıq altında? 371 00:15:43,140 --> 00:15:44,670 Birinci edək bir qat geri soymaq. 372 00:15:44,670 --> 00:15:48,380 String biz var yalnız sinonimi deyil nə üçün həyata? 373 00:15:48,380 --> 00:15:49,110 Char ulduzu. 374 00:15:49,110 --> 00:15:52,740 Elə bir az daha gizli edək lakin daha çox texniki doğru ki, bu 375 00:15:52,740 --> 00:15:55,570 o deməkdir ki, bir char ulduz deyil, adı, bəli, bir dəyişir. 376 00:15:55,570 --> 00:15:59,920 Amma nə ad mağaza ünvanı bir az qəribə hiss edən bir char, 377 00:15:59,920 --> 00:16:01,050 Mən bir string geri alıram, çünki. 378 00:16:01,050 --> 00:16:03,580 Mən çox alıram chars bir char deyil. 379 00:16:03,580 --> 00:16:07,400 >> Amma əlbəttə, yalnız birinci növbədə yadda char ünvanı yerləşir 380 00:16:07,400 --> 00:16:08,870 Çünki niyə bütün simli var? 381 00:16:08,870 --> 00:16:12,700 Necə anlamaq edirsiniz olduğu sonu simli əvvəlində biləndir? 382 00:16:12,700 --> 00:16:13,630 Bu backslash sıfır. 383 00:16:13,630 --> 00:16:17,260 Belə ki, bu iki ip ucları ilə anlamaq əvvəlinə və sonuna qədər 384 00:16:17,260 --> 00:16:20,280 hər hansı bir string onlar etdiyiniz belə uzun kimi, düzgün null ilə formalaşır 385 00:16:20,280 --> 00:16:22,110 Terminator ki, backslash sıfır. 386 00:16:22,110 --> 00:16:24,520 >> Amma bu getstring çağırır. 387 00:16:24,520 --> 00:16:28,020 Və o getstring çıxır bütün bu vaxt cür olmuşdur 388 00:16:28,020 --> 00:16:28,820 bizim üçün aldadıcı. 389 00:16:28,820 --> 00:16:32,460 O, əmin olmaq, bu əmək bunu edilmişdir istifadəçi bir string almaq. 390 00:16:32,460 --> 00:16:34,580 Amma ki, yaddaş nerde gələn olunubmu? 391 00:16:34,580 --> 00:16:38,440 Burada şəkil geri və əgər yalnız bir olan müəyyən müraciət 392 00:16:38,440 --> 00:16:42,610 an əvvəl ki, yığını burada funksiyaları də'vət olunduqları zaman yaddaş, gedir 393 00:16:42,610 --> 00:16:45,370 ki, məntiq, siz getstring zəng zaman, və sonra yazın 394 00:16:45,370 --> 00:16:50,900 D-A-V-I-D, daxil olduğu D-A-V-I-D backslash sıfır əsaslanan, saxlanılan 395 00:16:50,900 --> 00:16:53,480 hekayə biz uzaq izah etdik? 396 00:16:53,480 --> 00:16:55,190 >> Bu olmaq görünür ki, yığını, sağ? 397 00:16:55,190 --> 00:16:58,120 Siz string almaq zəng zaman almaq yığını yaddaş az dilim. 398 00:16:58,120 --> 00:17:01,630 Belə ki, D-A-V-I-D səbəb dayanır backslash sıfır saxlanılır 399 00:17:01,630 --> 00:17:02,770 var yığını. 400 00:17:02,770 --> 00:17:07,680 Amma yekunları getstring, bir dəqiqə gözləyin ki, simli, necə deyərlər, o deməkdir ki, 401 00:17:07,680 --> 00:17:11,700 bu yemekhane dən tray var yığını off alınır. 402 00:17:11,700 --> 00:17:14,560 Və biz ki, tezliklə kimi son dəfə deyib funksiyası yekunları və sizi ki, 403 00:17:14,560 --> 00:17:20,109 yığını off tray, belə danışmaq, nə Siz qalıqları haqqında kəsb edə bilər 404 00:17:20,109 --> 00:17:21,819 yaddaş? 405 00:17:21,819 --> 00:17:25,160 I növ sual işarələri kimi redrew onlar səmərəli olmaq, çünki 406 00:17:25,160 --> 00:17:26,250 unknown dəyərlər. 407 00:17:26,250 --> 00:17:29,500 Bəzi Onlar yeniden istifadə oluna bilər Növbəti funksiyası adlanır. 408 00:17:29,500 --> 00:17:31,870 >> Başqa sözlə, biz nə varsa saxlanılması olunacaq - 409 00:17:31,870 --> 00:17:34,350 Mən tez şəkil çəkmək lazımdır burada yığını. 410 00:17:34,350 --> 00:17:38,690 Biz alt rəsm üçün nə varsa mənim yaddaş seqmentinin və biz demək lazımdır 411 00:17:38,690 --> 00:17:42,230 Bu yaddaş yerinə ki, əsas və bəlkə ARG c və işğal 412 00:17:42,230 --> 00:17:46,790 ARG v və proqramın başqa bir şey varsa, getstring adlanır zaman, 413 00:17:46,790 --> 00:17:51,120 ehtimalla getstring edir Burada yaddaş yığın. 414 00:17:51,120 --> 00:17:53,940 Və sonra D-A-V-I-D birtəhər Bu funksiya ildə başa çatır. 415 00:17:53,940 --> 00:17:55,320 Və mən oversimplify gedirəm. 416 00:17:55,320 --> 00:18:00,050 Ancaq nin boynuna qoy onun D-A-V-I-D ki, backslash sıfır. 417 00:18:00,050 --> 00:18:03,500 Belə ki, bu çox bytes istifadə olunur getstring üçün çərçivəsində. 418 00:18:03,500 --> 00:18:08,270 >> Amma tezliklə getstring yekunları kimi, biz Sonuncu dəfə bildirib ki, artıq bu yaddaş 419 00:18:08,270 --> 00:18:11,340 burada olur - woops - 420 00:18:11,340 --> 00:18:14,270 bütün səmərəli silinə olur. 421 00:18:14,270 --> 00:18:17,220 Və biz sual kimi indi bu hesab edə bilər işarələri bilən çünki 422 00:18:17,220 --> 00:18:18,720 hansı ki, yaddaş olmaq olacaq. 423 00:18:18,720 --> 00:18:22,130 Həqiqətən, mən çox tez-tez Zəng funksiyaları getstring başqa. 424 00:18:22,130 --> 00:18:24,750 Və Mən bəzi digər zəng kimi getstring çox funksiyası, bəlkə deyil 425 00:18:24,750 --> 00:18:28,860 Biz yalnız baxdı bu proqram lakin bir sıra digər, şübhəsiz ki, bir-birinə 426 00:18:28,860 --> 00:18:34,180 funksiyası verilir başa bilər yığını bu növbəti spot. 427 00:18:34,180 --> 00:18:39,410 >> Belə ki getstring mağazalar ola bilməz Yığını D-A-V-I-D edirəm, çünki 428 00:18:39,410 --> 00:18:41,040 dərhal çıxışı itirirlər. 429 00:18:41,040 --> 00:18:43,720 Amma biz onlar getstring bilirik nə yalnız qaytarır? 430 00:18:43,720 --> 00:18:47,220 Bu dönən deyil Mənə altı simvol. 431 00:18:47,220 --> 00:18:51,090 Bu, həqiqətən nə etdi qayıdır Biz keçən dəfə bağlamaq? 432 00:18:51,090 --> 00:18:52,480 Ilk ünvanı. 433 00:18:52,480 --> 00:18:56,650 Belə ki, birtəhər, siz getstring çağıranda bunun üçün yaddaş yığın bölüşdürülməsi var 434 00:18:56,650 --> 00:18:59,620 simli ki, istifadəçilər növü və o sonra qaytarılması ünvanı. 435 00:18:59,620 --> 00:19:02,930 Və bu zaman istədiyiniz çıxır Bu yaddaş ayrılması funksiyası 436 00:19:02,930 --> 00:19:08,390 yol və zəng edən şəxsə geri qaytarılması ki, funksiyası üçün ünvan 437 00:19:08,390 --> 00:19:11,870 yaddaş ki, yığın, siz tamamilə müəssisələrdə yığını qoymaq bilməz 438 00:19:11,870 --> 00:19:14,750 alt, çünki funksional yalnız var çox sizin ola gedir 439 00:19:14,750 --> 00:19:17,800 tez, belə ki, siz yəqin ki, təxmin edə bilərsiniz biz yəqin ki, onu silkələmək olacaq 440 00:19:17,800 --> 00:19:20,130 əvəzinə, sözdə yığın. 441 00:19:20,130 --> 00:19:25,290 >> Belə ki, yaddaş nin alt arasında layout və yaddaş nin üst 442 00:19:25,290 --> 00:19:26,820 layout seqmentləri bütün dəstə var. 443 00:19:26,820 --> 00:19:29,270 Bir yığın və sağ Yuxarıda yığın edir. 444 00:19:29,270 --> 00:19:33,680 Və yığın yalnız müxtəlif yığın edir funksiyaları üçün istifadə ki, yaddaş 445 00:19:33,680 --> 00:19:34,770 Onlar adlı etdiyiniz zaman. 446 00:19:34,770 --> 00:19:38,100 Bu zaman uzun müddətli yaddaş üçün istifadə bir funksiyası bəzi qamarlamaq istəyirəm 447 00:19:38,100 --> 00:19:42,700 yaddaş və ona asılı qalmaq edə üzərində nəzarət kaybetmeden. 448 00:19:42,700 --> 00:19:45,550 >> İndi bəlkə dərhal bilər bu olduğunu görmək 449 00:19:45,550 --> 00:19:48,060 mükəmməl dizayn lazım. 450 00:19:48,060 --> 00:19:51,350 Proqram yaddaş ayrılan kimi, yığını, və ya zəng kimi daha çox və 451 00:19:51,350 --> 00:19:55,540 daha çox funksiyaları və ya ayrılması kimi kimi off malloc ilə yığın yaddaş 452 00:19:55,540 --> 00:20:00,690 getstring bunu nə aydın qaçılmaz problem görünür? 453 00:20:00,690 --> 00:20:00,860 >> Sağ. 454 00:20:00,860 --> 00:20:03,150 Faktla kimi bu oxlar bir-birinə işarə edilir 455 00:20:03,150 --> 00:20:04,380 yaxşı ümidlər vermir. 456 00:20:04,380 --> 00:20:08,630 And olsun ki, biz bunu çox sürətlə avariya bilər yolları hər hansı bir sayı bir program. 457 00:20:08,630 --> 00:20:12,050 Əslində, mən var bilər edirəm Bu təsadüfən bir dəfə aparılır. 458 00:20:12,050 --> 00:20:14,020 Və ya, əgər bunu edək qəsdən indi. 459 00:20:14,020 --> 00:20:21,330 Mənə davam və tez super yazmaq edək bir proqram dontdothis.c çağırıb. 460 00:20:21,330 --> 00:20:26,730 Və indi burada getmək və edəcəyik kəskin stdio.h daxil yoxdur. 461 00:20:26,730 --> 00:20:32,620 Funksiyası foo edir bəyan edək heç bir dəlilləri olan 462 00:20:32,620 --> 00:20:34,040 etibarsız yaxşı kimi adlandırılmışdır. 463 00:20:34,040 --> 00:20:37,830 >> Və foo edəcəyimiz yeganə şey yəqin olmayan zəng foo, 464 00:20:37,830 --> 00:20:39,100 akıllıca fikir, ancaq belə ola bilər. 465 00:20:39,100 --> 00:20:40,490 KBB əsas edilsin. 466 00:20:40,490 --> 00:20:45,270 İndi əsas gedir yeganə etmək üçün həmçinin foo zəng edir. 467 00:20:45,270 --> 00:20:51,050 Və yalnız kicks, mən getmək gidiyorum irəlidə burada və Hello "printf demək 468 00:20:51,050 --> 00:20:52,340 foo. " 469 00:20:52,340 --> 00:20:52,890 >> OK. 470 00:20:52,890 --> 00:21:00,160 Mən hər hansı bir səhv etmədiyini Belə ki, Dontdothis dot çizgi olun. 471 00:21:00,160 --> 00:21:01,960 Və edək böyük bir pəncərə bunu - 472 00:21:01,960 --> 00:21:03,210 dot çizgi, dontdothis. 473 00:21:03,210 --> 00:21:07,590 474 00:21:07,590 --> 00:21:08,840 Hadi. 475 00:21:08,840 --> 00:21:10,940 476 00:21:10,940 --> 00:21:11,890 Oh Uh. 477 00:21:11,890 --> 00:21:13,100 Görünür, siz bunu edə bilərsiniz. 478 00:21:13,100 --> 00:21:15,190 Lanet olsun. 479 00:21:15,190 --> 00:21:16,190 OK. 480 00:21:16,190 --> 00:21:16,580 Gözləyin. 481 00:21:16,580 --> 00:21:17,370 Yanındayız. 482 00:21:17,370 --> 00:21:18,270 Biz mi - 483 00:21:18,270 --> 00:21:20,110 We Make ilə istifadə etməyib. 484 00:21:20,110 --> 00:21:22,050 >> [SIGHS] 485 00:21:22,050 --> 00:21:25,110 >> Bilirəm amma biz hesab yalnız silindi. 486 00:21:25,110 --> 00:21:28,410 Ah, evet. 487 00:21:28,410 --> 00:21:30,660 Lanet olsun. 488 00:21:30,660 --> 00:21:32,640 Bu Rob həll edir. 489 00:21:32,640 --> 00:21:34,678 Nə? 490 00:21:34,678 --> 00:21:35,928 Bu, çox sadə. 491 00:21:35,928 --> 00:21:43,820 492 00:21:43,820 --> 00:21:47,360 Bəli, biz optimallaşdırılması söndürülmüşdü. 493 00:21:47,360 --> 00:21:48,970 OK, bye durmaq. 494 00:21:48,970 --> 00:21:49,950 İndi daha yaxşı hiss edirəm. 495 00:21:49,950 --> 00:21:51,390 OK. 496 00:21:51,390 --> 00:21:51,780 Bütün hüquqlar. 497 00:21:51,780 --> 00:21:53,430 >> Belə ki, bu derleyeceğiz edək - 498 00:21:53,430 --> 00:21:55,880 Siz dontdothis olun. 499 00:21:55,880 --> 00:22:00,090 Siz bu adını dəyişmək üçün ola bilər yalnız bir anda dothis.c. 500 00:22:00,090 --> 00:22:00,710 Orada biz gedin. 501 00:22:00,710 --> 00:22:01,240 Təşəkkür edirik. 502 00:22:01,240 --> 00:22:02,050 OK. 503 00:22:02,050 --> 00:22:05,480 Beləliklə, mən çap edilmişdir ki, bir şey yalnız həqiqətən 504 00:22:05,480 --> 00:22:08,150 prosesi aşağı yavaşlatan olan biz ki, nöqtəsinə çatmış olardı. 505 00:22:08,150 --> 00:22:08,510 OK. 506 00:22:08,510 --> 00:22:08,870 Phew! 507 00:22:08,870 --> 00:22:11,180 >> Beləliklə, nə həqiqətən gedir? 508 00:22:11,180 --> 00:22:14,440 Yalnız bir kənara kimi orada səbəbi edir giriş baxımından bir şey etdiyini və 509 00:22:14,440 --> 00:22:17,270 çıxış yavaş çalışır, çünki ilə simvol yazmaq lazımdır 510 00:22:17,270 --> 00:22:18,600 ekran Bu hərəkət etmək var. 511 00:22:18,600 --> 00:22:21,720 Belə ki, uzun sözün qısası, mən, həqiqətən idi belə səbirsiz oldu, biz var ki, 512 00:22:21,720 --> 00:22:23,260 habelə bu son nəticədə görüldü. 513 00:22:23,260 --> 00:22:26,220 Mən çap-up gezmeye var, indi ki, biz dərhal görürük. 514 00:22:26,220 --> 00:22:28,410 Belə ki, niyə belə olur. 515 00:22:28,410 --> 00:22:31,300 Bəli, əlbəttə ki, sadə izahat, ki, foo yəqin ki, olmamalıdır deyil 516 00:22:31,300 --> 00:22:32,500 özü zəng bilər. 517 00:22:32,500 --> 00:22:34,470 >> İndi ümumi şəkildə, bu recursion edir. 518 00:22:34,470 --> 00:22:36,970 Və biz bir neçə həftə fikir əvvəl recursive yaxşıdır. 519 00:22:36,970 --> 00:22:40,330 Recursion bu sehrli yolu müfəssəl super özünüzü ifadə. 520 00:22:40,330 --> 00:22:41,400 Və yalnız işləyir. 521 00:22:41,400 --> 00:22:45,060 Lakin bütün əsas xüsusiyyəti var danışdıq etdiyiniz recursive proqramları 522 00:22:45,060 --> 00:22:48,260 haqqında baxdı indiyə qədər, hansı onlar nə idi ki? 523 00:22:48,260 --> 00:22:52,610 Bəzi ağır kodlu olan bir baza halda, bəzi hallarda bildirib ki, hal 524 00:22:52,610 --> 00:22:56,210 aydın olan foo, zəng etməyin Burada iş deyil. 525 00:22:56,210 --> 00:22:58,920 >> Beləliklə, nə həqiqətən baş verir bu şəkil baxımından? 526 00:22:58,920 --> 00:23:01,790 Bəli, zaman əsas foo, o çağırır yaddaş bir dilim alır. 527 00:23:01,790 --> 00:23:04,150 Foo foo çağırır zaman, o olur yaddaş bir dilim. 528 00:23:04,150 --> 00:23:06,430 Foo foo çağırır, o, bir dilim alır. 529 00:23:06,430 --> 00:23:07,080 Bu dilim alır. 530 00:23:07,080 --> 00:23:08,120 Bu dilim alır. 531 00:23:08,120 --> 00:23:09,460 Foo qaytarılması heç vaxt, çünki. 532 00:23:09,460 --> 00:23:12,160 Biz o biri silinmə heç edirik yığını olan çərçivəsində. 533 00:23:12,160 --> 00:23:15,930 Belə ki, biz yığın vasitəsi ilə əsən deyilik KİM NƏ başqa bilir, qeyd etmək 534 00:23:15,930 --> 00:23:19,600 biz hüdudlarından overstepping edirik yaddaş seqmentinin sözdə. 535 00:23:19,600 --> 00:23:21,790 Seqmentasiya yalan getmək səhv. 536 00:23:21,790 --> 00:23:24,110 >> Belə ki, orada ki, həll aydın etmirəm. 537 00:23:24,110 --> 00:23:28,830 Lakin böyük dolayısı ki, bəli, edir tamamilə bir limit var 538 00:23:28,830 --> 00:23:32,470 o nə kimi, müəyyən deyil, hətta siz bir zəng edə bilərsiniz bir çox funksiyaları 539 00:23:32,470 --> 00:23:34,970 proqramı, neçə dəfə bir funksiyası özü zəng edə bilərsiniz. 540 00:23:34,970 --> 00:23:38,430 Biz recursion vəz etdilər Belə ki, hətta bu potensial sehrli şey kimi 541 00:23:38,430 --> 00:23:41,870 SİQMA üçün həftə öncə neçə funksiyası, və biz məlumat almaq 542 00:23:41,870 --> 00:23:45,270 strukturları və CS50, digər görürsünüz bunun üçün ərizə, bu deyil 543 00:23:45,270 --> 00:23:46,500 mütləq yaxşı şey. 544 00:23:46,500 --> 00:23:50,070 Funksiyanı özü çağırır, Çünki əgər bir baza var, hətta, özü çağırır 545 00:23:50,070 --> 00:23:54,860 halda, siz baza halda basmayın əgər 1000 zənglər və ya 10,000 zənglər üçün tərəfindən 546 00:23:54,860 --> 00:23:58,800 Siz oda tökülmək ola bilər ki, zaman Sizin qondarma yığını və hit haqqında 547 00:23:58,800 --> 00:24:00,400 yaddaş bəzi digər seqmentlər. 548 00:24:00,400 --> 00:24:03,950 Belə ki, çox dizayn ticarət-off deyil zəriflik arasında arasında 549 00:24:03,950 --> 00:24:06,920 Sizin xüsusi möhkəmliyini həyata keçirilməsi. 550 00:24:06,920 --> 00:24:10,780 >> Belə ki, bir İşin mənfi tərəfi odur var ya biz var nə başqa bir Gotcha 551 00:24:10,780 --> 00:24:11,720 İndiyədək bunu edilmişdir. 552 00:24:11,720 --> 00:24:12,980 Mən getstring adlı olduqda - 553 00:24:12,980 --> 00:24:15,120 mənə salam-2 geri gidelim. 554 00:24:15,120 --> 00:24:18,170 , Mən getstring zəng alıram Qeyd edək ki, bir ünvan dönür. 555 00:24:18,170 --> 00:24:20,730 Və biz bu gün iddia ünvanı yığın edir. 556 00:24:20,730 --> 00:24:24,480 İndi çap edirəm ki ünvanda string. 557 00:24:24,480 --> 00:24:27,000 Amma deyilən heç vaxt sonra getstring qarşı. 558 00:24:27,000 --> 00:24:30,850 Biz kimi bir funksiyası calll heç vaxt etdik burada əl geri ungetstring, 559 00:24:30,850 --> 00:24:31,610 yaddaş. 560 00:24:31,610 --> 00:24:33,250 Amma səmimi biz yəqin ki, olmalı idi. 561 00:24:33,250 --> 00:24:37,390 Çünki biz kompüter xahiş saxlamaq əgər kimi kimsə xatirəsinə tərəfindən yol 562 00:24:37,390 --> 00:24:40,830 getstring lakin, şübhəsiz ki, geri vermək heç çox yol borcludur 563 00:24:40,830 --> 00:24:42,970 biz yaddaş tökülmək vasitəsi problemləri. 564 00:24:42,970 --> 00:24:46,140 >> Və əslində, biz bu üçün baxa bilərsiniz onun istifadə yeni alət ilə problemlər 565 00:24:46,140 --> 00:24:47,640 yazın bir az sirli edir. 566 00:24:47,640 --> 00:24:50,960 Amma mənə irəli getmək və onu splash bildirin yalnız bir anda ekranda. 567 00:24:50,960 --> 00:24:56,940 Mən irəli getmək və Valgrind çalıştırmak üçün gidiyorum olan ilk komanda parametri ilə 568 00:24:56,940 --> 00:25:00,260 line arqument adı proqram salam-2. 569 00:25:00,260 --> 00:25:02,650 Və təəssüf ki, bu çıxış amansızlıqla edir 570 00:25:02,650 --> 00:25:04,290 heç bir yaxşı səbəbdən kompleksi. 571 00:25:04,290 --> 00:25:06,280 Yəni biz bütün mess görürük. 572 00:25:06,280 --> 00:25:07,530 David my name dövlətdir. 573 00:25:07,530 --> 00:25:09,760 Belə ki, proqramın həqiqətən çalışır. 574 00:25:09,760 --> 00:25:11,180 İndi biz bu çıxış almaq. 575 00:25:11,180 --> 00:25:13,400 >> Belə Valgrind oxşar gdb ruhuna edir. 576 00:25:13,400 --> 00:25:14,950 Bu se başına ayıklama deyil. 577 00:25:14,950 --> 00:25:16,270 Amma bu yaddaş checker var. 578 00:25:16,270 --> 00:25:20,140 Bu davam edəcək bir proqram proqramı və siz bir xahiş əgər demək 579 00:25:20,140 --> 00:25:23,860 yaddaş üçün kompüter və heç vaxt onu təhvil geri, bununla da var o deməkdir ki 580 00:25:23,860 --> 00:25:24,570 bir yaddaş sızıntısı. 581 00:25:24,570 --> 00:25:26,240 Və yaddaş sızması pis olmaq üçün edirlər. 582 00:25:26,240 --> 00:25:29,120 Və kompüter istifadəçiləri var Yəqin ki, bu bir olub, hiss 583 00:25:29,120 --> 00:25:30,300 Mac və ya PC. 584 00:25:30,300 --> 00:25:33,730 Əgər üçün kompüter istifadə və bir neçə ildə rebooted deyil isə 585 00:25:33,730 --> 00:25:36,820 gün, və ya sadəcə bir çox var çalışan proqramları və lənətləmək şey 586 00:25:36,820 --> 00:25:42,360 bir itiləyici dayana yavaşlatır, və ya ən azı Çünki, istifadə etmək super annoying var 587 00:25:42,360 --> 00:25:44,350 hər şey yalnız super yavaş var. 588 00:25:44,350 --> 00:25:46,260 >> İndi səbəbləri hər hansı bir sayı ola bilər. 589 00:25:46,260 --> 00:25:49,600 Bu sonsuz loop, bir səhv ola bilər kiminsə kodu və ya daha çox sadəcə, bu, 590 00:25:49,600 --> 00:25:53,250 daha çox istifadə etdiyiniz demək bilər Sizin çox yaddaş, və ya çalışır, 591 00:25:53,250 --> 00:25:54,920 kompüter həqiqətən var. 592 00:25:54,920 --> 00:25:57,770 Və bəlkə bir proqram bir səhv var yaddaş tələb saxlamaq. 593 00:25:57,770 --> 00:26:02,480 Il brauzerlər üçün bədnam idi Bu, daha çox yaddaş tələb 594 00:26:02,480 --> 00:26:03,870 lakin geri verilməsi heç vaxt. 595 00:26:03,870 --> 00:26:07,220 Şübhəsiz ki, yalnız məhdud varsa yaddaş miqdarı, xahiş bilməz 596 00:26:07,220 --> 00:26:09,990 üçün sonsuz bir çox dəfə yaddaş bəzi. 597 00:26:09,990 --> 00:26:13,070 >> Və belə ki, baxmayaraq ki, burada nə daha Valgrind çıxış edir 598 00:26:13,070 --> 00:26:17,490 nəzər üçün lazımsız kompleksi Birincisi, bu maraqlı hissəsidir. 599 00:26:17,490 --> 00:26:18,890 Heap - 600 00:26:18,890 --> 00:26:20,060 çıxış istifadə. 601 00:26:20,060 --> 00:26:22,810 Belə ki, burada nə qədər yaddaş idi müəssisələrdə yığın istifadə 602 00:26:22,810 --> 00:26:24,300 vaxt mənim proqram çıxıldı - 603 00:26:24,300 --> 00:26:27,280 bir blok yəqin altı bayt. 604 00:26:27,280 --> 00:26:28,710 Beləliklə, mən əlləri dalğa gidiyorum nə bir blokdur. 605 00:26:28,710 --> 00:26:31,270 Daha, yalnız bir yığın edir düşünün yığın texniki söz. 606 00:26:31,270 --> 00:26:33,140 Altı bayt ancaq - 607 00:26:33,140 --> 00:26:36,870 ki, altı bayt nə istifadə hələ də? 608 00:26:36,870 --> 00:26:37,390 >> Eynilə elə. 609 00:26:37,390 --> 00:26:41,520 D-A-V-I-D backslash sıfır beş məktub adı plus null terminator. 610 00:26:41,520 --> 00:26:46,350 Belə ki, bu proqram qeyd Valgrind ki, ilə, yəqin, altı bytes istədi 611 00:26:46,350 --> 00:26:48,950 getstring yolu, lakin heç vaxt geri verdi. 612 00:26:48,950 --> 00:26:52,030 Və əslində, bu, belə ola bilər mənim proqram üç deyil Aşkar əgər 613 00:26:52,030 --> 00:26:53,590 xətləri, lakin 300 xətləri var. 614 00:26:53,590 --> 00:26:56,920 Beləliklə, biz, həqiqətən, başqa komanda verə bilər line arqumentinə Valgrind üçün 615 00:26:56,920 --> 00:26:58,290 daha çox verbose edir. 616 00:26:58,290 --> 00:26:59,760 Bu xatırlamaq bir az annoying var. 617 00:26:59,760 --> 00:27:01,580 Amma əgər - 618 00:27:01,580 --> 00:27:01,930 nin görək. 619 00:27:01,930 --> 00:27:03,540 Keçirtmək - 620 00:27:03,540 --> 00:27:05,030 Bu sızıntı olub - 621 00:27:05,030 --> 00:27:07,580 hətta mən xatırlamıram bu tərəfdən off nə. 622 00:27:07,580 --> 00:27:08,550 >> - Sızıntısı kontrol tam bərabərdir. 623 00:27:08,550 --> 00:27:10,180 Yep, təşəkkür edirəm. 624 00:27:10,180 --> 00:27:12,520 - Sızıntısı kontrol tam bərabərdir. 625 00:27:12,520 --> 00:27:13,800 Daxil edin. 626 00:27:13,800 --> 00:27:14,940 Eyni proqram çalışır. 627 00:27:14,940 --> 00:27:16,180 Yenidən David yazın. 628 00:27:16,180 --> 00:27:17,660 İndi bir az daha ətraflı bax. 629 00:27:17,660 --> 00:27:20,890 Amma yığın xülasə aşağıda olan dörd eynidir - ah, 630 00:27:20,890 --> 00:27:22,120 Bu gözəl növüdür. 631 00:27:22,120 --> 00:27:25,460 İndi Valgrind həqiqətən axtarır Mənim kodu çətindir bir az. 632 00:27:25,460 --> 00:27:29,580 Və bu, yəqin ki, deyən oldu satır malloc - 633 00:27:29,580 --> 00:27:30,580 biz Uzaklaştırmak. 634 00:27:30,580 --> 00:27:31,980 Line - 635 00:27:31,980 --> 00:27:32,930 biz nə line görmürəm. 636 00:27:32,930 --> 00:27:35,110 Amma malloc ilk günahkar deyil. 637 00:27:35,110 --> 00:27:38,630 Malloc bir blog var. 638 00:27:38,630 --> 00:27:39,810 >> Bütün hüquqlar? 639 00:27:39,810 --> 00:27:40,450 OK, no. 640 00:27:40,450 --> 00:27:40,940 Sağ? 641 00:27:40,940 --> 00:27:42,520 Mən getstring çağırıb. 642 00:27:42,520 --> 00:27:44,460 getstring yəqin malloc çağırır. 643 00:27:44,460 --> 00:27:47,800 Yaxşı kodu line Şübhəlinin olması üçün günah 644 00:27:47,800 --> 00:27:49,050 Bu yaddaş ayrılan? 645 00:27:49,050 --> 00:27:51,560 646 00:27:51,560 --> 00:27:55,540 Gəlin kim malloc yazdı güman uzun kifayət qədər ki, ətrafında olmuşdur 647 00:27:55,540 --> 00:27:56,390 onların günah. 648 00:27:56,390 --> 00:27:57,520 Belə ki, yəqin ki, mina var. 649 00:27:57,520 --> 00:28:02,000 cs50.c ildə getstring - bir var ki, kompüter haradasa Fayl - 650 00:28:02,000 --> 00:28:05,210 line 286 günahkar görünür. 651 00:28:05,210 --> 00:28:08,140 İndi cs50 olmuşdur Fərz edək ki, Bunu zaman layiqli məbləği ətrafında 652 00:28:08,140 --> 00:28:09,720 biz də məsum var. 653 00:28:09,720 --> 00:28:14,080 Və bu getstring yəqin deyil hata yalan deyil ki, 654 00:28:14,080 --> 00:28:17,810 salam-2.c line 18. 655 00:28:17,810 --> 00:28:20,670 >> Elə nəzər bildirin ki, xətt 18 oldu. 656 00:28:20,670 --> 00:28:21,130 Oh. 657 00:28:21,130 --> 00:28:27,130 Elə bu xətti mütləq deyil buggy, özlüyündə, lakin səbəbi 658 00:28:27,130 --> 00:28:28,630 ki, yaddaş sızıntısı arxasında. 659 00:28:28,630 --> 00:28:32,140 Belə ki, super sadəcə, nə daxilən ki, burada həlli ola bilərmi? 660 00:28:32,140 --> 00:28:34,710 Biz yaddaş üçün xahiş istəyirsinizsə, heç vaxt geri verilməsi, və bir görünür 661 00:28:34,710 --> 00:28:37,940 problem çünki vaxt mənim kompüter üzərində yaddaş tökülmək bilər, yavaş bilər 662 00:28:37,940 --> 00:28:42,110 aşağı, pis şeylər, yaxşı, baş verə bilər sadə intuitiv həlli var? 663 00:28:42,110 --> 00:28:43,140 Yalnız geri verir. 664 00:28:43,140 --> 00:28:44,770 >> Siz bunu necə yaddaşında pulsuz bilərəm? 665 00:28:44,770 --> 00:28:49,970 Yaxşı, təşəkkürlə bu, olduqca sadə yalnız pulsuz adını demək. 666 00:28:49,970 --> 00:28:51,260 Və biz əvvəl bu həyata heç etdik. 667 00:28:51,260 --> 00:28:55,890 Amma əhəmiyyətli hesab edə bilər malloc qarşı kimi pulsuz. 668 00:28:55,890 --> 00:28:58,030 pulsuz əks olunur yaddaş ayrılması. 669 00:28:58,030 --> 00:28:59,540 Belə ki, indi mənə bu derleyeceğiz bildirin. 670 00:28:59,540 --> 00:29:02,050 Salam-2 olun. 671 00:29:02,050 --> 00:29:04,620 Mənə daha run edək. salam-2 David. 672 00:29:04,620 --> 00:29:07,290 Belə ki, bu iş görünür tam eyni şəkildə. 673 00:29:07,290 --> 00:29:11,180 Amma Valgrind geri getmək və yenidən əgər mənim yeni ki, eyni komanda 674 00:29:11,180 --> 00:29:14,720 tərtib proqram yazaraq əvvəl mənim ad - 675 00:29:14,720 --> 00:29:15,370 gözəl. 676 00:29:15,370 --> 00:29:16,760 Heap xülasə - 677 00:29:16,760 --> 00:29:17,740 - çıxış istifadə 678 00:29:17,740 --> 00:29:19,370 sıfır blokları sıfır bayt. 679 00:29:19,370 --> 00:29:21,840 Bu super gözəl, bütün yığın blokları azad edilmişdir. 680 00:29:21,840 --> 00:29:23,480 No sızması mümkündür. 681 00:29:23,480 --> 00:29:27,200 >> Belə ki, Problem Set 4 ilə gələn lakin Problem Set 5 Suclari ilə 682 00:29:27,200 --> 00:29:30,740 və irəli, bu da olacaq Sizin düzgün tədbir 683 00:29:30,740 --> 00:29:33,630 siz asılı olmayaraq proqramı və ya yaddaş sızması yoxdur. 684 00:29:33,630 --> 00:29:36,900 Amma təşəkkürlə, siz səbəb ola bilər yalnız onlara daxilən, vasitəsilə 685 00:29:36,900 --> 00:29:40,430 kiçik proqramlar üçün asan, arguably edir lakin böyük proqramlar üçün daha, 686 00:29:40,430 --> 00:29:43,860 , Bu böyük proqramları, Valgrind siz müəyyən kömək edə bilər 687 00:29:43,860 --> 00:29:45,360 xüsusi problem. 688 00:29:45,360 --> 00:29:47,500 >> Amma başqa bir problem var ki, yarana bilər. 689 00:29:47,500 --> 00:29:51,245 , Bu, mənə burada bu faylı açmaq edək yenə bir qədər sadə misal. 690 00:29:51,245 --> 00:29:53,760 Lakin edək nə diqqət Bu proqram edir. 691 00:29:53,760 --> 00:29:55,190 Bu memory.c adlanır. 692 00:29:55,190 --> 00:29:58,380 Biz bu sonra bu gün yazmaq lazımdır Bu gün mənbə kodu zip. 693 00:29:58,380 --> 00:30:01,610 Və mən adlı bir funksiyası var ki, görürsünüz dəlilləri və heç bir edir ki, f 694 00:30:01,610 --> 00:30:02,800 heç bir şey qaytarır. 695 00:30:02,800 --> 00:30:07,240 Line 20, mən yəqin elan alıram bir int və bu x zəng etmək üçün göstərici. 696 00:30:07,240 --> 00:30:09,570 Mən təyin alıram qayıdacaqsınız malloc dəyəri. 697 00:30:09,570 --> 00:30:14,590 Və yalnız am neçə bayt, aydın olmaq Mən yəqin ki, malloc geri almaq 698 00:30:14,590 --> 00:30:17,080 bu vəziyyətdə? 699 00:30:17,080 --> 00:30:18,040 >> Yəqin ki, 40. 700 00:30:18,040 --> 00:30:18,840 Harada ki, əldə edə bilərəm? 701 00:30:18,840 --> 00:30:22,410 Yaxşı, bir int tez-tez Xatırladaq ki, əgər 4 bayt, ən azı bu deyil 702 00:30:22,410 --> 00:30:25,110 cihaz, dəfə 4 10 açıqcası 40. 703 00:30:25,110 --> 00:30:28,920 Belə malloc bir ünvan qayıdır bir yaddaş yığın və saxlanılması ki, 704 00:30:28,920 --> 00:30:30,800 X nəticədə müraciət edir. 705 00:30:30,800 --> 00:30:32,570 Belə ki, aydın olmaq nə sonra baş verir? 706 00:30:32,570 --> 00:30:34,990 Yaxşı, məni geri keçmək bildirin burada şəkil. 707 00:30:34,990 --> 00:30:38,150 Mənə yalnız mənim alt cəlb edək kompüter yaddaş, mənə davam imkan və 708 00:30:38,150 --> 00:30:42,990 bütün düzbucaqlı cəlb edən mənim RAM bütün təmsil edir. 709 00:30:42,990 --> 00:30:44,790 >> Biz demək lazımdır ki, yığını alt edir. 710 00:30:44,790 --> 00:30:47,010 Və mətn seqment var ki, uninitialized data. 711 00:30:47,010 --> 00:30:49,880 Amma yalnız mücərrəd o gidiyorum uzaq nöqtə, nöqtə nöqtə kimi başqa şeylər. 712 00:30:49,880 --> 00:30:53,470 Mən yalnız bu müraciət gidiyorum üst yığın kimi. 713 00:30:53,470 --> 00:30:57,070 Və sonra bu şəkil altında, Əsas təmsil etmək gedirəm 714 00:30:57,070 --> 00:30:59,880 bir dilim yaddaş vermək yığını haqqında. 715 00:30:59,880 --> 00:31:03,150 F, mən bunu bir dilim vermək gidiyorum yığını üzrə yaddaş. 716 00:31:03,150 --> 00:31:05,140 İndi, mən müraciət var daha mənbə kodu. 717 00:31:05,140 --> 00:31:07,170 Əsas üçün yerli dəyişənlərin hansılardır? 718 00:31:07,170 --> 00:31:10,710 Göründüyü kimi heç bir şey ki, dilim deyil səmərəli boş və ya hətta böyük 719 00:31:10,710 --> 00:31:11,600 Hesab edirəm ki, tərtib etdiyiniz kimi. 720 00:31:11,600 --> 00:31:15,730 Amma f, mən yerli dəyişən var olan x adlanır. 721 00:31:15,730 --> 00:31:20,410 Beləliklə, mən irəli getmək və f vermək gidiyorum bu x zəng yaddaş yığın. 722 00:31:20,410 --> 00:31:24,680 >> 10 dəfə 4 və indi malloc Ki, olduğu malloc 40, Belə ki, 723 00:31:24,680 --> 00:31:25,430 yaddaş gələn? 724 00:31:25,430 --> 00:31:27,530 Biz Şəkil çəkilən deyil etdik əvvəl bunu bəyənir. 725 00:31:27,530 --> 00:31:31,140 Ancaq nin səmərəli olduğunu güman edək belə bir, burada gələn 726 00:31:31,140 --> 00:31:33,170 iki, üç, dörd, beş. 727 00:31:33,170 --> 00:31:34,680 İndi bu 40 lazımdır. 728 00:31:34,680 --> 00:31:37,540 Belə ki, yalnız təklif nöqtə, nöqtə, nöqtə edəcəyik hətta daha çox yaddaş var ki 729 00:31:37,540 --> 00:31:39,350 yığın geri gəlir. 730 00:31:39,350 --> 00:31:40,710 İndi ünvan nədir? 731 00:31:40,710 --> 00:31:42,620 Gəlin bizim ixtiyari seçmək həmişə olduğu kimi müraciət - 732 00:31:42,620 --> 00:31:46,310 Yəqin ki, olacaq, hətta Ox123, tam fərqli bir şey olacaq. 733 00:31:46,310 --> 00:31:50,420 Bu ilk byte və ünvanı var Mən malloc xahiş edirəm yaddaş edir. 734 00:31:50,420 --> 00:31:53,630 >> Belə ki, qısa bir xətt 20, icra sözün nədir 735 00:31:53,630 --> 00:31:57,170 Burada x daxilində saxlanılır? 736 00:31:57,170 --> 00:31:58,730 Ox123. 737 00:31:58,730 --> 00:32:00,370 Ox123. 738 00:32:00,370 --> 00:32:01,550 Və öküz maraqsız edir. 739 00:32:01,550 --> 00:32:03,200 Bu yalnız burada deməkdir hexadecimal sayı. 740 00:32:03,200 --> 00:32:06,490 Amma nə əsas var mən mağaza var nə ki, X, yerli dəyişir. 741 00:32:06,490 --> 00:32:10,260 Amma onun veri növü, yenə bir int bir ünvan. 742 00:32:10,260 --> 00:32:12,710 Yaxşı, mən Ox123 saxlamaq üçün gedirəm. 743 00:32:12,710 --> 00:32:16,610 Ancaq yenə də, bir az da ki, əgər Mən fırladın əgər, lazımsız yerə mürəkkəbdir 744 00:32:16,610 --> 00:32:21,490 geri, bu üz abstrakt bilər olduqca əsaslı və yalnız deyirlər ki, x bir 745 00:32:21,490 --> 00:32:23,910 yaddaş ki, yığın üçün pointer. 746 00:32:23,910 --> 00:32:24,070 >> OK. 747 00:32:24,070 --> 00:32:26,230 İndi əl-sual aşağıdakı kimidir - 748 00:32:26,230 --> 00:32:29,910 line 21, çıxır, arabası deyil. 749 00:32:29,910 --> 00:32:31,160 Niyə? 750 00:32:31,160 --> 00:32:34,890 751 00:32:34,890 --> 00:32:36,930 >> Üzr istəyirik? 752 00:32:36,930 --> 00:32:38,640 Bu yoxdur - 753 00:32:38,640 --> 00:32:40,390 bir daha ki. 754 00:32:40,390 --> 00:32:41,240 Bəli, bu pulsuz deyil. 755 00:32:41,240 --> 00:32:42,350 Belə ki, ikinci, lakin. 756 00:32:42,350 --> 00:32:45,000 Belə ki, digər lakin xüsusi biri var line 21. 757 00:32:45,000 --> 00:32:49,480 758 00:32:49,480 --> 00:32:50,040 >> Eynilə elə. 759 00:32:50,040 --> 00:32:54,980 Kodu Bu sadə xətt yalnız bir Buffer Overflow, bufer dağıtmaq. 760 00:32:54,980 --> 00:32:57,050 Bufer yalnız yaddaş yığın deməkdir. 761 00:32:57,050 --> 00:33:01,520 Ancaq yaddaş ki, yığın ölçüsü edir 10, 10 integers, deməkdir, əgər biz 762 00:33:01,520 --> 00:33:05,350 ki, sintaktik şəkər istifadə edərək daxil indeksi array notation və meydanda 763 00:33:05,350 --> 00:33:09,220 Mötərizədə sizə imkanına malik x bracket 0 x bracket 1 x, 764 00:33:09,220 --> 00:33:10,390 bracket nöqtə, nöqtə, nöqtə. 765 00:33:10,390 --> 00:33:13,270 x bracket 9 ən böyük biridir. 766 00:33:13,270 --> 00:33:17,680 Mən x bracket 10 belə edərsə, Mən, həqiqətən, yaddaş gedirəm? 767 00:33:17,680 --> 00:33:19,120 >> Bəli, mən 10 int varsa - 768 00:33:19,120 --> 00:33:21,070 Gəlin əslində bütün çəkmək burada bu həyata. 769 00:33:21,070 --> 00:33:22,700 Belə ki, ilk beş idi. 770 00:33:22,700 --> 00:33:24,660 Burada digər beş ints var. 771 00:33:24,660 --> 00:33:29,580 Belə ki, x bracket 0 burada. x bracket 1 burada. x bracket 9 burada. x bracket 772 00:33:29,580 --> 00:33:37,960 10 burada olan, mən izah edən edirəm deməkdir line 21, kompüter qoymaq üçün 773 00:33:37,960 --> 00:33:39,400 sayı, harada? 774 00:33:39,400 --> 00:33:42,010 Sayı 0 harada? 775 00:33:42,010 --> 00:33:43,380 Bəli, bu, bəli 0 var. 776 00:33:43,380 --> 00:33:45,460 Ancaq əslində onun 0 bir təsadüf növüdür. 777 00:33:45,460 --> 00:33:47,140 Bu sayı ola bilər 50, biz qayğı bütün. 778 00:33:47,140 --> 00:33:50,480 Amma biz x bracket onu qoymaq çalışdığınız Bu olan 10, 779 00:33:50,480 --> 00:33:53,700 sual işarəsi tərtib edilir yaxşı bir şey deyil. 780 00:33:53,700 --> 00:33:57,070 Bu proqram çox yaxşı bilər nəticəsində qəza. 781 00:33:57,070 --> 00:33:59,400 >> İndi davam və görək bu halda , həqiqətən, nə olur olunur. 782 00:33:59,400 --> 00:34:02,600 Yaddaş olun, çünki fayl memory.c adlanır. 783 00:34:02,600 --> 00:34:05,950 Gəlin irəli getmək və çalıştırmak proqram yaddaş. 784 00:34:05,950 --> 00:34:08,239 Beləliklə, biz xoşbəxt var, əslində, bu, görünür. 785 00:34:08,239 --> 00:34:09,340 Biz uğurlu var. 786 00:34:09,340 --> 00:34:11,060 Lakin indi Valgrind əgər nin görək. 787 00:34:11,060 --> 00:34:14,170 İlk baxışdan, mənim proqram bilər mükəmməl doğru görünür. 788 00:34:14,170 --> 00:34:18,010 Lakin ilə Valgrind mənə run edək - Sızıntısı kontrol yaddaş tam bərabərdir. 789 00:34:18,010 --> 00:34:20,110 >> Və indi bu çalıştırdığınızda - 790 00:34:20,110 --> 00:34:21,030 maraqlı. 791 00:34:21,030 --> 00:34:26,800 Yanlış da ölçüsü 4 yazmaq memory.c xətti 21. 792 00:34:26,800 --> 00:34:29,284 Memory.c xətti 21 biri? 793 00:34:29,284 --> 00:34:30,340 Oh, maraqlı. 794 00:34:30,340 --> 00:34:31,080 Lakin gözləyin. 795 00:34:31,080 --> 00:34:32,389 Size 4, istinad ki, nə? 796 00:34:32,389 --> 00:34:34,969 Mən yalnız bir, yazdın lakin bu ölçüsü 4 var. 797 00:34:34,969 --> 00:34:36,889 Nə 4? 798 00:34:36,889 --> 00:34:39,280 Bu bir int, çünki bu yenə dörd bytes edir. 799 00:34:39,280 --> 00:34:42,510 Belə Valgrind bir səhv aşkar ki, Mənim kodu nəzər salan etmədi. 800 00:34:42,510 --> 00:34:45,040 Və bəlkə sizin TF ki, və ya deyil. 801 00:34:45,040 --> 00:34:48,469 Amma əmin aşkar ki Valgrind nə biz hətta orada bir səhv etdik 802 00:34:48,469 --> 00:34:52,719 biz uğurlu var və baxmayaraq kompüter qərar, eh, mən qəza fikrində deyiləm 803 00:34:52,719 --> 00:34:57,470 bir byte, bir toxunub yalnız çünki Siz ki yaddaş int yetmeyecek 804 00:34:57,470 --> 00:34:58,550 əslində öz. 805 00:34:58,550 --> 00:35:00,380 >> Yaxşı, burada arabası başqa budur. 806 00:35:00,380 --> 00:35:01,180 Ünvan - 807 00:35:01,180 --> 00:35:03,190 Bu crazy axtarır ünvanı hexadecimal edir. 808 00:35:03,190 --> 00:35:06,890 Yalnız haradasa yığın-yığın deməkdir ki, Ölçüsü 40 blokunun sonra sıfır bayt 809 00:35:06,890 --> 00:35:07,620 yerləşir. 810 00:35:07,620 --> 00:35:10,610 Məni bura Uzaklaştırmak və görək, əgər Bu bir az daha faydalıdır. 811 00:35:10,610 --> 00:35:11,410 Maraqlı. 812 00:35:11,410 --> 00:35:15,600 40 bayt mütləq itirilmiş 1 zərər rekord 1. 813 00:35:15,600 --> 00:35:17,840 Yenə də, daha çox sözləri burada faydalıdır. 814 00:35:17,840 --> 00:35:21,350 Lakin, qeyd xətləri əsasında burada yəqin ki, diqqət etməlidir mənim 815 00:35:21,350 --> 00:35:24,070 digər səhv diqqət? 816 00:35:24,070 --> 00:35:26,570 Memory.c xətti 20 bənzəyir. 817 00:35:26,570 --> 00:35:30,990 >> Biz line 20 geri əgər, ki, bu siz əvvəllər müəyyən bir. 818 00:35:30,990 --> 00:35:33,030 Və bu buggy lazım deyil. 819 00:35:33,030 --> 00:35:35,160 Amma biz bu təsiri bərpa etdik. 820 00:35:35,160 --> 00:35:38,790 Belə ki, necə mən ən azı düzəltmək yoxdur bu səhvlər biri? 821 00:35:38,790 --> 00:35:42,240 Mən line 21 sonra nə ola bilər? 822 00:35:42,240 --> 00:35:47,110 Mən, x pulsuz edə bilər yaddaş geri vermək. 823 00:35:47,110 --> 00:35:49,230 Və mən bu səhv necə düzeltirim? 824 00:35:49,230 --> 00:35:52,120 Mən mütləq getməlidir heç bir uzaq 0'dan. 825 00:35:52,120 --> 00:35:53,670 Mənə cəhd və bu yenidən run edək. 826 00:35:53,670 --> 00:35:56,080 Bağışlayın, mütləq getmək heç bir uzaq 9 artıqdır. 827 00:35:56,080 --> 00:35:57,510 Yaddaş olun. 828 00:35:57,510 --> 00:36:00,650 Valgrind mənə təkrar edək böyük pəncərə. 829 00:36:00,650 --> 00:36:01,580 İndi baxın. 830 00:36:01,580 --> 00:36:02,250 Gözəl. 831 00:36:02,250 --> 00:36:03,270 Bütün yığın blokları azad edilmişdir. 832 00:36:03,270 --> 00:36:04,270 No sızması mümkündür. 833 00:36:04,270 --> 00:36:07,520 Və burada yuxarıda qeyd var Yanlış hüququ bir daha. 834 00:36:07,520 --> 00:36:09,820 >> Yalnız görməmiş almaq və alaq etmək görmək başqa bir nümayişə 835 00:36:09,820 --> 00:36:11,050 kimi nəzərdə getmək deyil - 836 00:36:11,050 --> 00:36:12,560 Mən bir an əvvəl xoşbəxt almaq idi. 837 00:36:12,560 --> 00:36:15,530 Və bu 0 olması bəlkə lazımsız yanlış. 838 00:36:15,530 --> 00:36:20,650 50, bir qədər ixtiyari nə edək sayı, yaddaş dot çizgi yaddaş etmək - 839 00:36:20,650 --> 00:36:21,410 hələ uğurlu olsun. 840 00:36:21,410 --> 00:36:22,510 Heç şaqqıltılı oldu. 841 00:36:22,510 --> 00:36:26,150 Mən, həqiqətən, bir şey edə Güman ağılsız, mən 100 edin. 842 00:36:26,150 --> 00:36:30,360 , Mənə yaddaş yeniden yapmak edək dot çizgi yaddaş - 843 00:36:30,360 --> 00:36:31,075 daha şanslı var. 844 00:36:31,075 --> 00:36:32,800 Necə 1000 haqqında? 845 00:36:32,800 --> 00:36:35,370 kənarda ints, təxminən, harada olmalıdır? 846 00:36:35,370 --> 00:36:37,410 Yaddaş olun - 847 00:36:37,410 --> 00:36:38,570 Lanet olsun. 848 00:36:38,570 --> 00:36:39,920 >> [Gülüş] 849 00:36:39,920 --> 00:36:41,270 >> OK. 850 00:36:41,270 --> 00:36:43,920 Nin artıq ətrafında mess edək. 851 00:36:43,920 --> 00:36:45,120 Yaddaş təkrar. 852 00:36:45,120 --> 00:36:45,840 Orada biz gedin. 853 00:36:45,840 --> 00:36:46,410 Bütün hüquqlar. 854 00:36:46,410 --> 00:36:52,500 Belə ki, yəqin siz index 100,000 ints Siz olmalı yerləşir kənarda 855 00:36:52,500 --> 00:36:54,410 yaddaş, pis şeylər baş verir. 856 00:36:54,410 --> 00:36:56,430 Belə ki, bu açıq-aydın deyil ağır, sürətli qaydası. 857 00:36:56,430 --> 00:36:58,190 Mən mühakimə istifadə cür idi və səhv orada almaq üçün. 858 00:36:58,190 --> 00:37:02,230 Amma bu, çünki, uzun hekayə qısa kompüter yaddaş da bölünür 859 00:37:02,230 --> 00:37:03,580 bu şeylər daxil seqmentləri çağırıb. 860 00:37:03,580 --> 00:37:07,260 Və bəzən, kompüter həqiqətən bir az daha çox yaddaş verdi 861 00:37:07,260 --> 00:37:08,400 Sizin üçün xahiş edir. 862 00:37:08,400 --> 00:37:12,170 Amma səmərəliliyi üçün, bu yalnız daha asan var daha çox yaddaş almaq, yalnız sizə xəbər 863 00:37:12,170 --> 00:37:13,780 Siz onu bir hissəsini əldə edirik ki,. 864 00:37:13,780 --> 00:37:16,370 >> Və bəzən uğurlu almaq, Buna görə də, siz toxunmaq edə bilər 865 00:37:16,370 --> 00:37:17,795 yaddaş sizə aid deyil. 866 00:37:17,795 --> 00:37:21,860 Siz heç bir təminat yoxdur ki, nə dəyər siz orada qalacaq qoymaq çünki 867 00:37:21,860 --> 00:37:25,080 kompüter hələ də deyil düşünür sizin, amma mütləq davam deyil 868 00:37:25,080 --> 00:37:29,910 olan yaddaş bir seqment hit kompüter və bir səhv kimi vadar 869 00:37:29,910 --> 00:37:31,710 burada bu. 870 00:37:31,710 --> 00:37:32,060 Bütün hüquqlar. 871 00:37:32,060 --> 00:37:37,240 Sonra heç bir sual yaddaş haqqında? 872 00:37:37,240 --> 00:37:37,590 >> Bütün hüquqlar. 873 00:37:37,590 --> 00:37:40,610 At, sonra isə burada bir nəzər salaq biz alaraq olduğunuz bir şey 874 00:37:40,610 --> 00:37:48,361 çox bir müddət verilən, hansı cs50.h. adlanan bu faylı var 875 00:37:48,361 --> 00:37:49,420 Bu bir fayl. 876 00:37:49,420 --> 00:37:51,130 Bu yalnız bütün dəstə var top up şərh. 877 00:37:51,130 --> 00:37:53,900 Və bu halda baxdı ola bilər Siz cihaz ətrafında dürtülmək. 878 00:37:53,900 --> 00:37:57,000 Lakin bu ki, bütün vaxt, zaman çıxır biz kimi string istifadə üçün istifadə edərkən 879 00:37:57,000 --> 00:38:01,130 sinonimi, biz elan vasitələri ki, sinonimi bu idi 880 00:38:01,130 --> 00:38:03,990 növü müəyyən etmək üçün typedef söz. 881 00:38:03,990 --> 00:38:07,500 Və biz mahiyyətcə deyərək edirik etmək char ulduz üçün sinonimi Dize. 882 00:38:07,500 --> 00:38:11,190 Bu vasitə olan yığını olaraq bilinən bu təlim alüminium disklər yaradıldı 883 00:38:11,190 --> 00:38:12,040 simli. 884 00:38:12,040 --> 00:38:14,830 >> İndi burada yalnız bir prototip var getchar üçün. 885 00:38:14,830 --> 00:38:17,350 Biz əvvəl Göründüyü bilər, lakin var həqiqətən nə yoxdur. getchar 886 00:38:17,350 --> 00:38:19,070 , dəlilləri yox alır char qaytarır. 887 00:38:19,070 --> 00:38:21,340 getdouble, dəlilləri yox edir ikiqat qaytarır. 888 00:38:21,340 --> 00:38:24,440 getfloat dəlillər yoxdur, qaytarır edir bir float və s. 889 00:38:24,440 --> 00:38:27,270 getint burada edir. getlonglong burada edir. 890 00:38:27,270 --> 00:38:28,820 Və getstring burada edir. 891 00:38:28,820 --> 00:38:29,420 Və bu. 892 00:38:29,420 --> 00:38:33,080 Bu bənövşəyi xətt başqa preprocessor edir səbəbiylə direktiv 893 00:38:33,080 --> 00:38:35,550 onun başında hashtag. 894 00:38:35,550 --> 00:38:35,870 >> Bütün hüquqlar. 895 00:38:35,870 --> 00:38:38,380 Belə ki, indi mənə cs50.c. daxil bildirin 896 00:38:38,380 --> 00:38:40,400 Və biz bu barədə çox uzun danışmaq olmaz. 897 00:38:40,400 --> 00:38:43,280 Amma nə bir fikir vermək üçün bütün bu davam 898 00:38:43,280 --> 00:38:46,434 vaxt mənə gidelim - 899 00:38:46,434 --> 00:38:48,250 Gəlin getchar yoxdur. 900 00:38:48,250 --> 00:38:51,050 Belə ki, getchar əsasən şərh edir. 901 00:38:51,050 --> 00:38:52,060 Lakin bu kimi görünür. 902 00:38:52,060 --> 00:38:54,800 Belə ki, bu faktiki funksiyası biz olduğunuzu getchar 903 00:38:54,800 --> 00:38:56,055 verilən alaraq mövcuddur. 904 00:38:56,055 --> 00:38:59,370 Və biz bu bir istifadə yoxdur, baxmayaraq ki, tez-tez, əgər heç, ən azı ki, 905 00:38:59,370 --> 00:39:00,470 nisbətən sadə. 906 00:39:00,470 --> 00:39:02,580 Belə ki, bir alaraq dəyər burada göz atınız. 907 00:39:02,580 --> 00:39:06,540 >> Belə getchar, sonsuz loop var qəsdən belə yəqin. 908 00:39:06,540 --> 00:39:10,050 O çağırıb - və bu cür kodu gözəl təkrar özümüzü yazdı. 909 00:39:10,050 --> 00:39:11,220 Bu getstring çağırır. 910 00:39:11,220 --> 00:39:12,460 Nə Çünki bir char almaq deməkdir? 911 00:39:12,460 --> 00:39:14,730 Bəli, siz də almaq üçün cəhd edə bilərsiniz bütün istifadəçi mətn xətti 912 00:39:14,730 --> 00:39:16,940 sonra yalnız bir nəzər bu simvol. 913 00:39:16,940 --> 00:39:19,170 Line 60, burada bir az var bir ağlı başında olma çek bit. 914 00:39:19,170 --> 00:39:21,610 Getstring null döndü, əgər nin davam edək. 915 00:39:21,610 --> 00:39:22,820 Bir şey yanlış getdi. 916 00:39:22,820 --> 00:39:28,120 >> İndi bu qədər zəhlətökən, lakin yəqin ki, C. char max adi 917 00:39:28,120 --> 00:39:29,960 təmsil yalnız nə onun adı əsasında? 918 00:39:29,960 --> 00:39:31,670 Bu daimi var. 919 00:39:31,670 --> 00:39:36,040 Bu da sayısal değer kimi sizinlə təmsil edə bilər char böyük 920 00:39:36,040 --> 00:39:40,370 yəqin ki sayı olan bir bite, Ən böyük sayı olan 255, 921 00:39:40,370 --> 00:39:42,720 , səkkiz bit təmsil sıfırdan başlayaraq. 922 00:39:42,720 --> 00:39:47,460 Beləliklə, mən zaman, bu funksiya, bu istifadə etdik yalnız, çünki bu kodu yazı 923 00:39:47,460 --> 00:39:51,753 bir şey getchar yanlış gedir amma əgər həyatında onun məqsədi bir qayıtmaq üçün 924 00:39:51,753 --> 00:39:54,830 char, siz elə etmək lazımdır ki, istifadəçi üçün siqnal 925 00:39:54,830 --> 00:39:55,840 bir şey yanlış getdi. 926 00:39:55,840 --> 00:39:56,970 Biz null geri bilməz. 927 00:39:56,970 --> 00:39:58,480 Bu null bir göstərici olduğunu çıxır. 928 00:39:58,480 --> 00:40:01,030 Və yenə getchar var bir char qayıtmaq üçün. 929 00:40:01,030 --> 00:40:04,760 >> Belə ki, Konvensiyanın bir şey gedir əgər yanlış, siz proqramçı, və ya ki, 930 00:40:04,760 --> 00:40:08,160 Bu halda, mənə kitabxana ilə, mən idi ədalətli, əgər özbaşına qərar 931 00:40:08,160 --> 00:40:12,230 bir şey yanlış gedir, mən gedirəm həqiqətən olan nömrə 255, qayıtmaq 932 00:40:12,230 --> 00:40:17,240 biz Yuzerin tipi bilməz deməkdir tərəfindən təmsil karakter 933 00:40:17,240 --> 00:40:21,410 biz idi, çünki sayı 255 onu oğurlamaq bir qondarma sentinel dəyər kimi 934 00:40:21,410 --> 00:40:23,410 bir problem təmsil edir. 935 00:40:23,410 --> 00:40:27,010 İndi çıxır ki karakter 255 siz yazın şey deyil 936 00:40:27,010 --> 00:40:28,380 klaviatura, belə ki, heç bir böyük deyil. 937 00:40:28,380 --> 00:40:30,910 Istifadəçi hiss etmir Mən bu xarakter oğurlanmış etdik. 938 00:40:30,910 --> 00:40:34,620 Amma heç bir üzrə man pages görmək əgər bir kompüter sistemi bəzi arayış 939 00:40:34,620 --> 00:40:38,560 deyir ki, daim bu kimi bütün caps səhv daimi qüdrətinin hallarda 940 00:40:38,560 --> 00:40:42,720 qaytarılır etdi bütün bir insan var il əvvəl özbaşına qərar qəbul edilib 941 00:40:42,720 --> 00:40:45,680 Bu xüsusi dəyər və geri bu halda daimi zəng 942 00:40:45,680 --> 00:40:46,840 bir şey yanlış gedir. 943 00:40:46,840 --> 00:40:48,580 >> İndi sehrli burada aşağı olur. 944 00:40:48,580 --> 00:40:52,600 Birincisi, mən line 67 elan alıram iki simvol, C1 və C2. 945 00:40:52,600 --> 00:40:57,080 Və sonra line 68, həqiqətən var xatırladan ki, bir kod line 946 00:40:57,080 --> 00:41:01,140 bizim dostumuz printf verilmiş ki, quotes yüzdə Cs yoxdur. 947 00:41:01,140 --> 00:41:06,490 Amma burada neler bilərsiniz. sscanf string Scan vasitələri - 948 00:41:06,490 --> 00:41:11,690 biçimlendirilmiş scan deməkdir simli, bundan dolayı sscanf. 949 00:41:11,690 --> 00:41:12,590 Bu nə deməkdir? 950 00:41:12,590 --> 00:41:16,310 Bu simli sscanf keçir deməkdir. 951 00:41:16,310 --> 00:41:18,420 Və line nə edir daxil olan istifadəçi 952 00:41:18,420 --> 00:41:23,520 Siz format string kimi sscanf keçir nə scanf deyir ki, bu 953 00:41:23,520 --> 00:41:25,870 Siz istifadəçi kimi daxil tipli etmişdir ümid 954 00:41:25,870 --> 00:41:29,730 Daha sonra keçə-iki ünvanları Bu halda yaddaş chunks, 955 00:41:29,730 --> 00:41:31,150 Mən iki placeholders var. 956 00:41:31,150 --> 00:41:34,610 Beləliklə, mən bu ünvanı vermək gidiyorum C1 və C2 ünvanı. 957 00:41:34,610 --> 00:41:37,700 >> Və bir funksiyası vermək Xatırladaq ki Bəzi dəyişən ünvanı, var 958 00:41:37,700 --> 00:41:38,950 olan ima? 959 00:41:38,950 --> 00:41:41,400 960 00:41:41,400 --> 00:41:45,050 Funksiyası nəticəsində nə edə bilər bu bir ünvan verilməsi 961 00:41:45,050 --> 00:41:48,170 dəyişən kimi fərqli dəyişən özü? 962 00:41:48,170 --> 00:41:49,450 Bu, doğru dəyişə bilərsiniz? 963 00:41:49,450 --> 00:41:53,250 Əgər kimsə bir fiziki xəritəsi olsaydı ünvanı, orada getmək və edə bilərsiniz 964 00:41:53,250 --> 00:41:54,750 onlar həmin ünvanda istədiyiniz hər hansı. 965 00:41:54,750 --> 00:41:55,800 Burada eyni fikri. 966 00:41:55,800 --> 00:41:59,950 Biz sscanf, iki ünvanına keçərlərsə hətta yaddaş chunks, bu kiçik 967 00:41:59,950 --> 00:42:03,585 yaddaş, C1 və C2 az chunks, lakin biz onların ünvanı demək 968 00:42:03,585 --> 00:42:05,170 sscanf dəyişə bilərsiniz. 969 00:42:05,170 --> 00:42:08,530 >> Həyatda sscanf məqsədi Beləliklə, biz oxumaq adam səhifə oxumaq üçün nə 970 00:42:08,530 --> 00:42:13,420 istifadəçi tipli, olan istifadəçi üçün ümid Bir xarakter ildə yazılmış və bəlkə 971 00:42:13,420 --> 00:42:16,470 başqa xarakter və hər hansı istifadəçi tipli, ilk karakter gedir 972 00:42:16,470 --> 00:42:19,310 burada, ikinci xarakter burada gedir. 973 00:42:19,310 --> 00:42:22,470 İndi bir kənara kimi, bu, siz ki, yalnız sənədlərin bu bilirik 974 00:42:22,470 --> 00:42:25,570 Mən orada boş qoymaq ki, yalnız mən qayğı yoxdur o deməkdir ki, əgər 975 00:42:25,570 --> 00:42:28,440 istifadəçi Space bar bir neçə edib o bir dəfə alır əvvəl 976 00:42:28,440 --> 00:42:30,400 xarakter, mən ignore gidiyorum hər hansı bir ağ sahəsi. 977 00:42:30,400 --> 00:42:32,510 Ki, Mən bilirəm sənədlərin. 978 00:42:32,510 --> 00:42:36,570 >> Ikinci% c var ki ağ boşluq sonra əslində 979 00:42:36,570 --> 00:42:37,410 qəsdən. 980 00:42:37,410 --> 00:42:41,190 Mən aşkar etmək istəyirsinizsə istifadəçi qədər berbat və ya əməkdaşlıq etməyib. 981 00:42:41,190 --> 00:42:45,630 Mən istifadəçi yalnız yazdığınız ümid edirem bir xarakteri, ona görə də mən ümid edirəm 982 00:42:45,630 --> 00:42:50,640 ki, sscanf yalnız qayıtmaq üçün gedir dəyəri 1 Mən oxumaq, yenə, çünki 983 00:42:50,640 --> 00:42:55,400 sənədlərin, sscanf məqsədi ilə həyat sayına qayıtmaq üçün 984 00:42:55,400 --> 00:42:59,170 dolu ki dəyişənlər istifadəçi girişi ilə. 985 00:42:59,170 --> 00:43:02,270 >> Mən iki dəyişənlərin keçdi ünvanları, C1 və C2. 986 00:43:02,270 --> 00:43:06,420 Hesab edirəm ki, baxmayaraq ki, ümid edirem yalnız bir onları həlak olur, çünki əgər sscanf 987 00:43:06,420 --> 00:43:11,130 yekunları 2, güman var məntiqi ima? 988 00:43:11,130 --> 00:43:14,600 Istifadəçi yalnız mənə bir vermədi xarakter kimi mən ona və ya onun. 989 00:43:14,600 --> 00:43:17,860 Onlar yəqin ki, at tipli ən azı iki simvol. 990 00:43:17,860 --> 00:43:22,430 Mən əvəzinə ikinci yox idi əgər % C, mən yalnız bir olan 991 00:43:22,430 --> 00:43:25,370 Açığını daha asan olacaq yanaşma, mən ilk baxışdan hesab edirəm ki, 992 00:43:25,370 --> 00:43:30,220 siz qəbul etmək fikrində deyilik istifadəçi sizə daha çox verilməsi edilibsə 993 00:43:30,220 --> 00:43:31,780 həqiqətən istəyirdim daha daxil etmə. 994 00:43:31,780 --> 00:43:34,100 Belə ki, bu gizli forması səhv yoxlanılması. 995 00:43:34,100 --> 00:43:35,640 >> Amma burada nə görürsünüz. 996 00:43:35,640 --> 00:43:39,970 Mən istifadəçi mənə bir verdi əminəm ki, xarakteri, mən bunu, xətti azad 997 00:43:39,970 --> 00:43:44,450 getstring qarşı, hansı öz növbəsində Mən geri sonra malloc istifadə edir və 998 00:43:44,450 --> 00:43:51,030 C1, mən ümid etdiyini karakter istifadəçi təmin və yalnız təmin. 999 00:43:51,030 --> 00:43:54,680 Belə ki, tez yalnız glimpsed, lakin getchar haqqında hər hansı bir sualınız? 1000 00:43:54,680 --> 00:43:57,450 1001 00:43:57,450 --> 00:43:59,590 Biz digər bəzi qayıda bilərsiniz. 1002 00:43:59,590 --> 00:44:03,770 >> Yaxşı, mənə davam və bunu edək - yalnız həvəsləndirmək, indi güman bizim 1003 00:44:03,770 --> 00:44:08,910 bir həftə plus vaxt müzakirə, bu structs.h adlı bir fayl. 1004 00:44:08,910 --> 00:44:11,440 Və yenə bu yalnız bir dad edir qarşıda yalan ki, bir şey. 1005 00:44:11,440 --> 00:44:13,090 Amma bildiriş bir çox Bu şərh edir. 1006 00:44:13,090 --> 00:44:17,440 Mənə vurğulamaq imkan yalnız İndi maraqlı hissəsidir. 1007 00:44:17,440 --> 00:44:18,020 typedef - 1008 00:44:18,020 --> 00:44:19,700 həmin söz daha var. 1009 00:44:19,700 --> 00:44:23,100 typedef biz string bəyan istifadə xüsusi bir veri növü kimi. 1010 00:44:23,100 --> 00:44:27,490 Siz yeni yaratmaq üçün typedef istifadə edə bilərsiniz zaman mövcud olmayan məlumat növləri 1011 00:44:27,490 --> 00:44:28,570 C icad edilmişdir. 1012 00:44:28,570 --> 00:44:32,520 Məsələn, int C. char ilə gəlir C. ikiqat C. ilə gəlir ilə gəlir Lakin 1013 00:44:32,520 --> 00:44:34,000 bir şagirdin heç bir anlayışı yoxdur. 1014 00:44:34,000 --> 00:44:37,230 Və hələ bu olduqca faydalı olardı saxlayan bir proqram yazmaq edə 1015 00:44:37,230 --> 00:44:40,440 dəyişən bir tələbə ID sayı, onların adı və onların evi. 1016 00:44:40,440 --> 00:44:42,890 Başqa sözlə, üç ədəd məlumatların bir int və istəyirəm 1017 00:44:42,890 --> 00:44:44,420 simli və digər simli. 1018 00:44:44,420 --> 00:44:48,220 >> Typedef ilə, nə olduqca güclü bu və söz sturct haqqında 1019 00:44:48,220 --> 00:44:53,660 strukturu, siz 2013-ci ildə proqramçı, həqiqətən, sizin öz müəyyən edə bilərsiniz 1020 00:44:53,660 --> 00:44:57,530 il mövcud deyil ki, məlumat növləri əvvəl ancaq ki, məqsədləri uyğun. 1021 00:44:57,530 --> 00:45:01,910 Və belə ki, burada 19 vasitəsilə xətləri 13- biz kimi yeni bir veri növü elan edirik 1022 00:45:01,910 --> 00:45:04,320 bir int, lakin bu tələbə çağırır. 1023 00:45:04,320 --> 00:45:09,310 Və daxilində bu dəyişən gedir bir int, simli, - üç şey ola 1024 00:45:09,310 --> 00:45:09,930 və simli. 1025 00:45:09,930 --> 00:45:13,040 Beləliklə, siz həqiqətən nə hesab edə bilər Bu baxmayaraq, burada baş bir 1026 00:45:13,040 --> 00:45:17,160 Bu gün üçün bir sadələşdirilməsi bit, Bir tələbə mahiyyətcə gedir 1027 00:45:17,160 --> 00:45:19,450 bu kimi baxmaq. 1028 00:45:19,450 --> 00:45:22,580 Onun bir yığın olacaq şəxsiyyət ilə yaddaş, adı 1029 00:45:22,580 --> 00:45:25,580 sahəsində bir ev sahə. 1030 00:45:25,580 --> 00:45:30,670 Və biz bu chunks istifadə edə bilərsiniz yaddaş və onlara daxil aşağıdakı. 1031 00:45:30,670 --> 00:45:38,870 >> Mən struct0.c daxil varsa, burada bir nisbətən uzun, lakin sonra 1032 00:45:38,870 --> 00:45:42,630 kodu modeli ki, Bu yeni oyun istifadə edir. 1033 00:45:42,630 --> 00:45:45,790 Belə ki, ilk, mənə diqqəti cəlb edək top qədər maraqlı hissələri. 1034 00:45:45,790 --> 00:45:49,670 Sharp tələbələr 3 müəyyən bəyan bir daimi adlı tələbə və verir 1035 00:45:49,670 --> 00:45:53,450 yalnız özbaşına sayı 3 mən istifadə üç tələbələr var 1036 00:45:53,450 --> 00:45:54,830 indi bu proqramı. 1037 00:45:54,830 --> 00:45:55,960 Burada əsas gəlir. 1038 00:45:55,960 --> 00:45:58,860 Və bildiriş, necə elan yoxdur tələbələrin bir sıra? 1039 00:45:58,860 --> 00:46:00,480 Yaxşı, mən yalnız eyni sintaksis istifadə edin. 1040 00:46:00,480 --> 00:46:02,110 Sözü tələbə aydın yeni. 1041 00:46:02,110 --> 00:46:04,790 Amma tələbə, sinif, bracket tələbələr. 1042 00:46:04,790 --> 00:46:06,720 >> Belə ki, təəssüf ki, çox var Burada şərtlər təkrar istifadəsi. 1043 00:46:06,720 --> 00:46:07,660 Bu yalnız bir rəqəmdir. 1044 00:46:07,660 --> 00:46:09,040 Beləliklə, bu üç deyən kimi. 1045 00:46:09,040 --> 00:46:11,430 Sinif I istədiyiniz nə dəyişən zəng etmək üçün. 1046 00:46:11,430 --> 00:46:12,840 Hesab edirəm ki, tələbələr zəng edə bilər. 1047 00:46:12,840 --> 00:46:15,880 Ancaq sinif, bu bir sinif deyil obyekt yönümlü Java cür yol. 1048 00:46:15,880 --> 00:46:17,220 Bu, sadəcə tələbə sinfi var. 1049 00:46:17,220 --> 00:46:20,590 Və hər bir element data type ki, sıra tələbəsidir. 1050 00:46:20,590 --> 00:46:23,040 Beləliklə, bu bir az fərqlidir və bir şey söyləyərək 1051 00:46:23,040 --> 00:46:25,250 bu kimi, bu, yalnız var - 1052 00:46:25,250 --> 00:46:29,500 Mən üç tələbələr vermək deyən alıram və array sinif çağırırıq. 1053 00:46:29,500 --> 00:46:29,800 >> Bütün hüquqlar. 1054 00:46:29,800 --> 00:46:30,680 İndi burada dörd loop var. 1055 00:46:30,680 --> 00:46:33,480 Bu oğlan tanış - təkrarlamaq up on sıfırdan üç. 1056 00:46:33,480 --> 00:46:35,160 Və burada sintaksis yeni parça var. 1057 00:46:35,160 --> 00:46:37,710 Proqram, mənə təklif olacaq Bu tələbə vermək insan, 1058 00:46:37,710 --> 00:46:39,200 Bir int olan ID. 1059 00:46:39,200 --> 00:46:44,650 Burada siz hansı sintaksis var da ID sahəsində bir şey saxlamaq 1060 00:46:44,650 --> 00:46:48,630 yeri sinif bracket I. Belə ki, Bu sintaksis yeni deyil. 1061 00:46:48,630 --> 00:46:51,450 Bu, yalnız mənə səkkizinci vermək deməkdir sinif tələbəsi. 1062 00:46:51,450 --> 00:46:52,940 Amma bu simvolu yeni. 1063 00:46:52,940 --> 00:46:56,320 İndiyədək biz dot istifadə edə bilməz etdik Bu kimi ən azı ildə kodu. 1064 00:46:56,320 --> 00:47:01,490 Bu o deməkdir kimi tanınan struct getmək Bir tələbə və orada bir şey qoymaq. 1065 00:47:01,490 --> 00:47:05,670 Eynilə, bu sonrakı xətti, 31, getmək irəli və qoymaq nə istifadəçi 1066 00:47:05,670 --> 00:47:10,530 Burada adı və nə onlar üçün nə ev, eyni şey, davam və 1067 00:47:10,530 --> 00:47:13,230 . evinə qoydu. 1068 00:47:13,230 --> 00:47:15,955 >> Beləliklə, bu proqram nə nəticədə nə? 1069 00:47:15,955 --> 00:47:17,220 Siz bir az iltifat bilərsiniz. 1070 00:47:17,220 --> 00:47:24,780 Mənə davam və structs 0 edirik edək dot çizgi struct 0 tələbə ID 1, 1071 00:47:24,780 --> 00:47:28,250 David Mather, tələbə ID 2 deyirlər. 1072 00:47:28,250 --> 00:47:32,070 Rob Kirkland, tələbə ID 3. 1073 00:47:32,070 --> 00:47:35,010 Lauren Leverit - 1074 00:47:35,010 --> 00:47:38,380 və bu proqram nə yalnız, ki, yalnız tamamilə əsassız edir 1075 00:47:38,380 --> 00:47:40,980 Mən bu məlumat ilə bir şey etmək istədim Mən necə bizə öyrətdiklərindən sonra indi 1076 00:47:40,980 --> 00:47:43,450 structs istifadə, yalnız olmuşdur Bu əlavə loop. 1077 00:47:43,450 --> 00:47:45,260 Mən tələbə serialın üzərində təkrarlamaq. 1078 00:47:45,260 --> 00:47:49,170 Mən, bəlkə də indi tanış dost, istifadə simli, stircomp müqayisə 1079 00:47:49,170 --> 00:47:53,780 çek 8 tələbə ev Mather bərabər? 1080 00:47:53,780 --> 00:47:56,760 Və əgər, yalnız bir şey çap özbaşına istəyirəm, bəli, edir. 1081 00:47:56,760 --> 00:47:59,430 Ancaq yenə də, yalnız mənə imkanlar verilməsi və istifadə və yeniden 1082 00:47:59,430 --> 00:48:02,270 Bu yeni dot notation Yeniden. 1083 00:48:02,270 --> 00:48:03,250 >> Belə ki, kim haqlı, qayğıları? 1084 00:48:03,250 --> 00:48:06,270 Bir tələbə proqramı ilə gəlir qədər özbaşına, lakin o çıxır 1085 00:48:06,270 --> 00:48:09,800 biz faydalı şeyi edə bilər ki, Bu, misal üçün aşağıdakı. 1086 00:48:09,800 --> 00:48:14,600 Bu daha mürəkkəbdir struct edir C. Bu, bir çox və ya daha çox sahələrdə var 1087 00:48:14,600 --> 00:48:15,880 qədər cryptically adına. 1088 00:48:15,880 --> 00:48:20,110 Amma heç bir qrafik eşitdim əgər bitmap adlı fayl formatı, BMP, bu 1089 00:48:20,110 --> 00:48:22,830 çıxır ki, bitmap fayl biçimi olduqca çox ki, bu kimi görünür. 1090 00:48:22,830 --> 00:48:24,200 Bu axmaq az smiley face var. 1091 00:48:24,200 --> 00:48:27,840 Bu Mən zoomed etdik ki, kiçik bir şəkil var olduqca böyük mən hər görmək olar ki, 1092 00:48:27,840 --> 00:48:30,410 fərdi nöqtələr və ya piksel. 1093 00:48:30,410 --> 00:48:33,800 Biz təmsil edə bilər həyata İndi çevrilir sayı 0, demək, qara nöqtə. 1094 00:48:33,800 --> 00:48:35,520 Sayı 1 və ağ nöqtə. 1095 00:48:35,520 --> 00:48:39,140 >> Belə ki, başqa sözlə, əgər siz bir çəkmək Smiley face və bir resim saxlamaq 1096 00:48:39,140 --> 00:48:42,680 kompüter, o adet sıfır saxlamaq və kifayətdir bu kimi baxmaq ki, olanlar, harada, 1097 00:48:42,680 --> 00:48:45,250 yenə olanları ağ və adet sıfır qara. 1098 00:48:45,250 --> 00:48:48,290 Birlikdə, siz səmərəli varsa olanları və rəqəmlərdə sıfırların gird bir, bir var 1099 00:48:48,290 --> 00:48:51,030 piksel grid və siz lay əgər onları, bir cute var 1100 00:48:51,030 --> 00:48:52,560 az smiley face. 1101 00:48:52,560 --> 00:48:58,150 İndi bitmap fayl biçimi, BMP edir səmərəli ki, başlıq altında, 1102 00:48:58,150 --> 00:49:00,970 lakin daha çox piksel sot ilə ki, siz həqiqətən rəng təmsil edə bilər. 1103 00:49:00,970 --> 00:49:05,170 >> Amma daha təcrübəli zaman BMP və JPEG və GIF kimi fayl formatları 1104 00:49:05,170 --> 00:49:09,360 olan siz, həmin tanış ola bilər disk faylları adətən yalnız 1105 00:49:09,360 --> 00:49:13,760 adet sıfır və piksel üçün olanlar var, lakin onlar həmçinin bəzi metadata var - 1106 00:49:13,760 --> 00:49:16,960 həqiqətən deyil o mənada ki, meta data ancaq onu əldə etmək faydalıdır. 1107 00:49:16,960 --> 00:49:21,370 Belə ki, burada bu sahələr eyham edilir və biz P-set daha ətraflı görəcəksiniz 1108 00:49:21,370 --> 00:49:25,810 5 ki, adet sıfır və olanları əvvəl bir şəkil piksel təmsil 1109 00:49:25,810 --> 00:49:29,110 metadata bir dəstə kimi var Bu şəkil ölçüsü və 1110 00:49:29,110 --> 00:49:30,250 image eni. 1111 00:49:30,250 --> 00:49:32,910 Və mən bəzi off Yolma alıram qeyd burada özbaşına şeylər - 1112 00:49:32,910 --> 00:49:34,260 eni və hündürlüyü. 1113 00:49:34,260 --> 00:49:36,160 Bit sayı və bəzi başqa şeylər. 1114 00:49:36,160 --> 00:49:37,840 Belə ki, bir fayl bəzi metadata var. 1115 00:49:37,840 --> 00:49:41,470 >> Amma faylları qoydu necə anlaşılması ilə Bu şəkildə, həqiqətən bilərsiniz 1116 00:49:41,470 --> 00:49:45,890 sonra images manipulyasiya, şəkillər bərpa disk, şəkillər boyutlandır. 1117 00:49:45,890 --> 00:49:47,560 Amma mütləq bilməz onlara artırır. 1118 00:49:47,560 --> 00:49:48,480 Mən bir fotoşəkil lazımdır. 1119 00:49:48,480 --> 00:49:52,840 Mən sizə görən, burada RJ geri döndü çox bir müddət əvvəl ekranda. 1120 00:49:52,840 --> 00:49:57,160 Burada Əsas açmaq varsa, bu nə Yakınlaştırmak üçün cəhd olur və 1121 00:49:57,160 --> 00:49:59,380 RJ artırır. 1122 00:49:59,380 --> 00:50:01,480 O, həqiqətən hər hansı bir daha əldə deyil. 1123 00:50:01,480 --> 00:50:06,240 İndi Keynote bir blurring növü az, yalnız üzərində Gloss 1124 00:50:06,240 --> 00:50:11,040 RJ xüsusilə almaq deyil ki, fakt Daxil zoom, inkişaf etmiş 1125 00:50:11,040 --> 00:50:13,310 Və bu yolu əgər, meydanlarda görmək? 1126 00:50:13,310 --> 00:50:15,490 Bəli, siz mütləq bilərsiniz proyektor üzrə meydanlarda. 1127 00:50:15,490 --> 00:50:17,690 >> Bu, inkişaf zaman almaq budur. 1128 00:50:17,690 --> 00:50:22,570 Amma anlayışı necə RJ ya Smiley face həyata keçirilir bizə imkan verəcək 1129 00:50:22,570 --> 00:50:24,950 həqiqətən manipulates kodu yazmaq Bu şeylər. 1130 00:50:24,950 --> 00:50:29,970 Və Mən, mən bu qeyd-də başa istədiyiniz fikir Bir 55 saniyə, var artırmaq 1131 00:50:29,970 --> 00:50:31,230 Mən deyil, yanlış deyirəm, cəsarət. 1132 00:50:31,230 --> 00:50:32,990 >> [Video playback] 1133 00:50:32,990 --> 00:50:34,790 >> O, yalançı. 1134 00:50:34,790 --> 00:50:38,310 Nə haqqında, mən bilmirəm. 1135 00:50:38,310 --> 00:50:41,200 >> -Yaxşı biz nə bilirik? 1136 00:50:41,200 --> 00:50:45,280 >> -Yəni 9:15 Ray Santoya da ATM idi. 1137 00:50:45,280 --> 00:50:47,830 >> -Belə ki, sual budur o 9:16-da məşğul olub? 1138 00:50:47,830 --> 00:50:50,750 >> Atəş doqquz millimetr bir şey. 1139 00:50:50,750 --> 00:50:52,615 Bəlkə o snayper gördüm. 1140 00:50:52,615 --> 00:50:54,760 >> -Və ya onunla çalışır. 1141 00:50:54,760 --> 00:50:56,120 >> -Dur. 1142 00:50:56,120 --> 00:50:57,450 Bir geri. 1143 00:50:57,450 --> 00:50:58,700 >> -Nə görürsünüz? 1144 00:50:58,700 --> 00:51:05,530 1145 00:51:05,530 --> 00:51:09,490 >> , Tam ekran onun üz-gətirin. 1146 00:51:09,490 --> 00:51:09,790 >> -Onun camlar. 1147 00:51:09,790 --> 00:51:11,040 >> -Bir əks edir. 1148 00:51:11,040 --> 00:51:21,790 1149 00:51:21,790 --> 00:51:23,520 >> -Bu Neuvitas beysbol komanda var. 1150 00:51:23,520 --> 00:51:24,530 Onların logo var. 1151 00:51:24,530 --> 00:51:27,040 >> Və o var kim söhbət oldu ki, jaket qalıcı. 1152 00:51:27,040 --> 00:51:27,530 >> [END video playback] 1153 00:51:27,530 --> 00:51:29,180 >> DAVID J. Malan: Bu, Problem Set 5 ola bilər. 1154 00:51:29,180 --> 00:51:30,720 Biz gələn həftə görəcəksiniz. 1155 00:51:30,720 --> 00:51:32,330 >> MALE spikeri növbəti CS50 edir. 1156 00:51:32,330 --> 00:51:39,240 >> [Crickets cik-cik] 1157 00:51:39,240 --> 00:51:41,270 >> [Musiqi ifa]