[MUSIC ifa] DAVID J. MALAN: Bütün hüququ. Bu CS50 və bu Həftə 2 sonu. Belə ki, bu gün biz gedirik bizim göz davam biz şeyi təmsil necə Bu hood-- uzaqlaşdığını altında integers kimi nömrələrindən və üzən point dəyərləri və strings diqqət və nəticədə daha maraqlı proqramları. Amma biz də bir nəzər almaq lazımdır domain xüsusi problemlərin neçə ilk olacaq olan Kriptoqrafiya cəlb ola, məlumat Scrambling sənətidir, Siz burada bax Radio Yetim Annie nin bir şəkil yesteryear gizli decoder ring. Bu, həqiqətən, çox primitiv forması və cryptopgraphy uşaq dostu form Bu ring iki disks-- var qovuşdurmağımız bir daxili və bir kənarda. Və, o biri siz fırlanan mahiyyətcə A kimi məktublar sıraya hərfləri ilə Z Başqa sözlə A. vasitəsilə B kimi, sözün əlifba dönüşümlü bilər, bununla Xəritəçəkmə ilə gələn məktublar məktublar ki, əgər siz gizli bir mesaj göndərmək istədi Annie kimi kimsə üçün, yazmaq bilər sonra dönüşümlü və mesaj aşağı məktublar, vasitəsi, demək əgər əvəzinə demək ", A" demək "B" Siz demək "B" əvəzinə "C" demək - və ya bir şey bir az daha ağıllı that-- daha sonra nəhayət, belə uzun Annie bu decoder kimi ring, o mesaj deşifre bilər. İndi, əslində, geri ki, bu ola bilər bir çox məşhur film istifadə edilmişdir ki, zamanı elan nauseum oynayır Milad mövsümü. Burada bir nəzər salaq. Ralphie PARKER: "olun xülasə bütün məlum Ralph Parker qərara təyin edilir ki, Little Yetim Annie Secret üzvü Circle və bütün hüququna malikdir fərqlənmə və faydaları ona baş. " Ralphie PARKER (nəql): Little Yetim Annie imzalanıb. Müqabil, Pierre Andre! Mürəkkəblə. Fəxri və faydaları Artıq doqquz yaşında. [MUSIC ifa] [RADIO laqqırtı] Ralphie PARKER: Hadi. Agentliyi ilə əldə edək. Mən bütün caz ehtiyac yoxdur qaçaqmalçıları və quldurları haqqında. RADIO Aparıcı: sabah dinlə yekun macəra üçün gecə Qara Pirate Ship. İndi, bu dəfə Annie nin üçün Siz üzvləri üçün Secret Message Gizli Circle. Uşaq, yalnız üzvləri saxla Annie Secret Circle Annie gizli mesaj deşifre bilər. Unutmayın, Annie siz asılı olaraq. B-2 üçün sancaqlar seçin. İşdə mesajı 12, 11, 2-- Ralphie PARKER (nəql): Mən ilk gizli görüş edirəm. RADIO Aparıcı: --25, 14, 11, 18, 16 giriş Ralphie PARKER (nəql): Oh, Pierre böyük səs axşam idi. Hesab edirəm ki, bu axşam deyə bilər mesaj həqiqətən vacib idi. RADIO Aparıcı: --3, 25. Ki, Annie özü bir mesaj var. Hər kəs demək deyil unutmayın. [Qaranəfəs] Ralphie PARKER (nəql): Doxsan saniyə sonra, mən deyiləm Bu yalnız otaqda evdə doqquz bir oğlan gizlilik və decode oturmaq bilər. Ah. "B." [Chuckles] Ralphie PARKER (nəql): Mən növbəti getdi. "E." Ilk sözü "ola" dir. Bəli! İndi daha asan gəlirdi. "U." [Chuckles] RANDY PARKER: Aw, Ralphie gəlib. Mən getməliyəm! Ralphie PARKER: Mən, sağ aşağı Ma olacaq. Gee harika. "T." "O." "Əmin olun üçün. "Nə" üçün əmin olun "? Little Yetim Annie nə idi demək üçün çalışırıq? Nə "əmin olun"? ANASI: Ralphie, Randy getmək üçün var. Siz çıxmaq misiniz? Ralphie PARKER: Bütün sağ, ana! Mən doğru olacaq! Ralphie PARKER (nəql): Mən indi daha yaxın əldə edilmişdir. Gərginlik dəhşətli idi. Bu nə idi? Planetin taleyi balansında asmaq bilər. ANASI: Ralphie, Randy getmək üçün var! Ralphie PARKER: Mən sağ olacaq həyata, sesli ağlayan üçün! Ralphie PARKER (Nəql): Demək olar ki, var! Mənim barmaqları uçdu! Mənim mind bir polad tələ idi. Hər pore vibrasiyaya. Demək olar ki, aydın idi! Bəli! Bəli! Bəli! Bəli! Ralphie PARKER: "Əmin olun Sizin Ovaltine içmək. " Ovaltine? A crummy kommersiya? [MUSIC ifa] Ralphie PARKER: Köpək oğlu. [Laughing] DAVID J. MALAN: o deyil Belə ki, nə Kriptoqrafiya bir fikir Hələ a ola bilər yesteryear içmək. Belə ki, tez elan. Bu pulsuz, əgər Cümə 1:15 PM və ki CS50 üçün bizə qoşulmaq istəyirəm nahar, burada bu URL giderim. İlk adi kimi xidmət, gəlir. Lakin zaman keçdikcə, biz əmin etmək lazımdır iştirak etmək istədiyiniz ən hər kəs cədvəli-müdrik bilər. Belə ki strings. Biz Zamyla-- kimə var İndi çox güman ki, görüşüb etdik Problem Set 1-- kimin adı beləliklə yazıldığına. Və onun adı yazılmış ki, bir kompüter proqramı GetString kimi bir şey istifadə. Almaq üçün o tuş vuruşlarını, necə biz haqqında getmək yoxdur simli, bir söz, bir maddə, və ya bu burada kimi birdən çox məktublar? Biz son dəfə danışdı integers və problemlər ki, tam daşqın ilə yarana və üzən point dəyərləri və problemlər ki, dəqiqliklə ərzində yaranır. Strings ilə, biz ən azı bir az daha çox rahatlıq var strings-- çünki yalnız real vücuda da olduqca ixtiyari uzunluğu ola bilər. Olduqca qısa, olduqca uzun. Lakin hətta sonra, biz olacaq tapmaq kompüter bəzən bilər ki, yaddaş və hətta çalıştırmak böyük bir kifayət qədər simli saxlamaq. Amma indi üçün, görüntüləmək başlamaq edək bu qutuları bir şey kimi bir string burada. Belə ki, altı belə qutuları, hər biri bir simvol və ya təmsil "char." C-h-a-r-- - belə "char" Xatırladaq ki, C. daxili data növlərindən biridir Və nə gözəl istifadə edə bilərsiniz ki, ki, sort bir bina blok kimi, bir puzzle parça, Siz, bir yaratmaq üçün biz davam edəcəyik ki, məlumatların böyük növü a "simli." zəng etmək İndi nə düşünür haqqında faydalı bu şəkildə strings kimi şeylər haqqında? Bəli, biz bilər çıxır ki, əslində bu quruluşu leverage faktiki olaraq fərdi simvol daxil olmaq üçün olduqca sadə şəkildə. Mən irəli getmək və yaratmaq gedirəm adlı bir fayl "stringzero.c," Siz istədiyiniz hər hansı, lakin siz zəng edə bilərsiniz. Və kurs saytında edir əvvəlcədən bu nümunə, belə ki, ehtiyac yoxdur hər şeyi yazın. Mən irəli getmək üçün gedirəm və ilk int əsas etibarsız yoxdur. Və bir neçə gün ərzində, biz ayrı tease başlaya bilərsiniz bu səbəbdən nə boşluq, burada əsas yanında, və s int. Amma indi üçün, davam edək surəti yapışdırıb. Mən adlı simli bəyan gedirəm. Mən geri gedirəm Nə daxil istifadəçi növləri GetString. Bu sadə olacaq proqram, heç bir təlimat, Mən yalnız kor-koranə gedirəm istifadəçi bilir ki, gözləyirik nə sadə saxlamaq üçün nə etmək. Və indi mən loop üçün var gedirəm. Və mənim üçün loop daxilində Mən i sıfır olur int üçün gedir. Və i, yenə bir konvensiya hesablanması üçün bir index dəyişən, lakin mən istəyirəm nə zəng edə bilər. Mən də than-- az gedirəm ZAMYLA adı altı məktublar uzun. Mən çətin gedirəm İndi orada kodu ki,. Və sonra i ++. Və indi bu buruq daxilində aşırma Mən printf etmək gedirəm və mən bir çap etmək istəyirəm bir zamanda xarakter. Belə ki, mən% c istifadə gedirəm bəlkə də ilk dəfə. Və sonra mən hər çap etmək istəyirəm öz xətti xarakter. Mən bir qoymaq gedirəm az backslash n var. Yaxın quote. İndi burada bir şey etmək istəyirəm. Mən çap etmək istəyirəm simli xüsusi məktub, s, mən iterating alıram kimi altı qədər sıfır olan. Yəni, mən istəyirəm s i'th xarakter çap. İndi mən bunu necə edə bilərsiniz? Yaxşı çox qutuları kimi Burada bu nümayəndəliyi, cür, boks anlayışı qədər hoqqa çıxarmaq məktublar, siz eyni edə bilərsiniz syntactically sadəcə ifadə edərək, C, Mən xarakter i'th s nin çap etmək istəyirəm. Kvadrat mötərizə istifadə Klavyenizdeki haqqında ABŞ klaviatura var ki, ümumiyyətlə geri əsas yuxarıda. Belə ki, bu çox doğru deyil hələ, siz qeyd ola bilər kimi. Amma cür gedirəm kor-koranə burada irəliləmək. Mən string 0 etmək gedirəm. Mən bunu əvvəl Lakin, görək biz bəzi ümumi səhvlər tahmin bilməz. Bu tərtib gedir? Xeyr, Mən hər şeyi bütün dəstə itkin alıram. Kitabxanalar eşitdim. Belə ki, faylları header olan Mən burada əlavə edə bilərsiniz? Bəli. Auditoriya: Siz lazımdır standart I / O [Işitilemez] DAVID J. MALAN: Əla. Mən standart I / O lazımdır. Nə məqsəd Mən standart I / O istəyirsiniz? Printf üçün. Belə ki, stdio.h daxildir. Və siz də daxildir ki, təklif nə səbəbdən CS50 kitabxana? Strings var. Belə ki, biz görəcəksiniz CS50 kitabxana edir simli bu anlayışı yaratmaq. Amma indi üçün, yalnız hesab edə bilər bu faktiki data növü kimi. Belə ki, bir az təmizlənə görünür. İndi mən irəli getmək üçün gedirəm və həqiqətən string 0 edə bilərəm. Tərtib. Belə ki, yaxşı. Belə biz zoom olum ./string0 daha yaxından neler oldu. Daxil edin. Z-A-M-Y-L-A daxil edin. Və biz ZAMYLA adı çap etdik. Belə ki, olduqca yaxşı. Belə ki, indi-nin irəli getmək və yenə bu proqram run, və Daven tam adını yazın. Surprise, sürpriz. Daxil edin. Hmm. Biz Daven nin çap deyil Düzgün tam ilk ad. İndi bu aydın olmalıdır çünki nə history, sort, axmaq dizayn qərar? Bəli, mən ağır kodlu mənim loop üçün altı daxilində. İndi etdim ki, yalnız çünki Mən ZAMYLA adı bilirdim altı məktublar olacaq. Amma şübhəsiz ki, bu deyil ümumi həll. Belə çıxır ki, biz dinamik bilərsiniz bir simli uzunluğu anlamaq strlen adlı bir funksiyası zəng. Yenə qəsdən müfəssəl şəkildə yalnız adına yazın daha rahat etmək üçün. Amma ki, sinonimi var bir simli uzunluğu almaq. Mən terminal geri getmək üçün gedirəm pəncərə və compiler yenidən axır. Amma mənə böyle oldu. Dolayısı kitabxana funksiyası elan const-- int imzasız növü ilə strlen Mən batdım. Tamamilə. Belə ki, xüsusilə sizin gözləri üzərində şir başlamaq bu kimi səhv messages, diqqət vicdanla ilk bir neçə sözləri. Biz problem olduğunu bilirik line 8, burada göstərilən. Və string-0.c var. Dolayısı elan kitabxana funksiyası strlen. Belə ki, ümumiyyətlə gedir səhv bir model ola bilər. Dolayısı bir şey elan. Belə ki, qısa, I görünürdü nə var Burada, 8 xətt ilə bağlı görmüşük. Ola bilər nə həll hətta Özünüz strlen istifadə heç varsa? Auditoriya: müxtəlif kitabxana Part? DAVID J. MALAN: Part müxtəlif kitabxana. Elan, belə ki, belə danışmaq. Bəzi fayl qeyd olunur stdio.h və cs50.h. başqa İndi harada müəyyən olunur? Vicdanlı olmaq, ya yalnız var Başını üst off bu bilirik, və ya bu Google və tapmaq. Və ya bu bilirik, mən CS50 açmıştınız terminal proqram, Məişət olan yalnız böyük, tam ekran versiyası nə gedit pəncərə altındakı var. Və bu var çıxır ki, adlı eyni qısa command, Siz yazın əgər yerləşir dərslik, man və bir funksiyası adı, Enter Əgər kifayət qədər geri almaq lazımdır gizli sənədlər. Bu adətən yalnız mətn var bu kimi bir az bir şey görünür. Bu bir az böyük var ilk baxışda. Amma səmimi Mən gedirəm Gözümün üzərində şir imkan və yalnız bir hissəsi diqqət Mən bu an üçün qayğı. Olan bu deyil. Hansı struktur kimi görünür bir şey ilə tanış oldum. Həqiqətən man səhifə, belə ki, danışmaq, sizə xəbər verəcəkdir nə header bir funksiyası fayl kimi strlen müəyyən edilir. Mən gedit indi geri getmək üçün gedirəm. Mən irəli getmək üçün gedirəm və Burada # daxildir əlavə və fayl saxlamaq. Mən ekran təmizləmək üçün gedirəm Control L siz merak etdiyiniz halda. Mən etmək yenidən run gedirəm string.0, bu dəfə tərtib edir. ./string.0 Zamyla. Ki, mənə gedək iş idi irəli və Davenport ilə təkrar. Daxil edin. Və ki, bu da iş idi. Belə ki, biz, bu bir az daha yaxşı edə bilərsiniz baxmayaraq, biz səliqəli şeyi başlaya bilərsiniz yalnız bir az up. Mən, həqiqətən, gedirəm indi başqa bir şey təqdim edir. Mən irəli getmək üçün gedirəm və bir müxtəlif fayl bu edin. Mən zəng etmək üçün gedirəm Bu fayl string1.c yalnız kodu ilə ardıcıl olmaq Siz online tapmaq edə bilərsiniz. Və in diqqət edək eyni kodu. Mən var çıxır ki, götürülməsi olmuşdur cür verilən əslində mənim laptop ki, və öz növbəsində, CS50 cihaz yaddaş bir çox, bir çox var RAM, kosmik bayt bir çox olan I strings bilərsiniz. Amma reallıq Mən uzun yazdığınız əgər kifayət qədər və kifayət qədər tuş vuruşlarını, Mən nəzəriyyə növü bilər daha simvol mənim kompüter daha fiziki yaddaş var. Və bu problemlidir. Çox bir int yalnız kimi nəzəri, belə ki, yüksək saymaq, Siz yalnız çox simvol sığdırdı Sizin kompüter RAM və ya Random daxil Access Memory. Mən daha yaxşı təxmin etmişdi Bu problem, hətta Bu nadir ola bilər, baxmayaraq künc halda, belə danışmaq. Tez-tez baş vermir, ola bilər. Bu baş verərsə və əgər mən bunu tahmin və bunun üçün proqram, mənim proqram nə bilir edə bilər. , Hər hansı reboot, Freeze asmaq. Something baş verə bilər gözlənilir. Mən nə üçün gedirəm İndi, bundan sonra, həqiqətən, heç kor-koranə I əvvəl s kimi bir dəyişən istifadə qaytarılması dəyəri verildi GetString kimi bəzi digər funksiyası, Mən əmin etmək gedirəm ki, dəyəri etibarlıdır. Mən oxumaq sonra yalnız bilirik GetString CS50 sənədlər, son nəticədə biz qeyd edəcəyik, ki, GetString xüsusi simvolu qaytarır bütün NULL, N-U-L-L adlı bir şey yanlış gedir əgər, caps. Belə ki, adətən, bir simli qaytarır. Amma bu N-U-L-L-- qaytarır, əgər başqa biz nəhayət, həqiqətən, nə ki, görürsünüz yalnız vasitələri means-- pis bir şey baş verib. İndi bu qədər Not kimi, o deməkdir ki, I, C burada vəziyyəti kontrol edə bilərsiniz bərabər NULL deyil əgər. Siz əvvəl bu görmədim etdik əgər Belə ki, yalnız deməkdir bu bərabər deyil. Belə ki, qarşı deyil geri bərabər bərabər, tək fərqli tapşırıq olan bərabərdir. Bərabər deyil, əgər belə NULL, yalnız sonra nə Mən kodu bu xətlər icra etmək istəyirik. Belə ki, başqa sözlə, Mən kor-koranə dalış əvvəl və iterating başlamaq s-dən çox və müalicə Bu bir ardıcıllıqla deyil sanki simvol, mən ilk yoxlamaq üçün gedirəm bir dəqiqə gözləyin, mütləq deyil edir Bu xüsusi dəyərinə bərabərdir NULL? Əgər, pis şeylər ola bilər, çünki. Və indi ki, pis şeylər güman proqram qəzaları deməkdir baş, və siz mütləq bərpa edə bilməz. Belə ki, səmimi, bu uglier görünür. bu cür nəzər indi çaşdırıcı oldu. Amma bu daha çox olacaq uzun əvvəl tanış. Amma təklif gedirəm indi başqa bir təkmilləşdirilməsi. Ki, düzgün bir inkişaf var. Mənim proqram, çünki indi daha doğru nadir halda kifayət deyil yaddaş Mən onu idarə edəcək mövcuddur, Mən yalnız bir şey edəcəyik. Mən ən azı qəza deyil. Amma burada bir final versiyası nə edək. Və bir fayl string2.c çağırıb. Mən yapışdırıb gedirəm yalnız bir an üçün eyni kodu, Mən bu qeyd etmək gedirəm yalnız bir an üçün burada line 11,. İndi reallıq ki, ağıllı derleyiciler edir cingilti bizim üçün bu düzeltmek bilər kimi pərdə arxasında Bizim heç bilmədən. Amma bu barədə düşünək əsaslı bir problemli dizayn kimi. Kodu bu xətt, əlbəttə, deyərək, bəzi dəyişən i 0 başlamaq. Bu olduqca sadə var. Və yenə bu nə Şərhdə, burada, i bunu, ++? Biz əvvəl bunu gördük, amma biz etdik həqiqətən, bu barədə danışmaq vermədi. Auditoriya: i Incrementing. DAVID J. MALAN: Incrementing i. Vasitəsilə hər iteration haqqında belə bu loop hər dövrü, Siz bir i incrementing edirik. Belə ki, daha böyük və daha böyük olur, və Bu loop xitam qədər böyük. Necə ləğv edir? Yaxşı bu orta var biz əvvəl istifadə etdiyiniz vəziyyəti. Siz görüldü və sonra P dəsti walkthroughs. Amma bu söz nədir? Belə ki, aşağıdakı loop uzun i nə az kimi? Auditoriya: simli uzunluğu. DAVID J. MALAN: The simli uzunluğu. Belə ki, olduqca cleanly tərcümə o mənada ingilis. İndi problem hər dəfə I ki, nəzəriyyəsi bu loop vasitəsilə təkrarlamaq, Mən bu sualı xahiş edirəm. I s string uzunluğu az? I s string uzunluğu az? İndi i hər iteration dəyişir? Bu. Bu ++ Çünki. Belə ki, hər iteration i böyük olur. Amma s böyük almaq və ya kiçik, ya da dəyişir? No. Dizayn baxımından, baltalar biri belə boyunca biz kodu qiymətləndirmək üçün cəhd edin sinif, bu cür axmaq hiss edir. Siz sözün var kimi, hər iteration haqqında Bu loop xahiş yenə eyni lənətləmək sual, və yenidən və yenidən, və sözün heç vaxt dəyişdirmək niyyətindədir. Mən s toxunan deyiləm əgər ən azı və s məzmunu dəyişdirmək üçün çalışırıq. Mən bu bir az daha yaxşı edə bilərsiniz. Və nə mən gedirəm deyil , yalnız bir dəyişən i elan lakin ikinci dəyişən I, özbaşına lazımdır lakin şərti, n zəng. Xoş n bərabər Təyin s simli uzunluğu. Və sonra burada, mən gedirəm belə ki, bir ağıllı az optimallaşdırma Günün sonunda ki, danışmaq bir daha doğru və ya az doğru daha. Amma daha yaxşı dizayn var. Əslində mən istifadə edirəm ki, az vaxt, daha az CPU dövründən, belə ki, eyni cavab danışmaq sual, lakin yalnız bir dəfə. Ki, general haqqında hər hansı bir sualınız yaxşılaşdırılması prinsipi, bir proqramın səmərəliliyi, demək? Bəli? Auditoriya: Niyə edirsiniz [işitilemez] istifadə? DAVID J. MALAN: Yaxşı sualdır. Belə ki, niyə biz sonunda ++ qoymaq i yerinə i başlanğıcı? Bu halda, o heç bir funksional təsir. Və ümumiyyətlə, mən edirlər Bu postfix operator istifadə Bu bir az daha aydın kimi deyil, belə ki, əməliyyat baş zaman. Tanış olanlar üçün, başqa var Siz ++ i edə bilər qovuşdurmağımız hesabatları. Bu funksional edir Bu halda ekvivalent başqa heç bir şey yoxdur, çünki ki incrementation ətrafında. Amma ilə gəlmək olar hallarda və kodu xətləri hansı ki, bir fərq edir. Belə ki, ümumiyyətlə, biz bunu hətta bu barədə danışmaq. Səmimi, çünki bu sizin edir kodu sexier, və sort slicker, və daha az simvol. Lakin reallıq, bir çox çətindir edir Mən fikrimi kesmek üçün hətta hesab edirəm ki, bəzən onun ətrafında əməliyyatlar üçün. Bir kənara kimi, əgər Belə ki, həqiqətən, bu kimi deyil hətta bu cür sexy olsa axtarır, siz də edə bilərsiniz i + = 1, olan bu uglier versiyası postfix incrementation üçün eyni fikir. Mən bu və demək əyləncə etmək lazımdır, lakin siz kodu görmək olacaq uzun əvvəl gözəl bir şey. [Gülüş] DAVID J. MALAN: Right? Bəli. Ortada sual. Auditoriya: Siz int n demək lazımdır? DAVID J. MALAN: Siz int n demək lazım deyil. Biz artıq int bildirib, çünki Belə ki, Siz daha demək ehtiyac yoxdur. Tutmaq n var ki, i eyni data növü. Belə ki, burada yalnız bir rahatlığı var. Bəli. Auditoriya: Siz artıq getmək bilər print xarakter s bracket i yenidən? DAVID J. MALAN: Absolutely. Belə% c, son geri zaman, yalnız bir tutucu edir. Burada char qoymaq deməkdir. backslash n, əlbəttə, yalnız vasitələri burada bir xətt fasilə qoymaq. , Yalnız indi, yaradır ki yeni sintaksis bu parça. Və bu sözün grab, deyib simli s adlanır və almaq getmək onun i'th xarakteri, belə danışmaq. Mən i'th xarakter deyərək saxlamaq çünki bu loop hər iteration haqqında Biz çap olunur, baxmayaraq ki bu out, ilk s bracket 0, bir proqramçı demək bilər kimi. Sonra s sonra, bracket 1 s bracket 2, sonra 3, 4. Amma əlbəttə ki, bir dəyişən, Mən yalnız i ilə bildirirəm. Key, baxmayaraq ki, həyata keçirilməsi, Siz var, xüsusilə də əgər bu dünyaya acclimating edilmişdir proqramlaşdırma, biz bütün gerek, sıfırdan saymaq görünür indi sıfırdan hesablanması başlanır. Çünki strings, ilk xarakteri, Zamyla z üçün daha yaxşı və ya pis üçün yeri sayı sıfır yaşamaq gedir. Bütün hüquqlar, belə ki, mənə gətirsin Burada Zamyla bizə geri və həqiqətən nə olacaq görmək başlıq altında. Belə növü tökmə bu anlayışı var. Siz, həqiqətən, ola bilər artıq bu ilə ifa, bəlkə hacker P nəşr biri seçin. Amma növü tökmə yalnız istinad C qabiliyyəti və bəzi digər dillərdə bir veri növü çevirmək. İndi biz bu necə ola bilər olduqca straightforwardly? Belə ki, başlanğıcı bu, geri edir İngilis əlifbası. Və kontekstində olan, geri kimi bir həftə əvvəl ASCII edir. Amerika Standart Kodu İnformasiya mübadiləsi üçün. Yalnız bir həqiqətən uzun bir yol məktublar birdən deyərək nömrələri, və nömrələr məktublar. Belə ki, A, burada M, dot dot vasitəsilə dot xətləri ilə, geri, up bu kəsir sayı 65. Və biz danışmaq etməyib açıq-aşkar bu barədə, lakin, şübhəsiz ki Oxşar var kiçik məktublar üçün nömrələri. Və həqiqətən, var. Dünya bir neçə il qərar əvvəl az, bir kiçik, 97 olacaq. Və az b gedir s 98, və olmalıdır. Və hər hansı bir digər əsas üçün Sizin klaviatura var bit oxşar model olacaq. Və ya equivalently, bir decimal sayı. Belə ki, əl-da məsələ, sonra, biz necə edə bilər həqiqətən başlıq altında görürük? Mən yenə gedit üzərində getmək üçün gedirəm. Və daha növü daha sıfırdan bu bir, Mən irəli getmək üçün gedirəm və yalnız bir şey açmaq bugünkü kod ASCII sıfır çağırıb. Və ASCII sıfır bu kimi görünür. Belə ki, bu ətrafında bizim şüurunda kesmek bildirin. Belə ki, ilk, mən şərh etdik gözəl olan kodu. Bu sözün çünki gözləmək nə mənə izah, böyük harf üçün bir harita göstərilir. İndi Mən bilmirəm nə mən tərəfindən demək, belə ki, nəticə çıxarmaq bildirin. İngilis, bəlkə qədər techie English, nə line 18 görünür yoxdur bizim üçün bunu etmək? Just 18 girdi. Nə fahişəliyə cəlb edilməsi maddələri var? Nə burada çıxartmaq olacaq? Auditoriya: A loop. DAVID J. MALAN: A loop. Və neçə dəfə təkrarlamaq gedən? Auditoriya: [SƏSLƏRİ INTERPOSING] altı dəfə. DAVID J. MALAN: Not altı dəfə. Auditoriya: 26 dəfə. DAVID J. MALAN: 26 dəfə. Bəli, sorry. 26 dəfə. Niyə? Bəli, bu bir az qəribə, lakin 65-dan hesablanması açılmış etdik. Hansı qəribə, lakin yanlış deyil. Bu demək başına pis deyil. Və edirəm ki, yalnız çünki, bu, məsələn, I növ əvvəlcədən alıram ki, kapital A 65 idi. İndi bu ən zərif yol ağır kodu cür, bunu ezoterik dəyərlər ki, heç bir yadda gözlənilir. Amma indi, mən fark 65 plus 26 vasitəsilə up edir. Yəqin mən hətta istəmirəm, çünki başım hesab etmək. Mən compiler bunu bildirin lazımdır. Amma sonra hər loop, hər iteration loop, Mən incrementing alıram. Belə ki, indi bu bir az sirli görünür. Amma biz əsas bina olmalıdır olan blokları bu anlamaq üçün. % C bir char üçün bir tutucu edir. % I int üçün tutucu. Və bu istifadə çıxır ki, yeni sintaksis, bu ara, belə ki, , danışmaq bir veri növü belə bir mötərizə içində, Mən müalicə üçün compiler məcbur edə bilər i bir tam, lakin bir char kimi. Beləliklə mənə xarakter göstərən ki sayı bərabərdir. İndi aşağı burada, bu kodu olduqca çox eynidir. Mən etmək istəyirdi super açıq fakt Mən 97 qururam ki, bir kiçik edir. 26 daha çox məktublar vasitəsilə. Mən yenə doing-- edirəm i tökmə, belə danışmaq. Və ya növü tökmə i, belə danışmaq. Bir char bir int. Belə ki, son nəticə olacaq, səmimi, informasiya, biz artıq bilirik. Mən gedirəm ascii-0 c nöqtə deyil dot--. Notice, siz yəqin ki, qəbul səhv Mən təsadüfən etdi. ASCII-0 olun. İndi mən ./ascii-0 gedirəm. Mən zoom, və təəssüf ki, lazımdır Bu ekran off hərəkət etmək olacaq. Amma biz bütün chart harada görmək 97 xəritələr, 98 b xəritələr, və biz daha diyirləyin əgər A, əlbəttə, 65 xəritələr. Belə ki, bu ki, yalnız biz nə vəz etdik, bu ekvivalentlik var edir əslində əslində halda. Belə ki, bu sürətli dəyişiklik. Mənə ascii-1.c açmaq edək. Və sort, bu ağıllı bildiriş , bu aydınlaşdırılması. Bu ascii-1.c və Bu crazy şey bildiriş. Və bu, həqiqətən ürək olur nə kompüter edirik. Hətta biz insanlar olacaq, baxmayaraq letters-- baxımından sayılmaz Mən düşünürdüm başlamaq deyil, bütün sağ sonra b, və fiziki obyektlərin saymaq bu istifadə edin. Siz əlbəttə ki, mən istəyirəm ki, demək olar adlı bir dəyişən başlamaq ace amma bu anything-- deyilən bilərdi belə c kapital A. başlatıldığının Günün sonunda, kompüter Çünki Siz saxlanılması edirik nə qayğı deyil, yalnız istədiyiniz necə qayğı ki, informasiya təqdim etmək. Siz kompüter istədiyiniz nə bit model şərh? Belə ki, bu bir şey deyil ümumiyyətlə bunu tövsiyə edirik. Bu, həqiqətən, yalnız bir misal var çatdırmaq ki, siz tamamilə bilərsiniz bir char tam başlamaq. Çünki altında bir char başlıq, əlbəttə, 0 255 bir sayı. Belə ki, əlbəttə bilərsiniz bir int daxilində qoymaq. Və nə bu da nümayiş etdirir ki, biz bir çevirə bilərsiniz Burada, başqa yazın, nəticədə eyni şey çap. Və əslində, bu, mən online-- düzeltmek edəcək burada yenə bu demək üçün nəzərdə edilmişdir. Oxşar online Bu təmizləmək edək və biz will lazım bir online gözden geçirmek görmək, nə var nəzərdə tutulub. OK. Indi cəlb Belə ki, son nümunəsi bir və b və sonra biz will bir pillə qədər şeyi. Bir və b və belə kapitallaşmanın c Agentliyi və ekvivalentliyinin onların, edək burada bu nümunə nəzər. Digər code nümunəsidir. Biz ki, bir açmaq lazımdır Artıq, biz belə yazın yoxdur bütün sıfırdan həyata. Və ərəfəsində qeyd biz çox mövzu istifadə edirik olan arasında faylları, yeni dost, string.h. İndi bu ilk görünür nəzər, bir az sirli. Amma biz Səbəb bilməz əgər in görək Burada neler vasitəsilə. Birinci mən istifadəçi bir string almaq, və mən bir dəyişən string qoymaq adlı s. Əvvəl surəti yapışdırıb. Line 22, mən yəqin deyiləm dəqiq nə Mən iterating alıram, bir an əvvəl idi s olan simvol üzərində. Və burada yeni fəndlər istifadə olunur string uzunluğu, kiçik optimallaşdırılması n string uzunluğu saxlanılması, daha yenidən strlen zəng çox, və yenidən və yenidən. Və yalnız i n az yoxlanılması. İndi burada, hər şeyi almaq bir az maraqlı. Amma bu yalnız bir proqram var bu yeni fikir. English yoxdur nə i təmsil s bracket? Auditoriya: Hər hesablanması character [Işitilemez]. DAVID J. MALAN: hər bir xarakter hesablanması. Və daha çox müfəssəl, s bracket i nə təmsil? Kaş deyirsiniz. Burada yerində sizi deyil. Auditoriya: Well-- DAVID J. MALAN: söz əgər That Belə ki, simli starts-- olan Zamyla edir Auditoriya: --you ilə məşğul simvol separately-- DAVID J. MALAN: Yaxşı. Dəqiq. Bu kvadrat mötərizə notation imkan verir hər bir xarakter əldə etmək, belə s bracket 0 olacaq simli ilk xarakter. s bracket 1 olacaq s, ikinci, və. Belə ki, sual soruşuram, burada, bu vəziyyətdə nə? S böyük şəhər i'th karakter dən və ya eyni bir kiçik? Və bu, burada nə deməkdir ikiqat ampersands ilə? Auditoriya (BİRLİKDƏ): And. DAVID J. MALAN: And. Bu yalnız ekvivalent deyil. Və C bir söz deyil, siz var istifadə, annoyingly, işareti işareti. Və bu, əksinə, xahiş edir karakter i'th s-nin daha az və ya bərabər z kiçik? Və yenə, burada harada əsas anlaşma bir həyata keçirilməsi kompüter əhəmiyyət kəsb edir. Mən baxmayaraq, Qeyd edək ki, dot dot dot orada, kiçik z vasitəsilə kimi bu görünür up up 97-dən bütün bitişik dəyərlər. Və böyük üçün eyni 65 başlayan. Belə ki, paket, sonra, ki, ingilis dilində Siz təsvir necə 24 nə line? Bəli? Auditoriya: 24 görmək yoxlanılması olub hər bir xarakter bir kiçik edir. DAVID J. MALAN: Bu yoxlanılması oldu hər bir xarakter bir kiçik məktub. Belə ki, daha müfəssəl şəkildə deyil, s kiçik bir i'th xarakter? Yəni biz bütün var məntiqi burada ifadə, bir az cryptically, lakin nəticədə olduqca straightforwardly. Karakter kiçik i'th s nin? Əgər belədirsə, burada şeylər var bir az ağıl əyilmə almaq yalnız bir an üçün, belə ki, getmək irəli və bir xarakter çap. Belə ki, bu, yalnız bir tutucu, lakin nə xarakter? Niyə s bracket i edirəm minus burada bu ifadə? Burada model bilərsiniz. Faktiki nömrələri qədər əhəmiyyətli deyil. Amma 97 olduğunu qeyd necə uzaq 65-dən? Auditoriya: 32. DAVID J. MALAN: 32. Necə uzaq 66-dan 98? Auditoriya: 32. DAVID J. MALAN: big C Little c? 32. Belə ki, 32 mayaotu var bir məktubu. Belə səmimi ola bilər, və ki, bu sadələşdirmək. Amma sonra cür ağır coding alıram bu aşağı səviyyədə anlaşma Heç bir oxucu heç ki anlayırlar. Belə ki, mən bunu ümumiləşdirmək gedirəm, mən bilirik kiçik hərflər böyükdür. Mən hərflərlə bilirik kiçik dəyərlər, istehzayana. Amma bu səmərəli bərabərdir s bracket i 32 çıxmaq deyərək. Bu kontekstində belə məktublar, məktub əgər a, kiçik olur bir və mən 32 çıxmaq, ki, nə baş verir, riyazi, bir kiçik? Auditoriya: Capitalizes-- DAVID J. MALAN: bu capitalizes. Və həqiqətən, bu nə bizim proqram sıfır kapitallaşdırmaq adlanır. Bu proqram bilərsiniz məktub capitalizes, Bu əgər yoxlanılması sonra həqiqətən bir kiçik məktubu. Əks halda, xətti 30, mən əgər nə etməliyəm Mən deyiləm ki, bir kiçik məktubu deyil müəyyən bir baxaraq loop iteration. Sadəcə onu çap. Belə ki, stuff dəyişiklik yoxdur hətta kiçik deyil. Özünüzü məhdudlaşdırmaq az z vasitəsilə az. İndi bu ədalətli gizli deyil. Lakin günün sonunda, bu biz necə, bir zamanlar edir şeyi həyata idi. Mən əvəzinə kapitallaşdırmaq açıq əgər bir, oh şükür. Bir funksiyası var yuxarı adlı bilərsiniz biz yalnız hər şeyi kifayət qədər aşağı səviyyədədir. İndi yuxarı maraqlı Bir fayl elan, çünki, və yalnız bu bilirik ki sənədlərin yoxlanılması, və ya sinif, olduğu, demək, deyilmə bir fayl adlanır ctype.h da, mövcuddur. Belə ki, bu bizim yeni bir dostudur. Və yuxarı dəqiq nə üçün Onun adı təklif nə. Arasında, bir arqument kimi, keçə bilər bu parantez, bir xarakter. Mən i'th xarakter keçmək gedirəm bizim xülya yeni notation istifadə edir kvadrat mötərizə cəlb. Və bir tahmin etmək, geri nə yuxarı dəyəri yəqin gedir olacaq? A kapital məktubu. A kapital məktubu. Mən kiçik bir keçmək əgər, ümid edirəm ki, yuxarı müəyyənləşdirilməsinin, bir geri olacaq Əks halda böyük A., bu bir kiçik məktubu deyil, Birincisi, mən yalnız onu çap. And olsun ki, qeyd Burada ikinci dost. Yalnız yuxarı mövcuddur, lakin aşağı olan həqiqətən mənim üçün ki, sual cavab. İndi bu şeylər yazdı kim, 10s il əvvəl, siz nə bilirik? Yuxarı həyata və bu kimi kodu istifadə edərək aşağı. Lakin yenə ardıcıl üz referatlaşdırılması bu fikir, sort, aşağı səviyyəli həyata ətraflı. Və insanların çiyinlərində duran olan funksiyaları istifadə edərək, bizdən əvvəl gəlib yuxarı kimi və aşağı olan gözəl kifayət qədər gözəl var onlar nə demək adlı edir gözəl paradiqma qəbul. İndi mən oxumaq əgər çıxır ki, üçün adam səhifə, yuxarı, demək Mən başqa bir şey öyrənmək. Belə ki, man toupper. Bu bir az böyük var. Ancaq xəbərdarlıq, burada ki, qeyd var Mən istifadə ki, header file. Bir kənara, çünki bu kimi yanlış, funksiyası ints yerinə chars istifadə edir səhv yoxlanılması səbəblərdən. Amma bəlkə gəlmək lazımdır ki, geri gələcək. Amma yuxarı islamı, burada, qeyd mümkün olduqda məktubu c böyük üçün. Belə ki, olduqca sadə var. İndi bir az daha xüsusi olsun. Nin hissəsi baxaq qaytarılması dəyəri altında man səhifə. Geri dəyəri ki, konvertasiya məktub. Və ya c, əgər dönüşüm mümkün deyildi harada c orijinal giriş. Mən, burada bilmək yuxarı üçün dəlil. Belə ki, bu paket nədir? Geri dəyəri ki, konvertasiya məktub, və ya c, orijinal məktub, əgər dönüşüm mümkün deyildi. Nə təkmilləşdirilməsi Buna görə də mən Mənim Məcəlləsinin dizayn etmək? Bəli? Auditoriya: Siz başqa kaldırabilirsiniz. DAVID J. MALAN: Mən başqa bəyanat aradan qaldırılması, və yalnız başqa bəyanat. Auditoriya: Siz [Işitilemez] edə bilərsiniz. DAVID J. MALAN: Mən bütün çəngəl aradan qaldırılması yol, başqa varsa cəmi. Belə ki, həqiqətən, mənə açmaq bu son versiyası, əgər-2 kapitallaşdırmaq və yalnız qeyd Siz sexy, kodu indi əldə edilir, ki, Mən bəzi azalıb etdik yeddi və ya belə ki, yalnız dörd xətləri, mən nəzərdə ki, funksionallığı sadəcə yuxarı axtararaq, s bracket i, və çap keçən həyata, tutucu% c ilə, xüsusi xarakter. İndi arguably, bir səhv var, və ya bir səhv azı risk, Bu proqram. Belə ki, geri qayıtmaq bir əvvəlki paket üçün, Mən yəqin ki, nə etməlidir Bu proqram daha möhkəm etmək üçün, heç bir yol var ki, ola bilər hətta nadir hallarda, qəza? Auditoriya: Bu NULL deyil əmin olun. DAVID J. MALAN: Bu NULL deyil əmin olun. Belə ki, həqiqətən, bu super etmək müvafiq, mən kimi bir şey etmək lazımdır s onda NULL deyil, əgər irəli getmək və icra kodu bu xətlər olan Mən sonra kimi indent, və sonra mənim yaxın burğu qoydu. Birlikdə iki fikir tying belə yaxşı. Bəli? Auditoriya: Siz istifadə edə bilər əvəzinə, loop isə nə? DAVID J. MALAN: Ola Mən isə loop yoxdur? Auditoriya: --you əmin etmək istəyirəm Siz, həqiqətən, [işitilemez]. DAVID J. MALAN: Ola Bir do isə istifadə? Qısa cavab yoxdur. Siz istəyirik, çünki bir künc halda təqdim. Simli sıfır uzunluğu varsa. Məsələn, mən yalnız hit əgər Heç ZAMYLA yazaraq olmadan daxil edin. Mən faktiki Sizə təqdim etmək gedirəm simli, biz nəhayət görəcəksiniz kimi, ki, sıfır simvol var. Bu hələ bir simli var, yalnız super qısa. Amma siz isə bir do istifadə əgər, Siz kor-koranə olacaq ilə bir şey üçün çalışırıq ki, simli hörmət, və heç bir şey olacaq. Auditoriya: Yaxşı, siz əgər [işitilemez] s-- isə DAVID J. MALAN: Oh görürəm saxlamaq istifadəçi bir string almaq. Belə ki, qısa cavab, siz və pestering saxlamaq bilər Onlara ki, bir string vermək yaddaş uyğun kifayət qədər qısa. Absolutely. Mən yalnız seçdi. Onlar mənə string I vermir istəyirəm, mən çıxdıqda, mən verirəm. Amma tamamilə bunun üçün, Siz tamamilə bunu edə bilər. Belə ki, kitabxana header faylları biz indi burada, bu ilə tanış edirik. Standard I / O, CS50.h, string.h, ctype.h, və, həqiqətən, başqaları var. Əgər bəziləri aşkar math.h. riyaziyyat kitabxana Amma mənə, indi, sizə təqdim edək bu resurs ki CS50 heyəti, Davin, və Rob, və Gabe xüsusi bir araya gətirdik. Ki, tezliklə keçid Kursun veb. Bu CS50 istinad deyirlər. Yalnız bir sürətli vermək üçün aşağıdakı kimi dad, işləyir. Mənə reference.cs50.net gedək. Siz sol tərəfdən görürsünüz böyük siyahısını yan c ilə gəlib ki, funksiyaları. Amma bu an üçün, qayğı əgər, strlen kimi bir şey haqqında, Mən orada onu yazın. Bu siyahısını aşağı filtreler Mən qayğı yalnız nə. Mən bunu basın gedirəm. İndi haqqında, sol biz ümid nə görürsünüz daha sadə, insan necə dost izahat Bu funksiya işləyir. Bir simli uzunluğu qaytarır. Burada referat burada var necə var header fayl baxımından istifadə, və nə funksiyası baxımından onun dəlilləri baxımından kimi görünür. Və sonra burada, qaytarır bir simli uzunluğu. Amma daha rahat sizin üçün, Siz, həqiqətən, daha rahat vurun və bu məzmunu səhifə, indi dəyişəcək nə default dəyərlər olmaq Əgər kişi page istifadə edərək almaq. CS50, başqa sözlə istinad sadələşdirilməsi tələbələr üçün heyəti tərəfindən man pages. Xüsusilə, o az rahat və arasında ki kesmek üçün cəhd yoxdur Fikrinizi ətrafında, səmimi, bəzi olduqca sirli syntax zaman və sənədlər. Belə ki, mind ki, saxlamaq gün gəlib. Belə ki, burada yenə bir Zamyla edir. İndi ki, bir sual edək bir az daha insan əlçatan. Olmuşdur kim Chang sayəsində, daha filler çap Son bir neçə gün davamlı. Biz vermək imkanı var onlardan ən azı biri. Biz yalnız bir könüllü ala bilər, əgər ekranda çəkmək qədər gəlib. Necə burada? Qədər Hadi. Sizin adınız nədir? ALEX: Alex. DAVID J. MALAN: Alex. Bütün hüquqlar. Alex qədər gəlib. Biz görmək haqqında olduğunuz sizin Burada ekranda yazı. Bütün sağ, sizə cavab gözəl. ALEX: Nice Siz cavab. DAVID J. MALAN: Bütün hüququ. Belə ki, super sadə həyata. Bar yüksək deyil Bu gün bir fil almaq. Siz GetString rol oynayır. Mən sadəcə sizə demək gedirəm kazanılmış etdik ki, simli. Və sizin güman ki, GetString adlı edilmişdir. Və insan, mənim kimi var Zamyla, Z-A-M-Y-L-A tipli. Yalnız irəli getmək və on ZAMYLA yazmaq ekran kazanılmış sanki və yaddaş bir yerdə saxlanılır. Bir neçə olacaq nə üçün otağı tərk OK ki, digər words--, davam. [Gülüş] Belə ki, Zamyla Əla. Belə ki, indi güman ki, siz GetString, yenə deyilir. Və buna görə də, mən də, təmin klaviatura, başqa bir ad, Belinda ilə. Bütün hüquqlar. İndi növbəti dəfə GetString edir adlanan, mən, Gabe kimi bir şey yazın G-A-B-E. Siz, həqiqətən alaraq edirik ürək təsadüfi giriş xatirəsinə. Hər şeyi cəlb edir tamamilə təsadüfi. OK. [Gülüş] ALEX: Bağışlayın mənim yazı pis. DAVID J. MALAN: Xeyr, ki, OK. Və necə Rob R-O-B haqqında. OK. Yaxşı. Mən sizə ki ummuyorduk cür bu şəkildə şeyi yerinə qoymaq. Amma biz bu işi edə bilər. Belə ki çəkilməsi haqqında necə getmək idi yaddaş bu chars həyata? Başqa sözlə, biz hesab əgər Bu düzbucaqlı qara ekran bir təmsil edən kimi kompüter RAM, və ya yaddaş. Və RAM yalnız geri bayt bütün dəstə, və bytes bit bütün dəstə var. Və bit birtəhər ümumiyyətlə, həyata bəzi formada hardware elektrik. Belə ki, sort biz söhbət etdik layering verilən və indi bilər. Necə haqqında getmək idi harada yazmaq üçün həlledici Rob qarşı Gabe qarşı Zamyla qarşı Belinda? ALEX: Mən yalnız bunu Siz mənə dedi ki sifariş. DAVID J. MALAN: And ki, doğrudur. Amma nə harada qoymaq idarə Belinda adı və Gabe adı? ALEX: Heç bir şey? DAVID J. MALAN: [gülür] Belə ki, işləyir ki, gözəl var. Belə ki, kompüter az daha nizamlı. Və belə ki, biz orada qalmaq implement-- zaman zaman həqiqətən biz yalnız bir anda üçün kimi bir şey həyata Kompüter GetString, Zamyla olduqca çox salınacaq bilər kimi orada ekranda etdi. Və qeyd üçün əsas nə Burada, Alex nə, bir demarkasiyası növ var Bu sözlərin hər arasında, sağ? Əgər yazmadım Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- başqa sözlə, bir növ var görünür demarkasiyası, sort, təsadüfi spacing Bu müxtəlif sözlər arasında. Lakin, çünki, yaxşı biz insanlar indi bilərsiniz Bu ki görüntüləmək Dörd müxtəlif strings. Bu, yalnız bir ardıcıllıqla deyil simvol çox. Belə ki, bir kompüter, sonra isə, Zamyla kimi bir simli bilər, həmin məktubları hər qoymaq yaddaş byte daxilində. Amma ki sayı daha böyükdür Əlbəttə, altı simvol. RAM bütün dəstə var. Və bundan sonra da, bu qutuları grid gedir nə Alex yalnız təmsil ekranda burada idi. İndi, Alex, sizə bir təklif edə bilər mavi və ya Chang bir portağal fil. ALEX: Mən mavi fil almaq lazımdır. DAVID J. MALAN: A mavi fil. Belə ki, alqış böyük dəyirmi, Alex burada biz bilər. [Alqış] ALEX: Sağ olun. DAVID J. MALAN: Təşəkkür edirəm. Belə ki, paket, hətta baxmayaraq model cür burada, zamanla dəyişib board, bu var idi müxtəlif strings arasında demarkasiya Alex bizim üçün var ki. İndi kompüter, səmimi, eyni şey edə bilər. Onlar növ Plop bilər hər hansı RAM strings. Burada, burada, Burada, aşağı burada. Onlar məhz bunu edə bilər. Lakin, əlbəttə ki, var yəqin ki, ən yaxşı planlaşdırma. Right? Mən Alex xahiş saxlanılır əgər adları, yəqin ki, o istədiyiniz bəlkə, burada daha çox yazmaq burada, burada, burada, nəhayət Burada artıq. Amma bir az daha planlaşdırma ilə, əlbəttə, daha çox pakizə şeyi yerinə qoymaq bilər. And olsun ki, bir kompüter nə var. Amma tutmaq ki, əgər mən almaq növbəti string Zamyla bir şey sonra Bu Belinda kimi, biz yazmaq bilər harada təklif Bu grid ilə bağlı b məktubu? Siz harada getmək olardı? A sağa, Aşağıdakı A z, aşağıdakı? Ilk instinktlərdən nə olardı? Auditoriya: z Aşağıda. DAVID J. MALAN: Belə z aşağıda. Və olduqca sadə, sağ? Bu səliqəli cür, biz nə var klaviatura biz daxil edin hit zaman, və ya e-poçt edərkən şeyi bulleted siyahısı. Amma reallıq bu kompüter edir daha məhsuldar olması üçün cəhd edin, və daha çox, əlbəttə basırıq mümkün RAM data, ki, hər bayt sərf etmir. Siz sərf etməyin ki, hər hansı bir ekran daşınmaz əmlak. Və problem olsa da, ki, biz sanki məktub qoymaq əgər b bir müddət sonra, necə gedir ZAMYLA adı başa harada bilmək və Belinda adı başlayır? Belə ki, yalnız, yaxşı, təklif, insanların mahiyyətcə, əsas Enter düyməsini basın. Aşağıdakı onu qoymaq. Və ya Alex etdiyi kimi, yalnız yazılı başlamaq əvvəlki aşağıda növbəti adı, ki, bir aşağı, və sonra bir aşağıda. Ki, bir vizual replika var. Computers başqa bir vizual replika var, lakin bir az daha yığcam var. Bu funky xarakter var. Bəlkə də backslash 0, backslash n xatırladan, və s, indi. Xüsusi escape ardıcıllığı. Backslash 0 yoludur Bir sıra səkkiz sıfır bit təmsil. 0000 0000. Ki, ifadə yolu deyil Klavyenizdeki sayı sıfır hit, bir ASCII char ki, əslində, çünki. Bu bir sıra kimi görünür, lakin bir decimal sayı əslində ki, təmimnamə təmsil glyph, dairəvi yazı tipinde. Eyni zamanda, backslash sıfır sanki, Mənim üçün burada səkkiz sıfır bayt qoydu. Belə ki, bu bir qədər özbaşına deyil. Biz hər hansı bir model istifadə etdiyiniz bilər bit, lakin dünya bir neçə il qərar əvvəl ki, təmsil yaddaş bir string sonu, yalnız adet sıfır bütün dəstə qoydu. Ki, aşkar bilər. İndi o deməkdir ki, heç bir məktubu əlifba adet sıfır ilə təmsil oluna bilər. Amma ki, biz artıq gördüm OK biz up up 97 65 istifadə etdiyiniz. Biz hər yerdə əldə etməyib bütün adet sıfır yaxın. Bir kompüter yaddaş Belinda belə əslində burada getmək niyyətindədir. Mən sarı tərtib etdik yalnız Bu bizim diqqət çəkmək üçün. Və bildiriş də bu tamamilə əsassız edir. Mən bir grid kimi tərtib etdik. Kimi, RAM yalnız bəzi fiziki obyekt deyil. Bu, mütləq yoxdur satır və sütun, hər se. Bu, sadəcə bayt bütün dəstə var birtəhər hardware həyata keçirilir. Amma Belinda I sonra əgər Gabe adı tipli, O, yaddaş burada sona olacaq Mən Daven adı yazdığınız əgər, Məsələn, o, burada sona olacaq. Mən davam edə bilər daha adlarını yazın. Təəssüf ki, mən cəhd super uzun ad yazın, Mən nəhayət yaddaş tökülmək bilər. Bu halda, GetString edir dediyimiz kimi, NULL qayıtmaq üçün gedir. Amma şükürlər olsun ki, ən azı bu vizual burada, biz ki, uzaq əldə etməyib. İndi nə gözəl bu ki, şeyi müalicə ümumi fikir qutuları olan kimi C xüsusiyyət nümayəndəsi və dilləri bir çox, bir sıra kimi tanınır. Bir sıra məlumatların bir növüdür. Siz əgər, bir data strukturu var. Həqiqətən mənada strukturu, cür, ən azı, bir qutu kimi axtarır Sizin fikrinizi göz. Bir sıra bitişik edir eyni data növləri ardıcıllığı, geri geri geri geri. Digər belə bir string, sözləri, chars bir sıra edir. Simvol bir sıra. Amma siz ola bilər çıxır şeyi dəstələri Diziler. Əslində, biz hətta bilər bir sıra nömrələri. Şəklində belə olan biz başlamaq olacaq Bu data elan bir sıra kimi tanınan strukturu də kvadrat mötərizə istifadə edir. Amma bu kvadratşəkilli mötərizələri gedir Bu çərçivədə müxtəlif mənası var. Və aşağıdakı kimi görək. Mən açdı Fərz edək ki, burada yeni bir fayl up. Mən ages.c. bu saxlamaq Və mən burada mənim qovluq bu saxlaya bilərsiniz. İndi mən irəli getmək üçün gedirəm və bir şey yazmağa başlayın kimi daxil CS50.h daxildir stdio.h, əsas etibarsız int. Və sonra burada daxili, mən istəyirəm birinci yaş adlı int var. Və mən bir almaq üçün istifadə gedirəm onun yaşı üçün istifadəçi int. Lakin bu proqram tərəfindən istifadə üçün nəzərdə tutulmuşdur nə kontekstində çox insanlar. Mən bir xətt var. Onların hamısı yazın onların bəlkə bəzi, mən bilmirəm yaş, müsabiqə, və ya hadisə onlar üçün gəlib etdik ki. Belə ki, növbəti şəxs, I bir dəyişən lazımdır. Mən yalnız əgər, çünki yaş GetInt olur ki, var gedir döymək və ya üzerine Əvvəlki adamın yaşı. Belə ki, heç bir yaxşı. Mənim ilk instinkt belə ola bilər, oh, bütün sağ, Mən çox insanlar var almaq istəyirsinizsə ages--, bu age1 zəng edək int age2 int olur, int age3 getInt olur. İndi mən istifadə gedirəm burada bəzi pseudocode kodu. Bu nömrələri ilə bir şey. Biz bir gün üçün tərk edəcəyik nə Biz nə edirik Çünki yalnız Bu an üçün qayğı age1, age2, age3 haqqında. Təəssüf ki, I dəfə Bu proqram tərtib və faktiki istifadəçilər qarşısında qoydu Bu əsaslı yoxsul dizayn nə I görünür qərar etdik? Bəli? Auditoriya: [işitilemez] DAVID J. MALAN: Bəli, Mən hətta cəhd deyil neçə yaş anlamaq üçün Mən, həqiqətən, qayğı yoxdur? Mən burada az üç adam varsa, və buna görə də az üç yaş, Mən hələ kor-koranə üç gözləyirəm. Allah dörd nəfər göstərmək qadağan. Mənim proqram yalnız hətta onlara dəstək deyil. Və bu, uzun hekayə qısa, yaxşı vərdiş deyil. Right? Mən mahiyyətcə çıxarmaq və kodu sovuşdurmaq və yalnız tweaking dəyişən adları. Və mənim tanrı, siz olsaydı, üç yaş, lakin 10 və ya 100, və ya hətta 6500 magistr, məsələn. Bu, xüsusilə olacaq deyil zərif kodu və ya davamlı. Siz olacaq proqram hər zaman yeniden yazmaq insanlar dəyişikliklər sizin nömrəsi. Belə ki, təşəkkürlə, bizim faktiki da Bu gün ages.c fayl, biz daha ağıllı həll var. Birincisi, mən borc gedirəm , biz bir neçə dəfə istifadə etdiyiniz tikintisi bu almaq üçün, loop isə bunu oda insanların sayı. Mən yenə, istifadəçi bezdirmək gedirəm və yenə o qədər mənə verir bir müsbət tam ki, n dəyəri. Mən istifadə edə bilər, son vaxt müsbət int almaq. Ancaq biz yoxdur real üçün, mən irəli getdi və bu ideyanı həyata edirik. İndi aşağı burada, bu yeni bir oyun deyil. Şərh kimi line 27, In line 26 təklif ilə, bir sıra bəyan edən hər kəsin yaşı saxlamaq üçün. Belə ki, bir int deyil almaq istəyirsinizsə iki ints, lakin ints bir dəstə. Xüsusilə n integers idi n bilər 100 ola bilər, üç ola, 1000 ola bilər. Bu syntax, sadəcə, üçün demək, nə data növü istəyirsiniz? Siz zəng etmək istəyirəm nə yaddaş ki, yığın? Siz grid zəng etmək istəyirəm nə bu pictorially kimi görünür? Və burada mötərizədə, demək necə böyük siz array olmaq istəyirəm. Və belə əvvəl, mən bildirib syntax, burada bir az fərqli biz hələ kvadrat mötərizə istifadə edirik, amma bir sıra elan edirəm zaman, Bu daxili sayı kvadrat mötərizə vasitələri necə böyük siz array olmaq istəyirəm. Əksinə, biz s istifadə bracket i bir an əvvəl, s, simli, chars bir sıra, həqiqətən, lakin bir dəyişən elan etdiyiniz zaman, burada bu söz ilə, sadəcə əldə etdiyiniz xüsusi index, xüsusi ki, array element. Biz bilirik sonra, qalan Bu sadə deyil. Mən ilk çap gedirəm, yeni bir adam sayı i yaşı var. Mən yalnız adam sayı bir demək adam sayı iki nəfər sayı üç. Mən yalnız hesab edirəm belə ki, kimi normal insanlar, biz bu bir saymaq proqram deyil, sıfırdan. Sonra GetInt zəng, ancaq saxlamaq əsrlərdə cavab i bracket. Hansı sıra i'th dövrüdür. Sonuncu dəfə isə biz müalicə olunmuşdur, belə ZAMYLA adı üçün chars bu qutuları, və s. İndi, bu qutuları təmsil 32 bit, və ya dörd bytes biz bilərsiniz bir int bir int bir int. Olan, yenə, eyni data növü var. İndi mən bir şey silly nə, Vaxt keçir kimi, yalnız bu proqram yazmaq haqq qazandırmaq üçün. Və sonra aşağı burada, mən yenə təkrarlamaq İndi bir il belə serialın üzərində, adam sayı bir iradə bir şey yaşında. Və anlamaq üçün math-- demək, bu çox arithmetic-- çətin deyil Mən yalnız öz yaş bir əlavə. Sadəcə, yenidən, bu nümayiş. Sadəcə mən index kimi bir simli daxil, s, belə yaş bir sıra daxil edə bilərsiniz I index, var kimi. Belə ki, bu bizə alaraq olacaq? Beləliklə, biz görürük ki, nəticədə, bir gün neçə şey gəlib. One, bütün bu vaxt, zaman öz proqramları yazmaq, Mario, görməmiş, kredit kimi. Siz adı yazaraq etdik proqram və vuruş daxil edin. Və sonra istifadəçi daxil almaq. GetString, GetInt ilə, GetLongLong, və ya kimi. Amma bu C dəstəkləyir çıxır bir şey command line adlı bize bildirin gedir dəlilləri, həqiqətən yazın sözlər almaq, yanıb-sönən sətirinə, Sizin proqram adı sonra. Sizə gələcək günlərdə belə Sezar kimi bir şey yazın bilər, və ya Sezar sonra sayı 13,. Biz necə işlədiyini görmək lazımdır. Həqiqətən, çünki problem biz istəyirik, iki müəyyən sizə təqdim etmək niyyətindədir bir az bir şey üçün Ralphie nin xatırladan kartoqrafiya əvvəllər çağırış. Məlumat Scrambling sənətidir. Bu, əslində çox, Ralphie nə xatırladan. Bu şifreleme nümunəsidir alqoritm, R-O-T 13 ROT13 adlı. Hansı sadəcə dönüşümlü deməkdir əlifbası 13 yerləri məktublar. Siz bunu əgər, siz indi görürsünüz bir tanış söz, bəlkə, nə. Amma şəkildə istifadə etmək olacaq Bu, son nəticədə, daha ümumi deyil. P, standart nəşr, iki müəyyən Siz ciphers bir neçə həyata olacaq Caesar adlı bir, Vigenere adlandırıb. Hər ikisi fırlanma var ki ciphers, siz elə fərqli bir məktub daxil bir məktub açın. Və Caesar super sadədir. Siz 13 əlavə, bir əlavə və ya 26 qədər bir sıra. Vigenere ki yoxdur bir məktub başına əsasları. Vigenere Belə ki, görürsünüz spec, daha təhlükəsiz edir. Lakin günün sonunda nə , siz həyata olacaq və P iki müəyyən Siz də istifadə ki, əsas şifrələmə və parol çözme üçün. Dönüş prosesi toxunan düz mətn, bəzi orijinal mesaj, şifrə mətn, daxil olan bir şey şifrelenir. Və sonra yenidən decrypting. Hacker nəşr, eyni zamanda, siz olacaq oxşar bir şey həvalə ruhunda, biz sizə vermək lazımdır tipik Linux, və ya bir fayl, Mac, və ya Unix kompüter adlı Etsy bir bütün olan parol, istifadəçi adı və parol dəstə. Və o parol bütün var şifrelenir və ya hashed edilmişdir, belə ki, daha düzgün, danışmaq Siz spec görəcəksiniz kimi. Və hacker nəşr etiraz edəcək bu kimi bir daxil alaraq ilə, və parol krekinq. Ki figuring, nə insan parol həqiqətən idi. Həqiqətən, parol, çünki ümumiyyətlə aydın saxlanılır deyil, və ümumiyyətlə parol təxmin etmək çətin olmalıdır. Tez-tez belə deyil. Və nə Mən biz istədiyiniz fikir deyil bir neçə dəqiqə ilə bağlamaq xüsusilə nəzər parol yoxsul seçim bir film sizə sevərək xatırlayıram bilər. Və əgər, siz icarəyə olmalıdır. [Video playback] -Kask, Siz şeytan, nə olub? Əgər qızım nə edirlər? Tətbiq etmək mənə -Permit parlaq gənc plastik cərrah, Doctor Phillip Schlotkin. Bu ən böyük burun iş adamı bütün kainat və Beverly Hills. -Sizin Əlahəzrət. -Burun Iş? Mən başa düşmürəm. O, artıq bir burun iş idi. Bu şirin 16 olub. Xeyr, siz nə deyil. Bu çox, çox pis. Mənə vermir əgər hava qalxan birləşməsi, həkim Schlotkin verəcək sizin qızı onun köhnə burun geri. - [Gasps] Nooooooooooooo. Harada ki, əldə etdiniz? -Bütün Hüququ. Mən deyim, demək lazımdır. Xeyr, Daddy, no. Siz olmalıdır. -You're Sağ əziz. Mən yeni burun əldən lazımdır. Amma onlara demək deyil birləşməsi nə olursa olsun. Yaxşı -Çox. Doctor Schlotkin, sizin ən pis edin. Mənim zövq. No! Gözləyin, gözləyin. Mən deyim. Mən deyim. Mən bu iş bilirdi. Bütün sağ, mənə ver. -Birləşməsi Biridir. -One. -One. Iki. Iki. Iki. Üç. Üç. Üç. Dörd. Dörd. Dörd. Beş. Beş. Beş. Birləşməsi bir Deməli, iki, üç, dörd, beş. Bu stupidest birləşməsi var Mən heç həyatımda eşitmək. Ki, bir şey an cür axmaq onun baqaj olardı. , Əlahəzrət sizə təşəkkür edirik. [Uzaqdan klik] Siz nələr etdiniz? Mən divar off çıxdı. Xeyr, siz etmədi bütün film söndürülür. Mən must've səhv düyməni basdı. Bəli, geri qoydu! Film geri qoyun! Bəli, əfəndim! Bəli əfəndim. Nin, Arnold getmək edək. , Gretchen gəlir. Əlbəttə, mən lazımdır bilirəm Bunun üçün qanun layihəsi var. -Bəli? Bu iş mi? Padşah harada? -Bu, Əfəndim işləmişdir biz birləşməsi var. Böyük. İndi biz hər keçən nəfəs bilər planet Druidia təzə hava. Birləşməsi nədir? -Bir, Iki, üç, dörd, beş. -Bir, Iki, üç, dörd, beş? Bəli. Yəni gözəl. Mən eyni var mənim baqaj birləşməsi. Üçün Spaceball 1 hazırlanması dərhal gediş. Bəli əfəndim. Dəyişiklik -Və mənim baqaj birləşməsi. [DOOR Yekun SES] [Qapı Paris dəbilqə vuruş] -Ahh. [END Video playback] DAVID J. MALAN: Bu üçün var CS50, biz gələn həftə görəcəksiniz. Dastançı: İndi, Deep Daven Farnham tərəfindən düşüncələr. Daven FARNHAM: C Coding edir Not çox daha çətindir. printf, Scratch yalan idi. [Gülüş soundbite]