DAVID Malan: Kull dritt. Allura dan huwa CS50, u dan huwa issa l-bidu ta 'tliet ġimgħat. Allura sa issa, konna ġie kitba programmi C li tfittex ftit xi ħaġa bħal din hawn. Allura konna ltqajna koppja ta ' sharp jinkludi fil-quċċata. Imxejna ltqajna int, prinċipali, null, u imbagħad xi ħaġa li tagħmel fin-nofs, xi ftit ta 'kodiċi ġewwa ta 'dik il-funzjoni. Iżda ewlenija kienet il-fatt li konna qed tgħid null hawn. Allura null, kollu ta 'dan iż-żmien, jispeċifika li dan il-programm, meta jitħaddmu, jistgħu jitmexxew biss permezz isem tagħha. Inti ma tistax tip xi kliem ieħor jew numri wara isem tal-programm meta running. Allura, per eżempju, jekk il-programm kienu kkompilata fis-fajl imsejjaħ hello, inti tista 'tagħmel ./hello, iżda li huwa. L-uniku mod li inti tista ' jipprovdu input għal dan il-programm huwa billi ssejjaħ il-funzjoni. Per eżempju, liema funzjoni li aħna kienu jużaw s'issa biex tikseb input mill-utent? UDJENZA: Get string. DAVID Malan: Biex tikseb string, jew nikseb int, jew inti stajt tidher oħrajn, anki jekk int ma użati minnhom għadhom, bħal nikseb twil, twil u simili. Iżda jissoponi li aħna fil-fatt tixtieq li tibda kitba programmi li huma ftit aktar versatili, u, franchement, ftit aktar bħall-kmandi li inti stajt ġew jkollna, wieħed jittama, ftit mdorri. Bħal cd ispazju Dropbox. Dan, naturalment, bidliet tiegħek direttorju, jekk wieħed jassumi int fid-dar John Harvard direttorju, biex folder Dropbox tiegħek. Sadanittant, kmand bħal dan toħloq direttorju ġdid imsejjaħ pset2, kif inti jista 'jkollok diġà jew Hekk għal problema se sett tnejn. Jagħmlu Hello, naturalment, huwa kmand li jibni programm imsejjaħ bonjour minn fajl imsejjaħ bonjour dot c. U f'kull wieħed minn dawn każijiet, issa, aħna kellna tipprovdi argument fuq l-hekk imsejħa linja ta 'kmand, il-pront Teptip, hekk li jagħmlu jaf dak li jibnu, u hekk li mkdir jaf liema folder biex joħolqu, u sabiex cd jaf fejn inti tixtieq li tmur. Imma sa issa, inżommu qal li prinċipali, il-funzjoni default tiegħek, għandha espressjoni vojt ġewwa ta 'dawk parentesi, li jfisser li ma tistax tieħu ebda argument. Allura jibdew illum, dak li aħna qed tmur biex tagħmel huwa, aħna qed tmur biex tibda appoġġ affarijiet bħal dan anke. Fil-fatt, f'dan il-każ, li inti ma tipikament manwalment tip, Jagħmlu kienet tagħmel dan għalina, ma jkunx hemm wieħed iżda wieħed, tnejn, tlieta addizzjonali kordi wara l-tal-programm jismu clang. Allura kif nistgħu jintlaħaq dan? Ukoll, jibdew illum, f'każijiet fejn irridu biex jipprovdu input permezz tal- hekk imsejħa linja tal-kmand, aħna qed tmur biex tibda żżid here x'hemm fil yellow-- tissostitwixxi nulli virgola argc int string ARGV parentesi miftuħa parentesi magħluqa. Issa dan huwa interessanti għal ftit ta 'raġunijiet. Wieħed, li għaddej biex let us jiktbu programmi li huma ftit aktar dinamiku. Iżda, aktar compellingly, li għaddej biex jiftħu issa konverżazzjoni li dak arrays jista 'verament jintużaw, għal dak string verament huwa taħt il-barnuża, sakemm ġimgħa d-dieħla meta nibdew għadis anke aktar fil-fond dwar kif il-magna hija tagħmel kollha ta 'dan ix-xogħol għalf. Iżda għal issa, ejja tiġbed, forsi, stampa. Meta inti jikteb programm ma prinċipali ddikjarat b'dan il-mod, bħal dik prinċipali jieħu żewġ argumenti, ta 'int and-- liema tip ta 'dejta hija t-tieni argument? UDJENZA: Array. DAVID Malan: Array. Allura jidher mad-daqqa t'għajn bħal din hija string, iżda avviż-parentesi kwadri. Recall aħħar darba aħna introdotti il-kunċett ta 'firxa. U arrays użu parentesi kwadri fi ftit ta 'kuntesti. Inti tista 'tuża l-kwadru parentesi li jmorru fis firxa u jiksbu element partikolari, bħal bracket 0 jew kategorija 1 jew kategorija 2. Iżda aħna raw, jekk fil-qosor, aħħar ġimgħa li inti wkoll jużaw dawn parentesi kwadri sa tiddikjara d-daqs ta 'firxa, jekk inti taf minn qabel kemm ints jew kif kordi ħafna jew kwalunkwe inti fil-fatt tixtieq. Għalhekk jirriżulta li hemm f'kuntest tielet hawn li ma jkollux numru ġewwa tal-parentesi kwadri. Meta inti tispeċifika, bħala għandi hawn, l-isem ta 'xi ħaġa simili ARGV, li huwa biss mod fancy ta ' qal argument vector, li huwa mod ieħor fancy ta ' qal firxa ta 'argumenti, parentesi miftuħa parentesi magħluqa biss ifisser li inti ma neċessarjament taf minn qabel kemm hu kbir l-array se tkun, imma inti taf li għaddej biex tkun firxa. Mela jekk inti ma tafx il- numru ma tqiegħed fil hemm, għall parentesi miftuħa parentesi magħluqa ifisser li ARGV mhix string, iżda firxa ta 'kordi. Allura sintattikament, jekk inti think lura aħħar ġimgħa, huwa simili ħafna għall qal xi ħaġa bħal etajiet INT parentesi miftuħa, u mbagħad xi ħaġa wara. Allura dak li ma dan look like? Ejja attwalment tfassal stampa. Allura meta inti tmexxi dan il-programm ma Main wara li żewġ argumenti definit ġewwa ta 'dawk parentesi, inti essenzjalment jkollhom talanqas żewġ biċċiet ta 'memorja mogħtija lilek taħt il-barnuża. Wieħed, kif jien ser jiġbed dan rettangolu, se jiġu msejħa argc. U hekk kif terġa 'malajr, liema huwa t-tip tad-data ta 'argc? Allura huwa ta 'int. Allura numru huwa għaddej li jmorru fl dawriet argc-- li stands għall-għadd argument. Sadanittant, stajt mfassla ARGV bħala firxa. U jien ma verament jafu kemm żmien li għaddej biex tkun, hekk għal skopijiet lum dot dot dot. Hija tista 'tikseb ta' xi tul. Imma stajt isaffru hawn mill-inqas erba rettangoli. Allura ARGV blokki ta 'memorja li stores string string string dot dot dot, u argc huwa biss wieħed chunk ta 'memorja għal integer. Allura issa, ejja jkun ftit aktar preċiża. Jekk, meta I jkollhom kordi f'dan array, imsejħa ARGV, I rridu nġibu lejn lilhom individwalment, bħad aħħar ġimgħa, aħna qed tmur biex jużaw notazzjoni bħal ARGV bracket 0 biex jiksbu l-ewwel ħaġa firxa. Bracket ARGV 1 li jiksbu l- tieni ħaġa, u ibqa 'sejjer hekk. Il-prinċipali hawnhekk qed we qed għadhom 0 indexed-- we qed għadhom jibdew jgħoddu mit 0. Allura issa ejja attwalment tpoġġi xi ħaġa f'dan. I Jekk kellhom jikkompilaw programm imsejjaħ bonjour minn fajl imsejjaħ bonjour dot c, u mbagħad I run dan il-programm ma dot mmejla hello, dak li ma kompjuter tiegħi, laptop tiegħi, look like taħt il-barnuża l-mument I run dot mmejla bonjour u hit Ikteb? Ukoll, dan huwa forsi dak li aħna tista 'tiddeskrivi bħala l-kontenut tal-tal-kompjuter tiegħek memorja, jew Memory RAM-- Random Access. Fi kliem ieħor, il-kompjuter, b'xi mod għalik magically, tpoġġi in-numru 1 fil argc, argcount AKA, u li tqiegħed litteralment l-sekwenza ./hello fil ARGV bracket 0. Għandi l-ebda idea, franchement, x'hemm fil bracket ARGV 1 jew 2 jew 3, għaliex jekk l-utent ma jkunx ittajpjat xejn minbarra ./hello, aħna qed tmur biex wieħed jassumi li dawn huma valuri żibel aktar probabbli, biex ngħidu hekk. Dawk biċċiet ta 'memorja jeżistu, iżda mhux sa us li tħares lejn lilhom, għaliex l argcount hija waħda biss. Issa, sadanittant, jekk I jiktbu run programm ieħor, cd, li hija aktar kif suppost kmand, fil Teptip ispazju tiegħek cd prompt-- Dropbox-- meta I run dan, effettivament, meta l-programm cd huwa mmexxi, argc, ġewwa tal-memorja tal-kompjuter tiegħi, huwa għall- l-aktar briefest tieni in-numru 2. U mbagħad ARGV o bracket għandha cd, ARGV bracket 1 għandha Dropbox, u mbagħad naturalment il-kmand tikkompleta, sabiex kollha ta 'dan il-memorja essenzjalment tmur bogħod u huwa użat għal xi ħaġa oħra. U hu għalhekk li jien ngħid biss qasma tat-tieni. Sadanittant, jekk nagħmlu pset2 mkdir, l-istampa jistenna kważi l-istess, iżda ma kordi differenti ġewwa ARGV. Jekk I do sing clang bonjour , l-istess idea bonjour dot c. Aktar Jittieħed timtela għal ARGV, u argc, naturalment, huwa ta '4. Allura fi kliem ieħor, anke jekk din array jista 'jiġi dot dot dot, ta' xi tul varjabbli, biex ngħidu hekk, inti dejjem taf fejn il-aħħar ta 'dan huwa, minħabba argc huwa se jgħidlek fuq liema punt ikollok tieqaf tħares lejn elementi fil ARGV. Inti tista 'tħares biss lejn erba b'kollox f'dan il-każ. Mela ejja issa tagħti ħarsa lejn, forsi, programm sempliċi. Wieħed li biss jgħid bonjour li xi ħadd bħal Zamyla. So I pretensjoni jien ser jikteb programm fi ftit mument li permezz tagħhom I jistgħu jagħmlu ./hello ispazju Zamyla, u mbagħad nixtieq programm tiegħi li jistampaw xi ħaġa super-sempliċi bħal "hello, Zamyla." Issa fil-passat konna użati getstring. Allura fil-passat, anki jekk int ġodda għall-ipprogrammar, odds huma inti tista 'Whip up programm li juża getstring u mbagħad tuża printf li jgħidu hi li Zamyla. Imma ejja ma tuża getstring dan iż-żmien. Let me minflok tmur fil-Appliant u ma jinkludi l-istandard I O dot h. Let me jinkludu wkoll CS50 dot h. Issa int prinċipali, u issa jien mhux se jagħmlu null llum. Minflok, jien ser tagħmel argc int ARGV string parentesi miftuħa parentesi magħluqa, mhux speċifikat numru. U issa hawnhekk hija tiegħi hekk imsejħa tagħmel. What jien ser tagħmel issa huwa, jien se jagħmlu daqsxejn ta 'qabża ta' fidi, Jien ser tassumi li l-utent tal- ser tuża dan il-programm b'mod korrett, u jien sempliċiment ser do printf hello,% sn. Allura xejn ġdid hemmhekk. Imma nixtieq li issa tqiegħed x'ikun kelma l- tipi utent wara l-isem tal-programm. Mela jekk nagħmel ./hello ispazju Zamyla, I tixtieq li b'xi mod programmatically aċċess nikkwota unquote "Zamyla." so I tista 'tmur fil-argument vector tiegħi, firxa tiegħi ta 'kordi, u jekk l-kmand, darb'oħra, kien ./hello ispazju Zamyla, dak Numru do I trid biex jitqiegħdu fil ARGV hawn? UDJENZA: 1. DAVID Malan: 1, minħabba bracket 0 jinstabx se tkun l- isem tal-programm, kif rajna. Allura bracket 1 hija l-ewwel kelma li jien, l-utent, għandek ittajpjat. Jien ser jimxi 'l quddiem u jiffrankaw din. Jien se jmorru fil folder tiegħi fejn stajt mqiegħda dan il-fajl. Jien ser tagħmel jagħmlu bonjour 3. OK Comp IO. ./hello Zamyla Ikteb. What did I do wrong? I kien maqbud mill-sorpriża myself għal ftit mument hemmhekk. What did I do wrong? UDJENZA: Isem. DAVID Malan: ta 'l-fajl attwalment imsejħa hello3.c. U jien għamilt dan biss għal konsistenza, għaliex konna kellhom hello.c fil- passat fil-kodiċi online. Mela ejja jiffissaw dan ./hello sing bracket 3 Zamyla. Ikteb. U issa għandna hello, Zamyla. Sadanittant, I jistgħu jbiddlu dan tkun Rob, jew verament xi kelma oħra. Imma ejja jikkunsidraw każ kantuniera. Liema jista inti jistennew se jiġri jekk I do not isem tat-tip ħadd fil-livelli kollha? UDJENZA: Error. DAVID Malan: Żball ta 'xi tip, forsi. Ejja naraw. Ikteb. Null. Allura printf huwa attwalment qed ftit protettiv minna hawn, u litteralment istampar paren miftuħa null, imma affarijiet anke agħar jista 'jiġri. U biss biex juru xi ħaġa inti assolutament m'għandekx tagħmel, ejja jmorru fl hawn u tibda poking madwar. Right? Jekk Naf li l-istampa fil- memorja huwa essenzjalment dan, bracket ARGV 1 għandha Zamyla, ARGV bracket 0 għandha ./hello, jew ./hello-3. X'inhu fil-bracket 2? So I tista 'twieġeb li mistoqsija myself, right? I tista 'biss jibdlu l-1 għal 2. I issa jistgħu recompile bonjour 3, ./hello3 Ejja zoom u hit Ikteb. Whoops. Nru marka kwotazzjoni. Interessanti. Allura dak it-tip ta 'kessaħ li tara x'qed jittella aktar fil hawn. Allura x'qed jittella ġewwa ta 'laptop tiegħi? Ejja tiffranka ma bracket 3. Jagħmlu hello3, ./hello-3. Kurjuż. U issa ejja nikseb verament bold-- 50. Allura li verament għadis fil-fond fil-memorja tal-kompjuter tiegħi. 50 indiċijiet fil. Sabiex tagħmel bonjour 3 ./hello-3. Kurjuż. Kull dritt, issa jien biss se tikseb imprudenti. Ejja mur 5,000. Kull dritt. So let me recompile. Jagħmlu hello3, ./hello-3. OK. Issa xi wħud minnkom, hemm tista jkun bozza tad-dawl jmorru off. Kemm inti għandek raw dan il-messaġġ qabel? OK. Allura, għaliex? Odds are-- u hemm differenti affarijiet li jistgħu jikkawżaw din, u b'mod ċar int fil tajba company-- għandna ċar ikkawżat dak li sejjaħ tort segmentazzjoni. U l-istorja twila fil-qosor għal-lum, I għandhom jintmessu segment ta 'memorja li jien ma għandu jkollhom. Meta segment ifisser biss blokki ta 'memorja li jien ma għandu jkollhom. Issa l-kompjuter jiggarantixxi li jekk I run ./helloZamyla li nista tmissx ARGV jkun bracket 0 u ARGV bracket 1. Iżda argc huwa valur 2, dan ifisser I am biss allowed-- huwa tip ta 'l-unur system-- tmissx bracket 0 u bracket 1. Jekk immur xi farther, hemm assolutament se jkun memorja hemmhekk. RAM My teżisti fiżikament fil-kompjuter. Imma min jaf x'hemm hemmhekk? Tabilħaqq, niġri multipli programmi f'ħin wieħed. I jista 'jkollhom seen-- jekk I ma kinux tagħmel dan fuq il-Appliant iżda fuq Mac tiegħi jew PC-- I jista 'jkollhom raw il-kontenut ta 'email. I tista raw instant messaġġ Stajt reċentement mibgħuta. Kwalunkwe ħaġa li tista 'tkun wieqaf madwar fil-memorja setgħu ġew aċċessata permezz ta ' dan notazzjoni parentesi kwadra arbitrarja. Jew, agħar għadu, inti jista 'jkollok misjuba wieħed ta 'passwords tiegħi li I d reċentement ittajpjat fil, li programm kien maħżun fil-memorja sabiex biex jawtentikaw lili, u allura biss tip ta 'telaq minnha fil RAM sal I nieqaf dak il-programm. U fil-fatt, dan huwa wieħed ta ' il-periklu u waħda s-setgħat ta 'użu ta' lingwa bħal C. Għandek aċċess bla xkiel li l-kontenut kollu tal-memorja ta 'programm, u liema guys ħżiena tista anki do f'dawk cases-- speċjalment meta aħna jiksbu l-ipprogrammar web lejn it-tmiem tas-semestru, aħna ser nirrevedu din topic-- huwa poke madwar, potenzjalment, xi ħadd huwa tal-kompjuter memorja u ssib dawn l-affarijiet kurjużi kif rajna hemmhekk. Jew saħansitra agħar għadu, passwords li hu jew hi jistgħu mbagħad jużaw biex tagħmel affarijiet ħżiena. So ċar I m'għandhomx għamlu dan, minħabba affarijiet stramb jibdew jiġri. Tabilħaqq, dan huwa jiġġarrfu program. Dan ikun l-ekwivalenti tal OS Mac jew Windows tieqa program biss jisparixxu. Żball mhux mistennija seħħet. Fl-ambjent kmand tal-linja naraw xi ħaġa bħal din. Imma hu għalhekk li, huwa jien sempliċiment li jmissu memorja li ma jappartjenix lili. Mela ejja jiddefendu kontra dan ta ' ftit b'mod differenti billi tħares lejn dan il-programm hawn. Għalhekk, għal darb'oħra, l-iskeletru li rajna earlier-- u stajt enfasizzat dan int ħin. U dan kollu ħin prinċipali għandu tabilħaqq lura valur. Anke jekk fil-maġġoranza tal lecture tagħna eżempji konna qatt darba użati ritorn xejn prinċipali. Aħna biss jiktbu qrib printf Brace kaboċċi u thats it. Iżda b'xejn, dak il- kompilatur qed tagħmel għalik, effettivament, qed jirritornaw 0 għalik. Dawriet out-- u huwa ftit counterintuitive-- li 0 hija tajba. Dan ma jfissirx falza per se. 0 hija tajba, u kwalunkwe non-0 valur, id-dinja iddeċieda, tista turi żball. Mela jekk inti stajt qatt messed xi ħaġa up fuq il-kompjuter tiegħek, jew programm għadu kif miet fuqek u inti ħadthom gotten xi tieqa żbaljata fuq l-iskrin tiegħek, tgħid żball negattiv 49 jew żball 23-- xi value-- apparentement arbitrarja thats minħabba programmer tkun hard-kodifikati valur bħall negattiv 49 jew pożittiv 23 biex jirrappreżentaw kull numru, DARE ngħid, ta 4 biljun affarijiet possibbli li jistgħu imorru ħażin fi programm. Allura kif tista I jieħdu vantaġġ ta 'dan myself? Well, let me jiftħu programm li I kiteb bil-quddiem, u poke madwar online imsejħa bonjour 4. U huwa kważi identiku, ħlief li tagħha ltqajna xi ftit ta 'żball-verifika. F'dan il-każ, stajt darb'oħra ddikjarat prinċipali kif jittieħdu żewġ argumenti, iżda din id-darba, fuq il-linja 17, l-avviż Jien tagħmel daqsxejn ta 'verifika sanità. Jien jagħmlu ċert li argc ugwali ugwali 2. Għaliex jekk huwa, li ifisser I jistgħu b'sigurtà tmissx mhux biss bracket 0, iżda parentesi 1. And I jimxi 'l quddiem u jistampa, f'dan il-każ, Zamyla jew Rob jew kwalunkwe kelma I ittajpjat out. U issa biss li tikseb ftit aktar xierqa, Jien ser jirritornaw b'mod espliċitu 0 biex turi kollox huwa tajjeb. Xejn ħażin li ġara. Iżda b'konvenzjoni, jien ser ritorn 1, jew franchement kwalunkwe 0 non valur, jekk xi ħaġa li marret ħażin. Issa l-utent mhux se verament Avviż x'inhu għaddej. Tabilħaqq jekk I tmur fis dan id-direttorju, aħna zoom fi u ma tagħmel bonjour 4, ./hello-4 Zamyla iġib ruħu bħala I jistennew. Imma jekk jien minflok ma tip xejn, xejn ma jidher li jiġri, iżda ma crash. U jekk jien minflok tagħmel xi ħaġa bħal Rob huwa Procter fil-qsim Thayer-- informazzjoni arbitrarja. Iżda avviż, ARGV 1, 2, 3, 4, u 5 issa għandhom jeżistu fil-memorja. Dan, wisq, mhuwiex dak li programm tiegħi jistenna, għaliex stajt ċċekkjati jekk argc ugwali ugwali 2 jew le. Allura jien issa difiża kontra dan. Issa, bħala twarrib, aħna l- programmer-- jew pjuttost aħna l users-- qatt ma tara dak 0 jew 1 iżda bl-użu ta ' għodda msejħa Debugger, jew għodod oħra, kif aħna ser tara qabel twil, inti l-programmer tista 'attwalment tara dak li jista' jkun tmur ħażina ġewwa tal-programm tiegħek. Allura, xi mistoqsijiet dwar argc? Yeah. UDJENZA: Stajt tidher fejn huma ma kellhomx il-karattru, [inaudible] biss qal star string d, bħal karattru comma asterisk. Dawn huma ekwivalenti hawnhekk? DAVID Malan: Dawn huma. Għalhekk il-kwistjoni hija, inti għandek programmi kultant dehru bħal din li ma jgħidu bracket ARGV string iżda minflok ngħid xi ħaġa bħal char bracket ARGV star. U hemm anke oħrajn varjanti li inti tista 'tara. Huma tassew ekwivalenti. Għal issa, aħna għandna dawn tip ta 'roti tat-taħriġ fuq fil-forma ta 'sekwenza fil-CS50 librerija, iżda fi ftit aktar minn ġimgħa jew hekk aħna qed tmur biex ineħħi l- ostruzzjoni għal kollox u fil-fatt tħares lejn dak li l char u l-istilla huma, u kif dawk jappartjenu għall-memorja rappreżentazzjoni aktar ġenerali. Allura aħna ser terga 'lura għal dan. Mistoqsijiet oħra fuq ARGV tagħna jew argc? Yeah. UDJENZA: Għaliex ma kien jirritorna żball [inaudible]? DAVID Malan: Għaliex ma kien ritorn żball only-- oh! Fil-każ preċedenti, meta aħna kienu futzing madwar bil-memorja, għaliex ma biss ritorn żball meta I really ittajpjat numru kbir? Risposta qasira hija, aħna biss ltqajna xxurtjati. Ġeneralment, kompjuter jalloka memorja fil-biċċiet, u tatni blokki kbar biżżejjed li I ltqajna bogħod, mingħajr ma jkunu ndunat, tal bracket jmissu 2, parentesi 3, parentesi 50, iżda malli I imbuttat Xorti tiegħi, I marru lil hinn mill- konfini tal-blokki ta 'memorja is-sistema operattiva kien mogħti lili. U li meta kklampjata isfel u qal, no. Żball Segmentazzjoni. Yeah. UDJENZA: Kif il-kompjuter jafu l-valur ta 'argc? DAVID Malan: Kif il- kompjuter jafu l-valur ta 'argc? Meta inti tmexxi programm, li programm, min-natura tal-pront Teptip, hija mogħtija l-firxa ta ' kliem li kienu ittajpjat fil-pront, li kien ittajpjat fil-prompt. U għalhekk huwa operattiva tiegħek sistema li essenzjalment populates argumenti prinċipali tal għalik. Allura dak wieħed mis-servizzi li ikollok, tip ta segretament taħt il-barnuża tal- sistema operattiva. Mistoqsijiet oħra? Yeah. UDJENZA: X'tagħmel dump qalba jfisser? DAVID Malan: X'tagħmel dump qalba jfisser? Allura li hija mistoqsija tajba. U let me jmorru lura fis dan id-direttorju hawn. U inti ser ikollok avviż li I jkollhom fajl ġdid hemmhekk. Huwa tabilħaqq sejjaħ qalba, u huwa attwalment tipikament fajl deċenti 'daqs. Din hija essenzjalment stampa ta il-kontenut tal-memorja programm tiegħi jew RAM meta ġġarraf. U dan se jkun utli, potenzjalment, diagnostically, ladarba aħna nitkellmu għal taħdita futur u taqsima dwar debugging, għaliex inti tista 'attwalment jagħmlu l- ekwivalenti ta 'awtopsja diġitali fuq dan il-fajl biex jgħinu insemmu dak li għamilt ħażin fil-programm tiegħek. Yeah. UDJENZA: Huwa argc kmand fil innifsu, jew jistgħu inti isem li bih xejn? DAVID Malan: Tajba kwistjoni. Huwa argc kmand fih innifsu, jew inti tista 'isem li bih xejn? Huwa definittivament mhux kmand. Huwa sempliċiment l varjabbli isem jew l-isem ta 'l-argument, u hekk assolutament aħna jista 'jsejjaħ din foo, nistgħu sejħa dan bar, li għandhom tendenza li jkun il-go għal kliem li kompjuter xjentist tmur għall. Iżda billi konvenzjoni, nużaw argc u ARGV. Imma dak li biss bniedem konvenzjoni, xejn aktar. Kull dritt. Allura jinstabx, stajt ġiet javżak daqsxejn ta 'lie-- abjad u franchement, fil-futur, tkun taf tara konna kienu javżak tinsab abjad ieħor. Iżda għal issa, aħna qed tmur li titqaxxar lura waħda minn dawn. F'dan il-każ hawnhekk meta I preċedentement mexxa programm bħal ./hello jew ./hello-3 Zamyla, kellna l-kontenut ta 'tiegħi memorja tal-kompjuter tfittex madwar bħal dan. Imma jfakkru dak string huwa. What did ngħidu ġimgħa ilu dak string attwalment hija taħt il-barnuża? UDJENZA: Array ta Chars. DAVID Malan: Huwa ta ' firxa ta 'Chars, id-dritt? Allura aħna jista 'jkollhom firxa ta' kordi, iżda, imbagħad, string firxa ta 'karattri. Mela jekk jien verament tixtieq li tkun anali meta I tfassal din l-istampa, I għandhom verament jiġu tpinġija hija ftit aktar bħal dan, li biha f'kull wieħed minn dawn indiċi ta 'firxa ARGV tiegħi, hemm innifsu huwa string kollu li hi stess hija fil-firxa. U issa l-jimteddu abjad aħna qed javżak llum huwa li l-istampa ma ħarsa pjuttost bħal dan. Fil-fatt, il-kwadri ftit huma tipikament barra tal-rettangoli kbar hemmhekk. Iżda aħna ser terga 'lura għal li qabel twil. Iżda din hija ./hello backslash 0, li huwa l-karattru speċjali li tiddemarka-tmiem ta string, u konna ltqajna wieħed ieħor wara Isem Zamyla tal. Allura dak li jfisser dan? Well, let me imorru quddiem u jiftħu żewġ eżempji oħra li huma disponibbli online. Wieħed huwa msejjaħ argv1.c u l-ieħor huwa argv2. Huwa program sempliċi super li hija differenti minn programmi tal-passat f'dak issa jien jużaw argc u ARGV up here. U issa jien jintegra ma 'għall-loop fil-linja 18, minn i = 0 fuq sa argc. U dak li jien ser tagħmel ma din il-linja tal-kodiċi hawn? Bl-Ingliż. Dan ovvjament juri użu ta argc. Iżda bl-Ingliż, dak ma do jekk I run dan il-programm? Yeah? UDJENZA: Huwa ser jistampaw tiegħek iskrin kemm drabi tixtieq. DAVID Malan: Eżattament. Sabiex ikun x'ikun kliem I tip fil-prompt, huwa ser regurgitate minnhom fil lili waħda għal kull linja. Mela ejja imorru quddiem u tagħmel dan. Let me go fis direttorju tiegħi u ma jagħmlu ./argv1 argv1. U issa, ejja jżommha sempliċi. Ejja nagħmlu xejn fl-ewwel. Hija ma jistampa ħaġa waħda, u li tabilħaqq l-isem tal-programm, għaliex dan huwa fil bracket 0. Jekk I issa ngħid foo, li għaddej biex tagħmel dawn iż-żewġ, u jekk ngħid bar foo, li għaddej biex ngħid dawk it-tliet affarijiet. Issa li kemmxejn interessanti, forsi. Iżda tfakkar li ARGV firxa ta 'spag, iżda string huwa firxa ta 'Chars, hekk nistgħu jieħdu l-affarijiet up a talja u li tapplika dan bażika loġika u jagħmlu kodiċi li jistenna ftit aktar cryptic, ċertament. Iżda billi jkollhom nested loop, xi ħaġa bħar għal dak li inti tista 'recall minn Mario, per eżempju, jekk inti għamilt dan il-mod. Allura issa avviż fuq il-linja 19, jien darb'oħra mtennija fuq argumenti tiegħi, minn 0 sa l argc. U issa fil-linja 21-- jien self trick mill-aħħar week-- I am iċċekkjar dak li huwa l- tul ta 'ARGV bracket i. Jien ħażna din ir-risposta fil n. U mbagħad jien jintegra mill j fuq sa n, fejn j huwa initialized għal 0. Allura, konvenzjoni biex jingħaddu. Ladarba inti ħadthom użati i, jekk għandek loop nested, inti ma tistax tuża i darb'oħra, inkella inti ser clobber, potenzjalment, il-valur ta 'barra tal-linja ta' ġewwa. So jien jużaw j minn konvenzjoni. Aħna jistgħu jużaw k. Jekk għandek aktar minn k, inti probabilment jkollhom wisq ibejtu, tipikament. Imma issa, avviż printf tiegħi linja hija kemmxejn differenti. Jien ma istampar% s, jien istampar% c, li, naturalment, huwa placeholder għal char. U issa dan l-avviż sintassi. New. Aħna ma bbenefikawx qabel. Iżda loġikament, dan ifisser biss jiksbu l-string ith fil ARGV u jiksbu l-JTH liema? UDJENZA: Karattru. DAVID Malan: Karattru f'dak string. Hekk billi tuża parentesi kwadri segwit minn parentesi kwadri, dan huwa għadis ewwel fis kordi ARGV tal, u mbagħad it-tieni parentesi kwadri bil j huwa għadis fil-karattri ta ' li string partikolari fil ARGV. U mbagħad, biss għal miżura tajba, Jien istampar linja ġdida hawn. Allura issa let me imorru quddiem u tiftaħ up tieqa kemmxejn akbar hekk nistgħu naraw dan fl-azzjoni. Let me go f'dak folder. U issa ma jagħmlu ARGV-2-- whoops-- make-ARGV 2, ./argv 2. Ikteb. U huwa a hard ftit biex taqra vertikalment, iżda li tabilħaqq l-isem tal- programm, segwit minn linja vojta. Issa let me imorru quddiem u tagħmel foo. Bl-istess mod diffiċli biex jinqara, iżda huwa tabilħaqq istampar karattru wieħed kull linja. U jekk I do bar, huwa issa istampar dawk linja b'linja. Allura l-takeaway hawnhekk mhix daqshekk li, wow, ħarsa lejn din trick ġdida pulita fejn inti tista 'tikseb fuq il-kontenut ta 'karattri speċifiċi ta' firxa, iżda pjuttost kif aħna qed tieħu dawn bażika ideat bħal indiċjar fis firxa, u mbagħad indiċjar fi firxa li kien f'dak array, u biss applikati l-istess ideat għall eżempji ftit aktar sofistikati. Imma l-affarijiet bażiċi verament ma jkunux mibdula, anke mill-aħħar ġimgħa. Issa dan huwa tip ta 'informazzjoni f'waqtha, peress li, jfakkru, fl zero ġimgħa aħna lagħbu bil-ktieb tat-telefon bħal dan. U anke jekk din hija ovvjament biċċiet fiżiċi tal-karta, inti tista 'tip ta' jaħsbu ta ' ktieb tat-telefon bħala firxa. Ċertament, jekk ġejt biex reimplement dan biċċiet dawn biċċiet tal-karti fil-kompjuter, probabbilment inti tuża xi ħaġa bħal firxa li jaħżen kollha ta 'dawk ismijiet u numri mill A-triq kollha permezz Z. Allura dan huwa sabiħ, għax dan jippermetti l-opportunità, forsi, biex jikkunsidraw kif inti tista fil-fatt jimplimentaw xi ħaġa bħal dik. Bħala ma 'serje ta' bibien hawn. Mela jekk jien could-- għandna bżonn wieħed voluntier biex toħroġ fuq up. Ejja naraw. An wiċċ familjari forsi, wiċċ familjari forsi. Kif dwar fil oranġjo? Hawnhekk. Shirt Orange, come fuq up. Ejja imorru quddiem issa u jimxu dawn il-bibien fuq il-ġenb, jimxu dawn barra mill-mod għal mument. X'hemm isem tiegħek? Ajay: DAVID Malan: Ajay. David. Nizza li jissodisfaw inti. Kull dritt. Allura aħna għandna lura dawn is-sitt bibien diġitalment fuq il screen-- jew, pjuttost, seba bibien fuq il- screen-- mazz sħiħ ta 'numri. U stajt qallek xejn fil advance-- miftiehem? Ajay: Xejn bil-quddiem. DAVID Malan: All nixtieq li inti tagħmel issa huwa li jinstabu għalija, u għalina, verament, in-numru 50, pass wieħed fi żmien. Ajay: Numru 50? DAVID Malan: In-numru 50. U inti tista jiżvelaw x'hemm wara kull waħda minn dawn il-bibien sempliċiment billi tmiss ma 'saba. Kkritikat dan. [Rires] [Applause] Isir ħafna ukoll. OK. Għandna rigal sabiħ premju għalik hawn. Pick tiegħek ta 'films aħna diskussi l-aħħar ġimgħa. Ajay: Oh, raġel. Oh, stajt qatt ma rajt Spaceballs. DAVID Malan: Spaceballs. Kull dritt. Allura żżomm fuq wieħed biss mument. How-- ejja jagħmlu dan a moment-- teachable kif ma inti tmur dwar konstatazzjoni tal-numru 50? Ajay: I għażlet b'mod każwali. DAVID Malan: Allura inti għażilt saltwarjament u ltqajna xxurtjati. Ajay: Iva. DAVID Malan: OK. Eċċellenti. Allura issa, kellha inti ma gotten xxurtjati, x'iktar seta 'ġara wara dawn il-bibien? Mela jekk jien jimxi 'l quddiem u jiżvelaw dawn in-numri hawn, huma fil-fatt huma fl-ordni każwali. U l-aħjar inti jista 'jkollhom isir, franchement, huwa billi, finalment, fl-agħar każ, jqabbluhom kollha. Allura inti ltqajna super-xxurtjati, li mhuwiex dak li aħna'd sejħa algoritmu. Iva, congrats. Imma issa let's-- Humer lili, jekk inti tista '. Ejja mur dan tab hawn. U hawn huma n-numri fil-ċar dak li jidher li jkun ordni każwali, u kienu. Imma issa jekk I minflok pretensjoni li wara dawn il-bibien huma n-numri li huma magħżula. L-għan issa huwa li wkoll issibna-numru 50. Iżda tagħmel dan algorithmically, u jgħidulna kif inti qed tmur dwar dan. U jekk issibha, inti żżomm il-movie. Inti ma jsibuha, inti tagħti lura. Ajay: So jien ser jiċċekkja l-truf ewwel, biex jiddeterminaw jekk there's-- [Daħk u applause] DAVID Malan: Hawnhekk inti tmur. Ejja tagħti ħarsa lejn wieħed tal-predeċessuri Ajay tal, Sean, li ma kienx daqshekk xxurtjati. OK, hekk kompitu tiegħek hawn, Sean, huwa dan li ġej. Għandi moħbija wara dawn bibien in-numru sebgħa, iżda tucked bogħod f'xi wħud minn dawn il-bibien kif ukoll huma numri mhux negattivi oħra. U l-għan tiegħek huwa li wieħed jaħseb ta 'dan ringiela ta 'fuq ta' numri biss bħala firxa. Aħna biss sekwenza ta 'biċċiet tal-karta bin-numri warajhom. U l-għan tiegħek huwa, biss bl-użu l-quċċata array hawn, issib lili n-numru sebgħa. U aħna huma mbagħad se critique kif inti tmur dwar kif isir dan. Issibna-numru sebgħa, jekk jogħġbok. No 5, 19, 13. Mhuwiex mistoqsija trick. 1. Fuq dan il-punt punteġġ tiegħek ma tantx hu tajba, sabiex inti tista 'ukoll jibqgħu għaddejjin. 3. Mur fuq. Franchement, I iżda ma jistax jgħin wonder dak li qed anki jaħsbu dwar. Seán: I tista 'tieħu minn biss l-filliera ta' fuq. DAVID Malan: Biss il-filliera ta 'fuq. Allura inti ħadthom ltqajna tlieta xellug. Allura ssib lili 7. [UDJENZA shouts SUĠĠERIMENTI] Allura kemm ta 'dawk kienu aqwa għal raġunijiet differenti ħafna. Allura dan huwa fejn aħna jitħalla 'off mument ilu, u l-għarfien ċavetta hawn kien dawn il-bibien kellhom in-numri warajhom li kienu magħżula, l-ideal takeaway li għalihom hija li inti tista 'tagħmel fundamentalment aħjar dan it-tieni example-- u, tabilħaqq, li kien Sean ewwel tentattiv bin-numri bl-addoċċ daqstant before-- iżda hekk kif dawn in-numri huma magħżula, ħafna bħall-ktieb tat-telefon, dak li tista 'ovvjament tagħmel? Jew kif tista 'inti lieva li l-għarfien? Yeah. UDJENZA: Inti tmur f'nofsu [inaudible]. DAVID Malan: Yeah. Eżattament. Allura istint inizjali Ajay kien biex jivverifika l-truf, bħala niftakar, u allura aħna tip ta 'lest l-eżempju malajr. Imma jekk irridu bdew jagħmlu dan aktar metodiku flimkien dawk il-linji, iżda jibdew forsi fil- nofs, għaliex qed magħżula, hekk kif aħna jiżvelaw l numru 16, aħna għalhekk know-- u ejja jagħmlu eżattament that-- aħna għalhekk jafu li 50, fil-każ tal-lum, s'est li jkun lejn il-lemin. Hekk biss bħal fil żero meta ġimgħa aħna Tore-ktieb tat-telefon fil nofs u threw nofs il- problema bogħod, l-istess idea here. Nistgħu tarmi Din it-taqsima tal-problema bogħod. U probabbilment dak li inti tista 'tagħmel algorithmically, ladarba inti taf li 50 għandu jkun lejn il-lemin, jekk huwa kullimkien, huwa li tipprova hemm, fin-nofs tal-bibien li jifdal. Of course, 50 huwa ogħla minn 42, sabiex inkunu nistgħu tarmi dan li jifdal kwart tal-problema bogħod, u, finalment, jidentifikaw xi ħaġa bħal 50. Iżda biss kif ma 'l- ktieb tat-telefon, dawn in-numri ngħataw lilna diġà ordni Issortjati, li tħalli us bil-kwistjoni, kif taħseb li tikseb l-affarijiet fis-ordni magħżula? U, franchement, b'liema prezz? Hija ħaġa waħda li tkun mogħtija l-ktieb tat-telefon u mbagħad tagħfas ħbieb tiegħek billi jsibu numru tat-telefon verament malajr, right? Tiċrit 32 paġni out biex isibu persuna minn 4 biljun paġni, għidna kien eżempju estrem. Imma kemm ħin ma ħadet Verizon biex issolvi dak il-ktieb tat-telefon? Kif ħafna ħin ma ħadet us biex issolvi dawn is-seba 'numri? Li hija mistoqsija li konna b'hekk injorati s'issa kompletament. Mela ejja twieġeb din il-mistoqsija issa. U aħna qed kollha barra ta 'movies issa, imma aħna ma jkollhom xi blalen istress. Jekk, ngħidu, tmien voluntiera ma mind jingħaqdu magħna up here? Ejja imorru quddiem u jagħmlu, kif madwar l-erbgħa tal inti, tlieta mill inti hawn? Get xi uċuh ġodda. U l-erbgħa tal inti hemmhekk? U now-- ejja ma bias here-- u numru tmienja minn hawn fuq l-aħħar. Come fuq up. Kull dritt. Allura dak li għandna hawn għal kull inti huwa numru. Jekk inti tixtieq li tmur quddiem, tieħu dan in-numru. X'hemm isem tiegħek? Artie: Artie. DAVID Malan: Artie, okay. Inti numru 1. Amin: Amin. DAVID Malan: Amin. David. Inti numru 2. U jimxi 'l quddiem, bħala I idejn inti l-folji tal-karta, linja yourselves up fuq quddiem tal-mużika stands fl-istess ordni bħal up hemm. Andy: Hi, Andy. DAVID Malan: Andy, huwa sabiħ li tara int. Numru 3. JACOB: Jacob. DAVID Malan: Jacob, numru 4. Merħba abbord. GRANT: Għotja. DAVID Malan: Grant. Numru 5. Alanna: Alanna. DAVID Malan: Alanna, numru 6. FRANCES: Frances. DAVID Malan: Frances, numru 7. U? RACHEL: Rachel. DAVID Malan: Rachel, numru 8. Kull dritt. Jimxi 'l quddiem u nikseb yourself f'din l-ordni. Let me tpoġġi wieħed li jifdal mużika stand fil-post. Fejn għandek bżonn stand? OK. Jimxi 'l quddiem u biss jitqiegħed numri tiegħek fejn l-udjenza tista 'tara minnhom fuq, l-mużika stand jiffaċċjaw 'il barra. U wieħed jittama, l-ewwel tagħna check sanità here-- 4, 2, 6. Oh-oh. Stenna minuta. Aħna ma jkollhom 8. I bżonn biex tkeċċi int mill- l-eżempju b'xi. No Le, li OK. Ejja naraw. Nistgħu nagħmlu dan. Stand by. Hemm immorru. Korretta. Kull dritt. Allura, issa għandna 8, 1, 3 7, 5. OK. Eċċellenti. Għalhekk il-kwistjoni fil-idejn huwa, fl b'liema prezz, u skond liema metodu, nistgħu attwalment sort dawn in-numri hawn sabiex inkunu nistgħu tip ta 'xogħol lura, finalment, u decide-- huwa tassew impressjonanti, huwa tassew effiċjenti, li I tista 'taqsam u jirbħu ktieb tat-telefon? Huwa tassew effiċjenti li I tista 'taqsam u conquer dawk il-biċċiet diġitali tal-karta fuq il-bord, jekk forsi huwa va ispiża us fortuna fil-ħin jew ċikli ta 'enerġija jew CPU biex fil-fatt tikseb data tagħna fis xi ordni Issortjati? Mela ejja jistaqsu din il-kwistjoni. Allura l-ewwel darba, dawn in-numri huma sabiex każwali pretty ħafna, u jien ser tipproponi algoritmu wieħed, jew proċess li permezz tiegħu nistgħu sort dawn folks. Jien ser approċċ dan pretty naively. U jien ser jirrikonoxxu li huwa tip ta 'lott għalija biex nagħlaq f'moħħi madwar il- data kollha stabbilit għal darba. Imma inti taf liema? Jien ser tagħmel xi fixes marġinali sempliċi ħafna. 4 u 2 huma out of order, jekk il- għan huwa li tmur minn 1 fuq sa 8. Allura inti taf liema? Jien ser ikollhom inti guys tpartit, jekk inti taqleb fiżikament pożizzjonijiet u biċċiet tiegħek ta 'karta. Issa 4 u 6, dawn huma fl-ordni. Jien ser jitilqu dawk jkun. 6 u 8, dawk huma fl-ordni. Going li jħallu lilhom tkun. 8 u1, out of order. Jekk inti tnejn ma mind iskambji. Issa 8 u 3, jekk inti guys tista 'tpartit. 8 u 7, jekk inti guys tista 'tpartit. U 8 u l-5, jekk inti guys tista 'tpartit. Issa, am I jsir? Le, ovvjament le. Imma I għamlu l- sitwazzjoni aħjar, id-dritt? Liema kien l-isem tiegħek mill-ġdid, numru 8? RACHEL: Rachel. DAVID Malan: Allura Rachel għandha effettivament effervexxentement up pretty bogħod, it-triq kollha sa l-aħħar ta ' firxa tiegħi ta 'numri hawnhekk. U għalhekk dik il-problema hija tip ta 'solvuti. Issa, b'mod ċar, 2 għad trid jimxu daqsxejn, u 4 u 6 u 1. Imma I jidhru li gotten ftit eqreb lejn is-soluzzjoni. Mela ejja japplikaw dan l-istess heuristic naive mill-ġdid. 2 u 4, OK. 4 u 6, OK. 6 u 1, mm mm. Ejja swap. 6 u 3, mm mm. Ejja swap. 6 u 7 huwa OK. 7 u 5, Nope. Ejja swap. U issa 7 u 8. U x'hemm isem tiegħek mill-ġdid? FRANCES: Frances. DAVID Malan: Frances. Allura issa Frances hija fil anki aħjar pożizzjoni, minħabba li issa 7 u 8 jkun korrett effervexxentement sal-quċċata. Allura 2 u 4, OK. 4 u 1, swap Ejja. 4 u 3, tpartit Ejja. 4 u 6, int OK. 6 u 5, tpartit Ejja. U issa dawk guys huma tajbin. Aħna kważi hemm. 2 u 1, out of order, hekk tpartit. U issa let me tagħmel verifika sanità. 2 u 3, 3 u 4, 4 u 5, 5 u 6, 6 u 7, 8. OK, hekk aħna qed isir. Imma b'liema spiża ma I sort dawn in-numri hawn? Well, kif ħafna passi ma I potenzjalment tieħu meta issortjar dawn folks? Well, aħna ser terga 'lura għal din il-kwistjoni. Iżda, franchement, jekk inti ltqajna ftit bored, li l- tip ta 'tiżvela f'dak dan ma kienx forsi l-algoritmu aktar effiċjenti. U fil-fatt, franchement, jien għaraq l-aktar mixi u lura. Li ma ħassx partikolarment effiċjenti. Mela ejja tipprova xi ħaġa oħra. Jekk inti guys tista reset yourselves għal dawn it-tmien valuri. Tajba tax-xogħol. Ejja tagħti ħarsa diġitalment, għal ftit mument qabel nippruvaw xi ħaġa oħra, lejn dak li ġara biss. Up hawn, int ser tara viżwalizzazzjoni ta 'dawn it-tmien bnedmin biha blu u aħmar bars jirrappreżentaw numri. Il taller-bar, l-akbar numru. Il-iqsar-bar, l-iżgħar numru. U dak li int ser tara hija fil- sabiex każwali aktar minn tmienja minnhom. Inti qed tmur biex tara dawn il-vireg jkollna magħżula minn dak l-istess algoritmu, jew sett ta 'struzzjonijiet, li aħna ser sejħa issa sort bużżieqa. Allura avviż, kull tieni jew hekk, żewġ bars huma tixgħel fl-aħmar, qed jiġu mqabbla mill-kompjuter. U mbagħad jekk il-bar kbar u l- ftit bar huma out of order, dawn ikunu qed skambjat għal me. Issa dan huwa oerhört tedious biex jaraw dan, ċertament, għal żmien twil ħafna, iżda avviż- takeaway-- bars kbar li jiċċaqalqu lejn il-lemin, bars ftit li jiċċaqalqu lejn ix-xellug. Ejja abort dan il-proċess u tħaffef dan up li jkunu ferm aktar mgħaġġla, sabiex inkunu nistgħu jiksbu sens ta 'livell għoli ta' liema, tabilħaqq, sort bubble qed tagħmel. Tabilħaqq, huwa tbaqbieq sal- naħa tal-lemin tal-lista, jew l-array, il-bars akbar. U bil-maqlub, il-bars ftit huma tbaqbieq mod tagħhom l isfel għall-xellug, għalkemm b'pass aktar mgħaġġel milli konna qabel għamlet. Allura, aktar diffiċli biex tara mal-bnedmin, iżda viżwalment dan huwa tabilħaqq dak kien qed jiġri. Imma ejja jippruvaw fundamentalment approċċ differenti issa. Ejja nippruvaw differenti algoritmu li biha għandna inti guys tibda f'dawn oriġinali pożizzjonijiet, li kien f'din l-ordni hawn. U ejja imorru quddiem issa. U jien se jagħmlu xi ħaġa saħansitra aktar sempliċi, id-dritt? Retrospettivament, jagħmlu skambju pairwise darb'oħra u għal darb'oħra, kważi ftit għaqlija. Ejja nagħmlu l-affarijiet aktar naively, fejn jekk irrid biex issolvi dawn folks, let me biss iżommu tfittex għall-iżgħar element. Allura issa dritt, 4 hija l- iżgħar numru stajt tidher. Jien ser ftakar li. Nru, 2 huwa aħjar, u ftakar li. 1 huwa saħansitra iżgħar. 3, 7, 5. OK. One-- x'hemm isem tiegħek mill-ġdid? Artie: Artie. DAVID Malan: Artie. Għalhekk, Artie, imorru quddiem. Jien ser pull inti out tal-linja. Jekk inti tista 'terga' lura hawn. U I-ħtieġa biex tagħmel spazju għalih. Għandna punt tad-deċiżjoni hawn. Kif tista nagħmlu spazju għal Artie hawn fil-bidu fejn numru 1 jappartjeni? UDJENZA: Shift. DAVID Malan: OK, aħna jista 'jċaqlaq kulħadd. Iżda tipproponi ottimizzazzjoni. Li jħoss ftit annoying għalija li jistaqsu erba 'persuni biex jimxu 'l isfel. X'aktar jista 'nagħmel? UDJENZA: Switch minnhom. DAVID Malan: Switch minnhom. U x'hemm isem tiegħek mill-ġdid? JACOB: Jacob. DAVID Malan: Jacob, jimxu. Ħafna aktar effiċjenti biss li jkollhom Postijiet tpartit Jacob ma Artie, għall-kuntrarju jisforzaw erba 'dawn folks, nirringrazzjak ħafna, biex pożizzjoni korretta tagħhom. X'hemm sbieħ dwar Artie issa, hu fil-pożizzjoni korretta tiegħu. Ejja nagħmlu dan mill-ġdid. 2, dak l-iżgħar numru stajt tidher. 3, 7, 5. OK. 2 huwa definittivament l-iżgħar. M'għandhomx jagħmlu xi xogħol. Ejja nagħmlu dan mill-ġdid. 6. Iżgħar? 8. Nope. 4? Ooh. Let me tiftakar 4. 3. Let me tiftakar 3. 7, 5. Iżgħar numru stajt jidhru fuq dan il-pass huwa ta '3. Jekk youd come fuq out. Fejn huma aħna se tpoġġi lilek? U x'hemm isem tiegħek? Alanna: Alanna. DAVID Malan: Alanna, aħna qed ser ikollhom biex tkeċċi int. Iżda dan huwa aktar effiċjenti, biss tpartit żewġ persuni, milli jkollhom nies multipli attwalment sidestep fuq. Issa ejja tagħmel dan mill-ġdid. Jien ser tagħżel 4, hekk come fuq out. U li għaddej biex jimxu? Numru 8, tal-kors. Jekk I issa jsibu numru 5, come fuq out. Numru 8 għaddej biex tikseb żgumbrat mill-ġdid. Jien issa ser issib numru 6 fis-seħħ. 7 fil-post. 8 fil-post. Dak li aħna biss għamlet issa hija xi ħaġa imsejħa sort għażla, u jekk aħna Ħares dan, huwa se jħossu xi ftit differenti. Ejja imorru quddiem u minn dan menu hawn, dan visualization-- ejja tbiddel dan to-- come fuq, Firefox. Ejja tbiddel dan it-tip ta 'għażla. U ejja tħaffef it up bħal qabel, u tibda l-viżwalizzazzjoni issa. U dan algoritmu għandha jħossu differenti għaliha. Fuq kull iterazzjoni, franchement, huwa saħansitra aktar sempliċi. Jien biss għażla l-element iżgħar. Issa, franchement, I ltqajna ftit xxurtjati li żmien, fis-sens li magħżula super-fast. L-elementi kienu każwali. Mhuwiex, kif aħna ser eventwalment tara, fundamentalment aktar mgħaġġel. Imma ejja tara terz u finali approċċ hawnhekk dwar dak li għaddej. Mela ejja imorru quddiem u reset inti guys finali ħin wieħed li jkun fil din l-ordni hawn. U issa, jien se jkun ftit aktar għaqlija, biss li jarrotondaw out algoritmi tagħna. Jien ser jagħmlu dan. Jien ser ma jmorrux quddiem u lura tant. Franchement, jien għajjien ta ' dan kollu traversat. Jien biss ser jieħdu dak jien mogħti fil-bidu tal-lista, u jien ser issolvi li allura hemmhekk. Allura aħna qegħdin hawn. Numru 4. Jien ser daħħal in-numru 4 ġo lista magħżula. Magħmul. Nitlob issa, u biss biex jagħmlu dan aktar ċara, din il-parti tal-lista tiegħi huwa magħżul. Huwa tip ta 'talba stupid, iżda tabilħaqq 4 huwa magħżul fil-lista ta 'daqs wieħed. Issa, jien ser tieħu fuq numru 2. Numru 2 Jien issa ser daħħal fil-post it-tajjeb. Għalhekk, fejn ma 2 jappartjenu? Ovvjament, minn hawn. Allura aqbad u jimxu lura, jekk inti tista '. U għaliex ma inti guys ħu mużika tiegħek stands miegħek f'dan il-ħin. U ejja sfurzat daħħal inti fil-bidu tal-lista. Allura xogħol ftit aktar. I kellhom jimxu Jacob madwar, u x'hemm isem tiegħek? Amin: Amin. DAVID Malan: Amin. Imma l-anqas I ma tmurx lura u lura. Jien biss tieħu l-affarijiet kif mmur. Jien biss ddaħħalhom fil-post dritt. 6, dan huwa attwalment pjuttost faċli. Ejja daħħal inti hemmhekk, jekk inti biss riedu jimxu fuq ftit. Numru 8, wkoll pjuttost faċli. Dritt hemmhekk. Kkritikat dan. Numru 1 ma nistgħux biss tpartit ma 'Amin hawn, minħabba li għaddej li mess up-ordni. Allura aħna għandna li jkun ftit aktar għaqlija. Għalhekk, Artie, jekk inti tista back up għal mument. Ejja imorru quddiem u shift issa, b'differenza algoritmi preċedenti tagħna, biex tagħmel spazju għall Artie dritt hawn fil-bidu. Għalhekk fl-aħħar tal-ġurnata, jien tip ta ' tagħmel dak li ridt biex jevitaw qabel. U għalhekk algoritmu tiegħi huwa tip ta maqluba, intellettwalment, minn dak li oriġinarjament kien. Jien biss tagħmel l-shifting f'punt differenti. Issa jien fil 3. Oh, kkritikat. Irridu jagħmlu iktar xogħol mill-ġdid. Mela ejja push inti out. Ejja jimxu 8, 6, 4-- oh oh-- u 3 huwa se jmorru hemm dritt. Dan bl-inqas iffrankar żgħar f'dan il-ħin. 7, mhux wisq xogħol xi jsir. Mela jekk inti tixtieq li pop lura, ejja daħħal inti. U fl-aħħarnett, 5, jekk inti tixtieq li pop lura, aħna bżonn li neqilbu, inti, inti, sakemm ħamsa hija fis-seħħ. Allura issa biex tara dan fi livell għoli grafikament, ejja tagħmel dan algoritmu viżwalizzazzjoni żmien addizzjonali wieħed. Allura dan aħna għandu jsejjaħ sort inserzjoni. Aħna ser run daqstant malajr, u tibda hawn. U dan, wisq, għandu jħossu differenti. Huwa tip ta 'jkollna aħjar u aħjar, imma hija qatt perfetta sal I jmorru fi u bla xkiel fil dawn il-lakuni. Minħabba, għal darb'oħra, jien biss jieħdu dak Jien qed tingħata mix-xellug għal-lemin. So I ma jiksbu hekk xxurtjati li kollox kien perfett. C'est pourquoi kellna dawn ftit mispositions li aħna fissi matul iż-żmien. Allura kollha ta 'dawn algoritmi jidhru li run b'rati kemmxejn differenti. Fil-fatt, li kieku inti ngħid huwa l-aħjar jew l-aktar malajr s'issa? Sort Bubble, l-ewwel? Sort Għażla, it-tieni? Sort Inserzjoni, it-tielet? I tisma 'xi xorta ta' selezzjoni. Ħsibijiet oħra? Għalhekk jirriżulta li kollha ta 'dawn algoritmi huma fundamentalment huma effiċjenti daqs kull other-- jew, bil-maqlub, eżatt kif ineffiċjenti daqs xulxin, għaliex nistgħu nagħmlu fundamentalment aħjar minn kull tlieta ta 'dawn algoritmi. U li daqsxejn ta 'gidba abjad, wisq. meta I say effiċjenti jew bħala ineffiċjenti, li l-inqas għal Valuri super-kbar ta 'n. Meta aħna għandna biss tmien nies hawn, jew forsi 50 jew hekk bars fuq l-iskrin, inti ser assolutament avviż differenzi fost dawn it-tliet algoritmi. Imma kif n, in-numru ta 'nies, jew in-numru ta 'numri, jew in-numru ta 'nies fil-telefon ktieb, jew in-numru ta 'paġni tal-web fid-database Google gets akbar u akbar, aħna ser tara li kollha tlieta minn dawn algoritmi huma attwalment pretty foqra. U nistgħu nagħmlu fundamentalment aħjar minn dik. Ejja tagħti ħarsa, finalment, lejn dak li dawn algoritmi jista ħoss bħal fil- kuntest ta 'ftit oħrajn kif ukoll permezz ta 'din viżwalizzazzjoni hawn li se jintroduċi magħna biex numru ta 'algoritmi. Ejja imorru quddiem u nifraħ parteċipanti tagħna hawn, kollha minnhom magħżula infushom tajjeb ħafna. Jekk inti tixtieq li tieħu rigal firda. Inti tista 'żżomm numri tiegħek ukoll. U dak li inti ser tara, jew pjuttost tisma, issa, hija li kif aħna tpoġġi ħsejjes għal kull wieħed minn dawn il-vireg u jassoċja mal-software, frekwenza differenti ta 'ħoss, inti tista wrap moħħ aktar audioly tiegħek madwar dak kull wieħed minn dawn l-affarijiet look like. L-ewwel waħda minnhom huwa tip inserzjoni [Tones] Dan huwa tip bubble. [Tones] Sort Għażla. [Tones] Xi ħaġa imsejħa sort jingħaqdu. [Tones] Sort Gnome. [Tones] C'est għal CS50. Aħna se tara int nhar l-Erbgħa. Narrator: U issa, "Deep Ħsibijiet, "mill Daven Farnham. Għaliex ma hija għal loop? Għaliex ma jagħmilha aħjar? I d tagħmel ħamsa loop. [Rires]