[Powered by Google Translate] [Həftə 5] [David J. Malan - Harvard Universiteti] [Bu CS50 edir. - CS50.TV] Bu CS50, həftə 5. Bu gün və bu həftə biz Suclari dünya bir az tətbiq Problem kontekstində 4 seçin. Burada xüsusi bir hadisə sonra var, çünki bu gün qısaldılmış mühazirə olacaq. Beləliklə, biz bir peek almaq və tələbələr və eyni valideynləri bu gün də dolaşmaq lazımdır üfüqdə olan bəzi şeyləri ilə. Onların arasında Bazar ertəsi kimi, bir neçə sinif yoldaşları olacaq. edX, Harvard və OpenCourseWare və daha çox MİT yeni online təşəbbüsü Bazar ertəsi gəlmək deməkdir Bazar ertəsi, haqqında Harvard nin kampus edir siz, son sayı kimi, 86,000 əlavə sinif yoldaşları olacaq CS50 nin mühazirə və bölmələr ilə kim yanaşı aşağıdakı olunacaq və walkthroughs və problem dəsti. Bu hissəsi kimi, CS50 və indi CS50x və ilk sinfi üzvləri olacaq. Bu hissəsi kimi, indi həmçinin bəzi upsides olacaq bilirik. Tələbələrin kütləvi sayı, buna hazır olmaq üçün, Təkcə onu demək kifayətdir ki, biz 108 TFS və CA'lar olsa da, biz tələbələr 80,000 təşkil edib ki, bu da olduqca yaxşı tələbə-müəllim nisbəti deyil. Biz, əl qoyur bir çox problem sınıflandırma etmək fikrində deyilik belə problem set bu həftə təqdim CS50 Check olacaq Aracın ərzində bir komanda-line kommunal olacaq olan Bu həftə sonu sonra yeniləmək bir dəfə almaq lazımdır ki,. Siz, öz pset bir komanda, check50, run edə bilərsiniz və siz proqram doğru və ya yanlış olduğunu müəyyən etmək üçün ani rəy almaq lazımdır biz təmin etdik ki, müxtəlif dizayn spesifikasiyaları görə. Problem set dəqiqləşdirilməsi ki, daha çox. Bu CS50x sinif yoldaşları kimi bu istifadə olunacaq. Problem Set 4, bütün Suclari haqqında və bu pset həqiqətən bir real həyat stuff ilə ilham elə mən məktəbin məzunu olanda mən bir müddət interned Middlesex Şəhristanı nin rayon prokuroru ofisində məhkəmə işi ilə onların aparıcı məhkəmə müstəntiq ilə. Mən bir neçə həftə keçmiş qeyd edirəm kimi nə bu, edib Kütləvi Dövlət Polis və ya digər olacaq olunur onlar ağır sürücüler və CD və disketleri və bu kimi şeylər yuxulamaq ki, və sonra Suclari ofis məqsədi müəyyən oldu var idi və ya bir növ sübutu deyildir olub. Bu Xüsusi Təhqiqatlar vahidi idi, belə ki, ağ yaxasına cinayət idi. Bu cinayətlərin daha narahatedici sort, digital media bir növ cəlb bir şey idi. Bu bir çox insanlar deyərək bir e-poçt yazmaq deyil ki, "Mən etdim". Çıxır ki, Belə ki, tez-tez, bu məhkəmə axtarışlar, bütün çox meyvə qədər dönmədi amma bəzən insanlar bu cür e-poçt yazmaq olardı. Belə ki, bəzən səylərini təltif edilmişdir. Amma bu məhkəmə pset, biz pset4 qrafik bir qədər təqdim olacaq qədər səbəb. Siz yəqin ki, verilən bu şeylər almaq - JPEGs, gifs və kimi - bu gün. Amma həqiqətən bu barədə düşünüyorsanız, bir şəkil, çox Rob üzü kimi, nöqtələr və ya piksel sequence kimi modelləşdirilmişdir bilər. Rob üzünü halda, rəng bütün növ var və biz başqa piksel kimi tanınan fərdi nöqtələr görmək başladı bir dəfə biz da zoom başladı Amma biz dünyada bir qədər sadələşdirmək və yalnız burada qara və ağ Rob ki, əgər ağ-qara təmsil, yalnız ikili istifadə edə bilərsiniz. Və biz ikili istifadə etmək olacaq əgər, 1 və ya 0, biz bu eyni image ifadə edə bit bu model ilə Rob-nin smiling üz. 11000011 ağ, ağ, qara, qara, qara, qara, ağ ağ təmsil edir. Və belə, rəngli foto söhbət başlamaq üçün sonra böyük bir sıçrayış deyil siz Facebook və ya bir digital kamera ilə almaq istədiyiniz şeyi. Amma əlbəttə ki, bu rənglər gəldikdə, daha çox bit lazımdır. Və fotoşəkillər dünyada çox ümumi deyil, 1-bit rəng istifadə Bu təklif, lakin 24-bit rəng, həqiqətən milyon rəng almaq yerləşir. kimi Beləliklə, biz Rob göz üzrə zoomed zaman olduğu kimi, ki, müxtəlif rəngli imkanları milyonlarla hər hansı bir sayı oldu. Belə ki, Problem Set 4 habelə gözden geçirmek bu tətbiq edəcəyik çünki burada cümə mühazirə adi 2:30 əvəzinə 3:30 gün olacaq. Lakin video adi sabah kimi online olacaq. Biz də başqa bir fayl formatında sizə təqdim edəcəyik. Bu qəsdən, ilk qorxuducu baxmaq üçün nəzərdə tutulur amma bu C struct üçün bəzi sənədlərin edir. Microsoft il əvvəl bu formatda yayılmasına kömək çıxır ki, bu bitmap fayl biçimi, bmp, və bu super sadə, rəngarəng qrafik formatında idi çağırıb ki, masa üstü haqqında divar kağızları üçün bəzən hələ çox vaxt üçün istifadə edilmişdir. Windows XP və yuvarlanan təpələri və mavi göyə geri düşünüyorsanız, ki, adətən bmp və ya bitmap image idi. Onlar bir az daha mürəkkəbliyi, çünki bitmaps bizim üçün fun olunur. Bu olduqca 0s və 1s Bu grid kimi sadə deyil. Bunun yerine, bir fayl əvvəlində bir mövzu kimi şeylər var. Belə ki, içərisində. Bmp faylı başqa sözlə, bu 0s və 1s bütün dəstə edir lakin bəzi əlavə 0s və 1s var. Və bu il üçün verilən nə biz yəqin ki, qəbul etdiyiniz çıxır - . doc və ya. xls və ya. mp3, kimi fayl formatları. mp4, nə fayl formatları sizinlə tanış olduğunu - nə, hətta bir fayl format olmaq deməkdir Günün sonunda bu faylları bütün biz yalnız 0s və 1s var istifadə çünki. Və bəlkə o 0s və 1s ASCII vasitəsilə ABC və ya kimi təmsil lakin gün sonunda, o, hələ yalnız 0s və 1s var. Belə ki, insanlar yalnız hərdənbir yeni bir fayl format icad qərar onlar bit nümunələri həqiqətən demək olacaq nə standartlaşdırmaq yerləşir. Burada bu halda, insanlar bu bitmap fayl biçimi nəzərdə edən bir bitmap fayl ilk byte ilə, kimi ofset 0 qeydi ki, bəzi cryptically adına dəyişən adlı bfType olması orada gedir yalnız bitmap fayl növü üçün dayanır ki, nə bitmap fayl növü bu. Siz 2 ofset ki, ikinci sırada, byte sayı 2, bəlkə nəticə çıxarmaq olar nə təmsil 0s və 1s bir model var? Bir şey ölçüsü. Və oradan gedir. Belə ki, Problem Set 4, bu bəzi şeyləri vasitəsilə getdi olacaq. Biz onların bütün haqqında qayğı son deyil. Amma byte 54 ətrafında maraqlı almaq başlayır Qeyd: rgbtBlue, Yaşıl, və Red. Əgər eşitdim Əgər kısaltma RGB - qırmızı, yaşıl, mavi - Bu ki, bir istinad edir o çıxır çünki Rainbow bütün rəngləri boya bilər qırmızı və mavi və yaşıl bəzi birləşməsi ilə. Və əslində, oda valideynlərin ən proyektorlar bəzi xatırlayıram bilər. Bu gün, yalnız bir parlaq işıq bir lens çıxan bax lakin geri gün siz, qırmızı lens, mavi lens, yaşıl lens idi və birlikdə onlar ekran yönəlmiş və rəngarəng şəkil formalaşmışdır. Və tez-tez, orta məktəblərdə və ali məktəblərdə bu linzalar var ki, heç belə az əyri, belə ki, ikiqat və ya üçqat images görən cür idi. Amma bu fikir idi. Siz bir şəkil rəsm qırmızı və yaşıl və mavi işıq idi. Və eyni prinsip kompüter istifadə olunur. Belə ki, Problem sizin üçün sonra çətinliklər arasında Set 4 bir neçə şey olacaq. Bir həqiqətən bir şəkil ölçüsünü etmək, 0s və 1s bir model etmək, , 0s və 1s chunks bir strukturunda nə kimi təmsil anlamaq da Reds, blues, göyərti - və sonra piksel kopya necə anlamaq - içərisində belə bir şəkil əvvəlcə bu kimi görünür zaman, ki, sonra əvəzinə bu kimi baxmaq bilər. Digər problemlər arasında çox bir məhkəmə image təhvil lazımdır ki, olacaq bir digital kamera faktiki fayl. Və kamera, bir müddət sonra, photos, bir dəstə idi. Problemi biz təsadüfən silinə və ya image birtəhər bad idi olunur. Pis şeylər digital kameralar ilə baş verir. Və biz tez, sizin üçün ki, kart 0s və 1s off bütün sitemizi 4 göstərilməyib böyük bir fayl onları xilas, sonra biz Problem siz onlara təslim olacaq siz ideal, bu JPEGs bütün bərpa etmək ilə C bir proqram yazmaq olar ki. Və onlar bir kompleks formatında qədər olmalarına baxmayaraq ki, JPEGs çıxır - onlar daha mürəkkəb burada bu smiling üz çox istəyirik - hər JPEG 0s və 1s eyni nümunələri ilə başlayan çıxır. Belə ki, istifadə edərək, nəhayət, loop və ya oxşar üçün bir müddət loop və ya, Əgər bu məhkəmə image bütün 0s və 1s üzərində təkrarlamaq bilər və problem set dəqiqləşdirilməsi müəyyən olan xüsusi model görmək hər zaman, siz çox yüksək ehtimalı ilə, JPEG başlanğıc burada bilərik. Və tezliklə eyni model bytes bəzi sıra tapmaq kimi və ya kilobayt megabayt və ya sonra, siz burada kəsb edə bilər, ikinci JPEG edir Foto Mən ilk sonra aldı. Mənə ilk fayl oxu dayandırmaq ki, bu yeni bir yazı başlamaq və pset4 üçün proqram çıxış kimi çox 50 kimi JPEGs olacaq. 50 JPEGs deyil varsa, siz bir loop bir az var. Siz JPEGs bir sonsuz sayda varsa, siz sonsuz loop var. Belə ki, olduqca ümumi bir hal olacaq. Belə ki üfüqdə nə var. Arxamızda 0 İlke, xoşbəxt də olan insanlar daim var ki, mənim e-poçt hər həyata neytral və viktorina ətrafında kədərli 0 dəfə növ. Və baş TF Zamyla, öz TF, mənə həyata çatmaq edin şeyi getdi necə müzakirə etmək istəyirsinizsə, siz bilirsiniz ki, CAS və ya bir. Belə ki, oda burada valideynlər impress üçün, CS50 kitabxana nədir? [Gülüş] Yaxşı iş. Bu CS50 kitabxana nədir? Bəli. >> [Tələbə] Bu kodu əvvəlcədən yazılı set var [işitilemez] OK, yaxşı. Biz heyət yazdı kodu əvvəlcədən yazılı dəsti var, biz sizə təqdim ki, bəzi ümumi işlevselliği təmin edir Mənə bir string almaq kimi mövzusu, mənə almaq bir int - burada listelenen funksiyaları bütün. Indi başlayaraq, biz, həqiqətən, bu təlim təkərlər çıxarmaq başlayın. Biz sizə bir string üz etmək başlamaq olacaq olan geri nə faktiki data növü üçün yalnız bir sinonimi idi? >> [Neçə tələbə] Char *. Char *. Valideynlər ki, yəqin ki, [edir whooshing səs] idi. Bu yaxşı. Char * biz bizim lüğət olan string aradan qaldırılması kimi çox ekranda görmək başlamaq lazımdır həqiqətən kodu yazılı gəldiyi azı zaman. Eynilə, biz bu funksiyaların bir çox kimi istifadə dayandırmaq lazımdır proqramlar daha mürəkkəb almaq üçün gedir çünki. Daha çox yalnız tez yanıb-sönən ilə oturmaq proqramlar yazmaq bir şey yazın istifadəçi gözləyir, siz başqa yerdə sizin giriş almaq lazımdır. Məsələn, yerli sabit bit bir sıra onları almaq lazımdır. Siz əvəzinə, şəbəkə bağlantısı gələcəkdə onları almaq lazımdır haradasa bir haqqinda. Belə ki, ilk dəfə geri bu qat qabığı edək və CS50 Aracı qoparmaq siz # həftə o cümlədən etdiyiniz cs50.h adlanır və bu fayl, amma nin əslində bu daxilində nə görmək bildirin. Mavi faylı üst yalnız şərh bütöv bir dəstə edir: zəmanət informasiya və lisenziya. Bu proqram bir vahid paradiqma növ edir proqram bir çox bu gün açıq mənbə deyirlər nə, çünki olan kimsə kodu yazılı və sərbəst mövcud olmuşdur o deməkdir ki, yalnız run və istifadə üçün ancaq oxumaq və dəyişdirmək və öz iş inteqrasiya. Belə ki, bir çox kiçik formada olsa da, açıq proqram istifadə etdiyiniz budur. 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. Bu cs50.h fayl mövzu faylları bütün dəstə daxildir ki, burada üst bildiriş. Bu çox, biz əvvəl görmədim, amma bir tanış edir. Bu Hansı beləliklə qədər qısa olsa da, gördüm? >> [Tələbə] Standard kitabxana. Bəli, standart kitabxana. stdlib.h malloc var. Sonra biz, dinamik yaddaş ayrılması haqqında söhbət açılmış biz də gələn həftə qayıda bilərsiniz ki, fayl o cümlədən başladı. Bu bool və həqiqi və saxta həqiqətən C özlüyündə mövcud olmayan çıxır ki, Burada bu fayl daxil olmasın. Biz həftə stdbool.h o cümlədən edilmişdir Siz, bool doğru və ya yalan. anlayışı istifadə edə bilərsiniz, belə ki, Bu olmadan, siz saxta onun sort və bir int istifadə etmək olardı və yalnız özbaşına 0 yalan və 1 doğru olduğunu daşımır. Daha aşağı diyirləyin varsa, burada bir simli bizim müəyyən edilməsidir. Bu ulduz olduğu həqiqətən Fərq etməz ki, biz əvvəl deyib sonra kimi çıxır. Siz hətta bütün ətrafında yer ola bilər. Biz bu dövr aydın etmək üçün bu kimi təşviq edilmişdir ulduz, növü nə var ki, bir az daha çox olmadıqda isə, yalnız ümumi həyata orada qoymaq, lakin funksional eyni şey. Daha aşağı oxumaq Amma əgər İndi GetInt nəzər edək biz başqa bir şey Bu dövr əvvəl ki, bəlkə də ilk istifadə çünki. Burada GetInt edir. Bu nədir? >> [Tələbə] A prototip. >> Bu yalnız bir prototip deyil. Tez-tez biz bizim zirvələrində prototipləri qoyduq. C faylları, amma burada bu kimi mövzu faylları. h faylları ilə prototipləri bilər Belə ki, bəzi funksiyaları yazmaq zaman, digər insanlar istifadə etmək istəyirəm ki, olan, tam CS50 kitabxana olduğu siz cs50.c kimi bir şey sizin funksiyaları həyata deyil, yalnız Siz də ki, fayl üst lakin bir mövzu fayl üst prototipləri qoydu. Sonra ki, header fayl dostları və həmkarları daxildir nə saylı öz kodu daxildir. Bütün bu zaman Belə ki, bu prototipləri bütün o cümlədən olduğunuz effektiv fayl üst lakin bu yolu # mexanizmi daxildir Öz dilinə olan mahiyyətcə nüsxə və pastalar bu faylı. Burada bəzi ədalətli ətraflı sənədləşdirmə edir. GetInt bir int olur ki, verilmiş Biz olduqca çox qəbul etdik, bir künc halları var həyata lakin bu çevrilir. Nə quintillion, yol çox böyük ki, bir sıra istifadəçi əgər, ki, yalnız bir int daxilində uyğun deyil? Gözlənilən davranış nədir? Ideal, bu, əvvəlcədən var. Belə ki, bu halda, həqiqətən, gözəl çap oxumaq həqiqətən ki line oxumaq mümkün olmadıqda, bu gəlirlər INT_MAX görəcəksiniz. Biz bu barədə danışdı, lakin onun kapitallaşdırılması əsasında nə yəqin ki, heç etdik? [Tələbə] A daimi. >> Bu daimi deyil. Yəqin ki, bu mövzu faylları bir elan edir ki, bəzi xüsusi daimi var ki, fayl ildə ali ve INT_MAX təxminən 2 milyard kimi yəqin ki, bir şey biz elə bir şey demek lazımdır ki olan ideya, səhv getdi biz, bəli, bizim sərəncamında 4 milyard ədəd var: -2 milyard 2 milyard üzrə vermək və ya almaq. Yaxşı, nə proqramlaşdırma ümumi deyil, yalnız nömrələrdən birini oğurlamaq deyil bəlkə 0, bəlkə 2 milyard, bəlkə -2 milyard Siz dünyanın öhdəliyi ki, belə sizin mümkün dəyərlərindən birini sərf bir şey yanlış gedir ki, bu super böyük dəyər qayıdacaqlar. Amma istifadəçi 234 kimi sirli bir şey yazaraq istəmirəm ..., həqiqətən, böyük nömrəsi. Siz daimi olaraq yerine ümumiləşdirmək. Siz son bir neçə həftə anal olan halda ki, həqiqətən, heç bir zaman, GetInt adlı vəziyyəti INT_MAX istifadəçi növü əgər bir ilə yoxlanılması idi, və ya, daha dəqiq desək, bunu əgər, çünki GetInt qaytarılması INT_MAX etdi əslində onlar yazın anlamına gelir. Something bu halda yanlış getdi. Belə ki, bu ümumiyyətlə yalnız xüsusi deməkdir sentinel dəyər kimi tanınan nə edir. Edir. C fayl çevirmək indi edək. C fayl bir müddət cihaz mövcuddur. Və əslində, cihaz önceden tərtib biz obyekt kodu adlı şey daxil sizin üçün var sistem bilir, çünki olduğu, lakin bu yalnız sizin üçün fərqi yoxdur Bu halda harada: Aracın. Bütün bu vaxt GetInt və GetInt işləyir necə indi aşağı diyirləyin edək. Burada əvvəl oxşar şərh yoxdur. Mənə yalnız kodu hissəsi üzrə Yakınlaştırmak edək. Və nə biz GetInt üçün belədir. Bu, heç bir daxil edir. Bu, (əsl) isə, bir int qaytarır, biz qəsdən sonsuz loop var lakin güman ki, biz birtəhər bu çıxmaq və ya bu ərzində qayıtmaq lazımdır. Nin necə bu işləri görmək edək. Biz, loop daxilində bu ilk line 166 GetString istifadə görünür. Hansı şərtlər altında GetString qayıtmaq bilər, çünki bu artıq yaxşı təcrübə xüsusi söz NULL? >> [Tələbə] bir şey yanlış gedir edin. Bir şey yanlış gedir edin. Və GetString kimi bir zəng zaman yanlış getmək bilər nə? Bəli. >> [Tələbə] Malloc bu ints vermək bilmir. Bəli. Bəlkə malloc bilmir. Somewhere başlıq altında, GetString yaddaş ayırır olan malloc, zəng olan simvol bütün kompüter mağaza imkan verir ki, klaviatura daxil istifadəçi növləri. Və istifadəçi pulsuz zaman bütün çox idi və məsələn, daha çox çap güman kompüter daha çox simvol, daha 2 milyard simvol hətta RAM var. GetString sizə demek etmək üçün var. Bu super, super nadir künc halda, belə o, elə bu idarə etmək üçün var və biz geri getdi və sənədləri oxumaq, əgər GetString, əslində qaytarılması NULL də yoxdur. GetString NULL geri uğursuz Beləliklə, əgər GetInt INT_MAX qaytarılması ilə uğursuz gedir yalnız bir keşikçi kimi. Bu yalnız insan konvensiyalar var. Bu halda bilirik ki, yalnız yol sənədlərin oxu edir. Bu int həqiqətən əldə yerləşir aşağı hərəkət edək. Mən bir az daha aşağı diyirləyin varsa, line 170, biz bu xətlər yuxarıda Şərh yoxdur. Biz 172 sonra bir int, n və char, c, və bu yeni funksiyası, bəyan siz bəzi sscanf əvvəl boyunca stumbled var. Bu simli scanf qısaltmasıdır. Yəni, mənə bir string verir və mən faiz informasiya ədəd üçün tarar. Ki, nə deməkdir? Mən Enter sonra klaviatura da 123, sözün yazın və güman edirlər. GetString geri zaman 123-veri növü nədir? >> [Tələbə] Dize. Bu hüququ, açıq-aydın bir simli var? Mən bir simli var. Belə ki, 123, həqiqətən quote-dırnağı bağlamaq, bunun sonunda \ 0 ilə 123 edir. Bir int deyil. Yəni bir sıra deyil. Bu, bir sıra kimi görünür, ancaq faktiki olaraq deyil. Belə ki, nə GetInt nə var? 123 \ 0 - - və elə bir faktiki tam çevirmək Bu sağ ki, simli scan var. Siz bunu necə anlamaq bilər. Siz pset2 geri düşünüyorsanız, güman Caesar ilə bir az rahat əldə və ya Vigenere, belə bir simli üzərində təkrarlamaq bilərsiniz ints üçün chars çevirə bilərsiniz. Lakin heck, bu iş bütün çox var. Niyə ki, ki sscanf kimi bir funksiyası zəng deyil? Belə sscanf mübahisə gözləyir - bu halda xətti simli olan çağırıb. Daha sonra bu simli görmək üçün gözləmək, nə çox oxşar üçün printf, quotes daxil. Və nə mən burada dedi alıram mən decimal nömrəsi və bəlkə bir xarakter görmək üçün gözləmək deyil. Bu yalnız bir anda halda niyə və görəcəyik. Və bu notation indi məhsullarının xatırladan çıxır ki, söhbət açılmış yalnız bir həftə əvvəl artıq. Nədir və n və & c burada bizim üçün bunu? >> [Tələbə] n Ünvan və c ünvan. Bəli. Mənə c n və ünvanı ünvanı verilməsi oldu. Niyə vacibdir? Siz C funksiyaları ilə, siz həmişə bütün bir dəyəri və ya heç bir dəyəri ola bilər ki, bilirik. Siz int, bir simli, bir float, bir char, nə, və ya etibarsız ola bilər, ola bilər lakin yalnız maksimum bir şey ola bilər. Lakin burada biz sscanf bəlkə bir int, bir decimal sayı, mənə qayıtmaq istəyirəm və həmçinin char, və bir anda nə char izah edəcəyik. Siz səmərəli sscanf iki şeyi qayıtmaq istəyirəm, ancaq ki, C. yalnız mümkün deyil Siz iki URL keçən ki, ətrafında iş tez bir funksiyası iki URL əl kimi, çünki ki funksiyası onlara nə edə bilər? >> [Tələbə] həmin ünvanlara yazın. O URL yaza bilərsiniz. Siz star əməliyyat istifadə və bu URL-hər, orada bilərsiniz. Bu dəyişənlər dəyərlər dəyişdirmək üçün sort bu geri qapı mexanizminin lakin çox yaygın bu halda, iki - yalnız bir yer çoxdur. İndi == 1 yoxlanılması və o, əslində, doğru ilə qiymətləndirmək əgər n qaytarılması alıram bilərsiniz. Belə ki, nə olub? Texniki, biz, həqiqətən GetInt baş istəyirəm bütün bu. Quote-dırnağı bağlamaq 123 - Biz danışmaq, analiz etmək istəyirəm ki, biz string oxumaq istəyirəm - və biz sscanf izah ne var, bir sıra var kimi görünür, əgər Bu dəyişən n mənim üçün - 123 - ki sayı qoyulur. Belə ki, niyə mən, həqiqətən, bu həmçinin var idi? Burada bir xarakter ala bilər deyərək sscanf rolu nədir? [Işitilemez tələbə cavab] >> A kəsir həqiqətən iş bilər. Bir an düşündüm ki keçirəcək edək. Nə? [Tələbə] Bu NULL ola bilər. >> Yaxşı fikir. Bu null xarakterli ola bilər. Bu halda faktiki olaraq deyil. Bəli. >> [Tələbə] ASCII. ASCII. Və ya mənə daha da ümumiləşdirmək bildirin. Orada% c yalnız səhv yoxlanılması üçün. Biz sıra sonra bir xarakter olmalıdır istəmirəm lakin nə bu mənə imkan verir belədir. Bu sscanf, burada bu nümunə n və c dəyərləri saxlanılması ilə yanaşı, çıxır bunun da dəyişənlərin sayı qaytarır bilir nə daxil dəyərlər qoymaq Yalnız 123 yazın Belə ki, sonra yalnız% d, uyğun gedir və yalnız n, 123 kimi dəyəri ilə saxlanılan olur və heç bir şey c qoymaq olur. C belə danışmaq, bir zibil dəyər olaraq qalır - zibil çünki bəzi dəyəri üçün başlatılmış heç vaxt var. Mən bu göstəricilər 1 məskunlaşmış Çünki bu halda, sscanf 1 qaytarır Mən yaddaş pulsuz xətti azad belə böyük halda, mən int var ki GetString həqiqətən ayrılmış, sonra, n qayıtmaq ki, bəyanat gəlir Yeniden Dene yerləşir heç merak başqa, əgər burada gəlir. Belə ki, əgər, əksinə, mən 123foo yazın - mətn yalnız bir təsadüfi sequence - sscanf sayı, sayı,, f, görmək gedir və n-ci ildə 123 qoymaq olacaq ki, bu c f qoymaq və sonra 2 qayıtmaq olacaq. Beləliklə, biz yalnız sscanf davranışı, bir çox sadə şəkildə əsas anlayışı istifadə edərək, var - də, ilk baxışda ancaq gün olduqca sadə mexanizm sonunda kompleksi - deyərək bir int var və əgər, ki, mən tapdım ki, yalnız şey? Və burada ağ qəsdən edir. Siz sscanf üçün sənədlərin oxumaq varsa, bu ağ bir parça daxil əgər sizə deyir əvvəlində və ya sonunda, sscanf çox, hər hansı səbəbdən, istifadəçi imkan verir kosmik bar 123 hit və qanuni olacaq. Onlar yer bar hit yalnız çünki Siz istifadəçi fəğan deyil əvvəlində və ya sonunda, istifadəçi dostu bir az çoxdur. Sonra suallarınız GetInt haqqında? Bəli. >> [Tələbə] yalnız bir char qoymaq ne? Sual Yaxşı. Nə yalnız f kimi bir char ildə yazılmış və heç 123 yazaraq olmadan Enter əgər? Siz kodu bu xətti davranış sonra olacaq nə düşünürsünüz? [Işitilemez tələbə cavab] Bu halda, o, n və ya c doldurmaq niyyətində deyil, çünki Bəli, belə sscanf çox əhatə edə bilər. Bu halda olan mən də ssenari tutmaq alıram yerinə, 0 qayıtmaq olacaq istəyirəm gözlənilən dəyəri 1 çünki. Mən yalnız bir istəyirik və yalnız bir şey doldurulmalıdır. Sual Yaxşı. Digər? Bütün hüquqlar. Burada funksiyaları bütün vasitəsilə getmək edə edək, amma qalan faiz bəlkə də görünür ki, bir GetString edir bu GetLongLong, GetFloat, GetInt, GetDouble çıxır ki, çünki bütün ayaqla zərbə GetString onların funksionallığı bir çox. Belə nin burada həyata necə nəzər salaq. Bu bir az mürəkkəb görünür, ancaq eyni əsasları istifadə Biz keçən həftə söhbət başlamışdır. GetString, bu da qədər burada boşluğu kimi heç bir dəlil edir və mən yəqin bufer adlı simli bəyan edirəm, bir string qaytarır. Mən, həqiqətən, hələ istifadə etmək üçün nə bilmirəm, amma biz görəcəksiniz. Gücü default 0 kimi görünüyor. Tamamilə əmin bu n hələ istifadə etmək üçün gedir nə əmin deyil, gedir, amma indi bir az daha maraqlı əldə edir. Line 243, biz bir int, c bəyan edir. Bu axmaq ətraflı sortudur. A char 8 bit və 8 bit neçə müxtəlif dəyərlər saxlaya bilərsiniz? >> [Tələbə] 256. >> 256. Orada olan 256 müxtəlif ASCII simvol etmək istəyirsinizsə problem geri hesab - bu alarkən bir şey deyil. Ki, böyük ASCII chart geri edirəm Amma əgər biz həftə əvvəl idi, 128 və ya 256 ASCII simvol bu halda idi. Biz 0s və 1s qədər bütün nümunələri istifadə etmişdir. Əgər səhv aşkar etmək istəyirəm ki, əgər bir problem artıq Sandıqı üçün 256 dəyərlər kullanıyorsanız, çünki İndi deyərək heç bir yol var, çünki həqiqətən, davam plan etmədi Bu legit xarakterli deyil, bu bir səhv mesaj. Belə ki, nə dünyada nə onların növbəti böyük dəyəri, bir int kimi bir şey, istifadə siz 4 milyard mümkün dəyərləri, bit, 32-crazy var ki, sadəcə mahiyyətcə 257 onlardan istifadə son bilər ki, 1 olan bir səhv kimi bəzi xüsusi mənası var. Belə nin necə bu işlər görək. Line 246, mən, fgetc zəng ki, bu böyük isə loop var f mənası fayl, belə getc, sonra stdin. Bu yalnız klaviatura daxil oxumaq deyərək daha dəqiq şəkildə həyata çevirir. Standard giriş vasitəsilə klaviatura, standart çıxış, ekran deməkdir və biz pset4 görmək bilərsiniz standart səhv, ekran deməkdir lakin faktiki çıxışı ilə ekranın xüsusi bir hissəsi conflated deyil ki, sizə çap etmək üçün nəzərdə edir. Gələcəkdə o, lakin daha çox. Belə fgetc yalnız klaviatura bir xarakter oxumaq və harada saxlanılması deməkdir? C ildə Store. Və sonra yoxlamaq - mən yalnız burada Boolean conjunctions kullanıyorum - bərabər deyil əmin - \ n, belə ki, istifadəçi daxil təşkil edir, biz o nöqtədə dayandırmaq istəyirəm, loop sonuna - və biz də xüsusi daimi EOF kontrol istəyirsinizsə, Bildiyiniz və ya tapmaq, bu nə olan durmaq bilər? Fayl >> [tələbə] Axırıncı. Fayl >> Sona. Bu cür cəfəng çünki klaviatura da yazaraq alıram əgər, bu cəlb fayl, həqiqətən var lakin bu, yalnız demək üçün istifadə ümumi müddəti sort olunur başqa heç bir şey insan barmaqlarını gələn. EOF - fayl sonu. Əgər sizin klaviatura ilə nəzarət D hit olduğunuz halda bir kənara, siz hələ olardı ki, kimi - Siz Control C təşkil etdik - Control D EOF adlı bu xüsusi daimi göndərir. Belə ki, indi biz yalnız bəzi dinamik yaddaş ayrılması var. Beləliklə, əgər (n + 1> gücü). İndi n izah edəcəyik. N yalnız neçə bayt, bufer hazırda edilir hazırda istifadəçi yaradılmasına olduğunuz string. Siz bufer potensialın var artıq bufer daha çox simvol varsa, daxilən biz sonra nə etmək lazımdır daha gücü ayrılması olunur. Mən burada hesab bəzi artıq üzsüz və burada yalnız bu funksiya diqqət gedirəm. Siz malloc nə və ya ən azı ümumiyyətlə tanışdır. Realloc nə bir tahmin edin. >> [Tələbə] yaddaş edər. Bu olduqca yaddaş əlavə deyil. Bu aşağıdakı kimi yaddaş reallocates. Əgər yaddaş daha vermək simli sonunda otaq hələ varsa o ilk verir daha sonra əlavə yaddaş almaq lazımdır. Belə ki, yalnız geri geri geri geri string in simvol qoyulması saxlaya bilərsiniz. Iddia deyil, lakin çox uzun gözləyirdi, çünki və təsadüfi bir şey yaddaşında plopped oldu lakin əlavə yaddaş burada var ki, OK. Realloc, sizin üçün bütün ağır atletika etmək niyyətindədir , siz indiyədək buradan oxuya olduğunuz string hərəkət orada yazmaq, və sonra o nöqtədə bir daha pist verir. Belə ki, əl dalğası ilə, mənə nə GetString etdiyini deyim bir kiçik bufer, bəlkə bir xarakter ilə başlayan edir və iki simvol istifadəçi növləri, əgər GetString realloc zəng başa və deyir bir xarakter kifayət deyil, mənə iki simvol verir. Siz loop məntiqi oxuyun sonra, o demək olacaq 3 simvol Yığdığınız istifadəçi; indi deyil, 2 deyil, 4 simvol mənə vermək sonra mənə 16 və 32 vermək, sonra mənə 8 verir. Mən gücü hər zaman misli edirəm ki, bufer yavaş-yavaş inkişaf etmək niyyətində deyil o deməkdir ki, bu super sürətli inkişaf gedir. Və nə üstünlüyü ola bilər? Niyə bufer həcmi misli am istifadəçi yalnız klaviatura bir əlavə karakter oluna bilər baxmayaraq? [Işitilemez tələbə cavab] >> ki, nə var? >> [Tələbə] Siz tez-tez inkişaf yoxdur. Exactly. Siz tez-tez inkişaf yoxdur. Və bu yalnız növ, burada Oyna hedcinq edirik ideyası o yavaş çalışır, çünki siz realloc bir çox zəng etmək istəmirəm olan. Siz yaddaş üçün əməliyyat sistemi xahiş istənilən vaxt tezliklə gələcək problem müəyyən görəcəksiniz kimi, bəzi vaxt üçün çalışır. Beləliklə, siz yer israf edirik, hətta, vaxt ki məbləği minimuma endirilməsi, yaxşı bir şey olmağa çalışır. Amma biz burada GetString yekun hissəsinin oxumaq əgər - və burada hər bir xətt anlaşma bu gün vacib deyil - nəticədə yenə malloc çağırır görə bu simli üçün lazımdır və bir çox bytes kimi dəqiq ayırır və sonra azad çox böyük bufer zəng üz salır həqiqətən çox dəfə ikiqat oldu əgər. Belə ki, qısa ki, GetString bütün bu vaxt işləyir nasıl. Bütün bu təkrar-təkrar bir-bir xarakter oxumaq deyil və bəzi əlavə yaddaş lazımdır hər dəfə, o, bunun üçün əməliyyat sistemi soruşur realloc zəng. Hər hansı sual? Bütün hüquqlar. Bir hücum. İndi biz göstəricilərinə başa düşürəm ki, və ya ən azı göstəricilər ilə getdikcə tanış bütün dünya dağılmağa başlayır necə in nəzər salaq Əgər kifayət qədər çəkişmə istifadəçilər qarşı müdafiə yoxsa, sistemi daxil hack çalışan insanlar, bir qeydiyyat kodu circumventing ilə proqram oğurlamaq üçün çalışırıq insanlar onlar da yazın ola bilər ki, Alt əsas funksiyası var ki, yalnız C kodu olan, burada bu nümunə bir göz atın bir funksiya foo çağırır. Və nə foo keçən edir? [Tələbə] bir arqument. >> [Malan] bir arqument. Belə argv [1], hansı istifadəçi command line da yazdığınız ilk söz deməkdir a.out və ya hər hansı sonra proqram adlanır. Üst foo bir char * götürür belə. Amma char * yalnız nədir? >> [Tələbə] A string. [Malan] A simli, yeni bir şey burada var belə. Bu simli özbaşına bar deyilən olunur. Burada uyğun olaraq, char c [12]; yarı-texniki İngilis sort, bu xətt nə edir? Və [tələbə] Bir sıra - nin >> Array? >> [Tələbə] uchun. >> Uchun. Mənə 12 simvol bir sıra verin. Beləliklə, biz bu bufer zəng edə bilər. Bu texniki c adlanır, lakin proqramlaşdırma bufer yalnız kosmik bir dəstə deməkdir oldu bəzi məhsulları da bilər ki, Sonra nəhayət, memcpy biz əvvəl istifadə etdik, ancaq yəqin ki, nə tahmin edə bilərsiniz. Bu yaddaş nüsxə. O nə edir? Bu yəqin c içinə, onun giriş, bar nüsxə lakin yalnız bar uzunluğu. Amma burada bir səhv var. >> [Tələbə] Siz sizeof xarakter lazımdır. Okay. >> Texniki, biz, həqiqətən strlen etmək (bar) * sizeof (char)). Etməlidir Bu doğru deyil. Ancaq burada ən pis halda ki that's fərz edək - Okay. Sonra iki bugs var. Belə sizeof (char)); Bu bir az daha geniş edək. Belə ki, indi nə olan bir səhv, hələ də var? >> [Işitilemez tələbə cavab] Nə yoxlayın? >> [Tələbə] NULL yoxlayın. Pis şeylər Çünki ümumiyyətlə NULL kontrol olmalıdır siz, orada gedən son bilər, çünki sizin pointer NULL zaman və siz heç ulduz operator ilə dereferencing tərəfindən null gedən olmaz. Belə ki, yaxşı. Və biz nə edirik? Məntiqi bir qüsur da burada var. [Tələbə] argc> = 2 olduğunu yoxlayın. Argc> = 2 Belə yoxlayın. OK, bu proqram üç bugs burada var belə. Istifadəçi həqiqətən argv daxil şey yazdığınız əgər Biz kontrol edirik [1]. Yaxşı. Belə ki, üçüncü səhv var? Bəli. >> [Tələbə] C kifayət qədər böyük ola bilər. Yaxşı. Biz bir ssenari yoxlanılır. Biz dolayısı bar müddəti çox daha çox yaddaş surəti yoxdur yoxlanılır. Belə ki, simli əgər Yığdığınız istifadəçi 10 simvol uzun, bu yalnız 10 simvol surəti deyib. Və ki, OK. Lakin istifadəçi 20-karakter söz kimi tez bir söz nə tipli əgər? Bu nə daxil bar kopyalayın 20 simvol deyib? Başqa bizim bufer kimi tanınan C, siz yalnız data yazdı deməkdir öz olmayan 8 bayt yerlərdə, və siz onlara ayrılmış heç mənada ki, onlara sahib deyil. Belə ki, bu ümumiyyətlə bufer daşqın hücum və ya tampon dağıtmaq hücum kimi tanınan nə edir. Və bu mənada bir hücum var ki, əgər istifadəçi və ya funksiyası zəng olan proqram həqiqətən gələn nə olur, pis bu etdiyini həqiqətən olduqca pis ola bilər. Belə nin burada bu şəkil nəzər salaq. Bu şəkil yaddaş sizin yığını təmsil edir. Bir funksiyası zəng hər zaman yığını bu az çərçivəsində almaq Xatırladaq ki, və sonra başqa bir və sonra başqa və başqa. Və beləliklə, uzaq, biz yalnız növ var bu düzbucaqlı kimi Abstrak şurası və ya burada ekranda ya. Amma biz bir funksiyası foo zəng zaman o düzbucaqlı biri üzrə Yakınlaştırmak əgər, daha ki, düzbucaqlı ki çərçivə yığını daxilində olduğunu çıxır artıq biz mübadilə söhbət idi kimi yalnız x və y və bir və b. Bəzi aşağı səviyyədə ətraflı qayıt Ünvan onların arasında olduğunu çıxır. Əsas foo çağırır zaman Belə ki, çıxır, əsas foo məlumat var nə əsas ünvan kompüter yaddaşında edir başqa, çünki tezliklə foo kimi, burada bu işdə olduğu kimi, icra edilir bir dəfə, foo sonunda bu qapalı buruq brace çatmaq Proqramın nəzarət getmək nəzərdə yerləşir Ü necə heck foo bilir? Bu suala cavab burada bu qırmızı düzbucaqlı olduğunu çıxır. Bu göstərici təmsil və müvəqqəti saxlamaq üçün kompüter up qondarma yığın ki, belə tezliklə foo kimi əsas ünvan icra edilir kompüter yerləşir və geri əsas nə line bilir. Saxlanılan Frame pointer bu eyni aiddir. Burada Char * bar nə təmsil? İndi bu mavi seqment burada foo nin çərçivəsində edir. Bar nədir? Bar yalnız foo funksiyası dəlildir. Belə ki, indi biz tanış şəkil növ geri istəyirik. Ekranda daha stuff və daha çox distractions var lakin bu mavi seqment yalnız biz Kara Tahta cəlb olduğunuz nə svop kimi bir şey. Bu foo üçün çərçivə edir. Və bu yeganə şey indi bu göstərici olan bar edir. Amma nə burada bu kodu görə yığını olmalıdır? [Tələbə] char c [12]. >> [Malan] char c [12]. Biz, həmçinin, c adlı dəyişən ayrılmış yaddaş, 12 meydanların görürsünüz və həqiqətən biz ekranda ki, var. Çox top var c [0] Bu diaqram, sonra müəllif meydanların bütün rəsm narahat, lakin 12 həqiqətən var etməyib çünki sağ alt baxsaq, c [11] siz 0 saymaq əgər 12-ci belə byte edir. Amma burada problem var. C hansı istiqamətdə inkişaf edir? Sort o başında başlayır və alt artır əgər aşağı üst. Biz bütün burada özümüzü çox pist tərk kimi baxmaq deyil. Biz növ bir küncə özümüzü boyalı sonra və c [11] Saxlanılan Frame göstərici qarşı hüququ olan bar qarşı sağ qədər, olan qayıt Ünvan qarşı sağ qədər. Çox otaq var. Siz vint əgər Belə ki, dolayısı sonra nə və 12-byte bufer daxil 20 bytes oxu cəhd? Harada o 8 əlavə bytes getmək gedir? >> [Tələbə] Inside - Başqa hər şey Inside olan bəzi mühüm super edir. Və ən əsası, potensial, orada qayıt Ünvan qırmızı qutusunda çünki, ya təsadüfən və ya adversarially o 4 bayt üzerine güman zibil, lakin bir sıra yalnız o pointer ünvanı, ki, yaddaş faktiki ünvan təmsil olur. Məntiqi dolayısı, nədir? >> [Tələbə] Function fərqli bir yerdə geri gedir. Exactly. Foo yekunları və Xit buruq burğu ki, proqram davam edir zaman əsas qayıtmaq üçün deyil, bu qırmızı qutusuna nə ünvan geri olacaq. Circumventing proqram qeydiyyat halda, üçün geri olan ünvan normal adlı olur ki, funksiyası nə əgər Əgər proqram üçün ödənilmiş və qeydiyyat kodu inputted? sonra Siz burada niyyətində deyil kandırmak kompüter düzmək əvəzinə burada qədər davam edə bilər. Həqiqətən ağıllı olduğunuz halda və ya bir rəqib həqiqətən, məsələn, klaviatura ilə yazın bilər bir real söz deyil, 20 simvol, lakin o, həqiqətən növ güman kodu təmsil edən bir simvol. Və C kodu olacaq deyil, faktiki simvol olacaq ki 0s və 1s ikili maşın kodu təmsil edir. Lakin, onlar bunu etmək üçün kifayət qədər ağıllı olduğunuz güman elə mahiyyətcə tərtib kodu ki GetString tez bir yapışdırıb üçün, və son 4 bayt ki, geri ünvan üzerine. Və giriş nə ünvan edir? Bu, faktiki olaraq bu qırmızı düzbucaqlı bufer ilk byte və ünvanı saklar. Belə ki, siz həqiqətən ağıllı olmalıdır, və bu orada pis insanlar üçün sınaq və səhv bir çox ancaq bu bufer necə böyük anlamaq bilər giriş son bir neçə bayt proqram təmin edir ki, bu cür sizin bufer başlanması ünvana bərabər baş, siz bunu edə bilərsiniz. Biz adətən salam və \ 0 demək, bu bufer qədər başa budur. Amma biz daha ağıllı olduğunuz və biz ümumi olaraq hücum kodu arayacaðým nə ilə bufer doldurmaq əgər - AAA, hücum, hücum, hücumu - bu yalnız pis bir şey yoxdur ki, bir şey olduğu, həqiqətən ağıllı olduğunuz halda nə olur, siz bunu edə bilər. 80, C0, 35, 08 - burada qırmızı qutusunda ədəd bir ardıcıllıqla deyil. Ki, burada ki sayı eşleşen edək. Bu əks qaydada, ancaq bəzi başqa vaxt daha çox. Bu cavab ünvanı qəsdən dəyişdikdə edək ki, burada ünvanı bərabər, əsas deyil ünvan. Pis adam super Ağıllı Beləliklə, əgər, o, hücum kodu daxil edir istifadəçinin bütün faylları silin və ya parol surəti bir şey kimi və ya sonra daxil edə bilərsiniz ki, bir istifadəçi hesabı yaratmaq - bir bütün. Və bu təhlükə və C. hakimiyyəti, həm də Siz göstəricilər vasitəsilə yaddaş girişi var və buna görə də, bir kompüter yaddaş daxil istədiyiniz bir şey yaza bilərsiniz bir kompüter istədiyiniz bir şey edə sadəcə onu öz yaddaş məkanının ətrafında tullanmaq etmişlər. Və bu gün bir çox proqram və bir çox saytlarda güzəşt ki, Bu istifadə edərək insanlar üçün aşağı qaynatmaq. Bu super müasir hücum kimi görünə bilər, lakin həmişə yol başlamaq deyil. Bu həqiqət, nə pis insanlar adətən edəcəyik ki, bir command line bir proqram və ya bir GUI proqram və ya bir veb olub yalnız hədyan təmin başlamaq. Siz, axtarış sahəsində və hit daxil edin bir həqiqətən böyük söz yazın və veb çökerse görmək üçün gözləmək və ya proqram bəzi səhv mesaj büruzə əgər görmək üçün gözləmək siz pis oğlan kimi uğurlu olmaq və əgər bəzi crazy giriş təmin çünki proqramçı sizin pis davranış təxmin etməyib deməkdir ki, proqram, çöküyor ki, ki, siz kifayət qədər səy, kifayət qədər sınaq və səhv ilə yəqin edə bilərsiniz deməkdir daha dəqiq hücum aparmaq üçün necə anlamaq. Təhlükəsizlik Belə qədər bir hissəsi yalnız cəmi bu hücumların qarşısını deyil lakin onların aşkar və həqiqətən logs baxaraq və crazy giriş Sizin veb yazdığınız insanların nə görən, hansı axtarış sözü veb insanları yazdığınız bir bufer coşğun ümid. Və nə sadə əsasları bu bütün sonunda aşağı bir sıra var və nə yaddaş ayrılması və istifadə etmək deməkdir. Sonra da bu əlaqədar. Nin yalnız yenə bir sabit daxili nəzər salaq. Siz əvvəl bir həftə və ya iki Xatırladaq ki, sizin zibil qutusu və ya zibil bilər faylları sürükleyin zaman nə olar? >> [Tələbə] Heç bir şey. >> Absolutely heç bir şey, sağ? Siz disk space aşağı run Nəhayət əgər Windows və ya Mac OS üçün silme başlayacaq. Orada bir şey sürükleyin Amma əgər ki, bütün təhlükəsiz deyil. Bütün roommate və ya dost və ya ailə üzvü nə var ikiqat basın və voiture, edir Silmek üçün cəhd bütün yarım yamalak fayllar var. Bizim ən azı sağ basın və ya basın nəzarət var bilirik ki, və belə zibil və ya bir şey boş. Lakin sonra olduqca oyun etmir ki, sizin sabit bir fayl zaman nə olar, çünki ki, bir Word sənəd və ya bir JPEG təmsil və bu sabit təmsil və Gəlin burada bu sliver ki, fayl təmsil demək və 0s və 1s bütün dəstə ibarət oldu. Nə yalnız zibil ki, fayl sürükleyin zaman olur və ya bin yeniden bilər həm də boş? Heç Sort. İndi tamamilə heç bir şey deyil. Bir az bir şey bu cədvəl formasında olur, çünki İndi yalnız bir şey var. Belə ki, bir kompüter yaddaş daxili verilənlər bazası və ya masa bir növ var ki, mahiyyətcə, faylları üçün bir sütun adları və faylları üçün bir sütun "yeri var bu yeri 123, yalnız bir təsadüfi sayı ola bilər. Beləliklə, biz x.jpeg və yeri 123 kimi bir şey ola bilər. Siz həqiqətən, sizin zibil boşaltmaq ne sonra olur? Üz gedir. Amma nə getmək deyil 0s və 1s edir. Belə pset4 keçid sonra nə var? Yaxşı, pset4 ilə, yalnız biz təsadüfən kompakt flash kart silinə etdik çünki pis luck bu şəkilləri bütün və ya yalnız çünki ki bad oldu bu 0s və 1s hələ yoxdur demək deyil. Bir şey bad oldu çünki Bəlkə onlara bir neçə itirilmiş olunur bəzi 0s 1s oldu və 1s 0s oldu mənada. Buggy proqram və ya qüsurlu hardware çünki pis şeylər ola bilər. Lakin həmin bit çox, bəlkə onlardan da 100%, orada hələ də. Bu JPEG1 açılmış olduğu kompüter və ya kamera bilmir ki, yalnız var və harada JPEG2 başladı. Amma əgər, proqramçı, bu JPEGs olduğu fərasət bir qədər ilə bilmək və ya nə onlar kimi baxmaq belə 0s və 1s və demək JPEG, JPEG, analiz edə bilərsiniz Əgər mahiyyətcə yalnız üçün bir proqram yazmaq və ya bilər loop həmin faylların hər bir bərpa. Dərs sonra təhlükəsiz faylları Siliniyor başlamaq edir siz ümumiyyətlə bu qarşısını almaq istəyirsinizsə. Bəli. [Tələbə] necə gəlmək sizin kompüter deyir Siz əvvəl idi artıq yaddaş var ki? Əvvəl idi artıq yaddaş - >> [tələbə] Daha yaddaş. Oh. Sual Yaxşı. Belə ki, niyə sonra zibil boşaltma sonra kompüter demək deyil Siz əvvəl idi artıq pulsuz yer var ki? Özetle, bu, yalan, çünki. İndi deyib çünki daha texniki, daha çox yer var o fayl bir dəfə olduğu digər məhsulları qoya bilər. Amma ki, bit üz gedir demək deyil və bu bit, məsələn, bütün 0s dəyişib edilir demək deyil Sizin qorunması üçün. Belə ki, əksinə, siz təhlükəsiz faylları silmək və ya fiziki cihaz məhv olduqda, ki, həqiqətən ki, ətrafında bəzən yeganə yoldur. Belə ki, niyə biz yarı-qorxudan qeyd tərk etmir, biz bazar ertəsi görəcəksiniz. [Alqış] [CS50.TV]