>> DAVID J. MALAN: Bu CS50 edir və Bu həftə dörd başlanğıc.
Və oğlan, Volkswagen edir çünki proqram narahatlıq.
Bizə nəzər salaq.
[Video playback]
-Avtomobil, Akıllıca simvol Tez və Furious film.
Bu həftə Alman avtomobil Volkswagen özünü aşkar
bir qalmaqal ortasında potensial cinayət nisbətdə.
>> -Volkswagen Milyardlarla möhkəmlətmə edilir cərimələr, mümkün cinayət
onun Yöneticiler üçün, kimi Şirkət üzr
11 milyon avtomobil takelaj üçün Bu emissiyaları test döymək kömək edir.
>> -Certain Dizel modelləri idi inkişaf etmiş proqram ilə nəzərdə
o cümlədən istifadə məlumat sükan və avtomobilin mövqeyi
avtomobil idi müəyyən etmək üçün sürətli emissiyaları test keçir.
Ki halda, mühərrik zəhərli emissiyaları azaldacaq.
Amma avtomobil bypass üçün saxta edildi ki, idarə olunur zaman.
Emissiyaları 40 10 artdı məqbul EPA səviyyədə yuxarıda dəfə.
>> [END playback]
>> DAVID J. MALAN: Belə edək bu nəzər
və dəqiq necə görürük həyata keçirilə bilər
və bu təsir edə bilər necə bu kimi bir çox tapılmışdır.
Belə ki, mənim tərəfdən burada mətbuat ki EPA-- tərəfindən verilmişdir azad
Environmental Protection Agency hansı
ABŞ tənzimləyici agentliyidir ki, ətraf mühitlə bağlı emal,
və sonra faktiki idi Künye
Yalnız bir neçə gün əvvəl Volkswagen göndərin.
>> Belə ki, EPA yazır və indi açıqlayır açıq, inkişaf etmiş bir proqram
Müəyyən on alqoritm Volkswagen vasitələri algılar
zaman avtomobil keçir rəsmi emissiyaları test
və tam emissiyaları çevrilir yalnız test zamanı nəzarət edir.
səmərəliliyi Bu vasitələrin çirklənmə
emissiyaları nəzarət cihazları böyük var bütün normal sürücülük ərzində azalıb
hallar.
Bu cavab Avtomobillərin nəticələrini laboratoriya və ya test standartları
stansiyası, lakin normal istismarı zamanı azot oxides-- ya NOx-- buraxmaq
qədər 40 dəfə standart.
Volkswagen tərəfindən istehsal software bir quote dırnağı bağlamaq, məğlub cihaz,
Clean tərəfindən müəyyən edilmiş ABŞ-da hava Aktı.
>> Onlar ki, getmək EPA və başqa agentliyi
məğlub cihaz aşkar müstəqil təhlil edildikdən sonra proqram
Qərb tədqiqatçıları tərəfindən Virginia Universiteti.
NOx çirklənmə qatqı təmin azot dioksid, yer səviyyəsində ozon,
və gözəl hissəciklər.
Bu məruz çirkləndiricilər bağlı olmuşdur
geniş ilə ciddi sağlamlıq təsirləri,
artıb astma, o cümlədən hücumları və digər tənəffüs
kifayət qədər ciddi ola bilər xəstəliklər xəstəxanaya insanlara göndərmək üçün.
Ozon məruz və hissəciklər də var
vaxtından əvvəl ilə bağlı olmuşdur əlaqədar tənəffüs səbəbiylə ölüm
və ya ürək-damar təsiri ilə bağlı.
Uşaq, yaşlı, insanlar preexisting tənəffüs xəstəlikləri
xüsusilə risk var bu çirkləndirici sağlamlıq təsirləri.
>> Kifayətdir kifayət qədər ciddi, demək deyil.
Və oxumaq üçün getmək imkan yalnız bir daha pasaj
və sonra bir nəzər lazımdır əsas təsiri
bir avtomobil kontekstində bu.
Xüsusilə, Volkswagen istehsal və quraşdırılmış
qondarma proqram təminatı elektron nəzarət
module-- ya ECM-- of hiss bu vasitələr
vasitə üçün test edilmişdir zaman EPA emissiya standartlarına uyğunluq.
O cümlədən müxtəlif giriş əsasında sükan mövqeyini, avtomobil
sürət, motor-nin müddəti əməliyyat və atmosfer təzyiqi,
Bu giriş dəqiq parametrləri izlenen
üçün istifadə federal test proseduru EPA sertifikatlaşdırma üçün emissiyası test
məqsədləri.
>> EPA emissiya sınağı zamanı, nəqliyyat vasitələri ECM proqram
istehsal proqram qaçdı uyğun emissiyaları nəticələri.
Bütün digər vaxtlarda, vasitə ECM proqram
ayrı yol qaçdı aşağı kalibrləmə
səmərəliliyi ümumi emissiya nəzarət sistemi,
xüsusi selektiv katalitik Lean NOx azaldılması trap--
Hansı bir anda haqqında görəcəksiniz.
NOx nəticəsində, emissiyaları 10 40 dəfə artmışdır
EPA uyğun səviyyədə yuxarıda drive dövrü növündən asılı olaraq.
>> Bu, həqiqətən deməkdir və belə nə proqram çalışan mənbə kodu
Volkswagen-nin deyil hələ açıq açıqlanmır
ki, səmərəli, bu ekvivalent daxilində bir yerdə var
Volkswagen kodu.
Əgər test, və edilir avtomobilin əgər Müəyyən ekoloji amillər algılar
sükan kimi mövqe və ya hərəkət
və ya olmaması avtomobil və ya onların digər amillər hər hansı bir sayı
ki, hazırda öne olunur Bu formula bir hissəsi olmaq üçün,
onlar sadəcə yandırmaq tam emissiyaları nəzarət.
Başqa sözlə, onlar başlamaq çirkləndiricilərin az emitting.
>> Else, hər vəziyyətdə Bu kimi aşkar deyil zaman
Laboratoriyada, onlar yalnız deyil.
Və belə ki, daha bu sadələşdirmək bilər bir şey ilə konkret pseudocode
bunun kimi.
Disklər dönüş ancaq varsa sükan, nalayiq deyil
avtomobil bəzi edir ki, fırlanan silindr cür
lakin bir növ anbar sınaqdan keçirilir,
sonra kimi davranmaq EPA sizə istəyirəm.
Əks halda deyil.
Belə ki, bir nəzər salaq qısa video ki,
nə təsiri bir göz edir həqiqətən mexaniki bu var.
>> [Video playback]
>> Cümə -Son EPA açıqladı bəzi Volkswagen Audi avtomobil 2009 arasında edilən
və bu il istifadə qondarma məğlub cihaz
emissiyaları qanunları ətrafında almaq üçün təmiz hava saxlamaq üçün nəzərdə tutulmuşdur.
Amma bu dəqiq nə deməkdir?
>> Yaxşı, müasir maşın onlarla onların içərisində kompüter.
Və bu kompüter bəzi funksiyaları koordinasiya kömək
optimal üçün mühərrik performance əmin edərkən
çox zibil yoxdur ki, işlənmiş boru həyata gəlir.
Onlar, həqiqətən, iş etdik Artıq bir neçə onilliklər üçün bu yol.
Ümumiyyətlə, hər bir hissəsi müasir avtomobilin mühərrik
sensor və ya nəzarətçi var bu və bu kompüter
məlumatların minlərlə oxu İkinci edilməsi düzəlişlər başına dəfə
hava yanacaq nisbəti kimi ki, silindrlər daxil olacaq.
>> Bu xəyanət Volkswagen və Audi modelləri dizel var
və dizel daha bir var həqiqətən əhəmiyyətli kompüter
var nəzarət parametrləri, gedən yanmamış yanacaq məbləği
işlənmiş daxil.
İndi pis səslənir.
Siz istədiyiniz kimi səs deyil işlənmiş gedən yanmamış yanacaq.
Amma halda dizel, siz bir şey var
bir cihaz bir NOx tələ adlı udur və azot oksidləri üçün tələlərin
çirkləndiricilər ki, ki, var ki, başqa atmosferə getmək.
Və NOx tələ təsiri yanmamış yanacaq ilə genişləndirilir.
Belə ki, bir məğlubiyyət cihaz xüsusi proqram Bu kompüter daxilində ki, bunu edə bilərsiniz
avtomobil emissiya cavab kimi baxmaq standartları bu deyil belə.
Volkswagen onun əlində bir problem var idi.
Onun dizel mühərrikləri məlum idi böyük yanacaq iqtisadiyyatı almaq üçün,
lakin NOx tələ yalnız yaxşı işləyir daha çox yanacaq istifadə edildikdə.
Belə ki, avtomobil, aşkar olardı Bu məğlubiyyət cihaz istifadə edərək,
bu emissiyaları əldə zaman test, bu daha çox yanacaq istifadə edir,
yaxşı NOx tələ iş, emissiyaları gözəl olardı.
Amma sonra, yolda cihaz almaq sönür, daha az yanacaq yanan etdiyiniz
lakin kimi çox 40 dəfə qoyulması edirik atmosferə daha çirkləndirici.
Lakin heck necə avtomobil olduğunu bilirik
emissiyaları uyğun üçün test olunur?
EPA bir mürəkkəb olub şeyi yoxlanılır sistemi
sükan mövqeyi kimi, sürət, mühərrik idi necə uzun,
və hətta atmosfer təzyiqi.
Başqa sözlə, var idi heç bir yol, bu təsadüfi idi
proqram idi, çünki aşkar etmək üçün çox diqqətlə nəzərdə tutulmuşdur
rəsmi emissiyaları test.
Ki, bəzi olduqca ciddi var aldatma və ki
niyə Volkswagen edir belə ciddi narahatlıq.
Əslində, onların CEO, Martin Winterkorn, yalnız aşağı basdı.
>> Belə ki, nə gələn olur?
Yaxşı yarım milyon biri istəyirik, əgər dizel Jettas, Beatles, Golfs, Passats,
və ya Audi A3s, həyata yaxşı xəbər deyil
ki, Sizin avtomobil sürücü hələ təhlükəsizdir.
Siz üz qoymaq yoxdur Volkswagen geri məsələləri qədər.
Amma bir anda onlar yəqin ki, gedir
Sizin avtomobil daxili proqram yeniləmə.
Ki, baş zaman bilər tank başına az mil almaq.
Lawyers artıq gearing olunur sinfi fəaliyyət iddia üçün
belə sahibləri kompensasiya almaq bilər gələcəkdə müəyyən məqamda.
Amma ki, etmək niyyətində deyil tezliklə istənilən vaxt baş verir.
>> [END playback]
DAVID J. MALAN: Belə ki, bu, həqiqətən qaldırır maraqlı böyük şəkil sual
kimi etibar.
Sağ?
Hamımız iPhone və ya Androids və ya cibimizdə bir şey çox güman ki,
bu gün, ya noutbuk bizim ətəklərinin
edilən çalışan proqram Apple və Microsoft tərəfindən
digər şirkətlərin və dəstələri.
Amma biz bilirik ki, nə Bu proqram məhsulları edirik
nə bu əslində şirkətləri etdiklərini demək?
>> Məsələn, kim var deyirlər ki, hər zaman
Sizin iPhone haqqında zəng etmək və ya Android telefon və ya kimi,
ki, telefon nömrəsini də deyil ki, bir şirkətin server daşıyanlar olunur
bəzi Proqramının etdik, çünki Bu əməliyyat olub, yazılı
iOS və ya Android kimi sistem özü, və ya nazil etdik, çünki
bir üçüncü tərəf app elə dinləmək ki,
hər şey Siz yazaraq etdiyiniz və ya hər şey, həqiqətən, deyərək edirik.
Siz ki, bilmirəm necə, nə zaman Sizlərin cingilti çalışan
və ya tərtib etmək olun CS50, necə öz proqram
ki, CS50 öz heyəti etmək, CS50 kitabxana yolu ilə,
hər giriş olmamışdır Əgər kazanılmış string
və ya hər Əgər kazanılmış inch?
Bəli, əlbəttə ki, baxmaq bilər bir şey üçün mənbə kodu ilə
CS50 kitabxana kimi, mənbə kodu baxmaq bilər
Linux əməliyyat sistemi üçün CS50 IDE çalışan.
Amma inanılmaz təqdimat 1984-cü ildə geri verildi
bir tərəfindən Turing mükafatı alınması tanınmış çox məşhur kompüter alim
adlı Ken Thompson as-- edən Turing mükafatı aldığı
informatika nin sort Nobel mükafatı, Siz,
bir onun iş üçün əməliyyat sistemi deyilən
Çox oxşardır Unix, Biz istifadə nə ruh Linux edir.
Və sual o xahiş onun mahiyyətcə qəbul çıxışında,
çərçivəsini aşağı salınması il müzakirə il
inam və təhlükəsizlik haqqında, bu idi.
Nə dərəcədə olmalıdır bir inam A bir parça program-- ki, bəyanat
bir software-- Trojan atlar pulsuz?
Yəqin ki, etibar üçün daha vacibdir proqram yazıb insanlar.
>> Və əslində, biz bağlı etdik müzakirəsi o
bu mükafatı qəbul edərkən verdi CS50 saytında 80-ci
Bu gün üçün mühazirələr səhifə altında.
Görürsünüz nə çünki o, həqiqətən verir ki,
necə hətta kifayət qədər sadə misal cingilti və ya hər hansı bir compiler
digər keçmişdə istifadə derleyiciler, compiler biz əlaqədar nə varsa
özümüzü bir az istifadə olunur mahiyyətcə deyir vəziyyəti,
Bu kodu istifadə edir ki, qeyd əgər GetString funksiyası və ya GetInt
funksiyası, irəli getmək və daxil geri qapı və ya bir Truva atı
Belə ki, proqram indi bəzi adet sıfır var
və zərərli bir şey olanları.
Bütün Logging sizin ki, məlumat yüklemek tuş vuruşlarını,
bir server və ya həqiqətən bir şey.
>> Və nə Ken Thompson söhbətində nə gedir
hətta olduğunu nümayiş edir Siz mənbə etmək imkanı var
bir compiler kodu ki, pis, bunu ola bilər
çünki etməz Bu toyuq və yumurta var
Ötən çox reallıq il vasitəsi derleyiciler
özlərini tərtib etmək üçün istifadə olunur.
Başqa sözlə, yol geri zaman kimsə ilk compiler yazılı idi.
Və sonra, istənilən vaxt onlar yenilənir etdik mənbə kodu dəyişən bir compiler,
funksiyalar əlavə və recompiling bizim kimi insanlar istifadə etmək üçün, yaxşı,
onlar köhnə istifadə etdiyiniz compiler versiyası
yeni tərtib etmək compiler versiyası.
Və siz bir nəzər əgər verdi talk,
Siz, çünki ki, görürsünüz ki circularity,
Siz, həqiqətən, hataları ola bilər və ya Truva atı proqram daxil
biz istifadə edirik.
Və baxmaq, hətta həmin proqramların üçün mənbə kodu,
hətta aydın ola bilər fırıldaqçılıq, həqiqətən, çünki
bir bəzi köhnə versiyası beri olmuşdur compiler
Bizim proqram təhlükə inyeksiya.
>> Olan yalnız biz, demək həqiqətən bilməz və olmamalıdır
inam proqram noutbuk çalışan telefonlar və ya yerlərdə hər hansı bir sayı və ya.
Və əslində, daha sonra bu dövr biz web proqramlaşdırma haqqında danışmağa başlayın
və həqiqətən bina başlamaq web applications özümüzü,
biz bu barədə danışmaq lazımdır təhdid və s.
İndi, merak və qeyd ola bilər kiçik bir az Darth var idi ki,
Klipler Vader ki Verge var göstərirdi
Volkswagen haqqında. Əgər Siz görməmişəm mən
biz işıqlandırmaq lazımdır düşündüm əhval bu, çünki
çox əzici və qorxulu.
Mən geri baxmaq gedirəm Super Bowl 2011
zaman bir ticarət Volkswagen-- və bu
demək olar ki, again-- onlara likable edir TV ilk dəfə havalandırdı.
Bu 60 ikinci clip var Mən sizə zövq olacaq edirəm ki.
[Video playback]
[MUSIC - "Star Wars" mövzusunda]
[It barks]
[CAR BAŞLAYIB]
[END playback]
DAVID J. MALAN: Bəli.
Mən yalnız yoxlanılması edilib.
Ki, avtomobil pozuntuları siyahısındadır.
Oldu.
Beləliklə, biz bəzi baxmaq bir an əvvəl pseudocode.
Və burada böyük var pseudocode kodu parçasını
ki, biz indiyə qədər bir neçə dəfə gördüm.
Və bu bir fürsətdir istifadə edək indi yeni bir proqramlaşdırma təqdim etmək
etdik texnika algorithmically görmək
Keçən həftə birləşməsi sort baxdı zaman.
Amma bunu rəsmiləşdirmək və necə edək Biz faktiki kodu istifadə edə bilər
və sonra biz bu istifadə etmək olacaq yol aşağı texnika ən
müəyyən digər problemləri həll etmək üçün çox.
>> Beləliklə, bu ilk proqramları biri idi biz Heç pseudocode kodu olsa da, yazdı.
Və nə bu proqram Dərs etmək icazə
bir telefon kitab Mike Smith tapmaq idi.
Və xüsusilə xətləri səkkiz qeyd bu Go To bəyanat idi 11.
Və əslində, müəyyən dil, onların arasında C,
əslində bir var sözün bəyanat
ki, sizə imkan verir getmək müəyyən bir xətt jump.
Bu, ümumiyyətlə, çünki sonra Əbəsə edir bu, çox asanlıqla sui-istifadə edilə bilər
və jumping başlamaq bilərsiniz fərqli olaraq bütün yer üzərində proqram
cür istifadə etmək məntiq və nəzarət axını
biz yalnız ilə bu günə qədər istifadə etdiyiniz loops və şərtləri və kimi.
>> Amma biz bu alqoritm sadələşdirmək bilər pseudocode kodu kimi edir.
Əvəzində bu iterativ of və ya yanaşma loop
biz geri davam və geri və geri üç sıralamaq üçün,
niyə biz yalnız növ ayaqla zərbə və daha çox yoxdur ümumiyyətlə, xətti yeddi və 10 demək
yalnız bu iki əvəz ilə xətləri cüt,
Smith əvvəllər başqa əgər Kitabda alacağıq
Mike üçün axtarış Kitabın sol yarısı.
Smith sonra başqa əgər kitab, sağ Mike üçün axtarış
yarım kitab.
Və artıq circularity bildiriş.
Sağ?
Mən Mike üçün axtarış alıram telefon kitab və sonra
Mən nəhayət, bəlkə edib line yeddi və ya bəlkə line 10
və özüm mənim təlimat axtarış telefon kitab yarısında Mike üçün.
Yaxşı, necə Mike üçün axtarış edirsiniz?
Mən ortasında deyiləm Mike, nə üçün axtarış
Siz sort bir dairə mənə göndərir?
Amma ki, nə, çünki OK problemin ölçüsü baş,
xətti 7 və 10 yazılı kimi?
Biz yalnız axtarış deyərək deyilik Mike üçün, Mike üçün axtarış.
Biz xüsusi nə dedi edirik?
Sol yarısında ona axtar səmərəli sağ yarım
problemin yarısı ölçüsü.
Belə ki, biz növ olduğunu OK bu circularity məşğul,
Bu dairəvi arqument ən azı biz istəyirik, çünki
problem kiçik və kiçik edilməsi.
Və nəticədə biz nail olacaq ki, qondarma əsas işi harada
biz yalnız bir səhifə əgər sol Bizim könüllü keçən həftə
did-- biz bir səhifə idi sonra sol və biz deyil
Mike Smith üçün axtarış saxlamaq lazımdır o səhifədə bilərsiniz, çünki
və ya o deyil.
>> Beləliklə, biz bu fikri, bu həyata necə faktiki kodu circularity sort?
Bəli, biz bir texnika leverage ki, ümumiyyətlə, recursion kimi tanınan oldu.
Və biz bu gördüm birləşməsi sort üçün pseudocode ötən həftə.
Bu idi Xatırladaq ki, birləşməsi sort üçün pseudocode.
Bu arguably daha asan var bubble və ya seçim və ya durub sırala
yalnız sadəlik baxımından olan siz ifadə edə bilərlər.
>> Amma ki, çünki var biz sort circularly istəyirik
bir şey üçün axtarış söyləyərək daha üçün axtarış.
Amma biz ya aradığınız sol yarısı və ya sağ yarım
və sonra nəhayət biz istəyirik Bu halda birləşmə.
Amma burada da ilə bu iki sort xətləri,
biz yenə bu var idi recursion ideyası.
Və konkret bu nə deməkdir, bir alqoritm kontekstində,
bir alqoritm recursive olduğunu Bu istifadə edir və ya özünü çağırır əgər.
>> Və ya C baxımından bir funksiyası adlı funksiyası recursive
foo, foo əgər recursive deyil haradasa öz mənbə kodu,
funksiyası foo özü çağırır.
Və bütün foo heç əgər pis təkrar özü zəng edir.
Foo nəticədə vermir kimi ki, OK deyərək, sort daxil bir dəqiqə gözləyin,
Bu problem super əgər Kiçik, məsələn,
ya mən deyiləm kimə onu aşkar axtarır, yalnız qayıtmaq.
Recursively deyil, bunu etməyin cyclically yenidən özüm zəng.
>> Və belə bir nəzər salaq Bu, həqiqətən, iş ola bilər necə.
Beləliklə, mən irəli və açıq getmək üçün gedirəm burada iki mənbə kodu nümunələri up.
Biri sigma 0 adlanır.
Bu bütün deyil recursive amma götürək
bir bu proqram nə baxmaq.
Mən bütün lüt etdik ancaq bütün şərhlər
CS50 üzrə mənbə kodu veb əgər şərh var
daha sonra vasitəsilə oxumaq istəyirəm.
Və bir neçə nə edək ağlı başında olma burada yoxlayır.
>> Bu Məcəllənin üst So biz cs50.h. daxil var
Bu nə edir?
Niyə burada?
Ağlabatan layman nin baxımından.
O nə edir?
Bəli.
>> Auditoriya: GetInt funksiyası işləyir ki.
>> DAVID J. MALAN: Belə ki, GetInt funksiyası işləyir.
Bu daxili Çünki fayl, CS50.h olan
biz uzun əvvəl görürsünüz mənbə kodu şərtləri,
funksiyaları bir dəstə var declared-- GetInt, GetString,
others-- və halda bir dəstə və biz, həqiqətən, ki, xətt daxil var
compiler cingilti deyil ki, mövcud biləcəklər.
Və eyni xətt gedir int müəyyən edilir iki
bir funksiyası var printf, biz kifayət qədər bir az istifadə edin.
İndi line dörd bir az Funky görünür Bu yalnız bir liner, çünki.
Bu, heç bir curly, nöqtəli vergül var aşırma, onun daxilində kodu.
Lakin biz zəng etdi həftə keçmişdə bu şey?
Bəli.
Belə ki, bir prototip.
Və niyə biz bir var görünür prototip
bir az lazımsız olmaq adətən adətən Çünki biz
yenidən funksiyası görmək sonra fayl, sağ?
Belə ki, niyə biz yalnız istəyirik yaxşıdır yoxdur sizin baş kazıma, lakin mən onu almaq lazımdır.
Bəli.
>> Auditoriya: [işitilemez] Əsas sonra funksiyası.
DAVID J. MALAN: Exactly.
Compiler sizə bilir ki, nəticədə müəyyən və ya həyata keçirəcək
ehtimalla əsas sonra funksiyası.
Belə ki, cingilti və ən derleyiciler cür lallardır
və onlar yalnız bilirsiniz nə onlara.
Və istifadə etmək istəyirsinizsə, sigma adlı funksiyası,
daha yaxşı compiler öyrətmək ki, əvvəlcədən mövcuddur.
>> İndi əsas özü, hətta Bu xətləri bir dəstə var, baxmayaraq ki,
İndi ümid olduqca tanış edir.
Bu do loop isə var həyat kimin məqsədi
Burada yəqin almaq üçün istifadəçi müsbət tam.
Və yalnız ona pestering saxlamaq və ya onun əməkdaşlığa qədər.
Sonra xətti 16 Mən maraqlı zəng.
IntAnswer.
Sol tərəfdən hansı yan Mənə bir int verir
Answer-- adlı store-- bilər ki, saxlamaq üçün gedir ki, yəqin,
sigma qaytarılması dəyəri.
Belə ki, sigma yalnız bir deyil ixtiyari, lakin mənalı adı
Mən bir funksiyası təqdim etdik ki, həyat kimin məqsədi
bir dəlil almaq üçün biz Bu halda N zəng edəcəyik
və yalnız ki sayı cəmi etmək plus hər müsbət sayı ki
bu daha kiçik.
>> Mən 2 saylı keçmək əgər Belə ki, sigma, Mən əlavə etmək istəyirəm 2 plus 1
plus 0 idi ki, mənə 3 verir 0-.
Mən sigma 3 keçmək əgər, Mən istəyirəm 3 plus 2 plus 1 var, olan mənə 6 verir.
Və s.
Belə ki, yalnız qədər əlavə bütün ədəd ona daha az və ya bərabər.
>> İndi aşağı burada mən yalnız gedirəm cavab çap.
Belə ki, tez ağlı başında olma çek kimi, edək sigma 0- dot çizgi sigma etmək 0-
və mənə 2 yazın edək.
Mən, həqiqətən, 3 almaq.
Mənə 3 yazın edək.
Mən, həqiqətən, 6 almaq.
Və hər kəs tez riyaziyyat edə bilər, əgər, Mən almaq gedirəm nə 50, nə olur?
>> Auditoriya: [işitilemez].
DAVID J. MALAN: Bəli, no.
Lakin 1275 olduqca yaxın olan.
Belə ki, bu 50 bunu nəticəsidir plus 49 plus 48 plus 47 plus 46
1 bütün yol aşağı.
Ki belə ki, bütün sigma yoxdur.
Amma biz necə edək İndi həyata keçirilir.
Belə ki, aşağı burada funksiyası özü edir.
Və bu var görünmür bir şey hələ recursion ilə.
Əslində, biz bir istifadə etdiyiniz köhnə məktəb texnika.
Mən bir dəyişən adlı məbləği başlatılıyor alıram sıfır, sonra burada bir foreloop var,
və mən adlı Int elan edirəm Mən 1 var bərabər qəbulu
Mən bərabər müəyyən edə bilər, baxmayaraq ki, sıfır, amma əlavə edirəm ildən,
sıfır və ya bir, əgər kimin umurunda.
Bu, heç bir təsir olacaq.
>> Beləliklə, mən belə uzun mən kimi iterating alıram daha az və ya m, bərabər olan
keçildi dəlildir.
Və sonra mən yalnız saxlamaq I. Və fikir incrementing
loop Mən məbləğ edir edirəm plus I. bərabərdir ki, qəsdən var.
Bu, nə istəmirəm halda, məbləğ plus plus kimi.
Mən, həqiqətən, əlavə etmək istəyirəm I cari dəyəri
olan böyük və daha böyük əldə saxlayır və çalışan tally üçün böyük.
>> Və sonra məbləği geri.
Və belə cavab dəyəri məbləğ olur.
Və sonra mən onu çap.
Belə ki, imkanı var burada, baxmayaraq ki, mehriban asanlaşdırmaq üçün
Bu kodu konseptual və zərbə cür biri
baxımından ağla sadəlik hətta baxmayaraq
düzmək üçün bir müddət alır niyə bu qiymətləndirirəm
bu kiçik nümunələri güclü deyil.
Burada belə one-- sigma deyil Bu kodu ikinci versiyası.
Üst qədər hər şey belə eynidir Həmin hekayə əvvəl tətbiq edilir.
Amma indi baxaq sigma həyata keçirilməsi hansı
Mən yalnız bu aşağı whittled etdik xətləri kodu dörd xətləri, həqiqətən,
üstəlik bəzi qıvrım aşırma və ağ kosmik.
>> Amma mən nə edirəm?
M daha az və ya bərabər olduqda sıfır, I növ idarə etmək lazımdır
ki, super sadə halda.
Və mənə sıfır və ya bir şey əl əgər yalnız qəribə olan mənfi
Mən yalnız özbaşına gedirəm lakin ardıcıl sıfır qayıtmaq.
Mən bu şey istəmirəm bəzi qəribə Infinite daxil
çünki bir mənfi dəyər loop.
Mənə vermək əgər mən yalnız, deyirəm sıfır və ya daha az, mən sıfır qaytarılması alıram.
>> Ki, çünki Amma ki, yaxşı telefon kitab ki, bir səhifə
ki, sol.
Mən çox xüsusi bir problem off yeme alıram və recursively bir şey zəng deyil.
Amma line 31 nə Mən bunu etmək görünür?
parantez yalnız saxlanılır şeylər, ümid edirəm ki, bir az aydın.
Amma edirəm mən deyiləm m-- qaytarılması nə
Siz me-- plus əl m-- sorry dəyəri,
plus m minus 1 sigma dəyəri.
Belə ki, bu nə deməkdir?
Siz giriş kimi mənə sayı 3 versələr, Cavab Mən nəticədə almaq istəyirəm
3 plus 2 plus 1 mənə 6 verir, çünki 6.
Amma mən necə düşünürsünüz Bu kodu nə çalışan?
Mən sigma zəng ilk dəfə və mən dəyər 3 keçmək
ki, bir parça deyən kimi kağız, burada dəyəri 3 var
və mən Sigma kimi qəbul etdik.
3 açıq-aydın belə az olmayan 0 IF şərt tətbiq edilmir.
Başqa yoxdur.
Beləliklə, mən nə etməliyəm?
Mən olan m qayıtmaq istəyirəm M minus 1 3 plus sigma.
Mənə bu takip imkan verir.
Mən bu qoymaq gedirəm kağız aşağı parça.
Və nə dəyəri, olmaq aydın, Mən keçmək üçün gedirəm
hekayə bu nöqtədə sigma daxil?
Nə sayı?
2, sağ?
3 minus 1 2.
Mən yalnız bir az lazımdır Burada kağız qırıntıları.
Belə ki, indi sigma yenidən adlanan olur.
Mən qəsdən gətirdik Bu aşağı, çünki
cür duraklatarak kimi hekayə ki version
indi diqqət deyiləm, çünki m minus 1 siqnal.
Belə ki, m 3, m idi minus 1 2.
Belə ki, burada qəbul etdik 2.
2 açıq-aydın az deyil 0 belə ki, hal tətbiq edilmir.
Başqa mən bu olan m qayıtmaq nə dəyər şey, üstəgəl sigma?
Belə ki, sigma bir 1 var m çünki İndi 2 SO 2 minus 1 1.
Belə ki, indi mən yalnız dəyəri 1 var.
Mən yalnız sayı keçən alıram Funksiyası sigma-- 1
və ya özümü burada belə 1 açıq-aydın deyil sıfırdan aşağı olmayan, hələ də tətbiq edilmir.
>> Else qaytarılması 1 plus nə sigma?
0.
Mənə yalnız unutmayın ki, bildirin.
Mən sonra geri almaq lazımdır.
İndi irəli və jot getmək üçün gedirəm sayı 0 aşağı ki, çünki
Mənim dəlil və ya parametri.
Mən sayı 0 keçdi alıram və nəhayət bu proses
yalnız özümü reklam təkrar nauseum nə çünki dayandırmaq deyil
Bu 0 görmək bir dəfə mən dərhal etməliyəm?
Mən sıfır qayıtmaq.
Belə ki, indi hekayə geri lazımdır.
>> İndi vaxt geri getmək varsa, Ən son şey nə idi
Sözün olsaydı mən video rewinding?
Mən ən son almaq üçün gedirəm 1 və mənə 1 verir plus 0 1.
Mən rewinding saxlamaq hekayə, mənə vermək olacaq
1 2 plus bu çalışan dəyəri.
Belə ki, 3 var.
Və sonra mən rewinding saxlamaq üçün gedirəm.
Mən ilk sayı aşağı qoymaq zaman 3 edəcəyik ki, 3 plus 3 6 mənə verir.
>> İndi, siz rewound olsanız Bu nöqtəyə qədər video up,
Bu çox idi İlk sual soruşdum.
3 keçərkən, 3 sigma nədir?
Bu, həqiqətən, 6, məbləği var kağız bütün bu ədəd.
Ki, bir az edir, əgər belə isə ki, gözəl, sizin fikrinizi ətrafında kesmek.
Amma bu çox az idi hesab Mən dizilir ki, çox qəsdən idi
bir-birinə üst bu nömrələri.
Bu olan kimi növ var vaxt rekord, yaddaş,
bir video bir skrubber kimi, Mən, həqiqətən, ən geri bilər.
Və biz geri gəlmək olacaq yalnız bir az ki, məcaz.
>> Lakin ilk, o var ki, çıxır Geeks və funny bir çox insanlar,
Google da danışarlar.
Kaş çox var kimsə Googling ağıl yaxşı
yalnız bir an üçün gələn və Mənə bir şey üçün axtarış kömək edir?
Çox, çox aşağı düyməsini basın.
Heç kimsə bəlkə də, əvvəl gəlib.
OLDU.
Evet?
Hadi.
Aşağı gəlir.
Sənin adın nədir?
>> SAM: Sam.
>> DAVID J. MALAN: Sam, aşağı gəlir.
Bu eyni.
Görüşmək Nice.
Hey.
Üzərində gəlib.
Belə ki, bütün Mən sizə, əgər nə etmək lazımdır Siz Sam, burada Google var bilər.
Siz müddəti recursion üçün axtarış edə bilərsiniz?
Korlamaq deyil.
>> İndi Bəli Let.
OK ki, basın.
Better ki, basın.
Ahh, onu almaq.
Yox?
OLDU.
Belə ki, bir neçə başqaları edək.
Əlaqədar çox deyil akademik burada, ancaq var
Heç anagram Google axtarış?
>> SAM: Xeyr
>> DAVID J. MALAN: OK.
Anagram yerinə recursion axtar.
Necə əyri haqqında.
Əgər əyri üçün axtarış?
İndi, bu bir az çətindir görmək, lakin ümid OK everything's--.
Bu yalnız və mənə bu zövq deyil.
OLDU.
>> Belə ki, nəhayət, bu one's-- bir az əyri var.
İndi barrel roll etmək.
Wonderful.
Oldu.
Big Sam təşəkkür edirəm.
Buyurunuz.
Thanks.
>> Belə ki, nə bütün olur bu silly nümunələri?
Belə ki, həqiqətən, başlıq altında Kodu xətləri Google milyonlarla
yəqin bir neçə silly mahiyyətcə şərtləri
istifadəçi var, əgər yoxlanılması bu söz Yığdığınız,
yəqin ki, bir şey etdi bir zaman nontrivial məbləği
yalnız həyata keçirmək üçün bu şəkildə əyləncəli ola bilər.
Lakin bu sonunda bütün başlıq altında aşağı.
Lakin, əlbəttə, recursion geekier daha çox
xüsusi tövsiyələr arasında nümunəsidir.
Şübhəsiz ki, orada başqaları orada var həm də bəlkə var ki, hətta
yalnız hələ aşkar.
>> Belə ki, bir nəzər, və ya hesab indi aşağıdakı proqram,
və əlbəttə ki, hər hansı bir işğalçı Yol həyata bu.
Mən irəli getmək üçün gedirəm və bir proqram açmaq
iki dəyərlər dəyişdirmək üçün cəhd edir.
Biz orada getmək əvvəl Lakin, bunu edək.
Biz bir daha əldə edə bilər könüllü, mən hesab edirəm?
Siz könüllü istəyirsiniz?
Yox?
Qədər gəlib.
Oldu.
Belə ki, adı nədir?
>> LAUREN: Lauren.
>> DAVID J. MALAN: Lauren.
Qədər Lauren gəlib.
Belə ki, Lauren olunur İşdə meydan oxudu.
Görüşmək Nice.
Belə ki, Lauren burada qarşısında var onun iki boş fincan.
Və biz bir portağal var suyu və bəzi süd
və biz getmək olacaq irəli və aşağıdakı.
Biz yalnız bu doldurmaq olacaq.
Burada süd bir neçə ounces və edək burada bir az portağal şirəsi doldurun.
>> Və bütün qarşısında Bu tamaşaçı üzvləri,
bu fincan iki dəyərlər dəyişdirmək.
Süd fincan portağal suyu qoyun və portağal şirəsi fincan süd.
Siz əgər siz bunu necə ev və digər təchizat çıxışı var?
LAUREN: bir fincan qoyun.
DAVID J. MALAN: OK.
Belə ki, müvəqqəti edək dəyişən, biz əgər.
İndi irəli getmək və həyata keçirilməsi eyni dəyişdirmə qaydası.
Çox yaxşı.
Biz müvəqqəti daxil OJ gətirdik dəyişən, OJ dəyişən süd,
və indi müvəqqəti dəyişən süd dəyişən.
OLDU.
Belə ki, çox yaxşı bu günə qədər.
Belə ki, keçirilməsi çıxır Yalnız bir an düşündüm.
Burada yalnız bir az onu turk, bu müvafiq C kodu olardı
biz yalnız həyata ki.
Biz iki giriş, A və B həm idi olan biz yalnız var sadəlik üçün demək lazımdır
int var.
Mən dəyişdirmək istəyirsinizsə, burada qeyd iki dəyişənlərin, A və B dəyərləri,
Biz həqiqətən bir komisyoncu lazımdır, bir müvəqqəti dəyişən müvəqqəti fincan,
hansı the dəyərlərindən biri tökmək ki, biz bunun üçün tutucu var.
Amma sonra code dəqiq deyil Lauren burada həyata keçirilir.
>> İndi, yalnız bir almaq üçün az crazier, çıxır
Siz olmadan bunu edə bilərsiniz ki, müvəqqəti dəyişən.
Baxmayaraq ki, biz gedirik düzgün Bunu etmək üçün bir kimya ilə istifadə etmək üçün.
Biz burada bəzi əlavə fincan var.
Belə ki, ən yaxın bir şeydir ki, görünür süd və su, bəlkə kimi
və ya süd və OJ-- biz bəzi var su, belə ki, biz bu doldurmaq lazımdır
təmiz su bir neçə unsiya ilə.
Bu çox yəqin ki, var.
Bəli.
Bu çox mütləq var.
Bir Saniyə tutun.
>> İndi biz Mən xatırlayıram kimi, neft var orta məktəb kimya sinif,
Ümid edirəm ki, su ilə qarışdırılır deyil.
Amma bu cür sort süd və OJ kimi görünür.
Indi, istifadə etmədən müvəqqəti dəyişən,
bu iki dəyərlər dəyişdirmək olar?
Su fincan gider yağları So su neft fincan gider.
LAUREN: No digər fincan?
DAVID J. MALAN: No digər fincan.
Mən həqiqətən var Bu ilin əvvəl bu test
bu iradə, əgər mən bilmirəm həqiqətən kimyəvi çalışır.
Bu baş ehtimal deyil.
Bu iş?
Oldu.
Belə ki, ayıran?
Yaxşı.
İndi biz almaq üçün var digər fincan su.
Smarter kimya soğutucular bilər yəqin ki, məndən daha yaxşı bunu.
>> LAUREN: Su altındakı var.
>> DAVID J. MALAN: idi water-- biz bunu son dəfə əsas var.
Siz sağ üçün bunu etmək lazımdır.
Bəli.
Hər şey yaxşıdır.
Belə ki, indi biz neft iki fincan var.
OLDU.
Hər şey yaxşıdır.
Amma bu istisna olmaqla, mən çox işləyib kimyəvi əgər
>> LAUREN: Bu su.
>> DAVID J. MALAN: Bu əsasən su var.
Oldu.
Lakin hələ də əvvəlki kimi eyni kubokda var.
Belə ki, pseudocode orada cəhd tökülür.
OLDU.
Bu sinif zaman yaxşı istifadə bu gün.
OLDU.
Belə ki, indi gözəl we--.
Sort.
Oldu.
Belə ki, çox yaxşı.
Lauren təşəkkür edirəm.
Çox yaxşı.
>> Belə ki, yalnız sizin şüurunda zərbə və bu, bəlkə bir şey deyil
Siz CS50 ID kimi, əgər ilə oynamaq, Siz, əslində, iki dəyişənlərin dəyişdirmək olar
müvəqqəti tam istifadə etmədən.
Bu müvafiq C kodu.
Və son geri əgər Çərşənbə, biz, əgər qısa təqdim
C. Və nə bəzi yeni operatorları Hər kəs nə az kök geri
simvolu az üçbucaq var klaviatura rəmzi təmsil?
Nə bitwise operator?
>> Auditoriya: EXOR.
>> DAVID J. MALAN: EXOR.
Exclusive ya.
Yalnız əyləncə üçün, istəyirəm əgər ev, bir və b iki ixtiyari vermək
Hər hansı bir eight-- və mən kimi dəyərləri səkkiz bit dəyər seçsin.
32 bit bunu əgər, çox tez cansıxıcı almaq lazımdır.
Amma yalnız bir səkkiz az vermək bir və ya iki hər hansı dəyəri,
və oxşar dəyəri b verir.
Və sonra müəyyən istifadə son Çərşənbə XOR ki,
, bit hər ki, bit müraciət bir və b hər olanlar səkkiz bit,
və sonra bu kodu başına dəqiq bunu.
Və bu səhv deyil nə Siz ekranda burada bax.
Bu, həqiqətən sonunda aşağı üç XOR əməliyyatları
və elə magically bir və b mövqelərini mübadiləsi edəcək
hər hansı bir məlumat itirmədən.
>> Belə ki, neft və su oyun deyil yaxın real dünya təcəssüm
Hesab edirəm ki, taklit üçün hesab edə bilər.
Amma bu mütləq asandır müvəqqəti dəyişən istifadə,
burada bu halda kimi.
Və bu da bir fürsət, demək ki, də mikro optimallaşdırılması bu cür,
kompüter alim kimi demək olardı isə əyləncə növü
Siz olmadan bu necə haqqında lovğalanmaq üçün əlavə dəyişən dəyişdirmə kimi,
Bu bütün çekici deyil.
32 bit, kimi saxlamaq üçün, çünki faktiki int halda,
bütün çekici deyil sistemi harada
Siz megabayt onlarla istifadə edilə bilər və ya daha çox yaddaş bu gün.
Və əslində, biz zaman almaq daha sonra problem dəsti
və yazım həyata checker və lazımdır
belə ilə etiraz Bu az RAM və az
mümkün vaxt hələ kompüter üçün
həyata keçirilməsi üçün bir həftə var Siz olacaq yaxşıdır lazımdır pseudocode
bu resursları minimuma endirmək üçün etiraz.
Və həqiqətən, yalnız var Bu dövr münasibətilə
Siz qırxmaq üçün təşviq lazımdır hətta ən yaxşı performans off
başqa edir.
>> Belə ki, biz necə edə bilər what-- Bu faktiki kodu görmək?
Mənə indi davam edək və nümunə açmaq
ki, qəsdən adlanır No Swap bu deyil, çünki
Əslində dəyişənlərin dəyişdirmək Siz, həqiqətən, gözləyə bilər.
Belə ki, bir nəzər salaq.
Burada heç bir CS50 var bir proqram kitabxana, yalnız standart I / O gedir.
İndi biz bir prototip var üst qədər svop üçün olan yalnız
sonra müəyyən var deməkdir.
Və burada əsas var.
>> Mən özbaşına x və y təyin, müvafiq olaraq, dəyərlər bir və iki
yalnız onlar kiçik istəyirik, çünki və asan düşünmək.
Və sonra mən yalnız printfs bir dəstə var Mən ağlı başında olma çek olduğu. x 1
və y 2 ehtimalla edir o printfs demək nə.
Belə ki, heç bir sehrli indiyə qədər.
>> Sonra mən iddia gedirəm dot dot dot dəyişdirmə, def çap.
Mən mübadilə zəng etmək üçün gedirəm funksiyası, x və y keçən.
Və indi ki, güman edək swap dəqiq həyata keçirilir
bir an əvvəl olduğu kimi müvəqqəti dəyişən.
Və mən cəsarətlə iddia dəyişdirildikdə.
x bu və y indi ki indi.
Amma fayl, əlbəttə, No Swap adlanır.
Belə ki, həqiqətən nə görmək edək.
Mən heç bir mübadilə və tərtib əgər ./noswap etmək, x 1, y 2-dir.
Dəyişdirildikdə dəyişdirmə.
x y 2, 1.
Belə ki, həqiqətən, hətta qüsurlu görünür svop baxmayaraq, indi aşağı diyirləyin edək
başına dəqiq həyata keçirilir code Mən bir an əvvəl təklif edib.
Beləliklə, biz xülya almaq fikrində deyilik İndi XOR məhsulları ilə.
Bu da yalnız işləməlidir süd və OJ ilə kimi,
lakin bu iş görünmür.
>> Belə ki, bir daha bunu edək.
Bəlkə yalnız sağ çalışan deyil.
Belə ki, yenidən No Swap run edək.
Bəlkə istisna olmaqla, mən yox.
Belə ki, yalnız iş deyil.
Belə ki, bir az ağlı başında olma çek bunu bildirin.
Mənə Swap burada davam edək və yalnız əlavə bir dəqiqə gözləyin,
bir% i / n və edək plug-in bir dəyəri.
Mən, həqiqətən, istəyirəm, çünki neler görmək.
Həqiqətən, bu bir ayıklama texnika
Siz istifadə edilə bilər ki, ofis saat və ya artıq evdə,
Dan ilk yarısında yaxın Pset3 da Armendariz video
biz çap təqdim çıxdığı kimi def ən azı bir tövsiyə texnika
sadə hallarda.
Mənə davam və etmək run edək daha heç bir svop, ./noswap.
>> Maraqlı.
Belə ki, doğru olmaq görünür nə görürsünüz. x 1, y 2, lakin b 1 bir 2-dir.
Belə ki, bu iki birtəhər dəyişdirildikdə oldu lakin x və y dəyişdirildikdə əldə deyil.
Belə ki, nə baş, aydın olmaq qədər burada x və y edir
və həmin yerli dəyişənlər var Əsas daxilində, mən x və y keçən alıram
dəyişdirmək üçün.
İndi, svop, ayrı-ayrı funksiyası kimi, onun dəlilləri zəng etmək pulsuzdur
və ya onun parametrləri bir şey istəyir.
Foo x və ya y və ya bir və ya b və ya bar və ya.
Məhz onlar olduğunu aydın etmək x eyni deyil və y özlüyündə,
Mən A və B bildirib etdik.
Amma biz onlara biz istədiyiniz bir şey zəng edə bilər.
>> Və belə kimi görünür swap qəbul olunur
x-- AKA a-- və bu y-- AKA b qəbul olunur.
Elə bu üç xətləri var məhz bu dəyərləri dəyişdirmə
Lauren süd və OJ ilə etdi.
Amma biz çap zaman dəyərlər, bir və b
dəyişdirmək həqiqətən, lakin x və y onlara heç bir dəyişiklik yoxdur.
Ki, x və y burada qədər xatırlayıram.
>> Beləliklə, biz vasitəsilə bu edə bilərsiniz eləcə də digər texnika.
Və bu da bir texnikadır problemi ilə əlaqədar üç seçin.
Nin irəli gedək və bunu CS50 ID Əgər siz artıq yoxdur, əgər.
Sağ tərəfdən biz bu Debugger nişanı var.
Və bu qədər açmaq əgər, bəzi gizli məlumat yoxdur
ki, ilkin sizə atılan oldu.
Amma real sürətli bu ayrı tease bildirin.
>> Belə ki, bir, yerli dəyişənlərin görmək.
CS50 IDE qurmaq çıxır ki, və proqramlaşdırma mühit daha çox
ümumiyyətlə, bir ayıklama edir.
Vizual görmək üçün imkan verir bir vasitədir nə proqramı daxilində gedən
əlavə müraciət etmədən printfs və tərtib və çalışan
və printf nin əlavə və tərtib və ofis saat olan artıq çalışan
və ya ev, yəqin ki, olduqca yorucu olur.
>> Belə ki, burada, yalnız bir an, biz istəyirik real vaxt görmək üçün gedir
Bizim yerli dəyişənlərin dəyərləri.
Biz də müəyyən edə olacaq breakpoints adlanır nə olan
imkanlar fasilə mənim proqram var kod xüsusi xəttində icra
Mən maraqlı deyiləm ki.
Sağ?
Bu proqramlar bir split ikinci axır.
Bu, bizim yavaş insanlar üçün cür gözəl , fasilə bir an etmək imkanına malik olmaq üçün, bax
ətrafında nə olub kodu müəyyən line
proqram şum olmadan vasitəsilə və tamamilə başa.
Belə ki, bir breakpoints bizə imkan gedir qırmaq və müəyyən bir nöqtədə fasilə.
>> Call yığını bir xülya yoldur funksiyaları hazırda nə söyləyərək
hazırda adlanan.
Main həmişə birinci adlanır.
Amma Main çağırır əgər Swap adlı funksiyası,
biz, həqiqətən, bu görmək olacaq olmuşdur funksiyaları qala
əks xronoloji qaydada çağırıb.
Belə ki, görək.
>> Mən kiçiltmək gedirəm.
Mən mənim kodu geri getmək üçün gedirəm.
Və yalnız mən istəyirəm, çünki burada xırdaçı olmaq,
Mən irəli getmək və basın gedirəm yalnız xəttinin beş sol.
Və bir qırmızı dot yaradır.
Və sağ tərəfində qeyd ayıklama hey, bilir ki,
Mən yalnız bildirib ki, bir breakpoint da noswap.c line beş, xüsusi
kodu bu xətt.
Belə ki, ayıklama ki, mən bilir növbəti dəfə ki, tələb
Mən proqram fasilə run orada deyil, yalnız icra
super sürətli bütün şey çalışır.
>> Belə ki, indi debug basın gedirəm IDE çox üst düyməsini
və aşağıdakı etmək olacaq.
Bu ilkin qədər bir açıq olacaq qorxudan axtarır ikinci terminal pəncərə
Uzaqdan ayıklama Belə keçiriləcək və such--
və biz geri gəlmək lazımdır nə bütün uzun əvvəl deməkdir.
Amma indi üçün vacibdir nə qırmızı dot çarpdı ki,
ayıklama qəsdən var execution-- durdurulmuş
Biz se başına ki, line, lakin ilk ki, funksiyası faktiki kodu line.
Line yeddi ki, var İndi sarı qeyd.
>> Və indi bir nəzər salaq sağ tərəfində.
Bu default kimi görünür, gözəl kifayət qədər x nə dəyəri var?
0.
Və y nə dəyəri var?
Zero.
Və mənada gözlənilən deyil ki, x və sarı xətt var ki, y--
hələ icra.
Belə ki, x dəyəri 1 olmamalıdır.
Hər hansı digər dəyəri ola bilər, bir qondarma zibil dəyəri.
Və biz bu ki, uğurlu var mahiyyətcə bu nöqtədə sıfır.
>> Belə ki, indi yalnız bir neçə var düymələri biz qayğı lazımdır
bu şəkildə ayıklama zaman haqqında.
Burada qeyd, bir Play düyməsinə var.
Və biz oynamaq və ya hit ki, yalnız var, davam
axır gedir Proqramın qalan
və ya başqa bir breakpoint xit qədər.
Amma hər hansı digər müəyyən etdik breakpoints belə ki, yalnız var
sonuna axır gedir.
Məğlubiyyət belə ətrafında poking məqsədi.
>> Belə ki, əvəzinə, mən qayğı sağ bu nişanlar.
Mən artıq hover əgər Onlara kimi, çox olmalıdır
Siz az tips-- alət məsləhətlər görəcəksiniz.
Bu artıq addımdır.
İndi skip demək deyil aşağıdakı kod line.
Bu yalnız onu icra deməkdir və növbəti hərəkət növbəti hərəkət,
növbəti hərəkət.
Başqa sözlə, via düyməsini, mən gəzmək olar
bir zamanda mənim kodu bir addım vasitəsilə.
Sözün xətti ilə line.
İndi sağ üçün başqa bir var ki,
biz yalnız bir anda görəcəksiniz ki.
Bu qondarma deyil Icon Into Step
Mənə dive imkan gedir başqa funksiyası daxil.
Amma yalnız bir anda bu görək.
Belə ki, artıq addım basın gedirəm.
Mən basın kimi İndi, qeyd sağ üst bu düyməni,
Yerli altında təxminən gözlerini saxlamaq Dəyişənlər və x nə görmək.
x indi 1 sarı xətt indi edam etdi
və biz line 8 köçürülüb etdik.
Və yalnız bir an y inşallah 2 olmalıdır.
>> İndi heç bir şey maraqlı ki, bir az olur.
Bütün bu printf edir.
Və orta terminal qeyd pəncərə, mən çap def çıxış oldu.
İndi bir etmək lazımdır proqramçı kimi qərar.
Mən bu xətti üzərində addım bilər indeksi, onu həyata deyil
daxili ne merak alıram.
Yoxsa mən həqiqətən onu addım bilər və Swap özü daxilində gedin.
Belə ki, sonuncu nə edək.
>> Mənə davam və basın edək Biz gəl amma addım.
Notice, qəflətən pəncərə dəyişikliklər
ilk vurğulamaq üçün Swap kod line.
Ki, xətt 21 var.
İndi, funky cür ki, nə var, Burada üzərində baxmaq əgər, gözlənildiyi kimi
bir vergül b müvafiq olaraq 1 və 2, edir.
Niyə temp 32.767 edir?
Çox kimi ki, temp xatırladaraq bir an əvvəl boş fincan,
line 21 burada elan edilir.
Mən demək Niyə 32,000-, nə Bu yalnız bir qəribə dəyəri?
Evet?
>> Auditoriya: Bu başlatılmış deyil.
>> DAVID J. MALAN: Bu başlatılmadı deyil.
Belə ki, bizim kompüter həmişə fiziki yaddaş var.
O, həmişə fiziki RAM var.
Və həmişə var sıfır və bir doğru var var?
Biz istifadə edirik, çünki bizim uzun bütün gün kompüter,
Siz CS50 IDE istifadə etdiyiniz və ya server bütün gün uzun.
Ki, RAM bəzi adet sıfır var, belə ki, ya bəzi və ya bir adet sıfır və olanları.
Olursa olsun və ya Əgər siz onları istifadə etdiyiniz deyil.
Siz yalnız boş ola bilməz fəzalarında harada bit istəyirəm.
Onlar adet sıfır və olanları bilərsiniz istəyirik.
>> Belə ki, çünki temp çıxır biz hələ başlatılmış etdik
biz bu 32 bit var, lakin onlar var hər hansı tanınmış dəyərləri başlatılmış edilmişdir.
Belə ki, onlar nə ən Bu yaxınlarda o 32 bits-- baxan mýsýn istifadə
biz yalnız bəzi əsərlər gördükdə xüsusilə 32 əvvəlki istifadə
bit.
Kimi tezliklə Mən də gəl basın kimi, phew, temp, dəyəri 1 almaq üçün gedir.
Mən bir daha bunu əgər, bir var dəyəri 2 veriləcək gedərək
və sonra b gedir dəyəri 1 veriləcək.
>> Və nə indi gözəl hekayə bu nöqtədə
ayıklama ki, super yavaş-yavaş, mənə göstərən
öz sürətlə, nə Swap dövlətdir.
Amma burada üst bildiriş qeyd ki, həqiqətən zəng yığın
bu iki qat var.
Kimi qeyd Indi bir Swap, mən əvəzinə Main basın əgər,
yerli dəyişənlərin dəyişdirmək necə görürsünüz geliştirici yalnız hop bilər, çünki
ətrafında və hər hansı bir müxtəlif çərçivəsində daxil.
Biz bütün bu edirik Belə ki, baxmayaraq ki, iş və düzgün və b dəyişdirmə,
Mən Swap arasında geri və irəli getmək əgər 2 və b 1 və əsas olduğu,
Main bütün təsir etdi?
Yox.
Belə ki, paket, burada nə var?
Bəli, bu hər hansı bir zamanda çıxır ki, Siz Swap kimi bir funksiyası zəng
və bunu dəlilləri keçmək nə Siz Swap funksiyası keçən edirik
Bu halda bir surəti həmin dəlilləri.
Belə ki, x və y müvafiq olaraq hər bir, əgər 32 bit, nə Swap olur
iki yeni yerli Dəyişənlər, və ya dəlilləri,
adlı və b-- lakin o ixtiyari var names-- lakin adet sıfır model
və daxilində və b olanlardır up astarlı x və y eyni olmaq
lakin onlar deyil x və y kimi eyni şey.
>> Main onun parça var sanki bu kağız 1 və x və y 2,
və bu əlləri sonra zaman kağız parçası Swap,
Swap çox tez olur öz qələm, yazır
1 və kağız öz hesabatında 2, əlləri Əsas orijinal XY geri
və sonra öz yoxdur A və B ilə bir şey.
Bu indi super vacibdir Bu nontrivial təsir göstərir
həqiqətən doğru kodu yazmaq üçün Bu, görünür, çünki biz dəyişdirmək bilməz
iki dəyişənlərin.
>> Mən düzgün Swap funksiyası yazıblar.
Biz Lauren ilə həyata etdik əslində düzgün svop funksiyası,
lakin yəqin heç məsələləri əgər həqiqətən bilməz
daimi iki dəyərlər dəyişdirmək.
Beləliklə, biz bir yol lazımdır həqiqətən bu almaq üçün,
və biz lazımdır həqiqətən bu problem həll edir.
Və çıxır və biz gəlmək lazımdır geri bu şəkil
long-- əvvəl bu bir yoldur ki, Siz kompüter yaddaş cəlb edə bilər.
Bu, sadəcə bir düzbucaqlı var.
Siz hər hansı bir onu cəlb edə bilər yollarla, lakin bu sayı
bir kimi çəkmək üçün rahat Aşağıdakı səbəbə görə düzbucaqlı.
>> Biz kənarda gün başlamaq və olacaq sözdə yığını haqqında söhbət.
Və yığını yalnız bir yığın edir bir yaddaş yığın RAM--
funksiyaları imkanı var ki onlar adlı edirik zaman.
Və belə ki, çıxır Bu yığını çox aşağı
Əsas yerli dəyişənlərin bütün harada org C və org V və bütün stuff və
ismarıcları getmək üçün gedir. Və əsas əgər , Swap kimi bəzi digər funksiyası çağırır
yaxşı, Swap başqa almaq üçün gedir yuxarıda yaddaş up qat.
>> Və belə ki, yalnız bir sürətli ötəri vermək Bu şəkil, mən artıq getmək əgər burada
və mənə bu güzgü imkan yerüstü kimi, həqiqətən, Mən nə well--,
biz yalnız qayğı əgər indi bu şəkil alt,
ki, bir proqram çalıştırdığınızda və əsas adlı olur
Main bir yığın verilir Mənim kompüter RAM
bu qondarma yığını altında.
Mən onu cəlb gedirəm qəsdən bir kvadrat kimi.
Belə ki, 32 bit və ya dörd bayt kimi.
Bu əsas funksiyası var, əgər bir 1 dəyəri ilə dəyişən adlı x
və adlı dəyişən var 2 dəyəri y, ki
yaddaş bu qəlpə alaraq kimi ki, Main əməliyyat tərəfindən verilmişdir
sistemi və onu qədər bölünməsi ilk yerli dəyişən, burada gedir
ikinci burada gedir, və bu.
>> Main Swap, Swap çağırır zaman yaddaş öz dilim alır
Biz bu kimi çəkmək lazımdır ki, əməliyyat sistemi,
və var olacaq onun öz yerli dəyişənlərin əsasında
bizim həyata keçirilməsi üzrə əvvəllər yerli dəyişənlərin ilə
ilkin və b ki, dəyərləri 1 və 2 almaq.
Amma sonra, qısa müddətdə Swap indeksi, icra
və Lauren həqiqətən svopları OJ və süd, nələr olur?
Bəli, bu 2 1, bu çevrilir 1, yolu ilə, 2 çevrilir və
olan olan bir temp dəyişən var ki, nəhayət ki, bütün vaxt istifadə
üz gedir.
Amma etməz nə qədər iş nə
bu xətt Bu yaddaş məkanda of-- da, x və y tamamilə bakir var.
>> Beləliklə, biz verilməsi bir yol lazımdır Bu kimi Swap və funksiyaları
gizli giriş, Siz, üçün funksiyaları x və y kimi xatirəsini like--.
Belə ki, bir nəzər salaq kömək nümunə
Bizə oldu dəqiq nə Bu bütün zaman olur.
Mən irəli getmək üçün gedirəm və açmaq Zero müqayisə.
Mən yaxın gedirəm Bizim ayıklama, mən gedirəm
Bu qorxudan axtarır mesajı bağlamaq üçün yalnız bir dəqiqə gözləyin deyir,
Siz orta ayıklama istəyirik.
Mən burada bu nişanı gizlətmək gedirəm yalnız geri sadəlik getmək üçün.
GDB həlak Belə ki, narahat olmayın.
Yalnız Proqram o deməkdir ki, qəsdən bu halda, çıxın edilmişdir,
Mənim tərəfimdən.
>> İndi Zero bu yoxdur karşılaştırın.
Mən CS50 istifadə edirəm standart I / O kitabxana.
Mən ilk əsas funksiyası var deyir, bir şey demək, və simli olur.
Sonra deyir başqa simli olur.
Və bu iki strings qeyd müvafiq olaraq, s və t deyilir.
İndi bu proqram, müqayisə Zero, həyat onun məqsədi,
Bu mənə ehtimal, Mən eyni şey yazın idi?
Və mən həftə bir geri gedirəm.
Mən bərabər bərabər operator istifadə edirəm olan keyfiyyətli operatorudur.
Not tapşırıq operator, bərabərlik operator.
Mən yalnız s və t müqayisə edirəm.
>> Belə ki, faktiki olaraq irəli getmək və bunu bildirin.
Mən irəli getmək üçün gedirəm və sıfır müqayisə etmək.
Mən ./comparezero gedirəm.
Mən getmək üçün gedirəm irəli və bir şey demək
kimi, bu kiçik ana edək və necə Böyük Harf ilə ana haqqında.
Və əlbəttə ki, müxtəlif şeylər yazın.
Oldu.
Ki gözlənilən deyil.
>> Yenidən run edək.
Iki dəfə, kiçik kiçik etmək.
Ki, mənə super eyni görünür.
Daxil edin.
OLDU.
Bəlkə çünki yalnız qəribə mənim qrammatika simpatiya deyil.
Belə ki, kapital MOM edək, kapital MOM, eyni.
Müxtəlif şeylər.
>> Belə ki, niyə ki?
Yaxşı, həqiqətən nə olacaq burada başlıq altında?
Belə ki, üzərində geri gedək Burada yalnız bir an üçün
və nə hesab GetString həqiqətən edir.
Siz GetString zəng zaman, ki, bir funksiyası biz var
özümüz yazıb və elə bir olur istifadəçi simvol ardıcıllığı.
Və ilk ki, güman edək dəfə GetString zəng ki, mənə verir
yaddaş yığın ki, bu kimi görünür.
Mən bütün kiçik çap əgər m-o-m-- və nə ondan sonra gedir?
Just tez ağlı başında olma çek.
>> Backslash sıfır.
Biz bilirik.
Və biz oynayıb geri ətrafında Zamila adı ilə
və digər adları bir dəstə zaman Rob burada axtarır
yaddaş daxilində neler edir.
Belə ki, hekayə eyni deyil.
Bu nədir GetString Mənə qayıdır.
İndi mənim kodu bir an əvvəl saxlanılır GetString qaytarılması dəyəri
bir dəyişən s çağırıb.
Və sonra ikinci dəfə çağırıb, bir dəyişən adlı t onu saxlanılır.
>> Mən burada artıq getmək əgər Belə ki, mən lazım bu yerli dəyişən çəkmək üçün
Mən ümumiyyətlə gedirəm izlersin alacağıq kimi bir simli çəkmək
burada bir az kvadrat kimi s-- zəng.
Ana nə necə və indi birtəhər bu dəyişən s daxili getmək?
Yaxşı, biz geri getmək lazımdır Burada ilk prinsiplərinə.
GetString həqiqətən nə qayıdır?
>> Belə ki, M-O-M çıxır backslash sıfır və hər hansı bir sayı
kimi yaddaşında digər strings Zamila və Rob və ya Andy və ya hər hansı digər
əlbəttə var bizim kompüter RAM və ya yaddaş.
Və RAM var like-- var RAM konsert, RAM iki gigs,
və ya bir milyard və ya iki milyard bytes, və ya bəlkə daha çox bu gün.
Belə ki, bu gün məqsədlər üçün, güman edək, biz sayı necə etməz ki,
onlara, lakin biz hər saya bilər o milyard iki milyard
və ya dörd milyard bytes.
>> Və yalnız özbaşına ki, bildirin Bu ilk bite, ikinci bite,
üçüncü, dördüncü.
Mən qəsdən üçün sıfır istifadə deyiləm Bu gün amma geri gəlmək lazımdır.
Belə ki, başqa sözlə, bu, əgər ilk dəfə, proqram istifadə edirəm
Mən yalnız xoşbəxt və ilk alıram bite sonra yer birində iki
sonra üç dörd.
Mən rəsm saxlanılır əgər, qutusu sayı iki milyard yol üzərində burada olacaq.
>> Belə ki, sonra nə düşünürsünüz, GetString həqiqətən qaytarır?
Bu M-O-M backslash qaytarılması deyil sıfır özlüyündə aydın, çünki
Mən tərtib etdik qutusuna uyğun deyil.
Belə ki, həqiqətən, başqa nə GetString bilər Bütün bu həftə qaytarılması?
Cavab deyil board burada haradasa.
Siz M-O-M backslash sıfır uyğun bilməz belə nə əvəzinə mənada edə bilər?
Siz qoyaraq, super ağıllı olmaq olsaydı qondarma mühəndis papaq,
Siz nə qayıtmaq bilər?
Nə informasiya ən az məbləği Siz hələ ki ki, qayıtmaq bilər
Siz yaddaş M-O-M tapmaq imkan?
Evet?
>> Auditoriya: biri.
>> DAVID J. MALAN: biri.
Və niyə bir?
Auditoriya: demək istəyirəm, çünki siz [işitilemez] getmək üçün.
DAVID J. MALAN: Exactly.
Mən yalnız ünvan qayıtmaq üçün gedirəm Mən kazanılmış simli.
Bu ünvan hal yeri biridir.
Beləliklə, nə həqiqətən s-- saxlanılır olunur və hər string dəyişən beləliklə far--
yalnız olmuşdur ki, simli ünvanı.
>> Eyni zamanda, mən zəng əgər Ikinci dəfə və mən GetString
sanki eyni şey yazın Lowercase-- M-O-M M-O-M
və başqa backslash sıfır, və indi bəlkə mənim proqramın
bir müddət belə ki, bəlkə bu çalışan edilmişdir 10, bu, bu 12, yer 11
Bu 13.
bəzi digər istifadə kompüter hər hansı səbəbdən yaddaş.
İndi mənim ikinci gedir mənim proqram t dəyişən?
10.
Məhz.
>> Və belə ki, biz baxdığımız zaman Bu proqramın mənbə kodu
Mən sadəcə çalışıram iki dəyərlər müqayisə etmək,
t bərabər bərabər deyil, nə Aşkar insan cavab?
1 10 bərabər deyil, yalnız heç bir çünki.
Və belə Burada bir yalan bizim üçün fürsət həqiqətən
yalnız ilk yenidən getmək prinsipləri və düşünmək,
nə başlıq altında olur?
Biz söhbət etdik bit və bytes və yaddaş,
lakin bu, anlamaq üçün həqiqətən faydalı Siz GetString zəng çünki,
biz hesab baxmayaraq ki, bu M-O-M və ya string ana qaytarılması
və ya Andy və ya Zamila və ya kimi, texniki
yalnız ünvan qaytarılması yaddaş ki, yığın.
>> Amma ki, OK.
Mən necə bilmirəm, çünki string harada bitir?
Mən yalnız başlanğıcı verilmiş alıram?
Yaxşı, backslash sıfır, sağ?
Just mən xətti vaxt print def M-O-M çap.
Və tezliklə mən backslash bax Mən başladı sıfır, mən qayğı yoxdur
Mən artıq dolayısı bilirəm Mən son lazımdır.
>> Və bu gün əvvəlinə qeyd və Mənə Çünki biz dramatik bunu bildirin
narahatlıq bir çox yolu ilə getdi bu burada wheels-- təlim almaq
bu gün təlim təkərlər başlamaq off gəlmək və biz aşkar lüğətdə
>> [Alqış]
>> Ki, səfər dəyər yaxşı idi Bəli, bu səhər Hədəf?
Belə ki, indi var, bu çevrilir həyata, simli kimi bir şey.
String yoxdur.
Biz etdik bir sinonim var CS50 kitabxana daxilində.
Bundan sonra da zəng başlamaq olacaq s və t deyil strings lakin char ulduz.
Char ulduz və biz lazımdır uzun əvvəl ayrı tease.
Amma bu demək deyil, davam, hətta ki,
İndi GetString istifadə edərək, texniki I olmalıdır
char ulduz və char ulduz deyərək olun.
>> Və nə ulduz çıxır işarə gedir bir şey deyil
bir göstərici və ya bir ünvan çağırıb.
Və əslində, bir iltifat üçün irəli yalan nə
Bu 20 ikinci clip edir bizim Stanford dost Nick Parlante
kim çox bir müddət əvvəl sərf vaxt bir gülünc məbləği,
yaxşı kimi mən deyə bilərəm onun mətbəx və ya onun zirzəmi,
claymation edilməsi dünyaya tanıdan
adlı bir xarakter Binky kimə biz
göstəricilərinə növbəti dəfə təqdim olunacaq.
Belə ki, burada gəlib nə bir önizleme var.
>> [Video playback]
>> -Hey, Binky.
Uyan.
Bu göstərici əyləncə üçün vaxt var.
>> -Bu nədir?
Göstəricilər haqqında məlumat əldə edin?
Oh, goody.
>> [END playback]
DAVID J. MALAN: Və qeyd, biz Çərşənbə günü görəcəksiniz.
Oldu.
Dancing kim?
Hadi.
Dancing kim?
Siz mənə başlamaq istəyirsiniz?
Mən başlamaq lazımdır.
Woooo!
>> LAUREN: Sweet xülya Moses.