>> [MUSIC PLAYING]
>> [Video playback]
>> O, yalançı.
>> Nə -Haqqında?
>> Mən bilmirəm.
>> Biz nə bilirik -Yaxşı?
>> 9:15, Ray yəni Santoya ATM idi.
-Bəli.
Belə ki, sual, nə O 9:16 at edirdi?
>> Bir şey 9 millimetr çəkilişləri.
Bəlkə o snayper gördüm.
>> -Və Onunla iş idi.
>> Gözləyin.
Geri bir gedin.
>> -Nə Görürsünüz?
>> Tam ekran qədər onun üz gətirin.
>> -Onun Eynək.
>> Bir əks -Var var.
>> -Bu Nuevitas beysbol komanda var.
Bu onların logo var.
>> -Və O söhbət Kim ki, jaket qalıcı oldu.
>> [END playback]
>> DAVID Malan: Bütün hüququ.
Bu CS50 və bu bir az daha bir [Işitilemez] olan sen
problemi ilə dabbling dörd seçin.
Bu gün biz bir az daha baxmaq başlamaq dərin göstəricilərinə adlı bu şeylər,
Bu baxmayaraq ki, olduqca gizli mövzu,
bu olacaq çıxır ki, vasitə olmaq olan biz
tikinti və montaj başlaya bilərsiniz daha çox inkişaf etmiş proqramları.
Amma biz son çərşənbə günü bunu ilk bir claymation yolu ilə.
Belə ki, bu, geri edir Binky və biz ondan istifadə
bir proqram nəzər ki, həqiqətən bir şey maraqlı etmədi,
ancaq bir neçə problemlər aşkar etdi.
Belə ki, niyə biz gəzmək deyil, bu gün başlayacaq tez bu addımlar bir neçə ilə,
insan şərtlərinə daxil çəkmək üçün cəhd edin dəqiq nə burada olacaq
və niyə bu pis, sonra hərəkət və həqiqətən bir şey bina başlamaq
bu texnika ilə?
Belə ki, bu ilk idi Bu proqram iki xətləri
və layman nin baxımından, nə Bu iki xətləri edirsən?
Əsaslı rahat kimsə nə ekranda elan edir ilə?
Bunu bu iki xətləri hansılardır?
Bu, bütün deyil ki, həftə bir müxtəlif,
lakin bəzi yeni xüsusi simvolu var.
Evet?
Back var.
>> Auditoriya: göstəricilərinə elan?
DAVID Malan: daha demək?
Auditoriya: göstəricilərinə elan?
DAVID Malan: elan göstəricilərinə və nin bir az daha saflaşdırmaq edək.
Auditoriya: [işitilemez] Ünvan x və sonra y.
DAVID Malan: Və sonra müraciət.
Belə ki, xüsusi biz işle biz iki dəyişənlərin elan edilir.
Bu dəyişənlər, baxmayaraq ki, gedir növü int ulduz olmaq üçün
daha çox xüsusi deməkdir Onlar saxlamaq üçün gedir
bir int ünvanı, müvafiq olaraq, x və y.
İndi hər hansı bir dəyərlər var?
Bu bir faktiki ünvanlar var vaxt bu nöqtədə iki dəyişənlərin?
Yox.
Bu, sadəcə zibil dəyərlər belə deyirlər.
Siz, həqiqətən, bir təyin deyilsə RAM idi nə dəyişən,
əvvəllər adet sıfır ilə doldurmaq niyyətindədir və olanları bu dəyişənlərin də.
Amma biz hələ bilmirəm nə onlar və ki
niyə Binky üçün əsas olacaq Keçən həftə başını itirdi.
>> Belə ki, bu claymation idi bu təcəssüm
qovuşdurmağımız yalnız iki dəyişənlər var gildən kiçik dairəvi ədəd,
ki dəyişənlərin saxlamaq, lakin bilər bükülü oxlar gəlir,
onlar həqiqətən işarə deyilik yerdə özlüyündə tanınır.
Beləliklə, biz bu xətti idi və bu yaddaş üçün idi yeni ötən həftə malloc
yalnız bir xülya yoldur ayrılması, əməliyyat sistemi deyirəm, Linux
və ya Mac OS və ya Windows, hey, Mənə bir yaddaş verir,
və siz bütün demək əməliyyat sistemi
yaddaş üçün xahiş zaman nə.
Nə qayğı niyyətində deyil Siz bunu olacaq
lakin əməliyyat demək lazımdır nə malloc yolu ilə sistemi.
Evet?
>> Auditoriya: nə qədər?
DAVID Malan: nə qədər?
Nə qədər bayt, və, belə ki, bu, yenə, bir göstərdi Məsələn, yalnız deyib
Mənə bir int ölçüsü verir.
Bir int İndi, ölçüsü dörd bytes və ya 32 bit edir.
Belə ki, bu yalnız bir yoludur deyərək, hey, əməliyyat sistemi,
Mənə yaddaş dörd bayt vermək Mən sərəncamında istifadə edə bilərsiniz ki,
və xüsusi nə hörmətlə malloc qaytarılması
Dörd bayt ki yığın üçün necə?
Auditoriya: Ünvan?
DAVID Malan: ünvan.
Dörd bayt ki, yığın ünvanı.
Məhz.
Və belə ki, nəticədə saxlanılır nə var Biz, həqiqətən, yoxdur, niyə x və ki
qayğı nə ki sayı Bu OX1 ya OX2 olsun ünvan, var
və ya bəzi sirli hexadecimal ünvanı.
Biz yalnız pictorially qayğı ki, dəyişən x indi ki,
yaddaş ki, yığın işarə.
Belə ki, arrow bir göstərici təmsil, və ya daha dəqiq desək, bir yaddaş ünvanı.
Ancaq yenə də, biz adətən qayğı yoxdur o faktiki URL nə.
İndi bu xətt deyir nə layman nin baxımından?
Star x 42 nöqtəli vergül olur.
Bu nə deməkdir?
Siz getmək istəyirsən?
Boyun danışıq yoxdur.
>> Auditoriya: x ünvanı 42 edir.
>> DAVID Malan: x ünvanı 42 edir.
Olduqca deyil.
Belə ki, yaxın deyil, kifayət qədər var, çünki bu x prefixing ulduz.
Beləliklə, biz bir az çimdik lazımdır.
Evet?
>> Auditoriya: dəyər ki, pointer x 42 işarə edir.
DAVID Malan: OK.
pointer x ki, dəyəri 42, deyək üçün edilir işarə edərək,
və ya, ulduz başqa bir yol qoymaq x nə ünvana getmək deyir
Bu 1 Oxford olsun, x deyil Küçə və ya 33 Oxford Street
və ya OX1 ya OX33, nə , rəqəmli ünvan olduğunu
star x x dereferencing edir.
Belə ki, ünvana getmək və sonra sayı 42 qoymaq.
Belə ki, ola ki, bir olduğunu söyləyən ekvivalent yol.
Belə ki, bütün gözəl və sonra biz şəkil təmsil edəcək
biz aşağıdakı kimi əlavə etdik harada Dörd ki, yığın 42
, sağ tərəfində bayt lakin hər şeyi əyri getdi bu xətt idi
və Binky baş atdı Bu nöqtədə off,
pis şeylər zaman baş çünki Siz zibil dəyərlər dereference
etibarsız dereference Siz və ya göstəricilərinə və mən etibarsız demək
Çünki bu nöqtədə hekayə, y daxilində nədir?
Based y dəyəri nədir Son bir neçə addımlar?
Evet?
Bu nədir?
>> Auditoriya: bir ünvan.
DAVID Malan: bir ünvan.
Bu ünvan olmalıdır lakin mən bunu başlatılmış var?
Belə ki, hələ yoxdur.
Belə ki, orada olmaq üçün nə məlumdur?
Bu, sadəcə bəzi zibil dəyəri var.
Bu sıfırdan hər hansı bir PO ola bilər 2 milyard siz RAM iki gigs varsa,
və ya sıfır 4 milyard Siz var əgər RAM dörd gigabayt var.
Bu, bəzi zibil dəyəri var lakin problem
əməliyyat sistemi ki, Bu sizə verdiyi əgər
yaddaş ki, yığın xüsusi Siz getmək çalışdığınız ki,
ümumiyyətlə nə səbəb olacaq bir seqmentasiya günah kimi gördüm.
Belə ki, əslində, siz hər hansı olan ofis saat problemləri mübarizə
və ya problemləri ki, daha çox ümumiyyətlə anlamaq üçün çalışırıq ilə
bir seqmentasiya günah, ki, ümumiyyətlə deməkdir
Siz bir seqment toxunan edirik Siz olmamalıdır yaddaş.
Siz yaddaş toxunan edirik ki, əməliyyat sistemi deyil
bu olsun, siz toxunmaq icazə Sizin array çox gedərək
və ya olub, indi başlayır Siz toxunan edirik, çünki bu
yalnız bir zibil dəyəri yaddaş.
>> Belə ki, burada star x bunu undefined davranış sort.
Siz bahis çünki heç vaxt , proqram yalnız qəza olacaq ki,
deyərək edirik, çünki, bu ünvana getmək
və siz heç bir fikrim burada var ki, ünvan əslində.
Belə ki, əməliyyat sistemi çox güman ki, proqram qəza gedir
nəticəsində həqiqətən kimi deyil nə Binky orada oldu.
Belə ki, son nəticədə, Binky sabit Bu bu problem.
Proqram özü flawed edilib.
Amma sort irəliləmək əgər əvəzinə bu xətt icra,
y yalnız x bərabərdir deməkdir nə Ünvan x, həmçinin y qoyun.
>> Və belə pictorially, biz iki oxları ilə bu təmsil
x və y işarə olan eyni yerə.
Belə ki, semantically, x bərabərdir y o, həm də, çünki
Eyni saxlanılması ünvan, bundan dolayı, 42 işarə
və indi, zaman ulduz demək y, y ünvana getmək
Bu maraqlı yan təsiri var.
Belə ki, y ünvanı x Ünvan eyni şey.
Belə ki, əgər ünvana getmək demək və y 13 dəyər dəyişdirmək,
olan başqa təsir edir?
X, point D, belə ki, danışmaq ki, eləcə də təsir edilməlidir.
>> Həqiqətən, necə Nick bu şəkil çəkdi claymation məhz idi.
Biz göstərici edin baxmayaraq y, biz eyni yerdə sona çatdı
və biz çap olsaydı X və ya Y-nin pointee həyata,
sonra biz 13 dəyəri görmək olardı.
İndi pointee olmaq demək video ilə uyğundur.
Programmers üçün mənim bilik, əslində heç
söz pointee demək, guşəli edir ki,
, lakin ardıcıllıq üçün video ilə həyata
idi ki, bütün var ki, vəziyyət idi.
Claymation Belə ki, hər hansı bir sualınız və ya göstəricilərinə və ya malloc yalnız hələ?
Yox?
Oldu.
>> Belə ki, daha olmadan ado, Bir nəzər salaq
Bu, həqiqətən, var harada bir müddət istifadə edilmişdir.
Beləliklə, biz bu CS50 kitabxana etdik ki, bu funksiyaları bütün var.
Biz GetInt GetString bir çox istifadə etdik yəqin ki, əvvəllər GetLongLong
Mənim pset bir və ya belə, lakin həqiqətən nə davam edir?
Yaxşı, tez nəzər salaq bir proqramda başlıq altında ki,
biz sizə CS50 veririk ruhlandırır kitabxana, və həqiqətən keçən həftə etibarilə,
biz bu qəbuluna başlamışdır təlim təkərlər off.
Belə ki, bu, indi çeşidlənir bir postmortem nə
var davam CS50 kitabxana daxili,
biz indi hərəkət başlayacaq olsa da Ondan ən çox proqramları üçün.
>> Belə ki, bu 0 scanf adlanan bir proqramdır.
Bu super qısa.
Bu, sadəcə bu xətləri var, lakin bir funksiyası adlanır scanf təqdim
biz, həqiqətən, görmək olacaq ki, CS50 kitabxana daxilində bir an,
bir az fərqli formada olsa.
Line 16 Belə ki, bu proqram bir dəyişən x elan edir.
Belə ki, mənə bir int üçün dörd bayt verir.
Bu istifadəçi izah edilmişdir sayı edin, və sonra
Bu maraqlı xətt ki, həqiqətən keçən həftə birlikdə əlaqələri
və bu.
Scanf, və sonra bir edir bildiriş format string, yalnız printf kimi,
% I bir int deməkdir və sonra bir edir bir az görünür ikinci arqument
funky.
Bu işareti x, və geri, biz yalnız bu dəfə ötən həftə gördüm.
Işareti x nəyi təmsil edir?
Işareti C nə edir?
Evet?
>> Auditoriya: ünvanı.
DAVID Malan: ünvanı.
Belə ki, əks edir star operator,
star operator deyir halbuki, getmək Bu ünvan, işareti operator
anlamaq deyir Bu dəyişən ünvan,
və bu, çünki əsas həyat scanf məqsədi
istifadəçi scan edir klaviatura giriş,
nə asılı olaraq o növləri və sonra istifadəçi daxil oxumaq
bir dəyişən, lakin biz Son iki həftə gördüm
ki, svop funksiyası ki, biz həyata keçirilməsi üçün çaba cəhd
yalnız qırıldı.
Svop funksiyası ilə Xatırladaq ki, biz yalnız ints kimi A və B elan əgər,
biz uğurla dəyişdirmək idi svop daxilində iki dəyişənlərin
yalnız süd və OJ ilə kimi, lakin svop, geri qısa müddətdə
hörmətlə nəticə nə oldu x və y, orijinal dəyərlər?
Heç bir şey.
Bəli.
Heç bir şey, çünki o vaxt baş svopları, yalnız yerli nüsxə dəyişdirmək
bütün demək olan bu dəfə, zaman biz
dəlilləri keçir funksiyaları, biz istəyirik
yalnız həmin dəlilləri nüsxə keçən.
Siz ilə edə bilərsiniz Siz onlarla istədiyiniz nə olursa olsun,
lakin onlar heç bir olacaq ilkin dəyərlərini təsir.
Belə ki, bu, əgər problemlidir scanf kimi bir funksiyası var istəyirəm
həyat, onun məqsədi scan edir klaviatura istifadəçi giriş
və sonra, belə ki, blanklara doldurmaq danışmaq, ki, x kimi bir dəyişən vermək
dəyəri, mən əgər çünki yalnız scanf x keçmək,
son məntiqi hesab əgər həftə, scanf istəsə nə edə bilər
x surəti ilə, lakin bilmədi veririk halda daimi x dəyişə
, belə danışmaq, bir xəzinə xəritəsi scanf x spot qeyd harada vasitəsi
biz ki, x ünvanı keçmək scanf var və həqiqətən dəyişiklik getmək bilər
x dəyəri.
Və, həqiqətən, bütün Bu proqram ki,
Mən mənbə scanf 0, əgər 5m directory, scanf 0 etmək,
dot scanf doğramaq sayı 50, xahiş edirik, 50 üçün təşəkkür edirik.
>> Belə ki, bütün maraqlı deyil lakin həqiqətən nə baş
tezliklə mən zəng kimi ki, burada x dəyəri scanf
daimi dəyişib olunur.
İndi bu gözəl görünür və yaxşı, və əslində, onu
Biz, həqiqətən, ehtiyac yoxdur kimi görünür Bütün artıq at CS50 kitabxana.
Məsələn, run edək Burada bu bir daha.
Mənə bir ikinci üçün yenidən edək.
Nin bir sıra cəhd edək edin və əvəzinə əvvəl 50 deyərək,
Yalnız heç bir deyək.
OK, bir az qəribə deyil.
OLDU.
Burada yalnız bir cəfəngiyatdır.
Belə ki, görünmür səhv vəziyyətlərdə idarə.
Beləliklə, biz start minimal lazımdır bəzi səhv yoxlanılması əlavə
istifadəçi var ki, əmin etmək 50 kimi faktiki sayı tipli,
yəqin yazaraq sözləri çünki problemli kimi aşkar deyil,
lakin yəqin ki, olmalıdır.
>> Indi ki, bu versiyası baxaq mənim cəhd GetString reimplement.
Scanf bütün bu varsa funksionallığı inşa
niyə biz bu ilə dabbling edilmişdir GetString kimi təlim təkərlər?
Yaxşı, burada bəlkə mənim öz GetString sadə versiyası
vasitəsi bir həftə əvvəl, dedim ola bilər, Mənə bir string vermək və bufer zəng.
Bu gün mən yalnız başlamaq üçün gedirəm , char ulduz, geri söyləyərək
yalnız sinonimi var.
Bu scarier görünür, ancaq bu eyni şey.
Belə ki, mənə dəyişən adlı bufer vermək ki, bir simli saxlamaq olacaq,
istifadəçi simli edin deyə və sonra, əvvəl kimi,
Bu dərs borc edək scanf % S bu dəfə və sonra bufer keçir.
İndi tez ağlı başında olma çek.
Niyə demirəm işareti bu dəfə bufer?
Əvvəlki misal nəticə çıxarmaq.
Auditoriya: Char ulduz bir göstəricisidir.
DAVID Malan: Məhz, bu dəfə char, çünki
star, artıq bir göstərici, bir ünvanı orada olan ulduz müəyyən.
Və scanf ünvan gözləyirsə, yalnız bufer keçmək kifayətdir.
Mən işareti bufer demək ehtiyac yoxdur.
Maraqlı, siz ola bilər bu kimi bir şey.
Bu, müxtəlif məna olardı.
Bu göstərici verəcək əslində bir göstərici üçün
C, ancaq etibarlı şey İndi sadə saxlamaq imkan
və ardıcıl hekayə saxlamaq.
Mən yalnız keçmək gedirəm bufer ki, doğru deyil.
problem olsa bu.
Mənə davam və bu run edək onu tərtib sonra proqramı.
Scanf 1 olun.
Lanet olsun, bu, mənim compiler nin Mənim səhv tutmaq.
Mənə bir ikinci verin.
Cingilti.
Nin scanf-1.c deyirlər.
OLDU.
Biz orada getmək.
Mənim buna ehtiyacım var.
CS50 ID müxtəlif var konfiqurasiya parametrləri
ki, özünüz qarşı qoruyur.
Mən həmin aradan lazım özünüz bu dəfə cingilti çalışır.
Belə ki, simli edin.
Mən irəli getmək və yazın gedirəm mənim sevimli salam dünyada.
Null, OK.
Mən tipli nə deyil.
Belə ki, göstəricisi var bir şey yanlış olan.
Mənə davam və yazın imkan bir həqiqətən uzun simli.
Null üçün təşəkkür edirik və mən bilmirəm əgər mən onu qəza etmək gedirəm.
Bir az surəti cəhd edək yapışdırıb və bu kömək oldu.
Məhz bu bir çox yapışdırıb.
Bu, mütləq bir böyükdür adi daha string.
Yalnız həqiqətən yazmaq edək.
Yox.
Lənət olsun.
Command tapılmadı.
Belə ki, olmayan var.
Mən yapışdırılır ki, var bəzi pis simvol,
lakin bu çıxır işləmək niyyətində deyil.
>> , Çünki bu bir daha cəhd edək biz, həqiqətən, qəza əgər daha çox əyləncə var.
Bu yazın edək və indi, mən həqiqətən uzun simli surəti gedir
və indi əgər görək biz bu şey qəza bilər.
Mən boşluq çıxarılmışdır və bildiriş yeni xətləri və semicolons
bütün funky simvol.
Daxil edin.
İndi şəbəkə yalnız yavaş olan oldu.
Mən aydın çox uzun Command-V aşağı keçirilib.
Lənət olsun!
Command tapılmadı.
>> OLDU.
Yaxşı, nöqtə yenə aşağıdakı.
Belə ki, həqiqətən gedir nə Bu bəyannamə ilə
line 16 char ulduz bufer?
Belə ki, əldə nə am Mən bir pointer elan zaman?
Alıram bütün dörd byte dəyəri bufer adlanır, lakin onun daxilində nə var
Hal-hazırda?
Bu, sadəcə bəzi zibil dəyəri var.
Hər hansı bir zamanda, çünki bir dəyişən elan C, yalnız bəzi zibil dəyəri var,
və biz başlanğıc edirik Bu reallıq üzərində səfər.
İndi scanf demək zaman, bu ünvana getmək
və nə istifadəçi növləri qoydu.
Istifadəçi növləri əgər salam dünya, yaxşı, mən harada qoymaq bilərəm?
Buffer bir zibil dəyəri.
>> Belə ki, ox kimi növ var ki, harada bilir işarə edir.
Bəlkə işarə burada mənim yaddaş.
Və belə zaman istifadəçi salam dünyada növləri,
Proqram çalışır string salam dünya backslash 0
yaddaş ki, yığın.
Lakin yüksək ehtimalı ilə, lakin aydın deyil 100% ehtimalı,
Kompüter sonra qəza gedir proqramı bu deyil, çünki
yaddaş I toxunmaq icazə verilməlidir.
Belə ki, qısa, bu proqram məhz səbəbdən qüsurlu.
Mən əsaslı nə deyiləm?
Hansı addımları Mən yalnız kimi, çıxarılmışdır var biz Binky nin ilk nümunəsi ilə çıxarılmışdır?
Evet?
>> Auditoriya: Yaddaş ayrılması?
>> DAVID Malan: Yaddaş ayrılması.
Mən, həqiqətən, ayrılan deyil ki, simli üçün hər hansı bir yaddaş.
Beləliklə, biz yolları bir neçə bu düzeltebilirsiniz.
Bir, biz sadə saxlamaq bilər və əslində, indi istəyirik
bir blurring görmək üçün başlamaq niyyətindədir nə arasında xətləri
bir sıra, bir string nə, nə var char ulduz chars nə bir sıra edir
edir.
Burada ikinci bir misal var strings və bildiriş cəlb
bütün Mən line etdik 16 əvəzinə söyləyərək edir
ki, bufer bir char olacaq star, yaddaş yığın bir göstərici,
Mən çox fəal vermək gedirəm 16 simvol üçün özümü bir bufer,
və əslində, tanış değilseniz müddətli Buffering ilə,
yəqin ki, video dünyanın, bir video buffering, buffering olduğu,
buffering.
Yaxşı, əlaqəsi burada nə var?
YouTube Yaxşı, Inside və video oyunçuların daxili
ümumiyyətlə bir sıra edir 16-dən çox böyükdür.
Bu ölçüsü bir bir sıra ola bilər MB, bəlkə 10 megabayt,
ki, array daxil brauzerinizin yoxdur , bayt bütün dəstə download
megabayt bütün dəstə video, və video player,
YouTube və ya kim var, başlayır ki array bayt oxu,
və hər zaman görmək söz buffering, buffering,
oyunçu var deməkdir ki, serialın sonunda kazanılmış.
şəbəkə deyil ki, belə yavaş daha bayt ilə array artırıldığı
və siz bit bitti istifadəçi keçirmək üçün.
>> Belə ki, bufer bir apt müddətli ki, burada yalnız bir sıra, yaddaş yığın var.
Və bu düzeltmek edəcək bu çıxır, çünki
serialların müalicə edə bilər ki, sanki hətta bufer baxmayaraq, ünvanları
yalnız bir simvolu, bir var edir simvol ardıcıllıqla, bufer,
mənim üçün faydalıdır, proqramçı, Əgər ətrafında onun adı keçə bilər
Bu sanki bir pointer, kimi olsa
bir yığın ünvanı idi 16 chars üçün yaddaş.
Ki, belə ki, mən keçə bilər tam scanf söz
və indi, mən bu proqram etmək, scanf 2 etmək, dot çizgi scanf 2,
və yazın salam dünya, Ki, sýrada daxil edin
>> Hmm, nə oldu?
String edin.
Mən yanlış nə idi?
Salam dünya, bufer.
Salam Dünya.
Ah, mən bunu nə bilirik.
OLDU.
Belə ki, bu qədər oxu ilk kosmik qədər.
Belə ki, yalnız bir an fırıldaqçı imkan və Mən yalnız bir şey yazın istədiyini deyirlər
həqiqətən uzun bu uzun cümlə kimi ki, bir, iki, üç, dörd, beş,
altı, yeddi, səkkiz, doqquz, 10, 11, 12, 13, 14, 15, 16.
OLDU.
Bu, həqiqətən uzun cümlə.
Belə ki, bu cümlə artıq 16 simvol
və mən daxil edin hit zaman nə baş verəcək?
Yaxşı, bu halda hekayə, mən elan etdi bufer
həqiqətən bir sıra olan getmək üçün 16 chars hazır.
Belə bir, iki, üç, dörd, beş, altı, yeddi, səkkiz, doqquz, 10, 11, 12, 13, 14,
15, 16.
Belə ki, 16 simvol və indi mən Bu uzun kimi bir şey oxumaq
cümlə, nə etmək olacaq Mən bu oxumaq gedirəm ki, uzun
S-E-N-T-E-N-C-E, cümlə.
>> Belə ki, bu qəsdən deyil pis bir şey ki, mən
kənarda yazılı saxlamaq Mənim serialın sərhədləri,
Mənim bufer hüdudlarından kənarda.
Mən xoşbəxt və proqram ala bilər qayğı çalışan saxlamaq və deyil,
lakin ümumiyyətlə, bu danışan Həqiqətən mənim proqram qəza edəcək,
və bir səhv mənim Mən addım an kod
hüdudlarından kənarda ki, serialın, çünki
bu əgər bilmirəm mütləq qəza gedir
və ya yalnız şanslı almaq üçün gedirəm əgər.
Belə ki, bu problemlidir, çünki Bu halda, bu iş görünür etmir
və hətta baxmayaraq ki, burada taleyi aldatmaq imkan IDE bir qədər dözmək görünür
of--
>> Biz orada getmək.
Nəhayət.
Mən bu edə bilərsiniz yalnız bir deyiləm.
Mən yalnız əyləncə yazaraq bir çox idi həqiqətən uzun faktiki söz həyata
əlbəttə ötüb ki, 16 bytes, çünki
Bu crazy uzun multi-line tipli söz, sonra nə görürsünüz.
proqram çap cəhd və sonra bir seqmentasiya günah var
və seqmentləşdirmə çatışmazlıqlar zaman bu kimi bir şey olur
və əməliyyat sistemi deyir heç bir ki, yaddaş toxuna bilməz.
Biz öldürmək olacaq cəmi proqramı.
>> Belə ki, bu problemli görünür.
Mən proqram vasitəsi təkmilləşdirilmiş etdik ən azı, bəzi yaddaş
lakin bu məhdudlaşdırmaq görünür əldə funksiyası GetString
bəzi məhdud uzunluğu 16 strings.
Artıq dəstək istəyirsinizsə Belə ki, 16 simvol cümlələr,
Sən nə edirsən?
Yaxşı, siz artıra bilər 32 bu bufer ölçüsü
və ya bu cür qısa görünür.
Niyə biz yalnız yoxdur 1000 lakin geri itələmək.
Daxilən cavab nədir yalnız edərək bu problemi aradan qaldırılması
1000 chars kimi, böyük mənim bufer?
Bu şəkildə GetString həyata keçirməklə.
Burada yaxşı və ya pis?
Evet?
Auditoriya: siz bir çox məcburidir varsa yer və siz onu istifadə etməyin,
sonra siz ki, yer təkrar bölüşdürə bilməz.
DAVID Malan: Absolutely.
Siz deyil insofar kimi bu israfçı var həqiqətən o bayt 900 lazımdır
və hələ üçün xahiş edirik Hər halda cəmi 1000,
Siz yalnız daha çox yaddaş istehlak edirik sizə lazım çox istifadəçi kompüter,
və bütün bir sonra Əgər siz artıq karşılaştıysanız
həyat sizə etdiyiniz zaman ki, proqramları çox çalışan
və onlar yaddaş çox qədər yemək edirik Bu, həqiqətən, performans təsir edə bilər
və istifadəçi təcrübəsi kompüter.
Belə ki, belə bir tənbəl həll, əmin üçün, və əksinə,
Bu yalnız israfçı var, nə problem hələ mən bufer etmək olsa da, qalır
1000?
Evet?
>> Auditoriya: simli uzunluğu 1,001 edir.
DAVID Malan: Məhz.
Sizin string uzunluğu 1,001 varsa, Siz eyni problem var,
və dəlil ilə, mən yalnız o 2000 etmək
ancaq bilmirəm bu olmalıdır necə böyük inkişaf,
və hələ, mən proqram tərtib etmək lazımdır insanlar istifadə imkan əvvəl və download
Bu.
Belə ki, bu tam növüdür stuff CS50 kitabxana çalışır ki,
ilə bizə kömək və biz yalnız nəzər lazımdır üçün əsas həyata bəzi
Burada, lakin bu CS50 dot C. Bu CS50 IDE olmuşdur ki, fayl
Siz istifadə etdiyiniz bütün bu həftə.
Bu pre-tərtib və siz var avtomatik olaraq istifadə edilmişdir
olan təbiət cingilti ilə L CS50 bayrağı dash,
amma bütün vasitəsilə aşağı diyirləyin əgər bu funksiyaları, burada GetString var,
və yalnız bir vermək nə dadı olur
nin bir sürətli nəzər salaq nisbi mürəkkəbliyi.
Bu super uzun funksiyası, lakin biz olmadı
bütün ağır düşünmək lazımdır necə strings alınması haqqında getmək üçün.
>> Belə ki, burada mənim bufer və mən var yəqin null onu başlamaq.
Bu, əlbəttə, char ulduz kimi eyni şey,
amma qərar CS50 kitabxana həyata
biz olacaq əgər ki, tamamilə dinamik
Mən necə böyük əvvəlcədən bilmirəm string users almaq istəyirəm edir.
Belə ki, başlamaq üçün gedirəm yalnız bir boş simli ilə
və mən daha çox yaratmaq üçün gedirəm Yaddaş Mən istifadəçi simli uyğun lazımdır
Mən yoxsa kifayət qədər, mən xahiş gidiyorum
daha çox yaddaş üçün əməliyyat sistemi.
Mən onların simli hərəkət gedirəm yaddaş böyük bir yığın daxil
və mən azad və ya azad gedirəm yaddaş kifayət qədər böyük bir yığın
və biz yalnız olacaq iteratively bunu.
>> Belə ki, bir Söyle, Burada yalnız bir dəyişən var
olan I takip gedirəm Mənim bufer tutumu.
Neçə bytes uyğun?
Burada dəyişən n ilə var Mən saxlamaq üçün gedirəm olan
həqiqətən neçə bayt track istifadəçi çap və ya ki, bufer.
Siz əvvəl bu görmədim varsa, siz daxil edə bilərsiniz ki, bir int kimi bir dəyişən
, adı təklif kimi olan, imzasız edir deməkdir qeyri-mənfi, və niyə
Mən heç ifadə narahat istəyirəm bir int yalnız bir int deyil ki,
lakin bir imzasız int var?
Bu qeyri-mənfi int var.
[Işitilemez] nə deməkdir?
>> Auditoriya: Bu məbləğ izah edir yaddaş [Işitilemez] ola bilər.
>> DAVID Malan: Bəli.
Mən imzasız demək Belə ki, bu əslində əlavə yaddaş bir az verilməsi
əgər və silly cür görünür, lakin , əlavə yaddaş bir az var
bir çox kimi iki dəfə var deməkdir Siz təmsil edə bilər dəyərləri,
bir 0 və ya 1 ola bilər, çünki.
Belə ki, ismarıcları, bir int təxminən ola bilər mənfi 2 milyard bütün yolu
müsbət 2 milyard qədər.
Bu böyük silsilələri, lakin hələ də cür israfçı var
Yalnız qayğı əgər ölçüləri olan yalnız daxilən
mənfi olmayan olmalıdır və ya müsbət və ya 0, yaxşı, sonra,
niyə 2 milyard israf edilir mənfi nömrələri üçün mümkün dəyərlər
heç vaxt onlara istifadə etmək olacaq əgər?
Belə bilərsiniz imzasız, indi mənim int deyərək 4 milyard 0 arasında təxminən olun.
>> Belə ki, burada səbəblərdən yalnız bir int C var biz yalnız indi daxil deyil
Bu əvəzinə int nə üçün bir char, lakin burada
neler mahiyyət Siz və bəzi
məsələn, istifadə edilə bilər, hətta pset dörd fgetc funksiyası
və ya sonra, biz bunu görəcəyik yenidən problem beş, müəyyən
fgetc çünki adı kimi gözəl növ, sort arcanely təklif
bu bir funksiyası var ki, Bir xarakter alır və belə
nə əsaslı müxtəlif biz GetString işle haqqında
biz istifadə etdiyiniz deyil eyni şəkildə scanf.
Biz yalnız addım-addım boyunca sürünən olunur nə üzərində istifadəçi tipli,
biz həmişə bir ayıra bilər, çünki char, və biz həmişə təhlükəsiz edə bilərsiniz
bir-bir char baxmaq və sehrli burada baş başlayır.
Mən aşağı diyirləyin gedirəm Bu funksiya orta
yalnız qısa bu funksiyanı təqdim etmək.
Çox var kimi malloc funksiyası var
bir realloc funksiyası olduğu realloc Siz yaddaş yığın təkrar bölüşdürə imkan verir
və bu böyük və ya kiçik etmək.
Belə ki, uzun hekayə qısa və Bu gün əlimdə bir dalğa,
nə GetString bilir edir ki, sort var edir
bir magically artan və ya istifadəçi kimi bufer azalan
onun simli növləri.
>> Belə ki, əgər istifadəçi bir qısa string, bu kodu
yalnız kifayət qədər vəsait ayırıb yaddaş simli uyğun.
Istifadəçi yazaraq saxlayır Mən bir daha və yenidən kimi
və yenidən, yaxşı, əgər bufer nin ilkin bu böyük
və proqram həyata keçirir bir dəqiqə gözləyin, mən kosmik həyata deyiləm,
Bu ikiqat olacaq bufer ölçüsü
və sonra bufer ölçüsü ikiqat və misli yoxdur indeksi,
Biz burada baxmaq əgər, bu bu ağıllı bir-liner.
Bu sintaksis görmüşəm bilər əvvəl, ancaq ulduz bərabərdir demək əgər,
Bu eyni şey kimi gücü dəfə 2 söyləyərək.
Belə ki, yalnız misli saxlayır bufer tutumu
və sonra realloc izah vermək özü ki, daha çox yaddaş.
>> İndi kimi bir kənara var Burada digər funksiyaları
Biz hər hansı bir detal baxmaq deyil ki, GetInt göstərmək üçün başqa,
biz GetInt GetString istifadə edin.
Biz bu deyil ki, yoxlamaq null, olan, geri,
xüsusi dəyər ki, bir şey yanlış getdi deməkdir.
Biz yaddaş bitti.
Better ki yoxlayın.
Və biz bir sentinel dəyər qayıtmaq.
Amma kimi şərh təxirə lazımdır niyə sonra biz scanf bu əmisi oğlu istifadə
sscanf adlanır və bu çıxır ki sscanf, və ya simli scanf,
Siz line nəzər imkan verir ki, istifadəçi tipli və imkan edib
mahiyyətcə təhlil və mən nə Burada bunu mən sscanf deyirəm ki,
istifadəçi var nə təhlil Yığdığınız və əmin% i etmək,
Orada bir tam və biz deyil də var dəqiq niyə bu gün daxil
Özetle bir% burada c, lakin imkan verir istifadəçi tipli əgər bizə aşkar etmək üçün
sıra sonra saxta bir şey.
Belə ki, səbəb ki, GetInt və GetString yeniden, yeniden sizə, yeniden
çünki bütün edir biz yazdıq ki indeksi,
bu cür istifadəçi girişinə axtarır əmin edilməsi tamamilə rəqəmli var
və ya faktiki üzən var point dəyəri və ya kimi,
nə dəyərindən asılı olaraq istifadə etdiyiniz fəaliyyət göstərir.
>> Whew.
OLDU.
Ki, bir qurtum idi lakin baxımından burada
ki, biz idi səbəbi bu təlim təkərlər haqqında
Çünki ən aşağı səviyyədədir yalnız çox şey var ki,
istədik ki, yanlış getmək bilər preemptively idarə etmək
əlbəttə o şeyi sinif erkən həftə,
lakin indi pset dörd və pset beş ilə kənarda ona daha çox olduğunu görəcəksiniz
Siz həm də daha çox qadir olduğunuz problemləri bu cür həll
Özünüz.
GetString ya GetInt hər hansı suallar?
Evet?
>> Auditoriya: Niyə iki dəfə olardı bufer tutumu
deyil, yalnız artan çox Bu dəqiq məbləği?
>> DAVID Malan: Yaxşı sualdır.
Niyə biz gücü iki dəfə olardı Bufer fərqli olaraq
yalnız artan bəzi sabit dəyər?
Bu dizayn qərar idi.
Biz yalnız çalışır, çünki ki, qərar vaxt müdrik bahalı az xahiş olmaq
əməliyyat sistemi yaddaş üçün, biz etmədik
minərkən başa istəyirəm böyük strings üçün bir vəziyyət
biz xahiş edilmişdir ki, Təkrar OS
və yenidən və yenidən Yaddaş üçün sürətli ardıcıllıqla.
Belə ki, biz yalnız bir qədər qərar özbaşına lakin biz əsaslı ümid,
ki, siz edək nə irəlidə özümüz almaq üçün cəhd
və yalnız ki, bunu iki dəfə saxlamaq biz dəfə məbləği azaltmaq
biz malloc zəng etmək və ya realloc, lakin ümumi qərar
bilmədən olmaması zəng Nə istifadəçilər yazın edə bilərsiniz.
Hər iki yolları əsaslı ola bilər.
Arguably yaxşı.
>> Belə ki, bir neçə nəzər salaq Yaddaş digər yan təsirləri,
yanlış getmək bilər şeylər və alətləri bilərsiniz
səhvlər bu cür tutmaq üçün istifadə edin.
Bu baxmayaraq, siz bütün çıxır check50, siz kimi çox bildirmədi
arabası yazılı edilmişdir Həftə bəri indeksi,
hətta bütün check50 testlər əgər keçdi və hətta sizin və TF
ki, super əminik nəzərdə tutulan kimi code işləyir.
Sizin kodu arabası olmuşdur və ya Siz ki, bütün flawed,
CS50 kitabxana istifadə, yaddaş sızan edilmişdir.
Siz əməliyyat sistemi xahiş etdik proqramların ən xatirə
Siz yazdıq, lakin siz var həqiqətən geri heç vaxt.
Siz GetString adlı etdik və GetInt və GetFloat,
lakin GetString ilə, siz var unGetString və ya ver adlı heç vaxt
String Back ya kimi, lakin biz gördük GetString yaddaş ayrılması ki,
malloc yolu və ya bu yalnız funksiyası realloc,
ruhunda çox oxşar, və hələ biz oldum
üçün əməliyyat sistemi xahiş yaddaşı və yaddaş təkrar
lakin onu geri verilməsi heç vaxt.
>> İndi kənara kimi, bu çıxır ki, bir proqram yaddaş bütün fit zaman
avtomatik azad olunur.
Belə ki, böyük bir şey olmuşdur deyil.
Bu qırmaq niyyətində deyil IDE və ya yavaş şeyi aşağı,
lakin zaman proqramları yoxdur ümumiyyətlə yaddaş sızma
və onlar uzun müddət çalışan edirik.
Əgər axmaq az gördüm varsa Mac OS və ya hourglass çimərlik top
Windows bu cür olduğu aşağı yavaşlatan və ya düşüncə və ya düşüncə
və ya yalnız həqiqətən başlayır bir tarama üçün yavaş,
bu, çox bəlkə ola bilər yaddaş sızması nəticəsində baş.
yazdı proqramçılar istifadə etdiyiniz proqram
yaddaş üçün əməliyyat sistemi xahiş bir neçə dəqiqə, hər saat.
Amma yayınlıyorsanız Bu belə software,
Sizin kompüter minimuma sonunda saat və ya gün,
Daha çox və daha çox üçün xahiş edilə bilər yaddaş və əslində heç istifadə
və sizin code ola bilər, və ya proqramları, yaddaş sızması ola bilər
və yaddaş sızma başlamaq əgər, digər proqramları üçün daha az yaddaş var,
və təsiri edir hər şeyi aşağı yavaş.
>> İndi, bu günə qədər biri ilə ən dəhşətli proqramları
Siz imkanlar var CS50 run insofar
onun çıxış daha çox ezoterik kimi cingilti və ya nin və ya komanda hər hansı
biz əvvəl etdik line proqramları lakin təşəkkürlə, onun çıxışı əlaqədar
bəzi super faydalı məsləhətləri ki, faydalı bilərsiniz pset dörd olacaq
və ya əlbəttə beş pset.
Belə Valgrind bir vasitədir ki, baxmaq üçün istifadə edilə bilər
proqram yaddaş sızıntıları üçün.
Bu çalıştırmak üçün nisbətən sadə.
Siz hətta valgrind və sonra run bir az verbose baxmayaraq,
dash dash qaçağı tam bərabərdir, və sonra dot
doğramaq və proqram adı.
Belə ki, valgrind sonra proqramı davam edəcək və proqram çox sonunda
fit əvvəl çalışan və , başqa bir tez verir
Bu təhlil etmək olacaq sizin Bu proqram çalışan edilmişdir isə
və siz sızma idi demək daha yaxşı hələ hər hansı bir yaddaş və,
Siz yaddaş toxunmaq ki, Sizə aid deyil?
O hər şeyi tutmaq bilməz, lakin bu ən şey tutmaq olduqca yaxşı.
>> Belə ki, burada mənim olan run bir misal var Bu proqram, run Valgrind olan,
adlı proqramı üzrə yaddaş və mən gedirəm
xətləri qeyd etmək nəticədə bizim üçün maraq.
Belə ki, daha çox distractions var Mən slayd silindi etdik ki.
Amma yalnız nə bu görək Proqram izah etməyə qadirdir.
Bu, bizə hər şeyi izah qadir ölçüsü 4 etibarsız yazmaq kimi.
Başqa sözlə, siz yaddaş toxunmaq, əgər, Yaddaş xüsusi 4 bayt
Siz var ki, valgrind sizə deyə bilərəm ki.
Ölçüsü 4 Yanlış yazmaq.
Siz dörd bayt toxunub Siz var ki,.
Harada siz bunu etdiniz?
Bu gözəllik deyil.
Yaddaş dot c line 21 harada var qıfıllar və faydalıdır edirdi.
Çox gdb kimi, bu kömək edə bilər faktiki səhv qeyd.
>> İndi, bu bir az daha var verbose, confusing əgər.
1 blok 40 bayt mütləq loss rekord 1 1 itirdi.
Bunun mənası nədir?
Bəli, bu yalnız sizin üçün xahiş deməkdir 40 bytes və onu geri verdi, heç vaxt.
Siz malloc adlı ya adlı GetString və əməliyyat sistemi
40 bytes, ancaq heç vaxt verdi azad və ya yaddaş azad,
və ədalətli olmaq, biz heç etdik Siz necə yaddaş geri vermək.
Super var çıxır sadə funksiyası pulsuz çağırıb.
Bir dəlil, şey edir Siz pulsuz və ya geri vermək istəyirəm
lakin 40 bayt, yəqin, Bu proqram
xəttində itirmişdir Yaddaş 20 c nöqtə.
>> Belə ki, bu proqram görək.
Bu super yararsız var.
Bu, yalnız nümayiş etdirir bu səhv.
Belə ki, bir nəzər salaq.
Burada əsas və əsas, bildiriş, zənglər edir bir funksiyası f və sonra yekunları çağırıb.
Belə ki, bütün maraqlı deyil.
F nə edir?
Mən bir prototip ilə narahat etmədi edək.
Mən kodu saxlamaq istəyirdi mümkün qədər minimal.
Belə ki, əsas yuxarıda f qoymaq və ki, əlbəttə, gözəl
bu kimi qısa proqramları üçün.
Belə ki, f şey qayıtmaq və etmir Biz bir şey almaq, lakin bunu etmir.
Bu çox kimi bəyan edir Binky məsələn,
ki, x adlı göstərici olacaq bir int ünvanı saxlamaq üçün.
Belə ki, sol tərəfi var.
İngilis, nə bunu sağ tərəfində?
Hər kəs?
Bu, bizim üçün nə edir?
Evet?
>> Auditoriya: [işitilemez] dəfə bir int ölçüsü
olan 10 dəfə ki, [işitilemez]
DAVID Malan: Yaxşı və mənə yekunlaşdırmaq bildirin.
Belə ki, 10 integers üçün kifayət qədər yer ayırmaq və ya 10, bir int ölçüsü, nə
4 dörd bayt, belə ki, 10 dəfə var 40, mən etdik ki sağ tərəfində belə
Qeyd mənə 40 bayt verir və ilk byte ünvan saxlamaq
x daxil.
İndi nəhayət, burada harada Bu proqram arabası, nə var
line 21 ilə yanlış məntiq əsasında?
Nə line 21 ilə yanlış var?
Evet?
Auditoriya: Siz edə bilərsiniz [Işitilemez] x daxil index.
DAVID Malan: Bəli.
Mən belə x daxil index olmamalıdır.
Belə syntactically, ki, OK.
Nə gözəl sizin kimi çox deyil bir sıra adını müalicə edə bilər
sanki eyni, bir göstərici var bu sanki bir göstərici müalicə edə bilər
bir sıra və mən syntactically bilər x bracket bir şey demək, x bracket i,
lakin 10 problemlidir.
Niyə?
>> Auditoriya: daxili deyil, çünki.
>> DAVID Malan: Bu deyil yaddaş ki, yığın daxilində.
Böyük dəyəri Mən lazım deyil o kvadrat mötərizədə qoyulması?
9 9, 0.
Sıfır indeksləşdirilməsi Çünki.
Belə ki, 9 vasitəsilə 0 gözəl olardı.
Bracket 10 yaxşı deyil və lakin, hər dəfə olsa geri
Mən CS50 IDE etmək üçün cəhd görünür saxta dəyərlər yazaraq crash,
Bu həmişə əməkdaşlıq etmir və həqiqətən, tez-tez
uğurlu olsun yalnız çünki əməliyyat sistemi deyil
qeyd ki, heç belə yüngül yaddaş bəzi yığın keçmək,
Əgər texniki daxilində qaldı, çünki Sizin segment, lakin daha çox ki,
əməliyyat sistemləri sinif, bu kimi bir şey
çox asanlıqla undetected getmək bilər.
Proqram heç qəza olacaq ardıcıl amma bəlkə dəfə biraz.
>> Və belə ki, Valgrind edək Bu və burada
biz overwhelmed almaq lazımdır an çıxdı.
Belə ki, yaddaş valgrind sızıntısı çek etmək tam dot çizgi yaddaş bərabərdir.
Mən söz verirəm niyə və burada Bu əzmək olar.
Burada valgrind, burada nə var nə var proqramçı, bir neçə il ago-
yaxşı bir fikir olardı qərar kimi çıxış baxmaq üçün.
Belə ki, bu mənada edək.
Sol tərəfdən belə ki, bütün yol heç bir yaxşı səbəbdən yan
proqram prosesi ID edir biz yalnız, benzersiz bir tanıdan run
Proqram üçün biz yalnız qaçdı.
Biz ki, silindi slide, lakin
Burada bəzi faydalı məlumatlar var.
>> Çox üst diyirləyin edək.
Biz başladı burada.
Belə ki, bütün çox çıxış deyil.
Burada yalnış yazmaq deyil xətti 21 ölçülü 4.
Yaxşı, line 21 nə idi?
Line 21 dəqiq idi Bu və bu mənada edir
Mən validly da deyiləm ki, Mən deyiləm, çünki 4 bayt yazılı
Bu tam qoymaq üçün çalışırıq, ki, bir şey ola bilər
yalnız olmaq olur sıfır, amma çalışıram
bir yerdə qoymaq üçün ki, mənə aid deyil.
Bir Bundan əlavə, aşağı burada, 40 bytes blokları mütləq rekord 1 itir.
Mən malloc zəng zaman, çünki burada, mən, həqiqətən, yaddaş azad, heç vaxt.
>> Belə ki, necə biz bu düzeltmek bilər?
Mənə davam edək və bir az daha təhlükəsiz olmaq və orada 9 və burada pulsuz x mənə bildirin.
Bu gün yeni funksiyası var.
İndi yaddaş dot çizgi etmək təkrar varsa, , yenidən bu valgrind run edək
Mənim pəncərə maksimize və Enter düyməsini basın.
İndi, bu yaxşıdır.
Onlar yaxşı xəbər basdırmaq Bu çıxış bütün.
Bütün yığın blokları pulsuz idi.
Biz nə yığın geri gəlmək lazımdır , lakin heç bir sızması mümkündür.
Belə ki, bu yalnız bir deyil Sizin alət dəsti üçün alət
olan siz başlaya bilərsiniz İndi kimi səhv tapmaq.
>> Amma görək nə daha zalım burada edə bilərsiniz.
Indi keçid edək həqiqətən bir problem həll.
Bir kənara kimi, bu azad edəcək qarışıqlıq və ya gərginlik az,
bu artıq gülməli deyil.
Bəli.
Bu olduqca yaxşı.
Göstəricilərinə Çünki ünvanları və ünvanları
Konvensiya ilə ümumiyyətlə hexadecimal ilə yazılı.
Ha, ha, indi gülməli deyil.
Afərin, belə ki, indi edək həqiqətən bir problem həll edir.
Bu super olmuşdur super indiyə qədər aşağı səviyyədə,
və biz, həqiqətən faydalı edə bilərsiniz bu aşağı səviyyədə detalları ilə hər şeyi.
>> Beləliklə, biz bir neçə həftə təqdim əvvəl bir sıra anlayışı.
Bir sıra gözəl idi, çünki bu, bizim kodu təmizləmək çətindir
Biz yazmaq istəyirdi, çünki Çox tələbələri ilə proqram
və ya bir neçə adları və ev və yurdda və kollec və ki, bütün,
biz hər şeyi daha çox saxlamaq bilər temiz bir sıra daxilində.
Amma bir İşin mənfi tərəfi odur təklif bir sıra indiyə qədər.
Siz özünüz əziyyət etdik, hətta bir proqramda, yalnız qeyri-iradi,
pis bir şey nə bir sıra haqqında, bəlkə?
Mən bəzi murmurs eşitmək.
Auditoriya: Bu çətindir ölçüsünü dəyişdirmək üçün.
DAVID Malan: Bu çətindir ölçüsünü dəyişdirmək üçün.
Siz ölçüsü dəyişə bilməz bir sıra, əslində, özlüyündə
C. Başqa bir sıra ayıra bilər, köhnə bir şeyi hərəkət
İndi yeni və daxil bəzi əlavə yer var,
ancaq bir kimi deyil Java və ya Python kimi dil
və ya digər hər hansı bir sayı ilə dillərində bəzi
tanış ola bilər harada şeyi əlavə edə bilərsiniz
bir sıra sonuna reklam nauseam.
Siz bir sıra zaman onun ölçüsü ölçüsü 6,
və ideya kimi əvvəllər qədər müəyyən bir ölçüsü bir bufer olan,
Siz qapısı həyata tahmin var nə ölçüsü siz olmaq istəyirsiniz?
Siz çox böyük tahmin varsa, Siz yer israf edirik.
Çox kiçik tahmin varsa, siz ən azı, ki, məlumat saxlamaq olmaz
daha çox iş olmadan.
>> Göstəricilərinə Belə ki, bu gün, thanks, biz birlikdə öz xüsusi stitching başlamaq
data strukturları, və Əslində burada bir şey deyil
ki, bir az daha görünür ilk baxışdan sirli,
lakin bu, biz bir bağlı zəng edəcəyik nə siyahısı, və ümumiləşdirir onun adı cür
Bu.
Bu nömrələri siyahısı, və ya Bu halda, nömrələri siyahısı,
lakin bir şey siyahısı ola bilər, lakin bilər Bu, birlikdə oxlar yolu ilə bağlı oldu
və yalnız bir tahmin almaq nə texnika ilə
biz mümkün olacaq birlikdə stitch,
sort bir mövzu ilə popcorn kimi, burada siyahıları düzbucaqlı bağlıdır?
Onun nömrələri?
Əsas dil xüsusiyyət nədir?
>> Auditoriya: A pointer.
>> DAVID Malan: A pointer.
Belə ki, bu oxlar hər burada təmsil bir pointer və ya yalnız bir ünvanı.
Belə ki, başqa sözlə, mən istəyirəm nömrələrin siyahısı saxlamaq üçün,
Mən istəyirəm, mən yalnız onu saxlamaq bilməz inkişaf və shrink imkanı
bir sıra mənim data strukturu.
Mən bir az lazımdır daha sophistication,
lakin bu fark şəkil cür təklif
Siz yalnız kiçik mövzuları var, əgər ki, birlikdə hər şey birləşdirən,
yəqin ki, yer etmək çətin deyil o düzbucaqlı arasında iki
və ya bu qovşaqlarının iki biz başlamaq lazımdır yeni node qoymaq, onlara zəng,
və sonra bəzi yeni mövzu ilə, yalnız üç qovşaqlarının xəndək,
Birincisi, son bir, bir Yalnız orta daxil ki.
>> Həqiqətən bir bağlı siyahı, bir sıra fərqli olaraq, dinamik.
Bu inkişaf edə bilər və ola bilər shrink və siz deyil
bilmək və ya əvvəlcədən necə qayğı var qədər data siz saxlanılması olacaq,
lakin biz bir az olmalıdır çıxır Bu həyata necə haqqında ehtiyatlı.
Belə ki, ilk biz həyata necə hesab edək bu kiçik düzbucaqlı biridir.
Bu int həyata keçirilməsi üçün asandır.
Siz yalnız sonra int n və demək Bir int 4 bayt almaq,
amma bir int almaq necə, n zəng və sonra bir pointer, növbəti zəng edək.
Biz bu zəng edə bilər Şeyi bir şey istəyirik
amma xüsusi data strukturu lazımdır.
Evet?
>> Auditoriya: Ampersand [işitilemez].
>> DAVID Malan: Belə ki, işareti biz istifadə edəcək potensial bir node ünvanını almaq.
Amma biz başqa lazımdır C xüsusiyyət üçün
Mənə yaratmaq imkanı verir Bu xüsusi düzbucaqlı, bu xüsusi
dəyişən siz yaddaş, olacaq.
Auditoriya: A struct.
DAVID Malan: A struct.
Keçən həftə geri, biz təqdim struct, bu nisbətən sadə söz
ki, bizə bu kimi şeylər etmək imkanı verir.
C məlumatları ilə gəlmədi strukturu tələbə çağırıb.
Bu int və float və char və ilə gəlir Belə, lakin tələbə ilə gəlmək deyil,
lakin biz bir tələbə data növü yarada, Bu sintaksis ilə bir tələbə strukturu,
burada.
Və təkrar bu görəcəksiniz.
Belə ki, narahat etmir açar sözlər ezberlemeye,
lakin vacibdir söz deyil dedik ki, yalnız fakt struct
sonra biz bu tələbə adlanır və daxili tələbə adı və bir ev idi
bir yurt və ya kimi və ya.
>> Və indi, bu gün, bu təklif edək.
Mən bir neçə söz əlavə, amma istəyirsinizsə sonra ki, bu düzbucaqlı həyata keçirilməsi üçün
bir int və bir də var pointer, siz, mən nə deyiləm bilirik
node adlı struct bəyan olacaq.
Mən demək gedir, onun daxilində də deyiləm bir node, bu düzbucaqlı, bir int var ki,
və biz zəng edəcəyik n və Bu növbəti göstərici var.
Bu, bir az verbose deyil lakin bu barədə düşünüyorsanız,
şəkil idi oxlar bir an əvvəl nə data növü var?
Harada o oxlar hər işarə edir məlumat strukturu hansı növ üçün necə?
Bu, sadəcə se başına bir int işarə deyil.
Bu işarə bütün düzbucaqlı şey
ki, düzbucaqlı şey, bir node adlanır bildirib.
Və belə ki, biz cür var recursively bu cür müəyyən
bir node ki, biz deyəcəklər n adlı int ehtiva edir
və bir pointer növbəti adlanır data strukturu növü
ki, pointer xal yəqin deyil struct node olacaq.
>> Belə ki, bu annoyingly verbose deyil və yalnız xırdaçı olmaq
səbəbi biz bilməz yalnız bu demək olan səmimi
, daha çox oxunaqlı görünür geri oxumaq C ki, çünki
hər şeyi alt üst, sağ.
Biz nöqtəli vergül almaq qədər bu deyil söz node həqiqətən mövcud olduğunu.
Biz bu cür etmək istəyirsinizsə Belə ki, məlumatların daxilində cyclical arayış
strukturu, biz bunu, harada biz, üst struct node demək olan
Bizə bu izah uzun yol verir odur ki, biz struct node demək, sonra daxili,
və sonra son line biz demək, bütün sağ, C, yolu ilə,
yalnız bu bütün lənətləmək zəng şey node və dayandırmaq
cəmi söz struct istifadə edərək.
Belə ki, bu yalnız sort bir sintaktik deyil nəticədə bizə yaratmaq imkan verir oyun
məhz bu kimi görünür ki, bir şey.
>> Biz indi güman əgər biz belə C bu şey həyata,
necə həqiqətən biz nə bu traversing başlamaq?
Bəli, əslində, biz nə üçün bütün sağ və yalnız sol olan təkrarlamaq
növ qovşaqlarının daxil və ya qovşaqlarının silmək və ya biz istədiyiniz yerdə şey üçün axtarış,
lakin bunu,-nin irəli getmək və edək hər şeyi bir az daha real Çünki
indiyə qədər super aşağı səviyyəli olmuşdur.
Hər kəs sanki birinci olmaq istəyirsiniz?
OLDU.
Qədər gəlib.
Sənin adın nədir?
>> DAVID: David.
DAVID Malan: David.
Görüşmək Nice.
Məndə həmçinin.
Oldu.
Və biz bir sıra 9 lazımdır.
Kimi yaxşı deyil ilk olaraq, bəlkə də.
OK, sayı 9.
A sayı 17, xahiş edirik.
Mənə bir az uzaq geri gedək.
Number 22, xahiş edirik, və necə uzaq geri haqqında
Mən heç bir əlləri görə bilərsiniz bütün işıq və ya heç bir.
Biri orada könüllü olunur.
Siz gəlmək istəyirsiniz?
Sizin qolun zorla qədər davam edir.
17 OK.
22.
26 aşağı gəlir.
Hər kəsdən istəyirsiniz forcefully-- qədər Hadi.
Faktiki könüllü.
>> Belə ki, çox tez, əgər Sizlərin təşkil edə bilər
özünüzü yalnız kimi ekranda qovşaqlarının.
Təşəkkür edirəm.
Və 26 olacaq.
Bütün hüquqlar və sürətli tətbiqi.
Beləliklə, mən David Ben və siz də var?
DAVID: David.
DAVID Malan: Və siz?
JAKE: Jake.
SUE: Sue.
ALEX: Alex.
RAPHAEL: Raphael.
TAYLOR: Taylor.
DAVID Malan: Taylor.
Əla.
Belə ki, bu, bizim könüllü bu gün və irəli getmək
və yol bir az keçmək və yalnız irəli getmək və saxlamaq
Siz və ya Sizin kimi nömrələri keçirilməsi ilk əlaməti və sol tərəfdən istifadə edərək,
irəli getmək və yalnız həyata bu oxlar, yalnız
Sol tərəfdən sözün ki, Siz qeyd etməlidir nə işarə
və özünüzü ki, bir otaq vermək biz əyani həqiqətən, sizin silah edə bilərsiniz
işarə, və yalnız qeyd edə bilərsiniz sort yerə yaxşıdır.
>> Belə ki, burada biz bir bağlı siyahı var iki, üç, dörd, beş qovşaqlarının ilkin
və biz bu xüsusi var fark var başında pointer
əsas biz takip lazımdır, çünki bütün uzunluğu siyahısı birtəhər.
Onlar tərk edirik, baxmayaraq ki bu uşaqlar, sağ, geri yaddaş geri,
onlar həqiqətən hər yerdə ola bilər kompüter yaddaşında.
Belə ki, bu uşaqlar ola bilər səhnədə yerdə dayanan
və ki, uzun onlar kimi, gözəl həqiqətən bir-birinə işarə edərək,
lakin şeyi saxlamaq üçün təmiz və sadə alacağıq
yalnız onlara çəkmək kimi soldan sağa Bu, lakin kütləvi boşluqlar ola bilər
bu qovşaqlarının arasında.
>> İndi Mən, həqiqətən, bəzi əlavə etmək istəyirsinizsə, yeni dəyər, nin irəli getmək və bunu bildirin.
Biz indi imkanı başqa bir node seçin.
55 mallocing ilə başlamaq edək deyirlər.
Kimsə malloc olan ağla istəyirsiniz?
OK, qədər gəlib.
Sənin adın nədir?
RAINBOW: Rainbow.
DAVID Malan: Rainbow?
Oldu.
Malloc Rainbow.
Qədər gəlib.
Belə ki, indi biz özümüz xahiş var algorithmically biz 55 qoya bilər harada.
Belə ki, hamımızın bilməsi, Aydındır ki, burada o, yəqin ki,
biz çalışdığınız əgər məxsusdur Bu sıralanır saxlamaq
və uşaqlar bir almaq bilər geri addım belə ki, biz off düşmək deyil
mərhələ, böyük olardı.
Belə ki, həqiqətən, Rainbow, Mənimlə burada başlamaq,
çünki biz indi bilərsiniz kompüter yalnız bir zaman bir dəyişən görürük.
Bu ilk node əgər belə.
O, bir node deyil edək o, yalnız bir göstərici var
o cəlb niyə və ki bir göstərici yalnız ölçüsü deyil,
o tam düzbucaqlı biridir.
Belə ki, biz hər yoxlamaq olacaq iteration 9 55 az?
Yox.
17 55 az?
Yox.
22-dən az?
26-dən az?
34-dən az?
Və indi, açıq-aydın Rainbow sonunda məxsusdur.
Belə aydın ola bilər, və nə üçün adı, Taylor idi?
>> TAYLOR: Taylor.
DAVID MALAN: Taylor nin arasında So sol və burada Rainbow əlləri,
Onların əl nə qeyd etmək lazımdır Bu siyahıda 55 əlavə etmək sifariş?
Biz nə etmək lazımdır?
Evet?
>> Auditoriya: Taylor əli sol qeyd etmək lazımdır.
>> DAVID Malan: Məhz.
Belə ki, bir node daxil siyahısı sonunda
olduqca sadə, çünki Taylor yalnız yerə yerinə, qeyd etmək var
və ya biz, null zəng edəcəyik null olmaması sort
bir göstərici və ya xüsusi sıfır pointer, sen
Sizin sol ilə qeyd etmək gedir əl Rainbow və sonra Rainbow,
harada sol olmalıdır əl yəqin ki, qeyd?
Down.
Əlini sort əgər yaxşı deyil burada və ya sort hər hansı bir off işarə edən
yol.
Bu hesab olunacaq zibil dəyəri,
lakin o, işarə, əgər bəzi məlum dəyəri alacağıq
sıfır və ya null zəng, OK bu bir müddət var, çünki
və biz siyahısı indi tam bilirik.
>> Belə ki, nə başqa var nisbətən sadə halda?
Biz 5 malloc bilər?
Qədər gəlib.
Sənin adın nədir?
TIFFANY: Tiffany.
DAVID MALAN: Mən təəssüf edirəm?
TIFFANY: Tiffany.
DAVID Malan: Tiffany.
Oldu.
Tiffany malloced edilmişdir dəyəri 5.
Qədər gəlib.
Bu, çox nisbətən asandır, lakin Indi əməliyyatları üçün nəzərdən keçirək.
Bu olduqca asan idi sonunda Taylor ilə.
Number 5, əlbəttə az 9 daşıyır və biz, biz Tiffany var, David var
və adı nə idi?
>> JAKE: Jake.
>> DAVID Malan: Jake.
Tiffany, Jake, və David.
Kimin əli ilk satıcı tərəfindən aydınlıq olmalıdır?
Siz burada nə etmək istəyirsiniz?
Bir neçə mümkün yolları var, lakin bir və ya daha yanlış yolları da var.
>> Auditoriya: leftmost ilə başlayın.
>> DAVID Malan: leftmost ilə başlayın.
Kim sonra burada leftmost var?
Auditoriya: First.
>> DAVID Malan: OK.
Belə ki, ilk ilə başlamaq və siz harada nə Davudun əlləri olmaq yeniləmək istəyirsiniz?
Auditoriya: 5 doğru.
DAVID Malan: OK.
Beş Belə ki, David, point və ya Tiffany burada və indi?
>> Auditoriya: Tiffany 9 bal?
DAVID Malan: Perfect, Binky nin istisna olmaqla baş yalnız cür, sağ düşdü?
Ilə yanlış nə, çünki sanki bu şəkil?
Auditoriya: Heç bir şey işarə edir.
DAVID Malan: Heç bir şey deyil indi Jake işarə.
Biz sözün 9 yetim etdik 17, və biz sözün var
bu yaddaş bütün sızan ötəri ilk Davudun əli yenilənməsi, ki
düzgün kimi insofar gözəl İndi Tiffany da işarə edərək,
lakin heç bir olsaydı Jake qeyd etmək uzaqgörənliyi,
sonra biz itirdik ki, siyahıda bütövlükdə.
Belə ki, əvvəlki halına qaytar edək.
Belə ki, yaxşı bir şey idi üzərində səfər lakin indi düzəltmək edək.
Biz ilk əvəzinə etməliyəm?
Evet?
>> Auditoriya: Tiffany 9 qeyd etməlidir?
DAVID MALAN: I bilməz Sizə yaxın almaq.
9 Kim qeyd etməlidir?
>> Auditoriya: Tiffany.
>> DAVID Malan: Bütün hüququ.
Belə ki, Tiffany 9 ilk point olmalıdır.
Belə ki, Tiffany almaq lazımdır eyni dəyəri
Davuda olan görünür bir an lazımsız,
lakin ikinci, çünki indi gözəl var addım, biz Davudun əli təkmilləşdirə bilər
Tiffany, sonra əgər qeyd etmək biz yalnız növ təmiz şeyi qədər
Bu bahar kimi növ sanki, İndi ki, düzgün durub var.
Belə ki, əla.
Belə ki, indi biz demək olar ki, orada edirik.
Nin bir final daxil edək dəyəri 20 kimi dəyər.
Biz bir final könüllü malloc bilər?
Qədər gəlib.
Belə ki, bu bir az daha çətin.
Lakin, həqiqətən, kodu, biz istəyirik yazılı, şifahi də olsa,
Yalnız bir dəstə olan kimi İndi şərait, sağ əgər?
Biz vəziyyəti idi bu məxsusdur əgər yoxlanılması
Sonda, bəlkə əvvəlində.
Biz loop bir növ lazımdır ortada spot tapmaq.
Belə ki, adı nə ilə nə edək?
>> ERIC: Eric.
>> DAVID Malan: Eric?
Eric.
Görüşmək Nice.
Belə ki, biz 20 var.
Beş Az?
Yox.
Doqquz az?
Yox.
17-dən az?
Yox.
OLDU.
O, burada məxsusdur və Sizin adları yenə var?
SUE: Sue.
DAVID Malan: Sue.
ALEX: Alex.
DAVID Malan: Sue, Alex, və?
ERIC: Eric.
DAVID Malan: Eric.
Kimin əlləri ilk yenilənir almaq lazımdır?
>> Auditoriya: Eric.
OLDU.
Belə ki, Eric nin olduğu qeyd etməlidir?
22.
Yaxşı.
İndi nə gələn var?
Sue sonra Eric qeyd edə bilərsiniz və indi, əgər uşaqlar yalnız
gözəl bir otaq etmək vizual, indi biz durub etdik.
Belə ki, indi bir sual nəzərdən keçirək lakin Bizim könüllü üçün çox təşəkkür edirəm.
Çox yaxşı.
İstəsəniz, bu davam edə bilərsiniz.
Və biz bir sevimli ayrılıq hədiyyə əgər var Siz hər bir stress topu almaq istəyirəm.
Mənə yalnız bu aşağı süzmək.
Belə ki, bu paket nədir?
Bu gözəl görünür biz indi həddə
bir alternativ təqdim belə məhdudlaşmır array
bəzi sabit ölçüsü bir sıra.
Onlar dinamik inkişaf edə bilər.
>> Amma biz kimi çox həftə gördüm Keçmişdə biz pulsuz üçün bir şey almaq heç vaxt
kimi, şübhəsiz ki, burada ticarət-off var.
Bir bağlı bir ayaq ilə belə siyahısı, bu dinamizm var?
Bu qabiliyyəti, səmimi inkişaf və biz sil edə bilərdi
lazım və shrink bilər.
Biz nə qiymət ödəyir?
Twice ilk növbədə çox yer kimi.
Siz şəkil baxsaq, artıq Mən integers bir siyahısını saxlanılması.
Mən bir siyahısını saxlanılması alıram integers plus göstəricilər.
Beləliklə, mən kosmik məbləği iki dəfə alıram.
İndi bəlkə ki, belə deyil böyük 4 bayt, 8 bayt,
lakin əlbəttə əlavə edə böyük data dəstləri üçün.
Başqa İşin mənfi tərəfi odur nədir?
Evet?
>> Auditoriya: Biz var onlara bir-bir axır.
DAVID Malan: Bəli.
Biz onlara bir-bir axır var.
Siz bu super imtina nə bilirik kvadrat bracket rahat xüsusiyyət
notation, daha düzgün təsadüfi giriş kimi tanınan,
biz yalnız jump edə bilərsiniz fərdi element
lakin indi mən hələ də olsa burada könüllüləri,
Mən tapmaq istəyirdi 22 nömrəli, yalnız bilməz
bracket bir şey bir şey jump.
Mən çox siyahı üzərində baxmaq xətti bizim axtarış nümunələri kimi,
sayı 22 tapmaq üçün.
Beləliklə, biz bir qiymət ödənilir görünür.
Amma biz yenə bilərsiniz digər məsələləri həll etsin.
>> Əslində, mənə təqdim edək visuals bir neçə.
Aşağı olduğunuz Belə ki Mather Dining Hall yaxınlarda,
ki, xatırlamaq lazımdır onların oxşar qablar destesi,
biz bu borc Sinif əvvəl Annenberg.
Belə ki, qablar, bu yığını, baxmayaraq ki, nümayəndəsi əslində
Kompüter elm data strukturu.
Bir data strukturu var kompüter
bir yığın kimi tanınan olan çox gözəl məhz bu vizual özü verir.
Bu qablar hər bir deyil, əgər belə tray lakin bir sıra kimi və mən istəyirdim
nömrələrini saxlamaq üçün, mən burada bir aşağı qoymaq bilər,
və mən burada bir yazmaq bilər və nömrələr yığma davam
bir-birinə, və nə üst Bu barədə potensial faydalı
nə dolayısı var ki Bu data strukturu?
Mən çıxarmaq bilər ki sayı ilk ən rahat?
orada ən son bir put.
>> Belə ki, bu biz zəng nə edir informatika bir LIFO data strukturu.
, Ilk keçən.
Biz uzun niyə əvvəl görürsünüz ki, indi faydalı, lakin ola bilər
yalnız mülkiyyət hesab edir.
Sizcə əgər bu cür axmaq var yemekhane bunu necə haqqında.
Hər dəfə onlar təmiz qablar və üst tam olanları qoymaq,
Daha əvvəl təmiz ola bilər lakin nəticədə çox çirkli və tozlu
çox alt tray əgər heç həqiqətən
ki altına almaq yığını, çünki yalnız
yeni qoyaraq saxlamaq və üst təmiz olanları.
eyni şey baş verə bilər bir supermarket çox.
Bir ekran işi varsa süd və hər zaman CVS
və ya daha çox süd alır kim, Yalnız süd itələmək
Əgər siz artıq geri və Siz ön qədər yeni qoymaq
bəzi olduqca pis olacaq məlumat strukturu sonunda süd,
Bu altındakı həmişə çünki ya equivalently Bu arxa həmişə var.
>> Amma düşünmək üçün başqa yol var məlumat və məsələn, bu qədər astarlı.
Əgər insanlardan biri edirsinizsə edən bəyənir Apple mağaza kənarda sıralamaq
zaman yeni bir məhsul gəlir həyata, siz yəqin edirik
bir yığın data istifadə strukturu çünki
hər kəs kim uzaqlaşdırmağa olardı up astarlı bəzi yeni oyuncaq almaq.
Əksinə, siz yəqin ki, istifadə etdiyiniz məlumat strukturu hansı
sisteminin və ya hansı real dünyada?
Ümid edirəm ki, bir xətt var, və ya daha çox düzgün və ya daha çox British kimi, bir sıra.
Və bir sıra da çıxır kompüter data strukturu,
lakin bir sıra çox var müxtəlif mülkiyyət.
Bu LIFO deyil.
, Ilk keçən.
Üzdən iraq.
Əvəzinə FIFO var.
Ilk out, da.
Və yaxşı bir şey deyil ədalət naminə
əlbəttə zaman astarlı edirik səhər qədər super erkən.
Siz ilk orada almaq ilk yaxşı almaq istəyirəm.
>> Və bu məlumatların bütün strukturları, sıralarında və baca
və başqaları dəstələri, siz çıxır bu kimi bir sıra hesab edə bilər.
Bu bəlkə, bir sıra edir sabit ölçüsü 4, lakin had
biz yalnız qalamaq bilər cür gözəl qablar demək olar ki, sonsuz hündür biz əgər
ki, bir çox qablar və ya nömrələri var.
Belə ki, bəlkə istəyirik Burada bağlı siyahı istifadə,
lakin ticarət-off olacaq potensial daha çox yaddaş lazımdır ki,
bir az daha çox vaxt tələb edir, lakin biz yığını hündürlüyü məhdudlaşdırmaq deyil,
çox Mather ekran halda kimi yığını ölçüsünü məhdudlaşdıra bilər,
və belə ki, bu dizayn qərarları və ya var nəticədə bizə mövcud variantları.
Bu məlumatları So strukturları, biz açılmış etdik
potensial yeni yuxarı həddi görən nə əvvəllər super sürətli oldu
və biz tərk lazımdır off bu gün və harada
biz almaq üçün ümid lazımdır Çərşənbə günü, biz lazımdır
Bir məlumatlara baxmaq başlamaq Bizə axtarış imkan verir strukturu
log son vaxt data yenidən.
Və biz həftə sıfır, geri, gördüm ki, ikili axtarış və ya bölmək və bir
və fəth.
Bu, hələ geri və daha yaxşı gəlir Bu çərşənbə müqəddəs grail
ilə gəlmək olacaq həqiqətən çalışır data structure
və ya nəzəri-da daimi vaxt, vasitəsi
Bu neçə etməz milyonlarla və ya şeyi milyardlarla
biz data strukturunda var, o, Bizə daimi vaxt, bəlkə bir addım
və ya iki addımlar və ya 10 addımlar, lakin addımlar daimi nömrələri
ki, data strukturu vasitəsilə axtarış.
Həqiqətən müqəddəs grail olacaq lakin çərşənbə günü ki, daha çox.
Sonra ya baxın.
>> [MUSIC PLAYING]