1 00:00:00,000 --> 00:00:02,760 [Powered by Google Translate] [HƏFTƏNİN 5] 2 00:00:02,760 --> 00:00:04,760 [David J. Malan, Harvard Universiteti] 3 00:00:04,760 --> 00:00:11,990 [Bu CS50 edir.] [CS50.TV] 4 00:00:11,990 --> 00:00:17,780 [Qadın] O yalançı oldu; nə, mən bilmirəm. 5 00:00:17,780 --> 00:00:20,300 [Man] Beləliklə, biz nə bilirik? 6 00:00:20,300 --> 00:00:24,120 [Qadın] 9:15-da, Ray Santoya ATM-da idi. 7 00:00:24,120 --> 00:00:27,420 [Man] Belə ki, sual, o, 9:16-da nə idi? 8 00:00:27,420 --> 00:00:29,980 [Qadın] bir şey də 9 mm Atışma. 9 00:00:29,980 --> 00:00:31,900 Bəlkə o snayper gördüm. 10 00:00:31,900 --> 00:00:34,000 [Man] Yoxsa özü ilə çalışır. 11 00:00:34,000 --> 00:00:36,330 [Qadın] gözləyin. Bir geri gedin. 12 00:00:36,330 --> 00:00:38,330 [Man] Siz nə görürsünüz? 13 00:00:38,330 --> 00:00:44,520 [♫ Suspenseful musiqi ♫] 14 00:00:44,520 --> 00:00:48,320 [Qadın] onun üz gətirin. Tam ekran. 15 00:00:48,320 --> 00:00:51,230 [Man] Onun camlar. >> Əks var. 16 00:00:51,230 --> 00:01:00,810 [♫ Suspenseful musiqi ♫] 17 00:01:00,810 --> 00:01:03,580 [Man] Bu Nuevita nin beysbol komanda var. Bu onların loqosu var. 18 00:01:03,580 --> 00:01:07,790 [Qadın] Və o pencək geyən var kim söhbət edir. 19 00:01:07,790 --> 00:01:13,730 >> [David Malan] Belə ki, bu CS50 həftə 5, və bu gün biz sizin üçün televiziya və film bir qədər məhv. 20 00:01:13,730 --> 00:01:16,170 Belə ki, burada bu kimi bir şou seyr etdiyiniz zaman, 21 00:01:16,170 --> 00:01:19,910 və polislər "Əgər qədər təmiz edə bilərəmmi?" deyə və ya "gücləndirilməsi" 22 00:01:19,910 --> 00:01:21,900 real dünyada artırmaq yoxdur. 23 00:01:21,900 --> 00:01:25,220 Əslində, nə həqiqətən almaq bu kimi bir az bir şey. 24 00:01:25,220 --> 00:01:27,570 Mən səhifə heyəti photos birini çıxardı etdik. 25 00:01:27,570 --> 00:01:30,980 Bu Photoshop adlı bir proqramdır. Bu, 2 Bowdens 1 deyil 26 00:01:30,980 --> 00:01:36,300 Həqiqətən 1 3 Bowdens, bu gün biz Rob və Paul ilə, həmçinin burada xanım Bowden var. 27 00:01:36,300 --> 00:01:41,950 Amma burada ekranda Rob və əgər o həmişə onun göz idi ki glint üzrə biz zoom, 28 00:01:41,950 --> 00:01:47,600 nə həqiqətən görmək nə görmək almaq nə olduğunu. 29 00:01:47,600 --> 00:01:51,690 Bu, "inkişaf etmiş" belə "CSI" bu bir az səhv var. 30 00:01:51,690 --> 00:01:55,190 Biz yalnız bir az daha "CSI haqqında" seçə bilərsiniz, əgər başqa bir klip var. 31 00:01:55,190 --> 00:01:58,500 Bu bir siz istəyirsinizsə bundan sonra tələffüz üçün gözəl ifadə edilir 32 00:01:58,500 --> 00:02:10,280 həqiqətən, siz tamamilə heç bir şey söyləyərək etdiyiniz zaman, sizin dostları ilə texniki səs. 33 00:02:10,280 --> 00:02:12,970 >> [Man] həftə, mən Cabby Killer cinayətlərin istintaq olduğunuz 34 00:02:12,970 --> 00:02:15,360 müəyyən bir xəstə lətafət ilə. 35 00:02:15,360 --> 00:02:17,160 [Qadın # 1] Bu real vaxt var. 36 00:02:17,160 --> 00:02:22,930 [Qadın # 2] Mən IP ünvan takip edə bilərsiniz görmek, Visual Basic istifadə GUI interface yaratmaq lazımdır. 37 00:02:22,930 --> 00:02:29,570 >> [Malan] Visual Basic istifadə GUI interface yaratmaq, kənara sync həyata Ona görə audio 38 00:02:29,570 --> 00:02:31,820 IP ünvanı izlemek üçün tam cəfəngiyyatdır. 39 00:02:31,820 --> 00:02:33,840 Bu gün siz, Visual Basic istifadə deyil 40 00:02:33,840 --> 00:02:38,920 bir GUI ehtiyac yoxdur, və IP ünvan bir texniki dəqiq termin idi. 41 00:02:38,920 --> 00:02:41,730 Belə ki, bu bir göz saxlamaq və mənim favoritlərindən biri: 42 00:02:41,730 --> 00:02:45,070 Başqa bir dil bilmək lazımdır, çünki bu bir, bir az daha gizli deyil. 43 00:02:45,070 --> 00:02:47,860 C. bir superset olan Objective-C adlı dil, var 44 00:02:47,860 --> 00:02:51,960 Hansı onlara obyekt-yönümlü proqramlaşdırma arasında bu C plus bəzi əlavə xüsusiyyətləri, deməkdir. 45 00:02:51,960 --> 00:02:55,070 Bu Apple iOS proqramlaşdırma təbliğ ki dilidir. 46 00:02:55,070 --> 00:02:58,760 Və burada "Nömrələr" dan tamamilə fərqli bir şou bir klip var 47 00:02:58,760 --> 00:03:02,450 ki, siz həqiqətən hüququ hazırda TiVo və fasilə yaxından baxsaq, 48 00:03:02,450 --> 00:03:07,700 nə onlar aradığınız tamamilə təsvir olunur nə olduğunu görəcəksiniz. 49 00:03:07,700 --> 00:03:11,170 Və mənə burada müxtəlif audio ölçüsü cəhd və biz əgər görək 50 00:03:11,170 --> 00:03:13,780 senkronize audio bu zaman saxlayır. 51 00:03:13,780 --> 00:03:20,530 Mən "Nömrələr". Verir 52 00:03:20,530 --> 00:03:23,240 >> [Man # 1] Bu 32-bit IPv4 ünvanı var. 53 00:03:23,240 --> 00:03:38,930 [Man # 2] IP ki, İnternet var. >> Şəxsi şəbəkə. Bu Anita xüsusi şəbəkə var. 54 00:03:38,930 --> 00:03:43,810 [Malan] Okay. Bu Objective-C, və bəzi uşaq boyayıcı proqramı var 55 00:03:43,810 --> 00:03:51,140 bəlkə var dəyişən adından nəticə çıxarmaq olar. 56 00:03:51,140 --> 00:03:54,410 Belə ki, o, "Nömrələr." Idi Biz təqdim gün və bu həftə Belə ki, 57 00:03:54,410 --> 00:03:57,740 Suclari və buna görə də problemləri kontekstində dünya bir az. 58 00:03:57,740 --> 00:04:00,590 Burada xüsusi bir hadisə var, çünki bu gün qısaldılmış mühazirə olacaq 59 00:04:00,590 --> 00:04:05,530 Sonra biz tələbələr və eyni valideynləri bu gün də bir peek almaq və dolaşmaq lazımdır 60 00:04:05,530 --> 00:04:07,420 üfüqdə olan bəzi şeyləri ilə. 61 00:04:07,420 --> 00:04:12,240 Onların arasında Bazar ertəsi kimi, bir neçə sinif yoldaşları olacaq. 62 00:04:12,240 --> 00:04:16,050 EdX, Harvard və açıq Courseware üçün MITs yeni online təşəbbüs 63 00:04:16,050 --> 00:04:19,120 və daha çox bazar ertəsi Harvard nin kampus başlayır. 64 00:04:19,120 --> 00:04:21,490 Gəlmək Bazar ertəsi deməkdir hansı olacaq - son sayı kimi, 65 00:04:21,490 --> 00:04:26,210 86,000 əlavə sinif yoldaşları CS50 nin mühazirə ilə birlikdə aşağıdakı olunacaq 66 00:04:26,210 --> 00:04:29,170 və bölmələr və walkthroughs və problem dəsti. 67 00:04:29,170 --> 00:04:32,350 Bu hissəsi kimi, siz ilk sinif üzvləri olacaq 68 00:04:32,350 --> 00:04:35,090 CS50 və indi CS50x. 69 00:04:35,090 --> 00:04:39,310 >> Bu hissəsi kimi, indi, eləcə də bəzi upsides olacaq bilirik. 70 00:04:39,310 --> 00:04:43,790 Tələbələrin kütləvi sayı, buna hazır olmaq üçün, 71 00:04:43,790 --> 00:04:47,180 Təkcə onu demək kifayətdir ki, biz 108 TFS və CA'lar olsa da, 72 00:04:47,180 --> 00:04:50,790 olduqca yaxşı tələbə / müəllim nisbəti biz 80,000 digər tələbələr təşkil dəfə. 73 00:04:50,790 --> 00:04:52,850 Beləliklə, biz bir çox problem sınıflandırma etmək fikrində deyilik əl qoyur. 74 00:04:52,850 --> 00:04:55,920 Yəni problem set bu həftə təqdim CS50 Check olacaq 75 00:04:55,920 --> 00:04:58,450 Aracın ərzində bir command line kommunal olacaq olan 76 00:04:58,450 --> 00:05:01,200 Bu həftə sonu sonra yeniləmək bir dəfə almaq lazımdır ki, 77 00:05:01,200 --> 00:05:03,200 və bir funksiyanı çalıştırın bilərsiniz, 50 yoxlamaq 78 00:05:03,200 --> 00:05:06,500 öz pset, və siz proqram müəyyən etmək üçün bir geri bildirim almaq lazımdır 79 00:05:06,500 --> 00:05:11,160 doğru və ya yanlış biz təmin etdik ki, müxtəlif dizayn spesifikasiyaları görə. 80 00:05:11,160 --> 00:05:13,580 Belə ki, daha çox və problem set dəqiqləşdirilməsi və 81 00:05:13,580 --> 00:05:17,240 bu CS50x sinif yoldaşları kimi bu istifadə olunacaq. 82 00:05:17,240 --> 00:05:19,230 >> Belə ki, problem set 4 Suclari haqqında bütün edir. 83 00:05:19,230 --> 00:05:21,940 Bu parça, bəzi real həyat stuff ilə ilham 84 00:05:21,940 --> 00:05:24,620 Mən məktəbin məzunu olub vasitəsi zaman, mən bir müddət interned 85 00:05:24,620 --> 00:05:28,650 bu Middlesex Şəhristanı nin rayon prokuroru Prokurorluğu məhkəmə işi 86 00:05:28,650 --> 00:05:31,650 onların aparıcı məhkəmə müstəntiq ilə və nə edib 87 00:05:31,650 --> 00:05:35,260 Mən bir neçə həftə keçmiş qeyd edirəm ki, kütləvi Dövlət polis və ya başqaları edir 88 00:05:35,260 --> 00:05:39,000 gəlib ki, onlar ağır sürücüler və CD və disketleri kimi şeylər yuxulamaq ki, 89 00:05:39,000 --> 00:05:42,340 və sonra kimi, və Suclari ofis məqsədi müəyyən olub 90 00:05:42,340 --> 00:05:44,600 var idi və ya bəzi növ sübut yox idi. 91 00:05:44,600 --> 00:05:48,010 Bu Xüsusi Təhqiqatlar vahidi idi, belə ki, ağ yaxasına cinayət idi 92 00:05:48,010 --> 00:05:52,350 bu cinayətlərin daha narahatedici sort idi 93 00:05:52,350 --> 00:05:55,990 digital media bir növ cəlb bir şey; çıxır ki, bir çox insanlar 94 00:05:55,990 --> 00:05:59,370 deyərək bir e-poçt yazmaq "Mən bunu etdim." 95 00:05:59,370 --> 00:06:03,290 Belə ki, tez-tez bu Suclari axtarışlar, bütün çox meyvə qədər dönmədi 96 00:06:03,290 --> 00:06:05,850 amma bəzən insanlar bu cür e-poçt yazmaq olardı. 97 00:06:05,850 --> 00:06:08,490 Belə ki, bəzən səylərini təltif edilmişdir. 98 00:06:08,490 --> 00:06:14,420 >> Amma bu məhkəmə pset qədər səbəb, biz pset 4 qrafik bir qədər də təqdim edəcəyik. 99 00:06:14,420 --> 00:06:18,260 Beləliklə, siz yəqin ki, verilmiş, JPEGs, gifs və bu gün kimi, bu şeyi etmək 100 00:06:18,260 --> 00:06:21,640 amma həqiqətən bu barədə düşünüyorsanız, bir şəkil, çox Rob üzü kimi, 101 00:06:21,640 --> 00:06:24,430 bir nöqtə ardıcıllığı, və ya piksel kimi modelləşdirilmişdir bilər. 102 00:06:24,430 --> 00:06:26,680 İndi Rob üzünü halda, rəng bütün növ var 103 00:06:26,680 --> 00:06:29,940 və biz otherwide piksel kimi tanınan fərdi nöqtələr görmək başladı 104 00:06:29,940 --> 00:06:31,610 bir dəfə biz da zoom başladı 105 00:06:31,610 --> 00:06:35,590 Amma biz dünyada bir qədər sadələşdirmək, və yalnız burada bu Rob ki, əgər 106 00:06:35,590 --> 00:06:40,560 ağ-qara, yaxşı, təmsil qara və ağ biz yalnız ikili istifadə edə bilərsiniz. 107 00:06:40,560 --> 00:06:44,960 Və biz ikili istifadə etmək olacaq əgər, 1 və ya 0, biz bu eyni image ifadə edə 108 00:06:44,960 --> 00:06:51,970 bit bu model ilə Rob-nin smiling üz: 11000011 təmsil 109 00:06:51,970 --> 00:06:55,160 ağ, ağ, qara, qara, qara, qara, ağ ağ. 110 00:06:55,160 --> 00:06:59,290 Və belə rəngli fotoşəkillər söhbət başlamaq, sonra böyük bir sıçrayış deyil. 111 00:06:59,290 --> 00:07:01,920 Siz Facebook və ya bir digital kamera ilə edəcək şeylər 112 00:07:01,920 --> 00:07:04,730 lakin, şübhəsiz, rəng gəldikdə, daha çox bit lazımdır. 113 00:07:04,730 --> 00:07:08,470 Və fotoşəkillər dünyada çox ümumi deyil, 1-bit rəng istifadə 114 00:07:08,470 --> 00:07:12,730 Bu təklif, lakin 24-bit rəng, həqiqətən milyon rəng almaq yerləşir. kimi 115 00:07:12,730 --> 00:07:15,430 Beləliklə, biz Rob göz üzrə zoomed zaman olduğu kimi, 116 00:07:15,430 --> 00:07:19,270 ki, müxtəlif rəngli imkanları milyonlarla hər hansı bir sayı oldu. 117 00:07:19,270 --> 00:07:22,260 >> Belə ki, biz, problem set 4 habelə gözden geçirmek bu tətbiq edəcəyik 118 00:07:22,260 --> 00:07:27,050 çünki burada cümə mühazirə adi 2:30 əvəzinə 3:30 gün olacaq. 119 00:07:27,050 --> 00:07:29,930 Lakin video, həmişə olduğu kimi, sabah online olacaq. 120 00:07:29,930 --> 00:07:31,880 Biz də başqa bir fayl formatında sizə təqdim edəcəyik. 121 00:07:31,880 --> 00:07:34,150 Belə ki, bu qəsdən, ilk qorxuducu baxmaq üçün nəzərdə tutulur 122 00:07:34,150 --> 00:07:38,980 amma bu C struct üçün bəzi sənədlərin edir. 123 00:07:38,980 --> 00:07:42,280 Bu, Microsoft, il əvvəl bu formatda yayılmasına kömək çıxır ki, 124 00:07:42,280 --> 00:07:46,630 bu bitmap fayl biçimi, BMP və bu super-sadə idi adlı 125 00:07:46,630 --> 00:07:50,390 çox bir müddət istifadə edilmişdir ki, rəngarəng qrafik fayl format 126 00:07:50,390 --> 00:07:53,640 və bəzən də masa üzərində divar kağızları üçün. 127 00:07:53,640 --> 00:07:57,410 Windows XP və yuvarlanan təpələri və mavi göyə geri düşünüyorsanız, 128 00:07:57,410 --> 00:08:00,660 ki, adətən bir BMP, və ya bitmap şəkil və bitmaps idi 129 00:08:00,660 --> 00:08:03,340 onlar bir az daha mürəkkəbliyi, çünki bizim üçün fun olunur. 130 00:08:03,340 --> 00:08:05,640 Bu 0 və 1-in bu grid kimi olduqca kimi sadə deyil; 131 00:08:05,640 --> 00:08:10,680 əvəzinə, bir fayl əvvəlində bir mövzu kimi şeylər var. 132 00:08:10,680 --> 00:08:15,520 Belə ki, başqa sözlə, a. Bmp faylı içərisində 0 və 1-in bütün dəstə edir 133 00:08:15,520 --> 00:08:18,070 lakin bəzi əlavə 0 və 1-in orada var. 134 00:08:18,070 --> 00:08:21,450 Və bu il üçün verilən nə biz yəqin ki, qəbul etdiyiniz çıxır 135 00:08:21,450 --> 00:08:27,040 . doc və ya. xls və ya. mp3 və ya. mp4, kimi fayl formatları 136 00:08:27,040 --> 00:08:29,910 sizinlə tanış olduğunuzu nə fayl formatları. 137 00:08:29,910 --> 00:08:31,900 Yaxşı, nə belə bir fayl format olmaq deməkdir? 138 00:08:31,900 --> 00:08:35,740 Günün sonunda Çünki, biz istifadə bu faylları bütün yalnız 0 və 1-in 139 00:08:35,740 --> 00:08:39,950 və bəlkə bu 0 və 1-in a, b, c, ASCII və ya analoji ilə təmsil 140 00:08:39,950 --> 00:08:42,030 ancaq günün sonunda vasitəsilə, yalnız 0 və 1-in var. 141 00:08:42,030 --> 00:08:45,300 >> Belə ki, insanlar yalnız hərdənbir yeni bir fayl format icad qərar 142 00:08:45,300 --> 00:08:49,420 onlar bit nümunələri həqiqətən demək olacaq nə standartlaşdırmaq yerləşir. 143 00:08:49,420 --> 00:08:52,790 Burada bu halda, insanlar bu bitmap fayl biçimi nəzərdə edən 144 00:08:52,790 --> 00:08:58,260 bir bitmap fayl ilk byte ilə, kimi ofset 0 qeydi ki, var, 145 00:08:58,260 --> 00:09:02,320 bəzi cryptically adına dəyişən adlı bfType olması orada olacaq 146 00:09:02,320 --> 00:09:06,510 olan yalnız bitmap fayl növü üçün dayanır, bu nə bitmap fayl növü. 147 00:09:06,510 --> 00:09:10,780 Siz 2 ofset ki, ikinci sırada, byte sayı 2-dən, bəlkə də, nəticə çıxarmaq olar 148 00:09:10,780 --> 00:09:15,980 0 və 1-in nə təmsil bir model var? 149 00:09:15,980 --> 00:09:18,320 Bu bir şey ölçüsü, və oradan gedir. 150 00:09:18,320 --> 00:09:20,660 Belə ki, problem set 4, bu bəzi şeyləri vasitəsilə getdi olacaq. 151 00:09:20,660 --> 00:09:24,480 >> Biz onların bütün haqqında qayğı başa, lakin qeyd edəcək maraqlı almaq başlayır 152 00:09:24,480 --> 00:09:30,780 xətti və ya byte 54, rgbtBlue, Yaşıl və Qırmızı ətrafında. 153 00:09:30,780 --> 00:09:35,280 Heç kısaltma RGB, qırmızı yaşıl mavi eşitdim, bu ki, bir istinad edir. 154 00:09:35,280 --> 00:09:37,840 O çıxır Çünki göy qurşağı bütün rəngləri boya bilər 155 00:09:37,840 --> 00:09:41,580 qırmızı və mavi və yaşıl bəzi birləşməsi ilə. 156 00:09:41,580 --> 00:09:46,560 Və əslində otağında valideynlər erkən proyektorlar bəzi xatırlayıram bilər. 157 00:09:46,560 --> 00:09:49,360 Bu gün, yalnız 1 parlaq işıq bir lens çıxan görürük. 158 00:09:49,360 --> 00:09:52,870 Amma geriyə gün, siz qırmızı lens, mavi lens, yaşıl lens idi 159 00:09:52,870 --> 00:09:56,620 və birlikdə onlar ekran yönəlmiş və rəngarəng şəkil formalaşmışdır. 160 00:09:56,620 --> 00:09:59,590 Və tez-tez orta məktəblərdə və ali məktəblərdə bu linzalar var ki, 161 00:09:59,590 --> 00:10:02,680 həmişə belə az əyri, belə ki, iki və ya üç images görən sort idi 162 00:10:02,680 --> 00:10:07,500 amma fikri idi. Siz bir şəkil rəsm qırmızı və yaşıl və mavi işıq idi. 163 00:10:07,500 --> 00:10:09,570 Və eyni prinsip kompüter istifadə olunur. 164 00:10:09,570 --> 00:10:12,000 >> Belə problemlər arasında, sonra, sizin üçün problem 4-müəyyən 165 00:10:12,000 --> 00:10:16,080 bir neçə şey olacaq; bir həqiqətən bir şəkil ölçüsünü üçün. 166 00:10:16,080 --> 00:10:18,050 0 və 1-in bir model üçün, 167 00:10:18,050 --> 00:10:22,840 , 0 və 1-nin chunks bir strukturunda nə kimi təmsil anlamaq 168 00:10:22,840 --> 00:10:26,800 da Reds, blues, göyərti: və sonra piksel kopya necə anlamaq 169 00:10:26,800 --> 00:10:32,460 Belə ki, içərisində bir şəkil əvvəlcə bu kimi görünür zaman, ondan sonra yerinə bu kimi baxmaq bilər. 170 00:10:32,460 --> 00:10:35,590 Digər problemlər arasında, çox, siz təhvil lazımdır ki, olacaq 171 00:10:35,590 --> 00:10:38,900 bir digital kamera faktiki fayl məhkəmə image 172 00:10:38,900 --> 00:10:42,410 və kamera, bir müddət sonra, photos, bir dəstə idi. 173 00:10:42,410 --> 00:10:47,030 Bu problem, biz təsadüfən silinə və ya image birtəhər bad idi olunur. 174 00:10:47,030 --> 00:10:51,040 Pis şeylər digital kameralar ilə baş və biz tez 0 və 1-in bütün sitemizi 175 00:10:51,040 --> 00:10:55,410 off sizin üçün ki, kart, 1 böyük fayl onları xilas, sonra biz onları sizə təslim olacaq 176 00:10:55,410 --> 00:11:00,000 siz bərpa etmək ilə C bir proqram yazmaq olar ki, problem 4-müəyyən 177 00:11:00,000 --> 00:11:02,660 o JPEGs bütün ideal. 178 00:11:02,660 --> 00:11:06,280 Və bu, onlar bir qədər mürəkkəb fayl formatı olmalarına baxmayaraq ki, JPEGs çıxır 179 00:11:06,280 --> 00:11:09,580 onlar daha mürəkkəb burada bu smiling üz çox istəyirik. 180 00:11:09,580 --> 00:11:14,320 Bu, hər JPEG 0 və 1-in eyni nümunələri ilə başlayan çıxır. 181 00:11:14,320 --> 00:11:18,820 Belə ki, loop və ya oxşar üçün bir müddət loop və ya istifadə edərək, 182 00:11:18,820 --> 00:11:22,350 bütün 0 və 1-in bu məhkəmə image üzərində təkrarlamaq bilər 183 00:11:22,350 --> 00:11:26,670 və problem set dəqiqləşdirilməsi müəyyən olan xüsusi model görmək hər zaman, 184 00:11:26,670 --> 00:11:29,770 siz çox yüksək ehtimalla, "Oh, burada, kəsb edə bilər 185 00:11:29,770 --> 00:11:33,520 JPEG başlanması və tezliklə tapa eyni model, 186 00:11:33,520 --> 00:11:36,050 sonra bayt və ya kilobayttan ya megabayt bəzi sayı, 187 00:11:36,050 --> 00:11:40,550 siz Ooh, güman edə bilərsiniz! Burada ikinci JPEG, mən birinci sonra aldı foto edir. 188 00:11:40,550 --> 00:11:44,720 Mənə ilk fayl oxu dayandırmaq ki, bu yeni bir yazmağa başlayın. 189 00:11:44,720 --> 00:11:49,980 Və pset 4 üçün proqram çıxış kimi çox 50 kimi JPEGs olacaq. 190 00:11:49,980 --> 00:11:52,400 50 JPEGs deyil varsa, siz bir loop bir az var. 191 00:11:52,400 --> 00:11:55,580 Siz JPEGs bir sonsuz sayda varsa, siz sonsuz loop var. 192 00:11:55,580 --> 00:11:58,280 Belə ki, çox, çox ümumi bir hal olacaq. 193 00:11:58,280 --> 00:12:00,280 Bu üfüqdə nə var. 194 00:12:00,280 --> 00:12:03,740 >> Arxamızda, 0 viktorina. Həyata, mənim e-poçt hər ki, daim insanlar var 195 00:12:03,740 --> 00:12:06,820 xoşbəxt, neytral növ və viktorina ətrafında kədərli 0 dəfə də olan. 196 00:12:06,820 --> 00:12:10,160 Və baş TFS, Zamyla, öz TF mənə çatmaq edin 197 00:12:10,160 --> 00:12:14,120 şeyi getdi necə müzakirə etmək istəyirsinizsə, siz bilirsiniz ki, CAS və ya bir. 198 00:12:14,120 --> 00:12:16,460 >> Belə ki, oda burada valideynlər impress 199 00:12:16,460 --> 00:12:23,990 bu CS50 kitabxana nədir? Yaxşı iş. 200 00:12:23,990 --> 00:12:32,280 Bu CS50 kitabxana nədir? Evet? [Tələbə cavab anlaşılmaz] 201 00:12:32,280 --> 00:12:35,730 >> Okay yaxşı. Belə ki, biz, işçi heyəti, yazdığı bir kod prewritten dəsti var, 202 00:12:35,730 --> 00:12:38,460 biz bəzi ümumi funksiyaları təmin etmək üçün təmin edir. 203 00:12:38,460 --> 00:12:42,290 Burada listelenen funksiyaları bütün, mənə bir int almaq; Mənə bir string almaq istəyirəm mövzusu. 204 00:12:42,290 --> 00:12:45,260 Indi başlayaraq, biz, həqiqətən, bu təlim təkərlər çıxarmaq başlayın. 205 00:12:45,260 --> 00:12:48,230 Belə ki, siz bir "string" üz etmək başlamaq olacaq 206 00:12:48,230 --> 00:12:52,790 ki, geri, nə faktiki data növü üçün yalnız bir sinonimi idi? char *. 207 00:12:52,790 --> 00:12:57,020 Belə ki, valideynlər üçün ki, yəqin idi - yaxşı ki, char * görürük başlarsınız 208 00:12:57,020 --> 00:13:00,810 ekranda bütün bizim lüğət-dən "string" aradan qaldırılması kimi, 209 00:13:00,810 --> 00:13:02,760 həqiqətən kodu yazılı gəldiyi azı zaman. 210 00:13:02,760 --> 00:13:06,240 Eynilə, biz çox kimi funksiyaları bəzi istifadə dayandırmaq lazımdır 211 00:13:06,240 --> 00:13:08,390 proqramlar daha mürəkkəb almaq üçün gedir çünki 212 00:13:08,390 --> 00:13:11,370 deyil, yalnız tez yanıb-sönən ilə oturmaq proqramlar yazmaq 213 00:13:11,370 --> 00:13:13,580 da bir şey yazın istifadəçi gözləyir 214 00:13:13,580 --> 00:13:15,220 Siz başqa yerdə sizin giriş almaq lazımdır. 215 00:13:15,220 --> 00:13:18,720 Məsələn, yerli sabit bit bir sıra onları almaq lazımdır. 216 00:13:18,720 --> 00:13:23,340 Siz əvəzinə bəzi veb haradasa, bir şəbəkə gələcəkdə onları almaq lazımdır. 217 00:13:23,340 --> 00:13:27,460 Belə ki, ilk dəfə geri bu qat qabığı edək və CS50 cihaz qoparmaq 218 00:13:27,460 --> 00:13:32,300 siz həftə o cümlədən kəskin olmuşdur etdiyiniz CS50.h adlanır və bu faylı. 219 00:13:32,300 --> 00:13:34,380 >> Amma nin əslində bu daxilində nə görmək bildirin. 220 00:13:34,380 --> 00:13:38,250 Belə ki, mavi faylı üst, yalnız şərh bütöv bir dəstə edir 221 00:13:38,250 --> 00:13:41,340 zəmanət informasiya və lisenziya. Bu ümumi paradiqma növ edir 222 00:13:41,340 --> 00:13:44,600 proqram, çünki proqram bir çox bu gün "açıq mənbə" adlı nə 223 00:13:44,600 --> 00:13:46,940 olan kimsə kodu yazılı o deməkdir ki, 224 00:13:46,940 --> 00:13:50,060 və, yalnız run və istifadə üçün, sərbəst mövcud 225 00:13:50,060 --> 00:13:53,660 ancaq oxumaq və dəyişdirmək və öz iş inteqrasiya. 226 00:13:53,660 --> 00:13:55,790 Belə ki, siz, açıq proqram istifadə etdiyiniz nə 227 00:13:55,790 --> 00:13:58,030 çox kiçik bir formada olsa. 228 00:13:58,030 --> 00:14:01,860 Mən şərh keçmiş aşağı diyirləyin varsa, baxmayaraq ki, biz bir daha tanış şeyi görmək üçün başlamaq lazımdır. 229 00:14:01,860 --> 00:14:08,090 Belə ki, CS50.h fayl mövzu faylları bütün dəstə daxildir ki, burada üst bildiriş. 230 00:14:08,090 --> 00:14:11,160 İndi, bu ən biz əvvəl görməmişəm, lakin bir 231 00:14:11,160 --> 00:14:15,640 tanış, bu, hansı ki, biz qədər qısa olsa da, gördüm? 232 00:14:15,640 --> 00:14:18,720 Bəli, standart kitabxana. Stdlib.h, malloc var 233 00:14:18,720 --> 00:14:21,590 belə bir dəfə biz, dinamik yaddaş ayrılması haqqında söhbət açılmış 234 00:14:21,590 --> 00:14:24,960 biz də gələn həftə qayıda bilərsiniz ki, fayl o cümlədən başladı. 235 00:14:24,960 --> 00:14:29,660 Bu bool və həqiqi və saxta həqiqətən, hər se, C yoxdur çıxır ki, 236 00:14:29,660 --> 00:14:32,460 Burada bu fayl daxil olmasın. 237 00:14:32,460 --> 00:14:35,770 Belə ki, həftə, standart bool.h o cümlədən edilmişdir 238 00:14:35,770 --> 00:14:39,020 Siz, bool doğru və ya yalan. anlayışı istifadə edə bilərsiniz, belə ki, 239 00:14:39,020 --> 00:14:41,830 Bu olmadan, siz saxta onun sort və bir int istifadə etmək olardı 240 00:14:41,830 --> 00:14:45,920 və yalnız özbaşına 0 yalan və 1 doğru olduğunu daşımır. 241 00:14:45,920 --> 00:14:49,980 >> İndi biz daha aşağı diyirləyin əgər burada simli bizim müəyyən edilməsidir. 242 00:14:49,980 --> 00:14:54,820 Bu * olduğu həqiqətən Fərq etməz ki, biz əvvəl deyib sonra kimi çıxır. 243 00:14:54,820 --> 00:14:56,750 Siz hətta bütün ətrafında yer ola bilər. 244 00:14:56,750 --> 00:15:01,550 Biz bu dövr, bu * növü ilə nə var ki, aydın etmək üçün bu kimi təşviq edilmişdir. 245 00:15:01,550 --> 00:15:05,370 Amma bir az daha çox olmadıqda, orada qoymaq üçün, kimi ümumi, həyata 246 00:15:05,370 --> 00:15:07,480 lakin funksional eyni şey. 247 00:15:07,480 --> 00:15:11,070 Daha aşağı oxumaq Lakin indi, demək nəzər, GetInt, qoy 248 00:15:11,070 --> 00:15:15,350 biz başqa bir şey Bu dövr əvvəl, bəlkə də ki, istifadə çünki. 249 00:15:15,350 --> 00:15:19,620 Burada GetInt edir. Bu nədir? 250 00:15:19,620 --> 00:15:24,650 Bu prototip edir. Belə ki, tez-tez biz bizim zirvələrində prototipləri qoyduq. C faylları, 251 00:15:24,650 --> 00:15:28,190 ancaq mövzu faylları. h faylları ilə prototipləri bilər 252 00:15:28,190 --> 00:15:32,110 burada bu biri kimi, belə ki, bəzi funksiyaları yazmaq zaman 253 00:15:32,110 --> 00:15:36,790 digər insanlar istifadə etmək istəyirəm ki, o, CS50 kitabxana ilə tam halda 254 00:15:36,790 --> 00:15:40,900 siz CS50.c kimi bir şey sizin funksiyaları həyata deyil, yalnız 255 00:15:40,900 --> 00:15:46,720 siz də deyil, bir fayl üst prototipləri qoymaq, lakin bir mövzu fayl başında 256 00:15:46,720 --> 00:15:50,810 o header file, dostları və həmkarları daxildir nə 257 00:15:50,810 --> 00:15:52,800 kəskin öz kodu daxildir. 258 00:15:52,800 --> 00:15:55,440 Bütün bu dəfə Beləliklə, siz bu prototipləri bütün o cümlədən olduğunuz 259 00:15:55,440 --> 00:15:59,870 effektiv fayl üst, lakin bu, kəskin yolu ilə mexanizmi daxildir 260 00:15:59,870 --> 00:16:03,320 ki, mahiyyətcə nüsxə və pastalar öz bu faylı. 261 00:16:03,320 --> 00:16:06,400 İndi burada kifayət qədər ətraflı sənədləşdirmə edir. 262 00:16:06,400 --> 00:16:08,880 >> GetInt bir int olur ki, verilmiş Biz olduqca çox qəbul etdik, 263 00:16:08,880 --> 00:16:10,740 bir künc hallarda var həyata lakin o, sağ çevrilir? 264 00:16:10,740 --> 00:16:14,320 Nə yol çox böyük ki, bir sıra istifadəçi əgər? 265 00:16:14,320 --> 00:16:17,350 Yalnız int daxilində uyğun bilməz ki quintillion? 266 00:16:17,350 --> 00:16:21,180 Gözlənilən davranış nədir? Yaxşı, ideal, bu, əvvəlcədən var. 267 00:16:21,180 --> 00:16:23,460 Belə ki, bu halda, həqiqətən, gözəl çap oxumaq 268 00:16:23,460 --> 00:16:27,850 Əgər xətti oxumaq mümkün olmadıqda, bu gəlirlər INT_MAX görəcəksiniz. 269 00:16:27,850 --> 00:16:30,800 Biz bu barədə danışdı, lakin onun kapitallaşdırılması əsasında heç etdik 270 00:16:30,800 --> 00:16:33,030 yəqin ki, nə? 271 00:16:33,030 --> 00:16:36,610 Bu daimi, buna yəqin ki, elan edir ki, bəzi xüsusi daimi var 272 00:16:36,610 --> 00:16:39,460 fayl qədər yüksək ki, bu mövzu faylları biri, 273 00:16:39,460 --> 00:16:43,400 və INT_MAX yəqin ki, 2 milyard təxminən kimi bir şeydir. 274 00:16:43,400 --> 00:16:48,160 Biz elə bir şey demek lazımdır ki olan ideya, səhv getdi 275 00:16:48,160 --> 00:16:51,090 biz, bəli, bizim sərəncamında 4 milyard ədəd var 276 00:16:51,090 --> 00:16:53,980 2 milyard mənfi 2 milyard vermək və ya almaq. 277 00:16:53,980 --> 00:16:58,030 Yaxşı, nə proqramlaşdırma ümumi yalnız bu nömrələrdən birini oğurlamaq deyil. 278 00:16:58,030 --> 00:17:02,250 Bəlkə 0, bəlkə 2 milyard, bəlkə mənfi 2 milyard. 279 00:17:02,250 --> 00:17:06,720 Siz dünyanın öhdəliyi ki, Belə ki, sizin mümkün dəyərlərindən birini sərf 280 00:17:06,720 --> 00:17:10,089 bir şey yanlış gedir ki, bu super-böyük dəyər qayıdacaqlar. 281 00:17:10,089 --> 00:17:13,329 Lakin, istifadəçi kimi sirli bir şey yazaraq istəmirəm "4, 2, 3 ..." 282 00:17:13,329 --> 00:17:17,079 həqiqətən böyük sayı, burada daimi əvəzinə ümumiləşdirmək. 283 00:17:17,079 --> 00:17:19,380 Belə ki, həqiqətən, siz son bir neçə həftə anal olan halda, 284 00:17:19,380 --> 00:17:23,800 siz GetInt zəng zaman, bir halda şərti ilə yoxlanılması lazımdır. 285 00:17:23,800 --> 00:17:27,109 , Daha dəqiq desək, INT_MAX istifadəçi növü mi 286 00:17:27,109 --> 00:17:29,900 GetInt qaytarılması INT_MAX idi? Çünki əgər, 287 00:17:29,900 --> 00:17:35,140 əslində onlar yazın anlamına gelir; bir şey bu halda yanlış getdi. 288 00:17:35,140 --> 00:17:38,970 Belə ki, bu ümumiyyətlə yalnız xüsusi deməkdir "sentinel" dəyər kimi tanınan nə edir. 289 00:17:38,970 --> 00:17:41,020 >> Yaxşı, indi də. C faylları öz növbəsində imkan verir. 290 00:17:41,020 --> 00:17:44,500 C fayl, bir müddət cihaz mövcuddur 291 00:17:44,500 --> 00:17:47,540 və əslində, cihaz sizin üçün precompiled var 292 00:17:47,540 --> 00:17:49,720 ki, bir şey daxil edirik ", obyekt kodu" adlı 293 00:17:49,720 --> 00:17:52,940 sistem bilir, çünki olduğu, lakin bu yalnız sizin üçün fərqi yoxdur, 294 00:17:52,940 --> 00:17:54,780 Bu halda, o, olduğu Aracın. 295 00:17:54,780 --> 00:18:00,620 Amma nin GetInt artıq aşağı diyirləyin bildirin, və GetInt bütün bu vaxt işləyir necə. 296 00:18:00,620 --> 00:18:02,380 Belə ki, burada biz əvvəl oxşar şərh yoxdur. 297 00:18:02,380 --> 00:18:04,930 Mənə yalnız kodu hissəsi üzrə Yakınlaştırmak edək 298 00:18:04,930 --> 00:18:07,410 və nə biz GetInt üçün belədir. 299 00:18:07,410 --> 00:18:12,770 (Doğru), biz qəsdən sonsuz loop isə, heç bir daxil edir və bir int qaytarır 300 00:18:12,770 --> 00:18:16,560 lakin, güman ki, biz birtəhər bu çıxmaq və ya bu ərzində qayıtmaq lazımdır. 301 00:18:16,560 --> 00:18:19,890 Belə nin necə bu işlər görək. Yaxşı, biz GetString istifadə görünür 302 00:18:19,890 --> 00:18:22,550 loop, 166 daxilində bu ilk xətti. 303 00:18:22,550 --> 00:18:25,320 Bu artıq yaxşı təcrübə çünki hansı şəraitdə 304 00:18:25,320 --> 00:18:30,820 GetString bu xüsusi söz, NULL qayıtmaq olar? 305 00:18:30,820 --> 00:18:38,460 Bir şey yanlış gedir edin. Siz GetString kimi bir zəng zaman yanlış getmək bilər? 306 00:18:38,460 --> 00:18:42,550 Evet? [Tələbə cavab anlaşılmaz] >> Bəli. Belə ki, bəlkə malloc bilmir. 307 00:18:42,550 --> 00:18:45,310 Somewhere başlıq GetString altında, malloc çağırır 308 00:18:45,310 --> 00:18:48,210 olan kompüter mağaza imkan verir, yaddaş ayırır 309 00:18:48,210 --> 00:18:50,950 xarakterlərin bütün klaviatura daxil istifadəçi növləri. 310 00:18:50,950 --> 00:18:53,270 Və istifadəçi pulsuz zaman bütün çox idi güman 311 00:18:53,270 --> 00:18:56,470 və 2 milyard simvol artıq, məsələn, daha yazılmış. 312 00:18:56,470 --> 00:18:59,600 Kompüter daha çox simvol hətta RAM var. 313 00:18:59,600 --> 00:19:02,350 Yaxşı, GetString, siz ki, demek etmək üçün var 314 00:19:02,350 --> 00:19:05,650 bu super, super nadir künc halda belə. 315 00:19:05,650 --> 00:19:08,490 O, elə bu idarə etmək üçün var, və GetString 316 00:19:08,490 --> 00:19:11,850 biz geri və onun sənədləri oxumaq, əslində, NULL qayıtmaq deyil. 317 00:19:11,850 --> 00:19:16,150 GetString NULL geri uğursuz İndi əgər GetInt uğursuz gedir 318 00:19:16,150 --> 00:19:19,370 yalnız bir keşikçi kimi INT_MAX qaytarılması ilə. 319 00:19:19,370 --> 00:19:22,650 Bu yalnız insan konvensiyalar var. Bu bilirsən yeganə yolu olduğu 320 00:19:22,650 --> 00:19:24,840 sənədlərin oxu edir. 321 00:19:24,840 --> 00:19:28,200 Beləliklə də int həqiqətən GotInt olduğu üçün aşağı diyirləyin bildirin. 322 00:19:28,200 --> 00:19:34,220 >> Mən bir az daha aşağı diyirləyin Belə ki, xətt 170-ci ildə biz bu xətləri yuxarıda Şərh yoxdur. 323 00:19:34,220 --> 00:19:38,470 Belə ki, biz, 172, bir int n və char c, və bu yeni funksiya elan 324 00:19:38,470 --> 00:19:41,870 siz bəzi əvvəl rast stumbled, lakin sscanf var. 325 00:19:41,870 --> 00:19:44,190 Bu simli scan f dayanır. 326 00:19:44,190 --> 00:19:48,580 Yəni, mənə bir string verir və mən faiz informasiya ədəd üçün tarar. 327 00:19:48,580 --> 00:19:53,820 Belə ki, nə deməkdir? Yaxşı, mən klaviatura 1 2 3 sanki yazın güman 328 00:19:53,820 --> 00:19:59,730 və sonra daxil edib. GetString geri zaman 1 2 3 data type nədir? 329 00:19:59,730 --> 00:20:05,010 Bu hüququ, açıq-aydın bir simli var? Mən bir simli var, belə ki, 1 2 3 həqiqətən "1 2 3" dir 330 00:20:05,010 --> 00:20:07,260 Bunun sonunda \ 0. Bir int deyil. 331 00:20:07,260 --> 00:20:10,420 Yəni bir sıra deyil. Bu, bir sıra kimi görünür, ancaq faktiki olaraq deyil. 332 00:20:10,420 --> 00:20:14,680 Belə ki, nə GetInt nə var? Bu, sağ ki, simli scan var 333 00:20:14,680 --> 00:20:19,010 1 2 3 \ 0, birtəhər faktiki tam onu ​​çevirmək. 334 00:20:19,010 --> 00:20:21,010 İndi siz bunu necə anlamaq bilər. 335 00:20:21,010 --> 00:20:24,240 Siz pset 2 geri düşünüyorsanız, ehtimalla bir az rahat əldə 336 00:20:24,240 --> 00:20:26,810 Sezar və ya vigenere ilə belə bir simli üzərində təkrarlamaq bilər 337 00:20:26,810 --> 00:20:29,800 Siz pick ilə ints üçün chars çevirə bilərsiniz. Iş bütün çox var. 338 00:20:29,800 --> 00:20:32,800 Niyə ki, ki sscanf kimi bir funksiyası zəng deyil? 339 00:20:32,800 --> 00:20:37,520 Belə sscanf simli olan xətti deyilən bu halda, bir arqument gözləyir. 340 00:20:37,520 --> 00:20:41,310 Daha sonra, quotes, printf çox oxşar bilersiniz 341 00:20:41,310 --> 00:20:44,960 Bu string görmək nə gözləyirsiniz? 342 00:20:44,960 --> 00:20:52,980 Mən burada dedi alıram, mən bir decimal sayı və bəlkə bir xarakter görmək gözləyirik. 343 00:20:52,980 --> 00:20:54,990 Bu yalnız bir anda halda niyə və görəcəyik. 344 00:20:54,990 --> 00:20:58,440 Bu notation indi məhsulları xatırladan çıxır 345 00:20:58,440 --> 00:21:00,840 biz yalnız bir həftə əvvəl artıq söhbət başladı. 346 00:21:00,840 --> 00:21:05,430 >> Nədir və n və & c burada bizim üçün bunu? [Tələbə cavab anlaşılmaz] 347 00:21:05,430 --> 00:21:07,610 >> Bəli. Mənə c n və ünvanı ünvanı verilməsi oldu. 348 00:21:07,610 --> 00:21:10,440 İndi niyə vacibdir? Yaxşı bilirsiniz ki, C funksiyaları ilə 349 00:21:10,440 --> 00:21:13,440 Siz həmişə bütün bir dəyəri və ya heç bir dəyəri ola bilər. 350 00:21:13,440 --> 00:21:16,630 Siz int, bir simli, bir float, bir char, nə ola bilər. 351 00:21:16,630 --> 00:21:21,150 Və ya etibarsız ola bilər, lakin yalnız maksimum 1 şey ola bilər. 352 00:21:21,150 --> 00:21:26,100 Lakin burada biz sscanf bəlkə bir int, bir decimal sayı, mənə qayıtmaq istəyirəm 353 00:21:26,100 --> 00:21:29,240 və həmçinin char, və bir anda nə char izah edəcəyik. 354 00:21:29,240 --> 00:21:34,250 Beləliklə, siz səmərəli f 2 şeyi qayıtmaq istəyirəm ki, həmin C. yalnız mümkün deyil 355 00:21:34,250 --> 00:21:38,460 Belə ki, 2 ünvanları keçən ki, ətrafında iş 356 00:21:38,460 --> 00:21:43,710 bir funksiyası 2 ünvanları əl kimi ki, funksiyası onlara nə edə bilər çünki? 357 00:21:43,710 --> 00:21:49,880 O URL yaza bilərsiniz. Siz * əməliyyat istifadə və bu URL-hər "getmək" bilərsiniz. 358 00:21:49,880 --> 00:21:54,320 Bu backdoor mexanizminin sort, ancaq dəyişənlərin dəyərləri dəyişdirmək üçün çox ümumi 359 00:21:54,320 --> 00:21:58,020 Bu halda 2-ci yalnız 1 yer, daha çox. 360 00:21:58,020 --> 00:22:04,590 İndi == to1 kontrol, və o, əslində, doğru ilə qiymətləndirmək əgər n qaytarılması alıram bilərsiniz. 361 00:22:04,590 --> 00:22:09,340 Belə ki, nə olub? Yaxşı, texniki, biz, həqiqətən GetInt baş istəyirəm bütün bu. 362 00:22:09,340 --> 00:22:12,340 Biz danışmaq, analiz etmək istəyirəm, biz string oxumaq istəyirəm 363 00:22:12,340 --> 00:22:16,210 "1 2 3" və bir sıra var kimi görünür, əgər 364 00:22:16,210 --> 00:22:21,360 nə biz sscanf izah etdiyiniz mənim üçün bu dəyişən n ki sayı 1 2 3 qoymaq deyil. 365 00:22:21,360 --> 00:22:26,060 Niyə, sonra mən də bu var idi? 366 00:22:26,060 --> 00:22:33,750 Də sscanf, burada bir xarakter ala bilər deyərək rolu nədir. 367 00:22:33,750 --> 00:22:36,890 [Tələbə danışan anlaşılmaz] >> deyil - bir kəsir iş bilər. 368 00:22:36,890 --> 00:22:40,650 Bir an düşündüm ki keçirəcək edək. Nə? 369 00:22:40,650 --> 00:22:42,570 [Tələbə, anlaşılmaz] >> Beləliklə, yaxşı fikir, bu NULL xarakterli ola bilər. 370 00:22:42,570 --> 00:22:44,970 Bu halda, həqiqətən deyil. Evet? [Tələbə, anlaşılmaz] 371 00:22:44,970 --> 00:22:47,100 >> >> ASCII. Və ya, mənə daha da ümumiləşdirmək bildirin. 372 00:22:47,100 --> 00:22:49,670 Orada% c yalnız səhv yoxlanılması üçün. 373 00:22:49,670 --> 00:22:52,510 Biz nömrə sonra xarakter olmalıdır istəmirəm 374 00:22:52,510 --> 00:22:54,980 lakin nə bu mənə imkan verir aşağıdakı kimidir: 375 00:22:54,980 --> 00:23:01,270 Bu sscanf, burada bu nümunə, n və c dəyərləri saxlanılması ilə yanaşı, çıxır 376 00:23:01,270 --> 00:23:08,170 bunun da dəyişənlərin sayı qaytarır bilir nə daxil dəyərlər put 377 00:23:08,170 --> 00:23:13,330 Yalnız sonra 1 2 3 yazın Belə ki, yalnız% d uyğun gedir 378 00:23:13,330 --> 00:23:18,830 və yalnız n 1 2 3 kimi dəyəri ilə saxlanılan olur və heç bir şey c qoymaq olur; 379 00:23:18,830 --> 00:23:20,870 c belə danışmaq, bir zibil dəyər olaraq qalır. 380 00:23:20,870 --> 00:23:23,550 Bəzi dəyəri başlatılmış edilmişdir heç Zibil çünki. 381 00:23:23,550 --> 00:23:29,390 Mən o göstəricilərinə biri yaşadığı Çünki bu halda, sscanf, 1 qaytarır 382 00:23:29,390 --> 00:23:33,650 Bu halda, böyük. Mən int var, mən yaddaş pulsuz xətti azad 383 00:23:33,650 --> 00:23:37,150 ki GetString həqiqətən ayrılmış, sonra n qaytarın. 384 00:23:37,150 --> 00:23:42,210 Ki, yeniden yerləşir heç merak əgər Else, bəyanat gəlir, burada gəlir. 385 00:23:42,210 --> 00:23:45,770 Əgər, əksinə, mən 1 2 3 foo yazın 386 00:23:45,770 --> 00:23:48,640 mətn yalnız bir təsadüfi sequence, sscanf bax gedir 387 00:23:48,640 --> 00:23:51,500 f - ooh, ooh, sayı sayı ooh, sayı ooh. 388 00:23:51,500 --> 00:23:54,190 Və n 1 2 3 qoymaq olacaq. 389 00:23:54,190 --> 00:23:59,970 Bu c f qoymaq və sonra 2 qayıtmaq olacaq. 390 00:23:59,970 --> 00:24:02,980 Belə ki, biz, yalnız scanf davranışı əsas anlayışı istifadə edərək, var 391 00:24:02,980 --> 00:24:06,170 çox sadə yolu - yaxşı, ilk baxışda kompleks, ancaq günün sonunda, 392 00:24:06,170 --> 00:24:11,460 deyərək kifayət qədər sadə mexanizm var, bir int və əgər edir ki, aşkar edən yeganə şey? 393 00:24:11,460 --> 00:24:14,950 Burada ağ kosmik qəsdən edir. Siz sscanf üçün sənədlərin oxuya edin 394 00:24:14,950 --> 00:24:18,690 ki, siz əvvəlində və ya sonunda ağ kosmik bir parça daxil etsəniz, deyir 395 00:24:18,690 --> 00:24:24,990 sscanf çox boşluq 1 2 3 hit, hər hansı səbəbdən, istifadəçi imkan verir ki, qanuni olacaq. 396 00:24:24,990 --> 00:24:28,310 Onlar əvvəlində və ya sonunda boşluq edib yalnız ona görə ki, istifadəçi da fəğan deyil 397 00:24:28,310 --> 00:24:32,160 istifadəçi dostu bir az çoxdur. 398 00:24:32,160 --> 00:24:34,160 >> Hər hansı sual, sonra GetInts haqqında? Evet? 399 00:24:34,160 --> 00:24:36,820 [Tələbə sual, anlaşılmaz] 400 00:24:36,820 --> 00:24:40,740 >> Yaxşı sual. Yalnız bir char çap əgər, e, və hit kimi daxil nədir 401 00:24:40,740 --> 00:24:47,830 heç 1 2 3 yazaraq olmadan, siz kodu bu xətti davranış sonra nə düşünürsünüz? 402 00:24:47,830 --> 00:24:50,500 Belə sscanf də ki, əhatə edə bilər bu halda, çünki, 403 00:24:50,500 --> 00:24:56,280 o n və ya c doldurmaq niyyətində deyil; əvəzinə 0 qayıtmaq olacaq. 404 00:24:56,280 --> 00:25:01,540 Istəyirəm gözlənilən dəyəri 1 çünki bu halda, mən də ki, ssenari tutmaq alıram. 405 00:25:01,540 --> 00:25:07,310 Mən yalnız 1 istəyirəm və yalnız 1 şey doldurulmalıdır. Sual Yaxşı. Digər? 406 00:25:07,310 --> 00:25:09,610 >> Bütün hüquqlar, belə ki, burada funksiyaları bütün vasitəsilə getmək deyil, qoy 407 00:25:09,610 --> 00:25:11,820 amma qalan faiz, bəlkə də, görünür ki, bir 408 00:25:11,820 --> 00:25:14,530 o çıxır çünki GetString ki GetFloat, GetInt, 409 00:25:14,530 --> 00:25:19,490 Bütün ayaqla zərbə GetString öz funksionallıq bir çox GetLongLong, GetDouble. 410 00:25:19,490 --> 00:25:22,860 Belə nin burada həyata necə nəzər salaq. 411 00:25:22,860 --> 00:25:27,040 Bu bir az mürəkkəb görünür, ancaq eyni əsasları istifadə 412 00:25:27,040 --> 00:25:29,680 Biz keçən həftə söhbət başlamışdır. Belə GetString olaraq, 413 00:25:29,680 --> 00:25:32,670 olan qədər burada boşluğu kimi heç bir dəlil edir 414 00:25:32,670 --> 00:25:37,110 və simli qaytarır; mən bufer adlı simli bəyan edirəm. 415 00:25:37,110 --> 00:25:39,670 Mən, həqiqətən, hələ istifadə etmək üçün nə bilmirəm, amma biz görəcəksiniz. 416 00:25:39,670 --> 00:25:42,950 Qabiliyyəti kimi görünür default, 0,, ​​bu hara getdiyini olduqca əmin deyil. 417 00:25:42,950 --> 00:25:44,920 Not n hələ istifadə etmək üçün neler əmin olun. 418 00:25:44,920 --> 00:25:47,860 Amma indi ki, belə line 243, bir az daha maraqlı əldə edir 419 00:25:47,860 --> 00:25:51,760 biz int c, bu axmaq ətraflı növ bəyan edir. 420 00:25:51,760 --> 00:25:58,080 A char 8 bit və 8 bit neçə müxtəlif dəyərlər saxlaya bilərsiniz? 421 00:25:58,080 --> 00:26:03,310 256. Siz 256 müxtəlif ASCII Sandıqı istəyirsinizsə problem deyil, 422 00:26:03,310 --> 00:26:06,210 orada geri düşünüyorsanız, və bu alarkən bir şey deyil. 423 00:26:06,210 --> 00:26:09,100 Ki, böyük ASCII chart geri edirəm Amma əgər biz həftə əvvəl idi, 424 00:26:09,100 --> 00:26:13,780 Bu halda, 128 və ya 256 ASCII simvol var idi. 425 00:26:13,780 --> 00:26:16,220 Biz bütün 0 nin nümunələri və 1 qədər istifadə olunur. 426 00:26:16,220 --> 00:26:19,410 Əgər səhv aşkar etmək istəyirəm ki, əgər bir problem var. 427 00:26:19,410 --> 00:26:23,290 Artıq Sandıqı üçün 256 dəyərlər kullanıyorsanız Çünki, 428 00:26:23,290 --> 00:26:26,390 İndi deyərək heç bir yol var, çünki həqiqətən, irəlidə plan etmədi 429 00:26:26,390 --> 00:26:29,750 "Bu legit xarakter deyil; bu bir səhv mesaj." 430 00:26:29,750 --> 00:26:32,430 Belə ki, nə dünyada nə, onlar növbəti böyük dəyəri, 431 00:26:32,430 --> 00:26:35,790 bir int kimi bir şey bit bir crazy var ki, 432 00:26:35,790 --> 00:26:39,610 4 milyard mümkün dəyərlər üçün 32, ki, sadəcə, istifadə sona bilər 433 00:26:39,610 --> 00:26:44,800 mahiyyətcə, onların 257, 1 hansı bir səhv kimi bəzi xüsusi mənası var. 434 00:26:44,800 --> 00:26:49,190 >> Belə nin necə bu işlər görək. Line 246, bu böyük isə loop var 435 00:26:49,190 --> 00:26:54,530 ki fgetc çağırır, sonra f mənası fayl, getc və stdin. 436 00:26:54,530 --> 00:26:59,030 Bu yalnız deyərək daha dəqiq şəkildə həyata Yaşında "klaviatura daxil oxuyun." 437 00:26:59,030 --> 00:27:02,730 Standard giriş vasitəsilə klaviatura, standart çıxış, ekran deməkdir 438 00:27:02,730 --> 00:27:06,920 və biz pset 4 göreceksiniz standart səhv, ekran deməkdir 439 00:27:06,920 --> 00:27:09,670 ancaq ekran xüsusi bir hissəsi conflated deyil ki, 440 00:27:09,670 --> 00:27:13,760 sizə çap etmək üçün nəzərdə faktiki çıxışı ilə, lakin gələcəkdə daha çox. 441 00:27:13,760 --> 00:27:19,430 Belə fgetc yalnız klaviatura bir xarakter oxumaq və harada saxlanılması deməkdir? 442 00:27:19,430 --> 00:27:24,000 C onu saxlamaq və sonra yoxlamaq, mən yalnız burada boolean conjunctions kullanıyorum 443 00:27:24,000 --> 00:27:28,430 o n, belə ki, istifadəçi daxil təşkil edir \ bərabər deyil yoxlayın. 444 00:27:28,430 --> 00:27:31,510 Biz nöqtə, loop sonunda dayandırmaq istəyirik, biz də yoxlamaq istəyirəm 445 00:27:31,510 --> 00:27:36,170 üçün Bildiyiniz və ya tapmaq əgər xüsusi sabit, EOF, - bunun üçün nə stand edir? 446 00:27:36,170 --> 00:27:39,860 Fayl sonu. Mən klaviatura da yazaraq alıram əgər Çünki bu, cəfəng növü 447 00:27:39,860 --> 00:27:41,900 bu cəlb fayl, həqiqətən var 448 00:27:41,900 --> 00:27:44,330 lakin bu, yalnız demək üçün istifadə ümumi müddəti sort olunur 449 00:27:44,330 --> 00:27:50,320 başqa heç bir şey insan barmaqlarını gələn. EOF. Fayl sonu. 450 00:27:50,320 --> 00:27:52,600 Bir kənara kimi, Əgər klaviatura nəzarət d edib olsanız da, 451 00:27:52,600 --> 00:27:54,680 siz hələ olardı ki, siz nəzarət c təşkil etdik. 452 00:27:54,680 --> 00:27:57,920 Lakin nəzarət d bu xüsusi daimi adlı EOF göndərir. 453 00:27:57,920 --> 00:28:03,100 >> Belə ki, indi biz yalnız bəzi dinamik yaddaş ayrılması var. 454 00:28:03,100 --> 00:28:06,460 N + 1> gücü, indi n izah edəcəyik Belə ki, əgər. 455 00:28:06,460 --> 00:28:09,380 n yalnız neçə bayt, bufer hazırda edilir 456 00:28:09,380 --> 00:28:11,970 hazırda istifadəçi yaradılmasına olduğunuz string. 457 00:28:11,970 --> 00:28:16,240 Siz bufer potensialın var artıq bufer daha çox simvol varsa, 458 00:28:16,240 --> 00:28:20,760 daxilən, nə biz sonra nə etmək lazımdır daha gücü ayrılması olunur. 459 00:28:20,760 --> 00:28:24,490 Mən burada hesab bəzi artıq üzsüz gedirəm 460 00:28:24,490 --> 00:28:26,900 və burada yalnız bu funksiya yönəldir. 461 00:28:26,900 --> 00:28:29,170 Siz malloc nə, və ya ən azı ümumiyyətlə tanış. 462 00:28:29,170 --> 00:28:32,380 Realloc nə bir tahmin edin. [Tələbə cavab anlaşılmaz] 463 00:28:32,380 --> 00:28:35,690 >> Bəli. Və bu çox yaddaş əlavə deyil, bu aşağıdakı kimi yaddaş reallocates: 464 00:28:35,690 --> 00:28:40,530 Əgər yaddaş daha vermək simli sonunda otaq hələ varsa 465 00:28:40,530 --> 00:28:43,370 o ilk verir daha sonra əlavə yaddaş almaq lazımdır. 466 00:28:43,370 --> 00:28:46,640 Belə ki, yalnız geri geri geri geri strings simvol qoyulması bilər. 467 00:28:46,640 --> 00:28:49,290 Ki, işin deyil əgər Lakin, çünki çox uzun gözləyir 468 00:28:49,290 --> 00:28:51,700 və təsadüfi bir şey yaddaş daxil plopped var, lakin əlavə var 469 00:28:51,700 --> 00:28:56,480 burada aşağı yaddaş, ki, OK. Realloc, sizin üçün bütün ağır atletika etmək niyyətindədir 470 00:28:56,480 --> 00:28:58,810 , siz indiyədək buradan oxuya olduğunuz string hərəkət 471 00:28:58,810 --> 00:29:02,550 orada yazmaq, sonra o nöqtədə bir daha pist verir. 472 00:29:02,550 --> 00:29:05,610 Belə ki, əl dalğası ilə, mənə nə GetString etdiyini deyim 473 00:29:05,610 --> 00:29:09,540 bir kiçik bufer, bəlkə 1 vahid xarakteri ilə başlayan edir 474 00:29:09,540 --> 00:29:12,300 və 2 simvol istifadəçi növləri, əgər GetString başa 475 00:29:12,300 --> 00:29:15,210 realloc zəng və Ooh 'deyir, 1 karakter kifayət deyil. 476 00:29:15,210 --> 00:29:18,480 Me 2 simvol verin. ' Siz loop məntiqi oxuyun sonra əgər 477 00:29:18,480 --> 00:29:21,070 ki, Ooh, 3 simvol Yığdığınız istifadəçi demək olacaq. 478 00:29:21,070 --> 00:29:25,690 Indi deyil, 2 deyil, 4 simvol mənə ver, sonra mənə 16 və 32 vermək, sonra mənə 8 vermək. 479 00:29:25,690 --> 00:29:28,180 Mən gücü hər zaman misli edirəm ki, 480 00:29:28,180 --> 00:29:30,320 bufer yavaş-yavaş inkişaf getmir deməkdir. 481 00:29:30,320 --> 00:29:35,870 Bu super sürətli inkişaf gedir və üstünlüyü ola bilər nə? 482 00:29:35,870 --> 00:29:38,540 Neden istifadəçi baxmayaraq, bufer həcmi misli am 483 00:29:38,540 --> 00:29:41,450 yalnız klaviatura, 1 əlavə xarakter lazımdır? 484 00:29:41,450 --> 00:29:44,830 [Tələbə cavab anlaşılmaz]. >> Nədir ki? 485 00:29:44,830 --> 00:29:46,750 Exactly. Siz tez-tez inkişaf yoxdur. 486 00:29:46,750 --> 00:29:48,870 Və bu yalnız növ - you're burada Oyna hedcinq. 487 00:29:48,870 --> 00:29:54,150 Bu ideya o yavaş çalışır, çünki siz, realloc bir çox zəng etmək istəmirəm olan. 488 00:29:54,150 --> 00:29:56,840 Tezliklə görəcəksiniz kimi, yaddaş üçün əməliyyat sistemi xahiş istənilən vaxt 489 00:29:56,840 --> 00:30:00,620 gələcəkdə problem müəyyən, bəzi vaxt üçün çalışır. 490 00:30:00,620 --> 00:30:04,980 Siz yer israf edirik, hətta, vaxt ki məbləği minimuma Belə ki, yaxşı bir şey olmağa çalışır. 491 00:30:04,980 --> 00:30:07,250 >> Amma biz burada GetString yekun hissəsinin oxumaq əgər, 492 00:30:07,250 --> 00:30:10,880 və yenə burada hər bir xətt anlaşma bu gün belə əhəmiyyətli deyil. 493 00:30:10,880 --> 00:30:14,830 Amma nəticədə yenə malloc çağırır görə, bu ayırır 494 00:30:14,830 --> 00:30:16,980 bu simli üçün bir çox bytes ehtiyacı tam olaraq 495 00:30:16,980 --> 00:30:21,620 və sonra çox böyük bufer, pulsuz zəng üz salır 496 00:30:21,620 --> 00:30:23,510 həqiqətən çox dəfə ikiqat oldu əgər. 497 00:30:23,510 --> 00:30:25,970 Qısa ki, GetString bütün bu vaxt işləyir nasıl. 498 00:30:25,970 --> 00:30:30,100 Bunu bütün təkrar və yenidən bir-bir xarakter oxumaq 499 00:30:30,100 --> 00:30:37,930 və bəzi əlavə yaddaş ehtiyacı hər zaman, bu realloc zəng üçün əməliyyat sistemi soruşur. 500 00:30:37,930 --> 00:30:41,660 Hər hansı sual? Bütün hüquqlar. 501 00:30:41,660 --> 00:30:45,220 >> Bir hücum. Biz göstəricilərinə anlamaq İndi ki, və ya ən azı 502 00:30:45,220 --> 00:30:47,560 , göstəricilər ilə getdikcə tanış 503 00:30:47,560 --> 00:30:50,020 bütün dünya dağılmağa başlayır necə in nəzər salaq 504 00:30:50,020 --> 00:30:53,160 Əgər kifayət qədər çəkişmə istifadəçilər qarşı müdafiə yoxsa, 505 00:30:53,160 --> 00:30:55,180 sistemi daxil hack çalışan insanlar. 506 00:30:55,180 --> 00:31:00,260 Bir qeydiyyat kodu circumventing ilə proqram oğurlamaq üçün çalışırıq insanlar 507 00:31:00,260 --> 00:31:02,150 onlar da yazın ola bilər ki, 508 00:31:02,150 --> 00:31:04,860 Yalnız C kodu olan, burada bu nümunə bir göz atın 509 00:31:04,860 --> 00:31:07,920 ki, alt əsas funksiyası var ki, bir funksiyası foo çağırır 510 00:31:07,920 --> 00:31:12,100 və nə foo keçən edir? [Tələbə] bir arqument. 511 00:31:12,100 --> 00:31:15,660 >> Subay argument. Belə argv [1], hansı istifadəçi tipli ilk sözü deməkdir 512 00:31:15,660 --> 00:31:19,150 a.out və ya hər hansı sonra command line olan proqram adlanır. 513 00:31:19,150 --> 00:31:24,920 Foo Belə ki, üst bir char * götürür, lakin char * yalnız nədir? 514 00:31:24,920 --> 00:31:28,860 Dize. Yoxdur yeni bir şey burada, və simli özbaşına bar deyilən olunur. 515 00:31:28,860 --> 00:31:36,090 Burada uyğun olaraq, char c [12], yarı-texniki İngilis sort, bu xətt nə edir? 516 00:31:36,090 --> 00:31:40,640 Və Array - Uchun. Mənə 12 simvol bir sıra verin. 517 00:31:40,640 --> 00:31:44,970 Beləliklə, biz bu bufer zəng edə bilər. Bu texniki c adlanır, lakin proqramlaşdırma bufer oldu 518 00:31:44,970 --> 00:31:47,890 yalnız bəzi məhsulları da bilər ki, kosmik bir dəstə deməkdir 519 00:31:47,890 --> 00:31:49,940 >> Sonra nəhayət, memcpy, biz əvvəl istifadə etdik. 520 00:31:49,940 --> 00:31:52,380 Amma yəqin ki, nə tahmin edə bilərsiniz. Bu yaddaş nüsxə. 521 00:31:52,380 --> 00:31:58,790 O nə edir? Bəli, yəqin, c içinə, onun giriş, bar nüsxə 522 00:31:58,790 --> 00:32:03,420 lakin yalnız bar uzunluğu. 523 00:32:03,420 --> 00:32:07,440 Amma burada bir səhv var. 524 00:32:07,440 --> 00:32:14,500 OK, belə ki, texniki, biz həqiqətən (bar) doğru olan x sizeof (char), strlen etməlidir. 525 00:32:14,500 --> 00:32:17,920 Ancaq burada ən pis halda ki that's fərz edək - belə, tamam. 526 00:32:17,920 --> 00:32:23,760 Sonra 2 hatalar var. Belə sizeof (char), bütün sağ, bu bir az daha geniş edək. 527 00:32:23,760 --> 00:32:28,860 Belə ki, indi nə olan bir səhv, hələ də var? 528 00:32:28,860 --> 00:32:31,630 [Tələbə cavab anlaşılmaz] nə >> Check? OK, belə ki, biz yoxlanılması olmalıdır 529 00:32:31,630 --> 00:32:35,010 NULL, sizin pointer NULL zaman pis şeylər, çünki 530 00:32:35,010 --> 00:32:38,490 Orada gedən son bilər və heç null gedən olmaz, çünki 531 00:32:38,490 --> 00:32:40,890 * ile operator ilə dereferencing tərəfindən. 532 00:32:40,890 --> 00:32:45,250 Belə ki, yaxşı, biz nə edirik? Məntiqi bir qüsur da burada var. 533 00:32:45,250 --> 00:32:47,650 [Tələbə cavab anlaşılmaz] 534 00:32:47,650 --> 00:32:51,340 >> Əgər argc ≥ 2 yoxlamaq? 535 00:32:51,340 --> 00:32:54,130 OK, bu proqram 3 bugs burada var belə. 536 00:32:54,130 --> 00:33:00,080 Istifadəçi həqiqətən argv [1], yaxşı içinə bir şey çap Əgər Biz yoxlanılması deyilik. 537 00:33:00,080 --> 00:33:02,240 Belə ki, üçüncü səhv var? Evet? 538 00:33:02,240 --> 00:33:04,420 Yaxşı [Tələbə cavab anlaşılmaz] >>. 539 00:33:04,420 --> 00:33:09,590 Beləliklə, biz bir ssenari yoxlanılır. Biz dolayısı daha yaddaş surəti yoxdur yoxlanılır 540 00:33:09,590 --> 00:33:12,800 bar müddəti çox daha. 541 00:33:12,800 --> 00:33:15,720 Belə ki, simli əgər Yığdığınız istifadəçi 10 simvol uzun, 542 00:33:15,720 --> 00:33:18,260 Bu 'Yalnız 10 simvol surəti. "deyib 543 00:33:18,260 --> 00:33:21,140 Və tamam, amma nə varsa tez bir söz Yığdığınız istifadəçi 544 00:33:21,140 --> 00:33:29,360 20 karakter söz kimi, bu nə daxil bar kopyalayın 20 simvol deyərək edir? 545 00:33:29,360 --> 00:33:32,840 başqa bizim bufer kimi tanınan c, siz yalnız data yazdı deməkdir 546 00:33:32,840 --> 00:33:35,950 öz olmayan 8 bayt yerlərdə, 547 00:33:35,950 --> 00:33:38,320 və siz onlara ayrılmış heç mənada ki, onlara sahib deyil. 548 00:33:38,320 --> 00:33:41,190 Beləliklə, bu, ümumiyyətlə, bufer daşqın hücum kimi tanınan nə edir 549 00:33:41,190 --> 00:33:46,650 mənada və ya tampon dağıtmaq hücum və bu hücum ki, əgər istifadəçi 550 00:33:46,650 --> 00:33:50,650 və ya funksiyası zəng olan proqram, pis bu edir 551 00:33:50,650 --> 00:33:53,780 nə həqiqətən növbəti olduqca pis ola bilər olur. 552 00:33:53,780 --> 00:33:55,690 >> Nin burada bu şəkil nəzər salaq. 553 00:33:55,690 --> 00:33:59,070 Bu şəkil yaddaş sizin yığını təmsil edir. 554 00:33:59,070 --> 00:34:01,050 Və hər dəfə bir funksiyası zəng geri 555 00:34:01,050 --> 00:34:04,520 Siz yığını bu az çərçivəsində almaq və sonra başqa bir və sonra başqa bir və sonra başqa. 556 00:34:04,520 --> 00:34:07,250 Və indiyədək biz yalnız növ var düzbucaqlı, bu üz Abstrak 557 00:34:07,250 --> 00:34:09,380 orada şurası və ya burada ekranda ya. 558 00:34:09,380 --> 00:34:12,219 Amma biz o düzbucaqlı biri zoom əgər, 559 00:34:12,219 --> 00:34:16,460 bir funksiyası foo zəng zaman, daha yığını var ki, həyata çevirir 560 00:34:16,460 --> 00:34:18,739 ki, çərçivə və düzbucaqlı daxilində 561 00:34:18,739 --> 00:34:23,370 artıq biz mübadilə söhbət idi kimi yalnız x və y və bir və b. 562 00:34:23,370 --> 00:34:25,949 Bu, bəzi aşağı səviyyəli ətraflı var çıxır 563 00:34:25,949 --> 00:34:27,780 Onların arasında ünvan qaytarın. 564 00:34:27,780 --> 00:34:33,020 Əsas foo çağırır zaman Belə ki, çıxır, əsas foo məlumat var 565 00:34:33,020 --> 00:34:36,760 kompüter yaddaşında nə əsas ünvan edir. 566 00:34:36,760 --> 00:34:40,659 Başqa Çünki, tezliklə foo kimi, burada bu işdə olduğu kimi, icra edilir 567 00:34:40,659 --> 00:34:43,790 bir dəfə, foo sonunda bu yaxın buruq brace çatmaq 568 00:34:43,790 --> 00:34:48,860 Proqramın nəzarət getmək üçün nəzərdə yerləşir Ü necə heck foo bilir? 569 00:34:48,860 --> 00:34:52,460 Bu suala cavab burada qırmızı düzbucaqlı olduğunu çıxır. 570 00:34:52,460 --> 00:34:56,130 Bu bir pointer təmsil və müvəqqəti saxlamaq üçün kompüter up 571 00:34:56,130 --> 00:35:00,250 qondarma yığın ki, belə tezliklə foo kimi əsas ünvan icra edilir 572 00:35:00,250 --> 00:35:04,110 kompüter yerləşir və geri əsas nə line bilir. 573 00:35:04,110 --> 00:35:06,900 Saxlanılan çərçivəsində pointer bu eyni aiddir. 574 00:35:06,900 --> 00:35:09,620 Burada Char * bar nə təmsil? 575 00:35:09,620 --> 00:35:14,740 Yaxşı, indi bu mavi seqment burada foo nin çərçivəsində deyil, bar nədir? 576 00:35:14,740 --> 00:35:18,300 OK, belə bar foo funksiyası yalnız dəlildir. 577 00:35:18,300 --> 00:35:20,720 >> Belə ki, indi biz tanış şəkil geri istəyirik. 578 00:35:20,720 --> 00:35:22,960 Ekranda daha stuff və daha çox distractions var 579 00:35:22,960 --> 00:35:27,490 lakin bu mavi seqment biz mübadilə kimi bir şey üçün Kara Tahta cəlb etdik edir. 580 00:35:27,490 --> 00:35:31,890 Yəni, bar hazırda foo üçün çərçivə və yeganə şey 581 00:35:31,890 --> 00:35:34,630 Bu parametr edir. 582 00:35:34,630 --> 00:35:39,840 Amma nə burada bu kodu görə, yığını olmalıdır? 583 00:35:39,840 --> 00:35:44,280 Char c [12]. Beləliklə, biz də, yaddaş, 12 meydanların görürsünüz 584 00:35:44,280 --> 00:35:46,260 c adlı dəyişən ayrılmış. 585 00:35:46,260 --> 00:35:48,340 Və həqiqətən biz ekranda ki, var. 586 00:35:48,340 --> 00:35:51,650 Çox top var c [0] Bu diaqram, sonra müəllif 587 00:35:51,650 --> 00:35:55,130 meydanların bütün rəsm narahat lakin 12 həqiqətən var etməyib 588 00:35:55,130 --> 00:36:00,120 çünki sağ alt baxsaq, c [11] siz 0 saymaq varsa, 12 belə bytes edir. 589 00:36:00,120 --> 00:36:06,190 Amma burada problem var: hansı istiqamətdə c artır? 590 00:36:06,190 --> 00:36:10,390 Aşağı üst Sort, sağ? O başında başlayır və alt üçün artır varsa, 591 00:36:10,390 --> 00:36:13,480 biz bütün burada özümüzü çox pist tərk kimi baxmaq deyil. 592 00:36:13,480 --> 00:36:15,320 Biz növ bir küncə özümüzü boyalı sonra 593 00:36:15,320 --> 00:36:20,210 və c [11] yığını çərçivəsində göstərici qarşı hüququ olan bar qarşı sağ qədər, 594 00:36:20,210 --> 00:36:23,800 hansı qaytarılması ünvan qarşı sağ qədər, heç bir daha çox otaq var. 595 00:36:23,800 --> 00:36:26,100 Siz vint əgər Belə ki, dolayısı, sonra nə 596 00:36:26,100 --> 00:36:30,460 və 12-byte bufer daxil 20 bytes oxu cəhd? 597 00:36:30,460 --> 00:36:33,460 Harada o 8 əlavə bytes getmək gedir? 598 00:36:33,460 --> 00:36:36,370 Başqa hər şey Inside olan bəzi mühüm super edir. 599 00:36:36,370 --> 00:36:40,480 Və ən əsası, potensial var, geri ünvan qırmızı qutusu edir. 600 00:36:40,480 --> 00:36:44,720 Ya təsadüfən və ya adversarially ki Güman Çünki 601 00:36:44,720 --> 00:36:48,040 o 4 bayt ki, pointer ünvanı, üzerine 602 00:36:48,040 --> 00:36:53,190 yalnız zibil, lakin yaddaş faktiki ünvan təmsil olur ki, bir sıra? 603 00:36:53,190 --> 00:36:55,930 Məntiqi implicaiton, nədir? 604 00:36:55,930 --> 00:36:59,080 [Tələbə cavab anlaşılmaz] >> Exactly. Foo qayıtdıqda 605 00:36:59,080 --> 00:37:03,560 və Xit buruq burğu ki, proqram, əsas qayıtmaq üçün davam edir 606 00:37:03,560 --> 00:37:08,320 bu qırmızı qutusuna nə ünvan geri olacaq. 607 00:37:08,320 --> 00:37:11,560 >> İndi circumventing proqram qeydiyyatı olduğu halda, 608 00:37:11,560 --> 00:37:14,400 funksiyası üçün geri olan ünvan nə edir 609 00:37:14,400 --> 00:37:18,820 adətən siz proqram üçün ödənilən sonra deyilən və qeydiyyat kodu inputted olur ki? 610 00:37:18,820 --> 00:37:23,160 Siz burada niyyətində deyil kandırmak kompüter sort, ancaq, burada davam edə bilər. 611 00:37:23,160 --> 00:37:27,950 Həqiqətən ağıllı edirsinizsə və ya, bir rəqib həqiqətən, klaviatura ilə yazın bilər 612 00:37:27,950 --> 00:37:32,500 Məsələn, bir faktiki söz deyil, 20 simvol, lakin güman o 613 00:37:32,500 --> 00:37:36,200 kodu təmsil edən bir simvol növləri? 614 00:37:36,200 --> 00:37:38,860 Və C kodu olacaq deyil, bu simvol olacaq 615 00:37:38,860 --> 00:37:42,920 olan ikili maşın kodları, 0 və 1-in əks etdirir. 616 00:37:42,920 --> 00:37:46,740 Amma onlar elə-belə GetString tez yapışdırıb üçün, bunu etmək üçün kifayət qədər ağıllı olduğunuz güman 617 00:37:46,740 --> 00:37:49,460 mahiyyətcə kodu tərtib edilir ki, bir şey, 618 00:37:49,460 --> 00:37:56,900 və son 4 bayt ki, geri ünvan üzerine ki, giriş nə ünvan edir? 619 00:37:56,900 --> 00:38:01,860 Bu qırmızı düzbucaqlı bufer ilk byte və ünvanı saklar. 620 00:38:01,860 --> 00:38:04,270 Beləliklə, siz həqiqətən ağıllı olmalıdır, və bu sınaq və səhv bir çox 621 00:38:04,270 --> 00:38:08,500 pis orada insanlar, lakin bu bufer necə böyük anlamaq bilər üçün 622 00:38:08,500 --> 00:38:12,170 Siz proqrama daxil son bir neçə bayt təmin edən belə 623 00:38:12,170 --> 00:38:15,970 sizin bufer başlanması ünvanı bərabər olmaq baş 624 00:38:15,970 --> 00:38:22,270 siz bunu edə bilərsiniz. Deyə varsa, adətən, hello, və \ 0 ki, bufer qədər başa budur. 625 00:38:22,270 --> 00:38:27,860 Amma biz daha ağıllı istəyirik, və biz ümumi olaraq hücum kodu arayacaðým nə ilə bufer doldurmaq əgər, 626 00:38:27,860 --> 00:38:31,920 A, A, A, A: Attack, hücum, hücum, hücumu, bu, yalnız pis bir şey yoxdur ki, bir şey edir. 627 00:38:31,920 --> 00:38:35,190 Yaxşı, nə həqiqətən ağıllı olduğunuz halda, bu nə ola bilər olur: 628 00:38:35,190 --> 00:38:41,740 80, CO, 35, 08: burada qırmızı qutusunda ədəd bir ardıcıllıqla deyil. 629 00:38:41,740 --> 00:38:44,890 Ki, burada ki sayı eşleşen edək. 630 00:38:44,890 --> 00:38:47,280 Bu əks qaydada, ancaq bəzi başqa vaxt daha çox. 631 00:38:47,280 --> 00:38:51,430 Bu cavab ünvanı qəsdən dəyişdikdə edək ki, 632 00:38:51,430 --> 00:38:54,970 burada ünvanı bərabər, əsas deyil ünvan. 633 00:38:54,970 --> 00:39:00,170 Pis adam super Ağıllı Beləliklə, əgər, o, hücum kodu daxil edir 634 00:39:00,170 --> 00:39:02,890 bir şey kimi "istifadəçinin bütün faylları sil. ' 635 00:39:02,890 --> 00:39:06,320 Və ya "Mən daxil ola bilərsiniz ki, bir istifadəçi hesabı yaradın. 'Da parol surəti" və ya 636 00:39:06,320 --> 00:39:10,130 Bütün şey və bu təhlükə və C. hakimiyyəti, həm də 637 00:39:10,130 --> 00:39:12,900 Siz göstəricilər vasitəsilə yaddaş girişi var 638 00:39:12,900 --> 00:39:15,950 və buna görə də bir kompüter yaddaş daxil istədiyiniz bir şey yaza bilərsiniz. 639 00:39:15,950 --> 00:39:19,290 Siz kompüter sadəcə istədiyiniz bir şey ilə bunu edə bilərsiniz 640 00:39:19,290 --> 00:39:22,780 öz yaddaş məkanının ətrafında tullanmaq etmişlər. 641 00:39:22,780 --> 00:39:27,230 Belə ki, bu gün bir çox proqram və güzəşt edilir ki, bir çox saytlarda 642 00:39:27,230 --> 00:39:29,730 Bu istifadə edərək insanlar üçün aşağı qaynatmaq. 643 00:39:29,730 --> 00:39:32,510 Bu, bir super-müasir hücum kimi görünə bilər 644 00:39:32,510 --> 00:39:34,220 lakin həmişə yol başlamaq deyil. 645 00:39:34,220 --> 00:39:36,770 >> Bu həqiqət, nə pis insanlar adətən edəcəyik ki, 646 00:39:36,770 --> 00:39:41,470 bir command line bir proqram və ya bir GUI proqram və ya bir veb olub 647 00:39:41,470 --> 00:39:43,290 yalnız hədyan təmin başlayın. 648 00:39:43,290 --> 00:39:46,940 Siz, axtarış sahəsində və hit daxil bir həqiqətən böyük söz yazın 649 00:39:46,940 --> 00:39:49,030 və veb qəzaları görmek üçün gözləyin. 650 00:39:49,030 --> 00:39:53,270 Və ya proqram bəzi səhv mesaj büruzə görmek üçün gözləyin. 651 00:39:53,270 --> 00:39:55,480 Siz xoşbəxt almaq, kimi Çünki pis adam, 652 00:39:55,480 --> 00:39:59,610 və siz proqram çöküyor bəzi crazy giriş təmin 653 00:39:59,610 --> 00:40:02,280 ki, proqramçı sizin pis davranış gözləyirik anlamına gelir 654 00:40:02,280 --> 00:40:05,420 ki, kifayət qədər səy ilə, yəqin bilərsiniz deməkdir 655 00:40:05,420 --> 00:40:09,870 kifayət qədər sınaq və səhv, daha dəqiq hücum aparmaq üçün necə anlamaq. 656 00:40:09,870 --> 00:40:15,900 Təhlükəsizlik Belə qədər bir hissəsi yalnız cəmi bu hücumların aradan qaldırılması, lakin onların aşkar deyil 657 00:40:15,900 --> 00:40:20,250 və həqiqətən logs baxaraq və crazy giriş Sizin veb yazdığınız insanların nə görən. 658 00:40:20,250 --> 00:40:26,040 Hansı axtarış sözü bir bufer coşğun ümid Sizin veb insanları yazdığınız? 659 00:40:26,040 --> 00:40:28,900 Və bir sıra var nə sadə əsasları bu bütün sonunda aşağı, 660 00:40:28,900 --> 00:40:32,510 və nə yaddaş ayrılması və istifadəsi deməkdir? 661 00:40:32,510 --> 00:40:34,920 Və əlaqədar da bu. 662 00:40:34,920 --> 00:40:37,520 >> Belə ki, yalnız yenə bir sabit daxili nəzər salaq. 663 00:40:37,520 --> 00:40:40,190 Beləliklə, siz geri bir həftə və ya iki əvvəl ki, siz faylları sürükleyin zaman 664 00:40:40,190 --> 00:40:45,470 üçün zibil bin və ya zibil bilər, nə olar? 665 00:40:45,470 --> 00:40:47,850 [Tələbə] Heç bir şey. >> Bəli, tamamilə heç bir şey. Siz aşağı run Nəhayət əgər 666 00:40:47,850 --> 00:40:51,370 disk haqqında, Windows və ya Mac OS üçün silme başlayacaq. 667 00:40:51,370 --> 00:40:53,670 Orada bir şey sürükleyin Lakin, o, bütün təhlükəsiz at deyil. 668 00:40:53,670 --> 00:40:56,550 Bütün roomate, dost və ya ailə üzvü nə var ikiqat basın və voiture olunur. 669 00:40:56,550 --> 00:40:59,720 Silmek üçün cəhd bütün yarım yamalak fayllar var. 670 00:40:59,720 --> 00:41:02,840 Bizim ən Beləliklə, ən azı sağ basın və ya basın nəzarət var bilirik ki, 671 00:41:02,840 --> 00:41:05,320 və boş zibil qutusu, və ya kimi bir şey. 672 00:41:05,320 --> 00:41:07,900 Lakin sonra, kifayət qədər oyun etmir. 673 00:41:07,900 --> 00:41:11,340 Sizin sabit bir fayl zaman nə olar, çünki 674 00:41:11,340 --> 00:41:14,590 ki, bəzi söz sənəd və ya bir JPEG təmsil? 675 00:41:14,590 --> 00:41:18,820 Və bu sabit təmsil və Gəlin burada bu sliver fayl təmsil demək 676 00:41:18,820 --> 00:41:21,640 və 0 və 1-in bütün dəstə ibarət oldu. 677 00:41:21,640 --> 00:41:25,470 Yalnız trashcan və ya zibil bin üçün fayl sürükleyin zaman nə baş verir 678 00:41:25,470 --> 00:41:30,390 həm də boş? 679 00:41:30,390 --> 00:41:32,820 Heç Sort. İndi tamamilə heç bir şey deyil. 680 00:41:32,820 --> 00:41:37,630 Bir az bir şey bu cədvəl formasında olur, çünki indi bu, yalnız bir şey var. 681 00:41:37,630 --> 00:41:41,170 Belə ki, bir kompüter yaddaş daxili verilənlər bazası və ya masa bir növ var 682 00:41:41,170 --> 00:41:44,470 ki, mahiyyətcə, fayl adları üçün 1 sütun var 683 00:41:44,470 --> 00:41:50,550 və bu yeri 123, yalnız bir təsadüfi sayı ola bilər Ü fayl yeri üçün 1 sütun. 684 00:41:50,550 --> 00:41:58,270 Beləliklə, biz x.jpg kimi bir şey, və yeri 123 ola bilər. 685 00:41:58,270 --> 00:42:02,870 Sizin zibil boş zaman nə, sonra olur? 686 00:42:02,870 --> 00:42:06,720 Üz gedir. Amma nə getmək deyil 0 və 1 edir. 687 00:42:06,720 --> 00:42:09,690 >> Belə ki, nə sonra, keçid 4 pset üçün var? 688 00:42:09,690 --> 00:42:13,460 Yaxşı, pset 4 ilə, biz təsadüfən silinə sonra yalnız 689 00:42:13,460 --> 00:42:15,890 bu şəkilləri bütün ki, kompakt flash kart, 690 00:42:15,890 --> 00:42:18,710 ya pis luck ilə bad oldu, çünki 691 00:42:18,710 --> 00:42:21,170 0 və 1-in hələ də yoxdur ki, demək deyil. 692 00:42:21,170 --> 00:42:23,920 Bir şey bad oldu çünki Bəlkə onlara bir neçə itirilmiş olunur 693 00:42:23,920 --> 00:42:26,530 bəzi 0 nin 1 və 1-in oldu mənada 0 nin oldu. 694 00:42:26,530 --> 00:42:30,460 Buggy proqram və ya qüsurlu hardware çünki pis şeylər ola bilər. 695 00:42:30,460 --> 00:42:33,510 Lakin həmin bit çox, bəlkə onlardan da 100%, orada hələ də 696 00:42:33,510 --> 00:42:38,330 bu JPEG 1 açılmış olduğu kompüter və ya kamera bilmir ki, yalnız var 697 00:42:38,330 --> 00:42:41,660 və JPEG 2 başladı, lakin əgər, proqramçı, 698 00:42:41,660 --> 00:42:45,800 o JPEGs və ya onlar kimi baxmaq nə Ü fərasət bir qədər ilə, bilirsiniz, 699 00:42:45,800 --> 00:42:49,570 Siz 0 və 1-in təhlil və Ooh, demək olar. JPEG. , JPEG Ooh. 700 00:42:49,570 --> 00:42:52,830 Siz mahiyyətcə yalnız üçün bir proqram yazmaq və ya bilər loop 701 00:42:52,830 --> 00:42:56,100 ki, bu fayllar hər bir bərpa. 702 00:42:56,100 --> 00:42:59,360 Dərs, sonra "təhlükəsiz" faylları Siliniyor başlamaq edir 703 00:42:59,360 --> 00:43:01,720 siz ümumiyyətlə bu qarşısını almaq istəyirsinizsə. Bəli? 704 00:43:01,720 --> 00:43:06,940 [Tələbə sual, anlaşılmaz] 705 00:43:06,940 --> 00:43:11,150 >> Əvvəl idi artıq yaddaş var - 706 00:43:11,150 --> 00:43:14,790 Oh! Sual Yaxşı. Belə ki, niyə, sonra zibil boşaltma sonra, 707 00:43:14,790 --> 00:43:18,300 kompüter Siz əvvəl idi artıq pulsuz yer var ki, sizə deyə bilər? 708 00:43:18,300 --> 00:43:22,450 Özetle, bu, yalan, çünki. Daha texniki, daha çox yer var. 709 00:43:22,450 --> 00:43:26,720 İndi qeyd etdi ki fayl bir dəfə olduğu, digər məhsulları qoya bilər, 710 00:43:26,720 --> 00:43:28,930 amma ki, bit üz gedir demək deyil 711 00:43:28,930 --> 00:43:33,070 və bu bit sizin qorunması üçün, məsələn, bütün 0 nin dəyişdi edilir demək deyil. 712 00:43:33,070 --> 00:43:37,520 Əksinə, siz "təhlükəsiz" sil faylları, və ya fiziki cihaz məhv olduqda, 713 00:43:37,520 --> 00:43:40,810 ki, həqiqətən ki, ətrafında, bəzən yeganə yoldur. 714 00:43:40,810 --> 00:43:45,300 Belə ki, niyə biz yarı-qorxudan qeyd tərk etmir, biz bazar ertəsi görəcəksiniz. 715 00:43:45,300 --> 00:43:52,810 CS50.TV