>> [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!
>> 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?
>> İ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.
>> 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 bu iş bilirdi.
Bütün sağ, mənə ver.
>> -Birləşməsi Biridir.
>> -One.
Iki.
Üç.
Dörd.
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]