DAVID MALAN: Bütün hüququ.
Belə ki, bu CS50 və bu indi həftə üç start.
>> Indiyə qədər, biz belə qədər C proqramları yazılı edilmişdir
ki, bir az baxmaq Burada bu kimi bir şey.
Beləliklə, biz bir neçə of var kəskin üst daxildir.
Biz etibarsız, int əsas var, və sonra sonra bir şey ortada etmək,
daxili kodu bəzi bit ki, funksiyası.
Amma əsas fakt olmuşdur biz burada etibarsız deyərək etdik.
Belə ki, etibarsız, bu zaman bütün, ifadə Bu proqram, zaman run,
yalnız adı ilə davam edə bilər.
Siz hər hansı digər sözləri yazın bilməz və ya proqram adı zaman sonra nömrələri
çalışan.
Belə ki, məsələn proqram, əgər salam adlı fayla tərtib,
Siz salam edə bilər, lakin bu deyil.
>> Yeganə yolu edə biləcək Bu proqram daxil təmin
bir funksiyası zəng edir.
Məsələn, nə funksiyası Biz bu günə qədər istifadə edilmişdir
istifadəçi daxil almaq üçün necə?
>> Auditoriya: string alın.
DAVID MALAN: string almaq, ya int almaq və ya başqaları gördüm,
Siz hələ istifadə deyil, hətta, kimi, uzun uzun və kimi almaq.
Amma güman edirəm ki, biz həqiqətən başlamaq istəyirəm
az daha var ki, yazı proqramları səmimi, bir az daha, çox yönlü və
siz var ki, əmrləri kimi ümid edirəm ki, əldə edilmişdir,
bir az vərdiş.
Cd kosmik Dropbox kimi.
Bu, əlbəttə, dəyişikliklər kataloq, fərz
Siz John Harvard ev etdiyiniz directory, sizin Dropbox qovluğunda.
Eyni zamanda, bu kimi bir komanda , pset2 adlı yeni qovluq yaradır
Siz ola bilər kimi artıq və ya tezliklə problem iki seçin.
Etmək Hello, əlbəttə, bir əmr deyil ki, salam adlı proqram qurur
salam dot c adlı bir fayl.
Və bu hər hallarda, indi biz etdik
sözdə bir dəlil təmin command line, yanıb-sönən tez,
Ki, bilir nə qurmaq, və belə ki, mkdir yaratmaq üçün nə qovluq bilir,
və ki, cd bilir harada getmək istəyirəm.
Amma indi qədər, deyirdik saxlamaq əsas, sizin u mənim funksiyası,
bir boşluq ifadə var bu mötərizə daxilində,
olan bu o deməkdir ki, hər hansı arqumentlər bilməz.
>> Belə ki, bu gün başlayan, biz nə olacaq
, biz başlamaq olacaq edir Bu hətta kimi şeylər dəstək.
Əslində, bu halda, ki, siz adətən əl yazın yoxdur,
Bunu edilmişdir olun bizim üçün, yoxdur
bir lakin bir, iki, üç əlavə Bu proqram adına strings
cingilti.
Belə ki, necə biz buna nail edirsiniz?
>> Bəli, bu gün başlayan, Biz istəyirik hallarda
vasitəsilə giriş təmin etmək command line sözdə,
Biz əlavə başlamaq olacaq burada yellow-- nə var
int argc vergül ilə etibarsız əvəz string argv açıq bracket yaxın bracket.
İndi bu maraqlı səbəblərdən bir neçə.
One, bizə yazmaq imkan olacaq bir az daha dinamik proqramlar.
Lakin, daha compellingly, bu qədər açıq olacaq
kimi indi söhbət nə seriallarda bilərsiniz həqiqətən
nə bir simli üçün istifadə edilə həqiqətən başlıq altında,
gələn həftə qədər dalğıc başlamaq zaman maşın necə hətta daha dərin
bu məhsulları bütün iş edilməsi.
Amma indi üçün, çəkmək imkan, bəlkə, bir şəkil.
>> Bir proqram yazarkən elan əsas ilə
bu şəkildə, məsələn ki, iki arqumentlər bir int edir
and-- nə data type İkinci dəlil var?
>> Auditoriya: Array.
DAVID MALAN: Array.
Bir var kimi belə ki, ilk baxışdan görünür simli, lakin kvadrat mötərizə bilərsiniz.
Biz təqdim keçən zaman geri bir sıra anlayışı.
Və seriallarda kvadrat mötərizə istifadə edin kontekstlərdə bir neçə.
Siz kvadrat istifadə edə bilər Mötərizədə bir sıra getmək
və kimi, müəyyən bir element almaq bracket 0 və ya bracket 1 və ya bracket 2.
Amma biz, əgər qısa gördüm Keçən həftə də siz
bu kvadrat mötərizə istifadə edin bir serialın ölçüsü bəyan,
Siz əvvəlcədən bilirsinizsə neçə ints və ya neçə strings və ya hər hansı
həqiqətən istəyirəm.
Belə ki, orada nin çıxır Burada üçüncü kontekstində
ki, içərisində heç bir sıra var kvadrat mötərizədə.
Mən burada kimi zaman, müəyyən, argv kimi bir şey adı,
olan yalnız bir xülya yoludur dəlil vektor deyərək olan
bir xülya yolu , dəlilləri bir sıra deyərək
açıq bracket yaxın bracket yalnız mütləq deyil o deməkdir ki,
necə böyük əvvəlcədən bilmək Bu array, olacaq
ancaq bir sıra olacaq bilirik.
Siz bilmirəm, əgər belə sayı, orada qoymaq deyil
açıq bracket yaxın bracket üçün argv bir string deyil o deməkdir ki,
lakin strings bir sıra.
Belə ki syntactically, əgər geri son həftə hesab edirəm ki,
deyərək çox oxşar int yaş açıq bracket kimi bir şey,
və sonra bir şey sonra.
Belə ki, nə bu kimi görünür?
Nin əslində bir şəkil çəkmək edək.
Belə ki, Main bu proqram çalıştırdığınızda iki dəlilləri daxili müəyyən edərək
o parantez, siz mahiyyətcə ən azı iki chunks
yaddaş sizə təqdim başlıq altında.
One, bu düzbucaqlı kimi çəkir I will kimi, argc adlı olacaq.
Və yalnız bir sürətli recap kimi, argc data növü nədir?
Belə ki, bir int var.
Belə ki, bir sıra gedir argc-- növbə getmək
həyata Arqument sayı tərəfdardır ki.
Eyni zamanda, mən bir sıra kimi argv tərtib etdik.
Və mən, həqiqətən bilmirəm Bu olacaq necə uzun,
yəni bu məqsədlər üçün dot dot dot.
Bəzi uzunluğu əldə edə bilər.
Amma burada təsvir etdik ən azı dörd düzbucaqlı.
Belə ki, mağaza yaddaş yığın argv string string simli dot dot dot,
və argc yalnız bir yığın tam üçün yaddaş.
>> Belə ki, indi bir az daha dəqiq olsun.
Əgər, mən strings var Bu array adlı
argv, mən onlara almaq istəyirəm fərdi, yalnız ötən həftə kimi,
biz notation istifadə etmək olacaq argv bracket 0 kimi
ilk şey bir sıra almaq üçün.
Argv bracket 1 almaq üçün s İkinci şey, və.
Əsas Burada biz hələ 0 etdiyiniz olan indexed-- biz hələ 0-dan hesablanması edirik.
Belə ki, indi həqiqətən edək bu bir şey qoymaq.
Mən adlı proqramı tərtib etmək olsaydı hello hello dot c adlı bir fayl,
və sonra proqram run dot ilə salam doğramaq,
mənim kompüter mənim laptop nə, başlıq altında kimi baxmaq
Mən dot run an salam doğramaq və Enter?
Bəli, bu bəlkə biz təsvir nə
Sizin kompüter məzmunu kimi yaddaş, və ya RAM Random Access Memory.
Başqa sözlə, kompüter, birtəhər magically sizin üçün,
argc sayı 1 qoyur, AKA argcount, və sanki simli qoyur
salam argv bracket 0.
Mən heç bir fikir, səmimi, nə var argv bracket 1 və ya 2 və ya 3,
istifadəçi deyil, çünki , salam başqa bir şey tipli
bu güman olacaq çox güman ki, zibil dəyərlər,
belə danışmaq.
Yaddaş bu chunks mövcud, lakin bu, bizim üçün deyil
Çünki, onlara baxmaq Bu argcount yalnız biridir.
>> İndi isə, mən əgər başqa bir proqram run yazmaq,
daha düzgün bir komanda olan cd, Sizin yanıb-sönən prompt-- cd məkanında
Mən səmərəli, run zaman Dropbox--, CD proqram run zaman, argc,
mənim kompüter yaddaş daxili, üçün ən briefest ikinci sayı 2.
Və sonra argv bracket o var cd, argv bracket 1, Dropbox var
və sonra əlbəttə komanda tamamlayır, bu yaddaş bütün
mahiyyətcə üz gedir və başqa bir şey üçün istifadə olunur.
Və mən demək nə var ikinci bir split.
>> Eyni zamanda, biz mkdir Pset2 əgər, şəkil, demək olar ki, eyni görünür
lakin argv daxilində müxtəlif strings ilə.
Mən salam cingilti tire əgər salam dot c, eyni fikir.
Daha stuff üçün doldurulur argv, və argc, əlbəttə, 4.
Belə ki, başqa sözlə, hətta bu array baxmayaraq
bəzi, dot dot dot bilər dəyişən uzunluğu, belə ki, danışmaq
Siz həmişə olduğu sonunda bilmək argc sizə gedir, çünki,
nə nöqtədə siz dayandırmaq üçün argv elementləri baxaraq.
Siz yalnız dörd baxa bilərsiniz bu halda cəmi.
>> Belə ki, indi bir nəzər edək, bəlkə, sadə bir proqramdır.
Yalnız salam deyir ki, bir Zamyla kimi kimsə.
Mən bir proqram yazmaq üçün gedirəm təsdiq yalnız bir anda hansı vasitəsilə mən nə edə bilər
sonra mən istəyirəm Salam kosmik Zamyla, və mənim proqram bir şey çap
kimi super-sadə "hello, Zamyla."
Keçmişdə İndi biz GetString istifadə etdik.
Keçmişdə, hətta belə Siz proqramlaşdırma yeni danışırsınızsa
odds bir qızışdırmaq bilər var GetString istifadə edir ki proqram
və sonra printf istifadə Zamyla hi demək.
Amma bu dəfə GetString istifadə edək.
Mənə əvəzinə appliant daxil edək və standart I O dot saat daxildir.
Mənə də CS50 dot saat daxildir edək.
İndi əsas int və indi mən bu gün etibarsız etmək niyyətində deyil.
Əksinə, mən int argc gedirəm string argv açıq bracket yaxın bracket,
bir sıra ifadə deyil.
İndi burada mənim nə deyilən.
Mən indi gedirəm mən oldum, iman bir sıçrayış bir az etmək üçün gedir,
Mən istifadəçi güman gedirəm düzgün bu proqramı istifadə etmək niyyətindədir
və mən sadəcə gedirəm , salam printf% sn yoxdur.
Belə ki, heç bir şey yoxdur, yeni.
Amma indi nə söz qoymaq istəyirəm Proqramın adına istifadəçi növləri.
Mən Zamyla Salam yer əgər, mən elə program giriş istəyirəm
dırnağı bağlamaq "ZAMYLA." sitat mən mənim Arqument vektor daxil edə bilərsiniz,
mənim strings array və komanda əgər, yenə salam kosmik, Zamyla idi
nə nömrəsi istəyirəm nə Burada argv qoymaq?
Auditoriya: 1.
DAVID MALAN: 1, çünki bracket 0 çıxır
Bu olacaq Proqramın adı gördük kimi.
Belə ki, bracket 1 ilk söz I ki, istifadəçi yazdığınız.
Mən irəli getmək və bu saxlamaq üçün gedirəm.
Mən qovluğa getmək üçün gedirəm harada Mən bu fayl yerləşdirmişəm.
Mən salam 3 etmək gedirəm.
Comp Io nin OK.
salam Zamyla daxil edin.
Mən səhv nə idi?
Mən sürpriz tərəfindən tutuldu özümü orada yalnız bir an üçün.
Mən səhv nə idi?
>> Auditoriya: məktəbin adı.
>> DAVID MALAN: Bu fayl Agentliyi həqiqətən hello3.c çağırıb.
Mən yalnız etdi ardıcıllıq, biz çünki
Bu idi hello.c Agentliyi online kodu keçmiş.
Belə ki, bu salam düzeltmek bildirin bracket dash 3 Zamyla.
Daxil edin.
Və indi biz, salam ZAMYLA var.
Eyni zamanda, mən bu dəyişə bilər Rob, və ya, həqiqətən, hər hansı digər söz olsun.
>> Amma bir küncündə işi hesab edək.
Əgər nə olacaq gözləmək bilər Mən kimsənin adını yazın deyil?
>> Auditoriya: Error.
>> DAVID MALAN: An error bəlkə bir növ, və.
Baxaq.
Daxil edin.
Null.
Belə printf həqiqətən olunur Bizə bir az qoruyucu
Burada, və sözün açıq paren çap null, hətta pis şeylər ola bilər.
Və yalnız nümayiş etdirmək Bir şey tamamilə
lazım deyil, öz gedək Burada və ətrafında poking başlayır.
Right?
Mən bilirəm ki, əgər şəkil ilə yaddaş, mahiyyətcə bu
argv bracket 1 Zamyla, argv var bracket 0 salam var, ya salam-3.
Nə bracket 2 var?
Belə ki, cavab verə bilərsiniz sağ, özümü sual?
Mən yalnız bir 2, 1 dəyişə bilərsiniz.
İndi, 3 salam compile ./hello3 nin zoom və Enter edək.
Whoops.
No quote mark.
Maraqlı.
Belə ki cür sərin var burada nə görmək.
>> Belə ki, nə mənim laptop daxilində?
Nin bracket 3 ilə xilas edək.
Salam-3, hello3 olun.
Maraqlı.
İndi həqiqətən bold-- 50 almaq edək.
Belə ki, dərin həqiqətən dalğıc var mənim kompüter yaddaş daxil.
50 göstəriciləri ilə.
Belə salam 3 salam-3 olun.
Maraqlı.
Bütün hüquqlar, indi mən yalnız deyiləm tələsik almaq üçün gedir.
Nin 5000 gedək.
Bütün hüquqlar.
Mənə compile bildirin.
Salam-3, hello3 olun.
OK.
Siz bəzi artıq var bilər off gedir bir ampul ola bilər.
Necə bir çox var əvvəl bu mesajı görüldü?
OK.
Belə ki, niyə?
>> Oran are-- və müxtəlif var bu səbəb ola bilər ki, hər şeyi,
və aydın yaxşı etdiyiniz company-- biz aydın şəkildə
adlı nə səbəb bir seqmentasiya günah.
Və bu gün uzun hekayə qısa, I yaddaş seqment toxunub
Mən deyil ki.
Bir seqment yalnız bir yığın deməkdir yaddaş Mən deyil ki.
İndi kompüter ki, zəmanət, mən Mən argv toxunmaq olar ki, ./helloZamyla run
bracket 0 və argv bracket 1 ola bilər.
Amma argc dəyəri 2, mən deməkdir yalnız şərəfinə sort var allowed--
toxunmaq system-- bracket 0 və bracket 1.
Mən heç bir uzaq getmək əgər var yoxdur yaddaş olacaq.
Mənim RAM fiziki mövcud kompüter.
Amma kim var nə bilir?
Həqiqətən, mən neçə qaçıram bir zamanda proqramları.
Mən əgər mən seen-- ola bilər Bu appliant haqqında bunu
lakin mənim Mac və ya PC-- mən ola bilər bir e-poçt məzmunu görülür.
Mən bir anlıq görmüşəm bilər Mesaj yaxınlarda mən göndərdik.
Ola bilər ki, bir şey yaddaş ətrafında uzunsürən
yolu ilə əldə bilərdi Bu ixtiyari kvadrat mötərizə notation.
Və ya pis hələ, siz ola bilər mənim parol biri
Bu yaxınlarda mən, yazılmış bir ki ediyorum ki, proqram yaddaş saxlanılır kimi belə
mənə kimlik, və sonra yalnız cür tərk
RAM I proqram çıxmaq qədər.
>> Və həqiqətən, bu biridir təhlükə və bir səlahiyyətləri
C. kimi bir dil istifadə Siz unfettered imkanı var
bütün içeriğini bir proqramın yaddaş,
və nə pis uşaqlar bilərsiniz hətta cases-- nə
xüsusilə biz web proqramlaşdırma almaq
semestr sonuna doğru, biz will ətrafında soxmaq bu topic-- yenidən,
potensial, kimsə kompüter var yaddaş və maraqlı şeyi tapmaq
biz orada gördüm.
Və ya hətta pis hələ, parol ki, o və ya o pis şeylər üçün istifadə edə bilərsiniz.
>> Belə aydın mən bunu olmamalıdır qəribə şeylər başlamaq çünki.
Həqiqətən, bu proqram şaqqıltılı edir.
Bu ekvivalent olacaq Windows Mac OS və ya
bir proqram pəncərə yalnız yoxa.
Gözlənilməz bir səhv meydana gəldi.
Command-line mühitdə biz bu kimi bir şey görmək.
Amma niyə, mən sadəcə toxunan deyiləm olunur mənə aid deyil ki, yaddaş.
>> Belə ki, bu a qarşı müdafiə edək fərqli bir şəkildə az
burada bu proqram baxaraq.
Belə ki, daha, skelet biz əvvəllər gördüm ki,
və mən bu dəfə int qeyd etdik.
Və bütün bu vaxt əsas var həqiqətən dəyər döndü.
Hətta baxmayaraq ki, bizim mühazirə ən biz bir dəfə istifadə heç etdik nümunələri
əsas şey qayıtmaq.
Biz yalnız printf yaxın yazmaq buruq brace və bu.
Lakin pulsuz üçün, nə compiler sizin üçün bunu
səmərəli, sizin üçün 0 qayıdır.
Çıxır və bir az var 0 yaxşıdır ki counterintuitive--.
Bu se başına yalan demək deyil.
0 yaxşıdır, və hər hansı bir qeyri-0 dəyəri, dünya qərar qəbul edib
səhv demek bilər.
Əgər messed olsanız belə bilgisayarınızda bir şey,
və ya proqram yalnız sizə vəfat edib və Bəzi səhv pəncərə kazanılmış
ekranda deyərək səhv 49 və ya səhv mənfi 23--
ki, bəzi zahirən əsassız value-- bir proqramçı ağır kodlu çünki
49 mənfi və ya müsbət kimi dəyəri 23 hər hansı bir sayı təmsil, demək cəsarət,
4 milyard mümkün şeylər ki, bir proqram yanlış getmək bilər.
>> Mən necə bilər Bu üstünlüyü özümü?
Yaxşı, mənə bir proqram açmaq Mən əvvəlcədən yazmışdır ki,
və online salam 4 çağırıb ətrafında soxmaq.
Və bu ki, istisna olmaqla, demək olar ki, eyni deyil onun səhv yoxlanılması bir az var.
Bu halda, mən yenə elan etdik iki dəlilləri alaraq əsas,
lakin bu zaman, line 17, bildiriş Mən ağlı başında olma çek bir az edirəm.
Mən əmin edilməsi alıram argc 2 bərabərdir bərabərdir.
Bu, çünki, ki, Mən təhlükəsiz deməkdir
yalnız bracket 0, lakin bracket 1 toxunmaq.
Mən irəli getmək və çap, bu halda, Zamyla ya Rob
ya mən tipli hər hansı söz.
Və indi yalnız almaq üçün , daha düzgün bir az
Mən açıq qayıtmaq üçün gedirəm 0 Bütün yaxşı demek.
Pis bir şey baş verib.
>> Lakin Konvensiya, mən gedirəm 1 qayıtmaq, və ya açıq hər hansı bir qeyri-0 dəyər,
bir şey yanlış getdi əgər.
İndi istifadəçi niyyətində deyil həqiqətən neler bilərsiniz.
Həqiqətən mən bu kataloq getmək əgər, biz, zoom və salam 4 edə bilərəm
I gözləmək kimi Salam-4 Zamyla davranır.
Amma əvəzinə yazın yoxsa bir şey, heç bir şey görünür,
lakin bu qəza deyil.
Və mən əvəzinə bir şey varsa, Rob kimi bir PROCTOR edir
Thayer-- paylaşma ixtiyari məlumat.
Ancaq xəbərdarlıq, argv 1, 2, 3, 4, və 5 artıq yaddaş mövcud olmalıdır.
Ki, bu da, nə deyil Mənim proqram gözləyir
Mən olub yoxlanılır, çünki argc bərabər 2 və ya bərabər deyil.
Mən indi bu qarşı müdafiə edirəm.
>> İndi, bir kənara kimi, biz programmer-- və ya daha çox biz users--
0 və ya 1, lakin istifadə edərək görmək heç vaxt alət, Debugger və ya digər alətlər adlı
Biz əvvəl görəcəksiniz kimi uzun, siz proqramçı
həqiqətən ola bilər nə edə bilərsiniz proqram daxilində yanlış gedir.
>> Belə ki, argc hər hansı suallar?
Bəli.
>> Auditoriya: Mən gördüm onlar xarakter var idi, [Işitilemez]
kimi string ulduz d ifadə edərək, xarakter ulduz vergül.
Onlar burada ekvivalent?
>> DAVID MALAN: onlar.
Sual Belə ki, siz bəzən görüldü proqramları
deyil ki, bu kimi string argv bracket demək
lakin əvəzinə bir şey demək char ulduz argv bracket kimi.
Və hətta digər var Siz görə bilərsiniz ki, variantlar.
Onlar, həqiqətən, bərabər.
İndi, biz bu var təlim təkərlər sort
CS50 string şəklində haqqında kitabxana, ancaq bir həftə ərzində
və ya belə ki, aradan qaldırılması olacaq tamamilə və həqiqətən maneə
char və ulduz nə baxmaq və o yaddaş necə aid
təmsil ümumiyyətlə.
Belə ki, geri qayıtmaq lazımdır.
>> Bizim argv ya argc Digər suallar?
Bəli.
Auditoriya: Niyə döndünüz bir səhv [Işitilemez]?
DAVID MALAN: bunu niyə oh only-- səhv qayıtmaq!
Əvvəlki halda, biz yaddaş ətrafında futzing edilmişdir,
niyə yalnız bir səhv qayıtmaq etməyib Mən, həqiqətən, böyük bir sıra yazdığınız zaman?
Qısa cavab biz yalnız uğurlu var edir.
Ümumiyyətlə, kompüter chunks yaddaş ayırır,
və mənə böyük bir kifayət qədər yığın verdi Mən qeyd olmadan, üz var
toxunan bracket 2, bracket 3, bracket 50, amma tezliklə mən itələdi
mənim uğurlar, mən kənarda getdi yaddaş yığın sərhədləri
əməliyyat sistemi mənə vermişdi.
Və zaman var əzişdirilməsini və heç bir bildirib.
Seqmentasiya səhv.
Bəli.
>> Auditoriya: Necə kompüter argc dəyəri bilirik?
>> DAVID MALAN: Necə kompüter argc dəyəri bilirik?
Bir proqram çalıştırdığınızda, proqram, yanıb-sönən tez təbiət,
array verilir çap olunmuşdur sözlər
tez at, ki, sətirinə yazdığınız.
Və belə ki, əməliyyat edir sistemi mahiyyətcə
sizin üçün əsas nin arqumentləri populates.
Belə ki, xidmətlərin biri Siz ki, sort gizli
başlıq altında əməliyyat sistemi.
Digər suallar?
Bəli.
>> Auditoriya: core dump nə deməkdir?
DAVID MALAN: core dump nə deməkdir?
Belə ki, yaxşı bir sual var.
Və mənə geri gedək Burada bu directory.
Və siz görəcəksiniz Mən yeni bir fayl var.
Bu, həqiqətən core adlanır və bu oldu həqiqətən adətən layiqli ölçülü fayl.
Ki, mahiyyətcə bir snapshot edir mənim proqramın yaddaş məzmunu
o düşdü ki, və ya RAM.
Və bu, faydalı olacaq potensial, diaqnostik,
biz gələcək mühazirə danışmaq dəfə və ayıklama haqqında ikibölməli,
həqiqətən edə bilərsiniz, çünki bir digital yarılma ekvivalent
ki, fayl anlamaq kömək Siz proqram yanlış nə.
Bəli.
>> Auditoriya: bir komanda argc mı özü və ya siz bir şey adlandırmaq olar?
>> DAVID MALAN: Yaxşı sualdır.
, Özlüyündə bir komanda argc və ya siz bir şey adlandırmaq olar?
Bu, mütləq bir komanda deyil.
Bu, sadəcə bir dəyişən Agentliyi var və ya mübahisə adını adını,
və belə tamamilə biz Bu foo zəng edə bilər,
biz meyli olan bu bar, zəng edə bilər The go-to sözləri bir kompüter olmaq
alim gedir.
Lakin Konvensiya, biz argc və argv istifadə edin.
Amma bu yalnız bir insan var konvensiya, heç bir şey daha.
Bütün hüquqlar.
Belə çıxır ki, mən oldum ağ lie-- bir az izah
və səmimi, gələcəkdə, görürsünüz biz digər ağ yalan izah etdik.
Amma indi, biz gedirik bu bir geri soymaq.
Zaman əvvəl Mən burada bu halda salam və ya salam-3 kimi bir proqram qaçdı
Zamyla, biz məzmunu idi mənim təxminən kimi axtarır kompüter yaddaş
bu.
Amma bir string nə xatırlayıram.
Biz nə bir həftə əvvəl demək nə string həqiqətən başlıq altında?
Auditoriya: chars Array.
DAVID MALAN: Bu var chars array, sağ?
Beləliklə, biz bir sıra ola bilər strings, lakin, öz növbəsində, bir string
simvol bir sıra edir.
Mən, həqiqətən, olmaq istəyirsinizsə Belə ki, Mən bu şəkil çəkmək zaman anal,
Mən, həqiqətən, rəsm olmalıdır Bu bir az daha bu kimi,
vasitəsi bu hər argv array göstəriciləri,
bütün string özü var özü ki, bir sıra edir.
Və indi ağ yalan Biz bu gün izah edirik
şəkil deyil ki, olduqca bu kimi baxmaq.
Əslində, kiçik kvadratlar var böyük düzbucaqlı adətən xaricində
var.
Amma biz uzun əvvəl geri qayıtmaq lazımdır.
Amma bu, salam backslash 0 xüsusi xarakter olan
bir simli sonunda ayırır, və biz başqa bir sonra var
ZAMYLA adı.
Belə ki, bu nə deməkdir?
>> Yaxşı, mənə irəli gedək və iki digər nümunələr açmaq
mövcud online ki, var.
One argv1.c adlanır və digər argv2 edir.
Bu super-sadə proqram ki, Keçmiş proqramları fərqli
ki, indi mən istifadə edirəm argc və burada argv.
Və indi mən loop üçün bir ilə inteqrasiya alıram argc qədər on i line 18 = 0.
Və nə mən gedirəm burada kodu bu xətti ilə?
İngilis dili.
Bu açıq-aydın argc istifadə nümayiş etdirir.
Lakin ingilis, nə Bu proqram run əgər bunu?
Bəli?
>> Auditoriya: Bu çap olacaq sizin Istədiyiniz kimi bir çox dəfə ekran.
DAVID MALAN: Exactly.
Belə ki, nə sözləri I bu, sətirinə yazın
qusmaq gedir satıra mənə onlara biridir.
Belə nin irəli getmək və bunu bildirin.
Mənim dizine gedək və argv1 ./argv1 edə bilərəm.
İndi, sadə saxlamaq imkan verir.
Ilk heç bir şey edək.
Bu bir şey çap etdi və həqiqətən proqramın adı,
ki, bracket 0 çünki.
Mən indi foo demək, bunu olacaq bu iki, və mən foo bar demək əgər,
bu üç şeyi demək olacaq.
İndi bəlkə, bir qədər maraqlı deyil.
Amma ki, argv geri strings bir sıra,
lakin string chars bir sıra, belə ki, biz bir pillə qədər şeyi edə bilər
və əsas tətbiq məntiq və kodu edir ki,
etiraf, bir az daha sirli görünür.
Amma bir nested olan loop, yaxın bir şey
siz Mario xatırlayıram bilər nə, Məsələn, əgər siz bu şəkildə idi.
>> Belə ki, indi mən line 19 qeyd daha dəlilləri üzərində iterating,
0 qədər argc üçün.
İndi line I 21-- deyiləm ötən həftə bir oyun borc
Mən nə yoxlanılması edirəm argv bracket i uzunluğu.
Mən n ki, cavab saxlanılması alıram.
Və sonra mən j inteqrasiya alıram j 0 başlatılmış yerləşir n qədər.
Belə ki, sayılması üçün konvensiya.
Bir varsa, i istifadə sonra nested loop, siz yenə i istifadə edə
başqa potensial, döymək lazımdır, daxili loop kənarda dəyəri.
Mən Konvensiya tərəfindən j istifadə edirəm.
Biz k istifadə edə bilər.
K çox varsa, siz yəqin ki, adətən, çox yuva var.
Amma indi, mənim printf qeyd line az fərqli.
Mən% s çap deyiləm, mən ,% c çap olan, əlbəttə,
bir char üçün tutucu.
>> Və indi bu sintaksis bildiriş.
Yeni.
Biz bunu daha əvvəl görmədim.
Amma məntiqi olaraq bu yalnız deməkdir argv ildə İTH string almaq
və nə j-ci səs almaq?
Auditoriya: Character.
DAVID MALAN: simli Character.
Belə ki, kvadrat mötərizə istifadə edərək kvadrat mötərizədə izlədi,
Bu ilk dalğıc argv nin strings,
və sonra ikinci j ilə kvadrat mötərizə
simvol daxil dalğıc argv ki, xüsusi string.
Və sonra, yalnız yaxşı tədbir üçün, Mən burada yeni bir xətt çap edirəm.
Belə ki, indi mənə irəli getmək və açmaq bir az daha böyük pəncərə up
belə ki, biz fəaliyyət bu edə bilərsiniz.
Mənə qovluğa gedək.
İndi edə bilərəm argv-2-- argv-2 etmək whoops--, ./argv 2.
Daxil edin.
Və bir az çətindir şaquli oxumaq,
lakin həqiqətən adı var boş xətt izlədi proqram.
İndi mənə irəli getmək və foo, nə edək.
Eynilə ağır oxumaq, lakin bu üçün həqiqətən satır başına bir xarakter çap.
Mən bar əgər, indi var xətti ilə bu xətt çap.
Belə ki, burada paket çox deyil wow, bu səliqəli yeni oyun baxmaq ki,
siz məzmunu əldə edə bilərsiniz bir serialın xüsusi simvol,
lakin biz bu əsas alaraq etdiyiniz necə bir sıra daxil kimi endeksleme ideyalar,
və sonra daxil indeksasiyası ki, array idi ki array,
və yalnız eyni fikir müraciət az daha inkişaf etmiş nümunələri.
Amma əsasları, həqiqətən, yoxdur hətta keçən həftədən etibarən dəyişdi.
>> İndi bu, vaxtında sort edir ki, həftə sıfır geri
biz bu kimi bir telefon kitab ilə oynadı.
Və bu açıq-aydın deyil, baxmayaraq ki, kağız fiziki ədəd,
cür hesab edə bilər bir sıra kimi bir telefon kitab.
Siz əgər, əlbəttə, reimplement Bu ədəd kağız bu ədəd
kompüter, yəqin ki, Əgər bir şey istifadə ki
bir sıra o bütün saxlamaq üçün kimi A bütün yol adları və nömrələri
Z. vasitəsilə Belə ki, bu, çünki, gözəl bizə belə bir imkan verir,
necə ola bilər bəlkə də, hesab həqiqətən kimi bir şey həyata.
Burada qapı bir sıra ilə.
Mən could-- əgər Beləliklə, biz bir ehtiyac qədər gəlib könüllü.
Baxaq.
Bir tanımadığı üz bəlkə, bəlkə tanımadığı üz.
Necə narıncı haqqında?
Burada.
Orange shirt qədər gəlib.
>> İndi və hərəkət davam edək yan üzərində bu qapı,
bir an üçün yol bu hərəkət.
Sizin adınız nədir?
>> AJAY:
>> DAVID MALAN: Ajay.
David.
Görüşmək Nice.
Bütün hüquqlar.
Beləliklə, biz bu altı arxasında var ekranda digital qapılar
Və ya, daha doğrusu, yeddi qapı ədəd bütöv bir dəstə screen--.
Mən heç bir şey izah etdik da advance-- qəbul etdi?
AJAY: əvvəlcədən heç bir şey.
DAVID MALAN: Mən sizə etmək istəyirəm indi mənim üçün tapmaq üçün, bizim üçün,
həqiqətən, sayı 50, bir zaman bir addım.
>> AJAY: sayı 50?
>> DAVID MALAN: sayı 50.
Və nə aşkar edə bilərsiniz Bu qapıların hər arxasında
sadəcə bir barmaq ilə toxunan.
Lanet olsun. [Gülüş]
>> [Alqış]
>> Çox yaxşı.
OK.
Biz bir sevimli hədiyyə var Burada sizin üçün mükafat.
Film sizin pick biz Keçən həftə müzakirə.
>> AJAY: Oh, man.
Oh, mən Spaceballs görüldü heç etdik.
>> DAVID MALAN: Spaceballs.
Bütün hüquqlar.
Belə ki, yalnız bir an keçirilməsi.
Bu edək How-- bir öğrenmeye hevesli an
Siz necə getmək idi sayı 50 tapmaq?
AJAY: Mən təsadüfi seçdi.
DAVID MALAN: Yəni siz seçdi təsadüfi və uğurlu var.
AJAY: Bəli.
DAVID MALAN: OK.
Əla.
Belə ki, indi siz yox idi lucky, nə başqa kazanılmış
Bu qapılar arxasında baş ola bilər?
Mən irəli getmək əgər Belə ki, Burada bu nömrələri aşkar,
Onlar, həqiqətən, təsadüfi qaydada var.
Və yaxşı ola bilər görülən səmimi, nəticədə, edir
Ən pis halda, onları bütün yoxlanılması.
Belə ki, super-lucky var olan biz bir alqoritm zəng istədiyiniz nə deyil.
Bəli, congrats.
Siz ola bilər, əgər Amma indi, yumor mənə let's--.
Burada bu nişanı getmək edək.
Və burada aydın nömrələr bir təsadüfi qaydada görünür nə,
və onlar idi.
Amma indi əvəzinə iddia əgər bu qapılar arxasında
sıralanır nömrələr.
Məqsədi indi də edir Bizə sayı 50 tapmaq.
Amma algorithmically bunu, və bu barədə olacaq necə bizə.
Siz tapmaq Əgər, Əgər film saxlamaq.
Siz, onu geri vermək tapmıram.
AJAY: Mən başa yoxlamaq üçün gedirəm ilk there's-- əgər müəyyən etmək üçün
[Gülüş VƏ Alqış]
DAVID MALAN: Burada getmək.
Nin bir nəzər salaq Ajay sələflərinin,
Kifayət qədər uğurlu olmayan Sean.
OK, burada məsələ, belə ki, Sean, belədir.
Mən bu arxasında gizli Qapı sayı yeddi,
lakin bu qapıların bəzi üz tucked habelə digər qeyri-mənfi nömrələri var.
Sizin məqsədi bu hesab edir yalnız bir sıra kimi nömrələri top satır.
Biz ədəd bir ardıcıllıqla edirik onların arxasında ədəd kağız.
Və məqsədi yalnız üst istifadə edərək, array burada mənə sayı yeddi tapa bilərsiniz.
Və biz sonra tənqid edir Siz bunu haqqında getmək necə.
Bizə sayı yeddi xahiş edirik.
No.
5, 19, 13.
Bu oyun sual deyil.
1.
Bu nöqtədə sizin hesab çox deyil yaxşı, belə ki, siz də davam edə bilər.
3.
Getmək.
Açığı, mən kömək lakin təəccüb bilməz nə belə düşünür edirik.
>> SEAN: Mən yalnız üst sıra bilər.
DAVID MALAN: Yalnız üst sıra.
Belə ki, üç sol var.
Mənə 7 tapa bilərsiniz.
>> [Auditoriya təkliflər qışqırır]
Belə ki, o, həm də gözəl idi çox müxtəlif səbəblərə görə.
Belə ki, bu biz bir an əvvəl off sol,
və burada əsas fikir Bu qapı nömrələri idi
onların arxasında ki, ideal, sıralanır olan paket siz ola bilər ki,
da əsaslı yaxşı bu ikinci example--
və, həqiqətən, Sean nin idi təsadüfi nömrələri ilə ilk cəhd
kimi Əvvəl lakin tezliklə bu rəqəmlər sıralanır kimi,
telefon kitab kimi çox, Siz açıq-aydın nə edə bilər?
Və ya necə ki, bilik leverage?
Bəli.
>> Auditoriya: Siz [Işitilemez] ortasında getmək.
DAVID MALAN: Bəli.
Dəqiq.
Belə ki, Ajay ilkin instinkt idi Mən xatırlayıram kimi, başa kontrol,
sonra biz sort bitmiş tez nümunəsidir.
Biz açılmış Amma əgər bu, daha çox metodiki o xətlər boyunca,
lakin bəlkə başlayaraq orta, onlar sıralanır edirik, çünki,
tezliklə biz aşkar kimi sayı 16 Buna görə də bilirəm
və biz that-- dəqiq nə edək Buna görə bilirik 50 ki, bugünkü halda,
sağ olmaq var.
Belə ki, yalnız kimi həftə sıfır zaman biz bu telefon kitab parçaladı
və yarısı atdı üz problem, burada eyni fikir.
Biz bu yarım atmaq olar problemin üz.
Və yəqin ki, nə algorithmically edə bilər,
50 olmalıdır ki, bilirik bir dəfə sağ, yerdə varsa,
ortada var cəhd edin qalan qapılar.
Əlbəttə ki, 50 ali 42-dən, belə ki, biz
Bu qalan atmaq üz problem dörddəbir,
və, nəhayət, müəyyən 50 kimi bir şey.
Amma yalnız kimi telefon kitab, bu nömrələri
artıq bizə verildi sorted üçün, qalırıq
sualı ilə, necə bunu sorted üçün daxil şeyi almaq?
Və səmimi, nə dəyəri?
Bu olmaq üçün bir şey telefon kitab təqdim
və sonra tapmaq dostlara impress sağ, həqiqətən, tez bir telefon nömrəsi,?
Bir tapmaq üçün 32 pages qoparmaq 4 milyard pages şəxs,
biz bir ifrat nümunə olduğunu söylədi.
Amma nə qədər vaxt almaq idi Verizon telefon kitab düzmək üçün?
Bu, bizə almaq idi nə qədər vaxt Bu yeddi ədəd düzmək üçün?
Yəni biz bir sual indiyə qədər tamamilə rədd.
>> Belə ki, indi bu suala cavab verək.
Və biz indi bütün film istəyirik, lakin biz bəzi stress top var.
, Səkkiz könüllü demək, əgər burada bizi qoşulması ağla deyil?
Haqqında, in irəli gedək və bunu Siz dörd, burada üç?
Bəzi yeni simalar alın.
Və orada dörd?
Və deyil bias imkan now-- burada və burada sonunda üzərində sayı səkkiz.
Qədər Hadi.
Bütün hüquqlar.
Beləliklə, biz burada nə sizin hər bir sayı.
Siz getmək istəyirsinizsə qabaqda, bu sıra almaq.
Sizin adınız nədir?
>> ARTIE: Artie.
>> DAVID MALAN: Artie, tamam.
Siz sayı 1 istəyirik.
>> AMIN: Amin.
DAVID MALAN: Amin.
David.
Siz sayı 2 istəyirik.
Mən əl kimi, irəli getmək Siz kağız təbəqələr,
musiqi qarşısında özünüzü sıralamaq orada kimi eyni qaydada dayanır.
>> ANDY: Hi, Andy.
>> DAVID MALAN: Andy, bu görmək üçün gözəl edir.
Sayı 3.
>> JACOB: Jacob.
>> DAVID MALAN: Jacob, 4 nömrəli.
Xaricdə xoş gəlmisiniz.
GRANT: Grant.
DAVID MALAN: Grant.
Sayı 5.
>> Alanna: Alanna.
>> DAVID MALAN: Alanna, sayı 6.
>> FRANCES: Frances.
DAVID MALAN: Frances, sayı 7.
Və?
>> RACHEL: Rachel.
>> DAVID MALAN: Rachel, sayı 8.
Bütün hüquqlar.
Irəli getmək və bu üçün özünüzü almaq.
Mənə qalan bir qoyaq musiqi yerdə dayanmaq.
Harada bir stand lazımdır?
OK.
Hadi və yalnız nömrələri qoymaq tamaşaçıların olduğu onlara görə bilərsiniz,
musiqi xarici üzləşdiyi durmaq.
Və inşallah, ilk ağlı başında olma çek burada 4, 2, 6.
Oh-oh.
Bir dəqiqə gözləyin.
Biz 8 yoxdur.
Mən sizə köçürmək lazımdır elə nümunəsidir.
No.
Xeyr, ki, OK.
Baxaq.
Biz bunu edə bilərsiniz.
Ilə seçilir.
Biz orada getmək.
Correct.
Bütün hüquqlar.
Belə ki, indi biz 8, 1, 3, 7, 5 var.
OK.
Əla.
>> Belə ki, əl-da məsələ ilə deyil, nə dəyəri və nə üsul vasitəsilə,
Biz, həqiqətən, burada bu nömrələri düzmək olar biz növ geri işləyə bilər ki,
nəticədə, və decide-- həqiqətən təsirli, həqiqətən səmərəli,
Mən bölmək olar ki, bir telefon kitab fəth?
Bu, həqiqətən səmərəli Mən bölmək və fəth edə bilər
o digital ədəd board kağız,
Bu bizə bir başa olacaq, bəlkə əgər vaxt və ya enerji və ya CPU dövründən bəxt
həqiqətən, bizim məlumat almaq üçün bəzi sıralanır üçün daxil?
Belə ki, sual verək.
>> Belə ki, ilk off, bu nömrələri olduqca çox təsadüfi qaydada,
Mən təklif etmək niyyətində deyiləm bir alqoritmi, və ya proses
olan bu insanlar düzmək olar.
Mən yanaşmaq gedirəm bu olduqca naively.
Mən tanımaq gedirəm Bu, mənim üçün bir çox növü var ki,
ətrafında fikrimi kesmek üçün bütün data dəfə seçin.
Amma nə bilirik?
Mən bəzi etmək gedirəm çox sadə marjinal giderir.
4 və 2 əgər, üçün həyata Məqsədimiz 8 qədər 1-dən getmək üçün edir.
Belə ki, nə?
Mən sizə gedirəm Siz keçid əgər uşaqlar, dəyişdirmək
fiziki vəzifələrin və kağız sizin ədəd.
İndi 4 və 6, bu üçün var.
Mən o tərk etmək gedirəm.
6 və 8, həmin üçün var.
Onları tərk etmək niyyətindədir.
Qaydada 8 AND1.
Iki dəyişdirmə ağla deyil əgər.
İndi 8 və 3, uşaqlar dəyişdirmək bilər.
8 və 7, uşaqlar dəyişdirmək bilər.
8 və 5, uşaqlar dəyişdirmək bilər.
>> İndi mən görülən edirəm?
Xeyr, aydın deyil.
Amma etdik yaxşı vəziyyət, sağ?
Adı yenə nə idi, nömrəsi 8?
>> RACHEL: Rachel.
DAVID MALAN: Yəni Rachel var səmərəli olduqca uzaq bubbled,
sonuna bütün yol burada nömrələri mənim array.
Və belə ki, problem cür həll edilir.
İndi aydın, 2 də lazımdır bir az hərəkət, 4 və 6 və 1.
Amma bir kazanılmış görünür həll yaxın kiçik.
Belə ki, bu eyni tətbiq edək daha sadəlövh Heuristic.
2 və 4, OK.
4, 6 və OK.
6 və 1 mm-mm.
Nin mübadilə edək.
6 və 3 mm-mm.
Nin mübadilə edək.
6 və 7 yaxşıdır.
7 və 5, nope.
Nin mübadilə edək.
Və indi 7 və 8.
Və adı yenə nə var?
FRANCES: Frances.
DAVID MALAN: Frances.
Belə ki, indi Frances hətta daha yaxşı edir mövqeyi, indi 7 və 8, çünki
düzgün üst qədər bubbled olunur.
Belə ki, 2 və 4, OK.
4 və 1, gəlin svop.
4 və 3, gəlin svop.
4, 6 və OK istəyirik.
6 və 5, gəlin svop.
İndi o uşaqlar yaxşı.
Biz demək olar ki, orada edirik.
2 və 1 qaydada, belə dəyişdirmək.
İndi mənə bir ağlı başında olma çek bunu bildirin.
2 və 3, 3, 4, 4 və 5, 5, 6, 6 və 7, 8.
OK, belə ki, biz tamamlayın.
>> Amma nə dəyəri I etdi Burada bu nömrələri düzmək?
Yaxşı, necə bir çox addımlar potensial I etdi bu millət çeşidlənməsi zaman almaq?
Yaxşı, ki, geri suala gəlmək lazımdır.
Lakin, səmimi, siz var əgər bir az cansıxıcı, ki
cür bu idi ki, aşkar bəlkə ən səmərəli alqoritm.
Və həqiqətən, səmimi, mən tərləmə alıram bütün daha geri və irəli gedirik.
Ki, xüsusilə səmərəli hiss etmədim.
Belə ki, başqa bir şey edək.
Sizlərin yenidən bilər Bu səkkiz dəyərlərə özünüzü.
Yaxşı iş.
>> Yalnız üçün, digital nəzər salaq bir an biz başqa bir şey cəhd əvvəl
yalnız nə at.
Burada, bir görmək haqqında olduğunuz Bu səkkiz insan vizual
vasitəsi mavi və qırmızı barlar nömrələri təmsil edir.
Bu taller bar, sayı daha böyük.
Qısa bar, sayı kiçik.
Və nə görmək olacaq edir Onlardan səkkiz, daha çox təsadüfi sifariş.
Bu bar görmək olacaq Həmin alqoritm sıralaması olmaq,
və ya, təlimatlar müəyyən olan biz bubble sırala bundan sonra da zəng edəcəyik.
Belə ki, ikinci və ya hər bildiriş iki barlar, qırmızı işıqlandırma olunur
kompüter tərəfindən müqayisədə olunur.
Və sonra əgər böyük bar və az bar, üçün həyata
onlar mənim üçün dəyişdirildikdə olunur.
>> İndi bu olduqca yorucu deyil əlbəttə ki, bu izləmək üçün,
çox uzun, lakin qeyd sağ hərəkət böyük barlar takeaway--
sol hərəkət az bar.
Bu proses abort edək bu sürətləndirmək
daha sürətli olacaq, belə ki, biz üçün nə yüksək-səviyyəli mənada almaq,
həqiqətən, bubble sırala edir.
Həqiqətən, bu qədər burda var Siyahının sağ tərəfdən,
və ya array, böyük bar.
Və əksinə, az bar sol aşağı onların yol burda,
sürətlə olsa daha biz əvvəllər idi.
Belə ki, daha insanlar görmək, lakin vizual həqiqətən nə var
olurdu.
>> Amma əsaslı bir cəhd edək İndi müxtəlif yanaşma.
Fərqli bir cəhd edək alqoritm biz sizə elə
uşaqlar bu orijinal başlamaq bu order burada olan mövqeləri.
Və indi davam edək.
Və mən bir şey etmək üçün gedirəm hətta sadə, sağ?
Keçmişə baxanda, yenə pairwise dəyişdirmə və yenə demək olar ki, bir az ağıllı.
, Hətta daha naively şeyə imkan harada Mən bu millət düzmək istəyirəm əgər,
Mənə yalnız axtarır saxlamaq imkan kiçik element.
Belə ki, indi, 4 deyil Mən gördüm kiçik sayı.
Mən xatırlayıram gedirəm.
No 2 daha yaxşı edir ki, xatırlayıram.
1 hətta kiçik.
3, 7, 5.
OK.
One-- adı yenə nə var?
>> ARTIE: Artie.
>> DAVID MALAN: Artie.
Belə ki, Artie, irəli getmək.
Mən xətti çəkmək üçün gedirəm.
Burada geri gəlmək bilər.
Mən ona otaq etmək lazımdır.
Biz burada bir qərar nöqtəsi var.
Biz burada Artie üçün otaq etmək necə sayı 1 aid olduğu başında?
>> Auditoriya: Shift.
>> DAVID MALAN: OK, biz hər kəs keçmək bilər.
Amma optimallaşdırılması təklif.
Ki, bir az annoying hiss Mənə dörd nəfər müraciət etmək üçün
bütün yol aşağı hərəkət etmək.
Mən başqa nə edə bilər?
>> Auditoriya: onları keçin.
>> DAVID MALAN: onları keçin.
Və adı yenə nə var?
>> JACOB: Jacob.
DAVID MALAN: Jacob, hərəkət.
Daha səmərəli yalnız var Arti ilə Jacob svop locations,
məcbur qarşı Bu insanlar bütün dörd,
üçün, çox təşəkkür edirəm onların düzgün mövqe.
Indi nə Artie haqqında gözəl, onun düzgün mövqe var.
Yenə bunu edək.
2, mən gördüm kiçik sayı var.
3, 7, 5.
OK.
2 mütləq kiçik deyil.
Hər hansı bir iş yoxdur.
Yenə bunu edək.
6.
Kiçik?
8.
Xeyr.
4?
Ooh.
Mənə 4 xatırlayaq.
3.
Mənə 3 xatırlayaq.
7, 5.
Mən var kiçik sayı Bu pass görüldü 3 edir.
Siz çıxmaq istəyirsinizsə.
Harada biz sizə qoymaq üçün gedir?
Və sizin adınız nədir?
>> Alanna: Alanna.
>> DAVID MALAN: Alanna, biz istəyirik sizə köçürmək üçün gedir.
Amma ki, daha səmərəli yalnız iki nəfər dəyişdirmək üçün,
çox insanlar üçün çox həqiqətən çox yana çəkilmək.
İndi yenə bunu bildirin.
Mən 4 seçin, belə ki, gəlib gedirəm.
Və kim hərəkət olacaq?
Sayı 8, əlbəttə.
Mən indi sayı 5 tapmaq varsa, çıxmaq.
Sayı 8 yenə oradan almaq olacaq.
Mən indi yerdə sayı 6 tapmaq üçün gedirəm.
Yerdə 7.
Yerdə 8.
>> Nə biz yalnız indi nə edir seçim sort deyilən bir şey,
biz bu görüntüləmək əgər, bu bir az fərqli hiss gedir.
Nin irəli və bu getmək imkan menyu burada, bu Vizual
nin, Firefox gəlib to-- bu dəyişdirmək imkan verir.
Seçim sort üçün bu dəyişiklik edək.
Və əvvəlki kimi onu sürətləndirmək imkan, və indi vizual başlamaq.
Və bu alqoritm var ona fərqli hiss edirəm.
Hər iteration, səmimi, Bu daha sadə var.
Mən yalnız kiçik element seçilməsi alıram.
İndi səmimi, mən bir az uğurlu var zaman ki, bu super-sürətli sıralanır.
Elementləri təsadüfi idi.
Bu biz nəhayət lazımdır, deyil əsaslı sürətli baxın.
Amma üçüncü və son görək neler kimi burada yanaşırıq.
Belə nin irəli getmək və sizin uşaqlar yenidən bir final dəfə burada bu qaydada olmalıdır.
>> Və indi mən gedirəm bir az daha ağıllı olmaq
yalnız bizim alqoritmlər top.
Mən bunu gedirəm.
Mən getmək üçün gedirəm geri və irəli çox.
Açığı, mən yoruldum bütün bu traversing.
Mən yalnız mən edirəm nə etmək gedirəm Siyahının əvvəlində,
və mən düzmək üçün gedirəm ki, sonra var.
Belə ki, burada biz.
Sayı 4.
Mən nömrəsi daxil etmək üçün gedirəm Bir sıralanır siyahısına daxil 4.
Done.
Mən indi iddia və yalnız bu daha etmək aydın, mənim siyahısı bu hissəsi çeşidlənir.
Bu axmaq iddia cür, lakin həqiqətən 4 ölçüsü bir siyahısı çeşidlənir.
İndi mən 2 nömrəli etmək gedirəm.
Sayı 2 İndi gedirəm Doğru yerdə daxil.
Belə ki, 2 aid deyil?
Aydındır ki, burada.
Belə ki, davam və siz əgər, geri hərəkət.
Və niyə uşaqlar yalnız alır musiqi ilə bu dəfə dayanır.
Və zorla edək etməzdən siyahının başlanğıcına.
Belə ki, bir az daha çox iş.
Mən ətrafında Yaqub hərəkət idi və sizin adınız nədir?
>> AMIN: Amin.
>> DAVID MALAN: Amin.
Lakin ən azı mən geri və irəli getmədi.
Mən getmək kimi mən şeyi qəbul edirəm.
Mən onlara daxil oldum doğru yerdə.
6 Bu, həqiqətən, olduqca asandır.
Əgər Agentliyi, orada siz daxil edək az üzərində hərəkət etmək istədi.
Sayı 8, də olduqca asandır.
Sağ orada.
Lanet olsun.
Number 1 koyamayız yalnız burada Amin ilə dəyişdirmək,
çünki gedir mess up sifariş üçün.
Beləliklə, biz bir az daha ağıllı olmalıdır.
Belə ki, Artie, əgər siz bilər bir an üçün geri.
Nin irəli getmək və indi keçmək edək Əvvəlki alqoritmlər fərqli olaraq,
Arti üçün otaq etmək Burada başında.
Günün sonunda belə, mən növ deyiləm Mən əvvəl qarşısını almaq üçün nə istədiyini edir.
Və mənim alqoritm sort ki, intellektual, bərpa
Bu ilk idi nə.
Mən yalnız dəyişkən edirəm fərqli bir nöqtədə.
İndi mən 3 deyiləm.
Lənətləmək, Oh.
Biz daha çox iş var.
Belə ki, sizə təkan bildirin.
Hərəkət edək 8, 6, 4-- oh oh və 3 orada getmək niyyətindədir.
Bu dəfə ən az qənaət belə.
7, çox çox iş ediləcək.
Siz pop istəyirəm əgər, belə ki, geri, Sizə daxil edək.
Və nəhayət, 5, əgər geri pop istəyirəm, biz
sizə keçmək sizə lazımdır, beş qədər yerində olduğunu.
>> Belə ki, indi bu görmək qrafik yüksək səviyyədə,
Bu alqoritm edək vizual bir əlavə vaxt.
Belə ki, bu biz durub sırala zəng etməlidir.
Biz yalnız run lazımdır sürətli və burada başlayır.
Və bu, çox fərqli bir hiss var.
Bu cür daha yaxşı əldə edir və yaxşı, lakin mükəmməl heç
Mən o boşluqları və hamar getmək qədər.
Çünki, yenə yalnız alaraq alıram nə Mən sol sağ verilir alıram.
Mən belə uğurlu olsun etməyib ki, hər şey mükəmməl idi.
Biz bu az idi Ona görə biz zamanla sabit olduğunu mispositions.
>> Belə ki, bu alqoritmlərin bütün görünür qədər müxtəlif özəlliklə yeyin addımlar çalışır.
Əslində, siz demək olardı yaxşı və ya bu günə qədər sürətli?
Bubble sort, ilk?
Seçim sort, ikinci?
Insertion sort, üçüncü?
Mən bəzi seçim növ eşitmək.
Digər fikir?
>> Belə ki çıxır ki, bu alqoritmlərin bütün
əsaslı olaraq kimi səmərəli kimi, əksinə, hər other-- və ya
bir-birinə səmərəsiz, biz əsaslı edə bilər, çünki
bütün üç daha yaxşı bu alqoritmlərin.
Ki, bir ağ yalan bir az çox var.
Mən səmərəli deyəndə və ya səmərəsiz kimi,
ən azı üçün n super-böyük dəyərlər.
Biz burada yalnız səkkiz nəfər var, və ya bəlkə ekranda 50 və ya belə barlar,
Siz tamamilə fərqlər görəcəksiniz Bu üç alqoritmlər arasında.
Lakin n, insanların sayı, və ya nömrələrinin sayı,
və ya telefon insanların sayı kitab, və ya web pages sayı
Google bazasında , böyük və daha böyük olur
biz görəcəksiniz ki, bütün üç alqoritmlər, həqiqətən, olduqca zəifdir.
Və biz əsaslı edə bilərsiniz daha yaxşı.
>> , Nəhayət, bir nəzər salaq nə bu alqoritmlər bilər at
Bu kimi səs bir neçə başqaları kontekstində
eləcə də bu yolu ilə burada vizual
ki, bizə təqdim edəcək alqoritmləri bir sıra.
Nin irəli getmək və təbrik edək kimə bütün burada iştirakçıları,
özlərini çox yaxşı sıralanır.
Bir ayrılıq hədiyyə etmək istəyirsinizsə.
Siz həmçinin nömrələri saxlaya bilərsiniz.
Və nə görürsünüz, daha doğrusu, indi eşitmək
ki, biz səslər qoymaq kimi Bu bar hər
və proqram təminatı ilə əlaqələndirmək səs müxtəlif tezlik,
Siz mind daha audioly kesmek olar Bu şeyi hər ətrafında
kimi baxmaq.
Olan ilk durub sort
>> [Melodiyalar]
>> Bu bubble sırala edir.
>> [Melodiyalar]
>> Seçim sort.
>> [Melodiyalar]
>> Birləşmə sort deyilən bir şey.
>> [Melodiyalar]
>> Gnome sort.
>> [Melodiyalar]
>> Ki, CS50 üçün var.
Biz Çərşənbə günü görəcəksiniz.
>> Dastançı: İndi, "Deep Daven Farnham tərəfindən düşüncələr ".
Niyə bir loop üçün?
Niyə daha yaxşı?
Mən beş loop etmək istiyorum.
>> [Gülüş]