[Powered by Google Translate] [Ġimgħa 6, Ikompli] [David J. Malan] [Università ta 'Harvard] [Dan huwa CS50.] [CS50.TV] Dan huwa CS50 u dan huwa l-aħħar ta 'ġimgħa 6. Allura CS50x, wieħed mill-korsijiet 1 Harvard li huma involuti fl-inizjattiva EDX tabilħaqq debuted din it-tnejn fil-passat. Jekk inti tixtieq li tikseb idea ta 'dak oħrajn fuq l-Internet issa huma wara flimkien ma ', inti tista' ras biex x.cs50.net. Li se tieħu direzzjoni ġdida lill-post xieraq fuq edx.org, li kien meta dan u korsijiet oħra mill-MIT u Berkeley issa jgħixu. Int ser ikollok biex jiffirmaw għal kont, inti ser issib li l-materjal huwa l-aktar l-istess kif inti kellna dan is-semestru, għalkemm ftit ġimgħat mdewma, kif aħna tikseb kollox lest. Imma dak istudenti CS50x issa se tara huwa interface pjuttost bħal dan wieħed. Dan, per eżempju, huwa Zamyla li jwasslu l-walkthrough għal sett problema 0. Malli idħol fil-edx.org, student CS50x jara l-xorta ta 'affarijiet tista 'tistenna li tara fil-kors: il-lecture għall-Tnejn, lecture għal L-Erbgħa, xorts varji, il-settijiet problema, il walkthroughs, PDFs. Barra minn hekk, kif tara hawn traduzzjonijiet awtomatiċi, ta 'transkripts Ingliż fis Ċiniż, Ġappuniż, Spanjol, Taljan, u mazz sħiħ ta 'lingwi oħrajn li żgur se tkun imperfetta kif aħna roll out programmatically jużaw xi ħaġa imsejħa API, jew l-applikazzjoni ta 'programmazzjoni interface, mill-Google li jippermetti li jikkonvertu Ingliż biex dawn il-lingwi l-oħra. Iżda grazzi għall-ispirtu mill-isbaħ ta 'xi voluntiera 100-plus, nies bl-addoċċ fuq l-Internet li ġentilment offruti biex jinvolvu ruħhom f'dan il-proġett, aħna ser gradwalment itejbu l-kwalità ta 'dawk it-traduzzjonijiet billi jkollu bnedmin jikkoreġu l-iżbalji li l-kompjuters tagħna għamlu. Għalhekk jirriżulta li kellna l-istudenti ftit aktar juru up fuq it-tnejn milli aħna inizjalment mistennija. Fil-fatt, issa CS50x għandha 100,000 persuna wara tul fid-dar. Allura jirrealizzaw li inti huma kollha parti ta 'dan il-klassi inawgurali ta' teħid dan il-kors fix-xjenza tal-kompjuter edukazzjoni b'mod aktar ġenerali, b'mod aktar wiesa ', aċċessibbli. U r-realtà hija issa, ma 'wħud minn dawn il-korsijiet online massiva, dawn kollha jibdew ma 'dawn in-numri kbar ħafna, kif aħna jidhru li għamlu hawn. Iżda l-għan, finalment, għal CS50x huwa verament sabiex in-nies kif ħafna għall-finitura linja possibbli. Permezz tad-disinn, CS50x se jiġu offruti minn din it-tnejn passat it-triq kollha permezz April 15, 2013, b'tali mod li folks li għandhom impenji iskola band'oħra, xogħol, familja, kunflitti oħra u simili, li jkollhom flessibilità ftit aktar li biex adsa fis dan il-kors, li, huwa biżżejjed li jingħad, huwa pjuttost ambizzjuż isir jekk biss matul il-kors ta 'ftit tliet xhur matul semestru tas-soltu. Iżda dawn l-istudenti se jkunu ttrattati l-settijiet problema istess, viewing-istess kontenut, jkollhom aċċess għall-xorts istess u affarijiet simili. Allura tirrealizza li aħna lkoll verament f'dan flimkien. U wieħed mill-għanijiet aħħarija ta 'CS50x huwa mhux biss li tikseb folks kif ħafna għall-finitura linja u jagħtuhom dan il-fehim newfound tax-xjenza tal-kompjuter u l-ipprogrammar, iżda wkoll li jkollhom magħhom ikollhom din l-esperjenza kondiviża. Waħda mill-karatteristiċi li jiddefinixxu ta '50 fuq il-kampus, nittamaw, kien dan it-tip ta 'esperjenza komunali, għall-aħjar jew għall-agħar, xi kultant, iżda li dawn in-nies li jduru għas lejn ix-xellug u lejn il-lemin, u ħinijiet tal-uffiċċju u l-hackathon u l-fiera. Huwa ftit diffiċli biex tagħmel dan fil-persuna ma folks online, iżda CS50x se tikkonkludi f'April ma 'l-ewwel darba CS50 Expo, li se jkun adattament online ta 'idea tagħna ta' l-fiera fejn dawn l-eluf ta 'studenti kollha se jiġu mistiedna jissottomettu 1 - sa 2 minuti fil-video, jew screencast tal-proġett finali tagħhom jew video minnhom waving bonjour u jitkellem dwar il-proġett tagħhom u demoing dan, ħafna bħal predeċessuri tiegħek għamlu hawn fuq il-kampus fil-fiera, hekk li sal-aħħar semestru, l-tama hi li jkun hemm wirja globali tal-proġetti finali l-istudenti CS50x, simili għal dik li jistenna inti dan ta 'Diċembru hawn fuq il-kampus. Allura aktar fuq li fix-xhur li ġejjin. Bil 100.000 istudenti, għalkemm, taqa 'ħtieġa għal CAs ftit aktar. Minħabba li inti guys huma tisreġ-traċċa hawn u tieħu CS50 diversi ġimgħat qabel tar-rilaxx dan il-materjal għall-folks fuq EDX, tirrealizza aħna imħabba li tinvolvi kif ħafna mill-istudenti tagħna stess fis possibbli f'din l-inizjattiva, kemm matul is-semestru, kif ukoll dan xitwa u din ir-rebbiegħa li ġejjin. Mela jekk inti tixtieq li jinvolvu ruħhom fl-CS50x, partikolarment tgħaqqad fil dwar CS50x Iddiskuti, il-verżjoni EDX ta CS50 Iddiskuti, li ħafna minnkom bdew jużaw fuq il-kampus, il-bulletin board online, jekk jogħġbok do ras għal dak URL, jgħidilna min int, għaliex aħna imħabba biex jibnu tim ta 'studenti u l-persunal u l-fakultà kif ukoll fuq il-kampus li huma sempliċiment jilagħbu flimkien u biex jagħtu daqqa t'id. U meta jaraw mistoqsija li l-familjari magħhom, inti tisma student tirrapporta xi bug x'imkien hemmhekk f'xi pajjiż fuq l-Internet, u li l-ċrieki qanpiena għaliex inti wisq kellhom l-istess kwistjoni fil tiegħek d-sala xi żmien ilu, nisperaw allura inti tista Chime fi u jaqsmu l-esperjenza tiegħek. Allura jekk jogħġbok jieħdu sehem jekk inti tixtieq. Xjenza Korsijiet tal-kompjuter fil-Harvard jkollhom daqsxejn ta 'tradizzjoni, CS50 fosthom, ta 'wara xi lbies, xi ħwejjeġ, li inti tista jilbsu kburi fl-aħħar semestru, il qal pjuttost kburi li inti lest CS50 u ħa CS50 u simili, u aħna dejjem jippruvaw li jinvolvu studenti f'dan il-proċess kemm jista 'jkun, li biha nistiednu, madwar dan iż-żmien tas-semestru, l-istudenti biex jissottomettu disinji jużaw Photoshop, jew kwalunkwe għodda ta 'għażla li tixtieq tuża jekk int disinjatur, biex jissottomettu disinji għal T-shirts u sweat u umbrelel u bandanas ftit għall-klieb issa għandna u simili. U kollox huwa mbagħad - ir-rebbieħa ta 'kull sena huma mbagħad esebiti fuq il-websajt tal-kors fiż store.cs50.net. Kollox huwa mibjugħ bi prezz hemmhekk, iżda l-websajt biss runs innifsu u tippermetti lin-nies biex jagħżlu l-kuluri u disinji li huma simili. So I ħsibt aħna'd biss jaqsmu xi ta 'disinji sena li għaddiet li kienu fuq il-websajt minbarra dan wieħed hawn, li hija tradizzjoni annwali. "Kull Jum jien seq Faultn" kienet waħda mis-sottomissjonijiet sena li għaddiet, li għadu disponibbli hemmhekk għall alumni. Kellna dan wieħed, "CS50, Imwaqqfa 1989." Waħda mill Bowdens tagħna, Rob, kienet popolari ħafna aħħar sena. "Tim Bowden" twieled, dan id-disinn ġie ppreżentat, fost il-bejjiegħa top. Kif kien dan wieħed hawn. Ħafna nies kellhom "Deni Bowden" skond il-zkuk tal-bejgħ. Jirrealizzaw li dan jista 'issa jkun disinn tiegħek hemm, fuq l-Internet. Aktar dettalji fuq dan fid-problema li jmiss settijiet li ġejjin. Wieħed aktar għodda: inti kellna xi espożizzjoni u nisperaw issa xi esperjenza hands-on ma 'GDB, li huwa, ovvjament, ta 'debugger u tippermetti li inti jimmanipulaw programm tiegħek fuq livell pjuttost baxx, tagħmel dak tipi ta 'affarijiet? Xi jfisser GDB let you do? Yeah? Agħti me xi ħaġa. [Tweġiba Student, mhux intelliġibbli] Tajba. Pass fil-funzjoni, sabiex inti ma sempliċiment għandek tip run u jkollhom l-daqqa programm permezz intier tiegħu, l-istampar l-affarijiet għall-produzzjoni standard. Pjuttost, inti tista pass permezz ta 'dan linja b'linja, jew ittajpjar jmiss li jmorru linja minn linja b'linja jew pass li adsa fis funzjoni, tipikament wieħed li inti kiteb. X'iktar ma GDB let you do? Yeah? [Tweġiba Student, mhux intelliġibbli] Stampa varjabbli. Mela jekk inti tixtieq li tagħmel introspection ftit ġewwa tal-programm tiegħek mingħajr ma jkollhom jirrikorru għall-kitba dikjarazzjonijiet printf kollha fuq il-post, inti tista 'biss print varjabbli jew juru varjabbli. X'tista 'tagħmel ma' debugger bħal GDB? [Tweġiba Student, mhux intelliġibbli] Eżattament. Tista 'tissettja breakpoints, inti tista' tgħid l-eżekuzzjoni waqfa fil-funzjoni ewlenija jew il-funzjoni foo. Tista 'tgħid eżekuzzjoni waqfa fil-linja 123. U breakpoints huma teknika verament b'saħħtu għaliex jekk ikollok sens ġenerali ta 'fejn il-problema tiegħek probabbilment huwa, inti ma jkollhom l-iskart ħin titjib permezz intier tal-programm. Inti tista 'essenzjalment jaqbżu hemm dritt u mbagħad tibda ittajpjar - titjib permezz ta 'dan il-pass li jmiss jew jew affarijiet simili. Iżda l-qabda ma 'xi ħaġa bħal GDB huwa li jgħin inti, il-bniedem, isibu problemi tiegħek u jsibu bugs tiegħek. Dan ma jfissirx neċessarjament issib minnhom tant għalik. Allura aħna introduċiet il-style50 oħra jum, li hija għodda qasir linja ta 'kmand li tipprova stylize kodiċi tiegħek ftit aktar nadif milli suppost, il-bniedem, jista 'jkollok jsir. Iżda dan, wisq, huwa verament biss ħaġa estetika. Iżda jirriżulta hemm din l-għodda oħra msejħa Valgrind li huwa xi ftit aktar arcane għall-użu. Produzzjoni tiegħu huwa atrociously cryptic ewwel daqqa t'għajn. Imma hija wonderfully utli, speċjalment issa li aħna qed fil-parti tat-terminu fejn int tibda tuża malloc u l-allokazzjoni memorja dinamika. Affarijiet jistgħu imorru tassew, tassew ħażin malajr. Għaliex jekk tinsa biex ħielsa memorja tiegħek, jew inti dereference xi pointer NULL, jew inti dereference xi pointer żibel, dak li huwa tipikament l-sintomu li r-riżultati? Seg tort. U ikollok dan il-fajl qalba ta 'xi numru ta' kilobytes jew megabytes li jirrappreżenta l-istat ta 'memorja programm tiegħek meta ġġarraf, iżda programm tiegħek finalment seg difetti, tort segmentazzjoni, li jfisser xi ħaġa ħażina ġara kważi dejjem marbuta għal żball memorja relatati li inti ssir x'imkien. Allura Valgrind jgħinek issib affarijiet bħal dan. Huwa għodda li inti tmexxi, bħall GDB, wara li tkun ħadthom miġbura program tiegħek, iżda pjuttost milli tmexxi programm tiegħek direttament, inti tmexxi Valgrind u inti tgħaddi lilu program tiegħek, bħad inti tagħmel mal GDB. Issa, l-użu, biex tikseb l-aħjar it-tip ta 'produzzjoni, huwa ftit twil, hekk hemm dritt atop ta 'l-iskrin inti ser tara Valgrind-v. "-V" kważi universalment ifisser verbose meta inti qed tuża programmi fuq il-kompjuter Linux. Allura dan ifisser bżiq out data aktar milli inti tista 'awtomatikament. "- Leak-kontroll = sħiħa." Dan huwa biss qal kontroll għal kull tnixxijiet memorja possibbli, żbalji li I jista għamlu. Dan, ukoll, hija paradigma komuni ma 'programmi Linux. Ġeneralment, jekk għandek argument linja tal-kmand thats "switch", li suppost li tibdel l-imġiba tal-programm, u huwa ittra waħdanija, huwa-v, imma jekk thats qalbu, biss mid-disinn ta 'l-programmer, huwa kelma sħiħa jew serje ta 'kliem, l-argument linja tal-kmand tibda bil -. Dawn huma biss konvenzjonijiet tal-bniedem, iżda inti ser tara minnhom dejjem. U mbagħad, finalment, "a.out" huwa l-isem arbitrarja għall-programm f'dan l-eżempju partikolari. U hawnhekk xi output rappreżentattiv. Qabel ma nħarsu lejn dak li jista 'jfisser, let me go fuq l snippet ta' kodiċi hawn fuq. U let me jimxu dan barra mill-mod, coming soon, u ejja tagħti ħarsa lejn memory.c, li huwa dan l-eżempju qasira hawn. Allura f'dan il-programm, let me zoom fl fuq il-funzjonijiet u l-mistoqsijiet. Għandna funzjoni prinċipali li jitlob funzjoni, f, u mbagħad dak ma f tipproċedi biex tagħmel, bl-Ingliż ftit tekniku? Xi jfisser f tipproċedi biex tagħmel? Kif dwar I ser tibda bil-linja 20, u l-lokazzjoni l-istilla tal-ma jimpurtax, imma jien ser biss ikunu konsistenti hawn lecture aħħar. X'hemm linja 20 do għalina? Fuq in-naħa tax-xellug. Aħna ser din tinqasam ulterjuri. Int * x: dak li ma tagħmel? Okay. Huwa jiddikjara pointer, u issa ejja tkun saħansitra aktar tekniku. Xi jfisser, ħafna konkret, li jiddikjara pointer? Xi ħadd ieħor? Yeah? [Tweġiba Student, mhux intelliġibbli] Wisq ħafna. Allura inti qed taqra fuq il-ġenb tal-lemin tal-sinjal ugwali. Ejja niffukaw biss fuq ix-xellug biss fuq int * x. Dan ma "tiddikjara" pointer, iżda issa ejja adsa aktar profonda għal dik id-definizzjoni. Xi jfisser li konkret, teknikament jfisser? Yeah? [Tweġiba Student, mhux intelliġibbli] Okay. Huwa jippreparaw biex isalva l-indirizz fil-memorja. Tajba. U ejja jieħdu dan il-pass wieħed ulterjuri; huwa li tiddikjara varjabbli, x, li l-32 bits. U naf huwa 32 bits għaliex -? Mhuwiex għaliex dan huwa int, għaliex dan huwa pointer f'dan il-każ. Koinċidenza li huwa l-istess ma 'int, iżda l-fatt li hemm l-istilla hemm mezzi li din hija indikatur u fl-appliance, kif ma 'ħafna kompjuters, iżda mhux kollha, pointers huma 32 bits. Fuq hardware aktar moderni bħall-MACs aktar tard, il-kompjuters aktar tard, inti jista 'jkollok 64-bit pointers, iżda fil-appliance, dawn l-affarijiet huma 32 bits. Allura aħna ser standardizzati fuq dan. B'mod aktar konkret, l-istorja tmur kif ġej: We "tiddikjara" pointer; xi jfisser? Aħna jipprepara biex jaħżnu l-indirizz tal-memorja. X'ifisser dan? Aħna joħolqu x imsejħa varjabbli li jieħu 32 bits li dalwaqt se taħżen l-indirizz ta 'numru sħiħ. U li probabbilment madwar preċiża kemm nistgħu nibdew. Huwa multa miexja 'l quddiem biex jissimplifikaw id-dinja u biss jgħidu tiddikjara pointer imsejjaħ x. Tiddikjara pointer, imma tirrealizza u jifhmu x'inhu attwalment għaddejjin anki fil-ftit dawk il-karattri ftit. Issa, dan wieħed kważi ftit aktar faċli, anki jekk din hija espressjoni itwal. Allura dak li huwa dan isir, li l-enfasizzati issa: "malloc (10 * sizeof (int));" Yeah? [Tweġiba Student, mhux intelliġibbli] Tajba. U jien ser tieħu hemmhekk. Huwa allokazzjoni ta 'blokki ta' memorja għal għaxar interi. U issa ejja adsa ftit aktar profonda; huwa allokazzjoni ta 'blokki ta' memorja għal għaxar interi. X'inhu malloc mbagħad jirritornaw? L-indirizz ta 'dak blokki, jew, b'mod aktar konkret, l-indirizz ta' l-ewwel byte ta 'dik blokki. Kif allura jien, il-programmer, li tkun taf fejn dik blokki ta 'truf tal-memorja? Naf li huwa kontigwu. Malloc, b'definizzjoni, se jtik blokki kontigwi ta 'memorja. L-ebda lakuni fiha. Għandek aċċess għal kull byte f'dak blokki, lura lura lura, imma kif inkun naf fejn l-aħħar ta 'dan blokki ta' memorja huwa? Meta tuża malloc? [Tweġiba Student, mhux intelliġibbli]. Tajba Inti ma. Int għandek tiftakar. Għandi tiftakar I li jintużaw l-valur 10, u jien ma anki jidhru li għamlu dak hawn. Iżda l-oneru huwa kompletament fuqi. Strlen, li aħna stajt jsiru ftit dipendenti fuq għall kordi, xogħlijiet biss minħabba din il-konvenzjoni ta 'wara \ 0 jew dan karattru NUL speċjali, NUL, fl-aħħar ta 'sekwenza. Dan ma jkollhiex għal ftit biċċiet arbitrarji ta 'memorja. Huwa sa inti. Allura linja 20, imbagħad, jalloka blokki ta 'memorja li jista 'jaħżen 10 interi, u huwa jaħżen l-indirizz ta' l-ewwel byte ta 'dik blokki ta' memorja fil-varjabbli x imsejħa. Ergo, li huwa pointer. Allura linja 21, sfortunatament, kien żball. Iżda l-ewwel, dak li huwa dan isir? Huwa qal maħżen fil-post 10, 0 indiċjati, tal-blokki ta 'memorja imsejħa x-0-valur. Allura avviż ftit affarijiet huma għaddejjin. Anke jekk x huwa pointer, jiġbor lura mingħand ftit ġimgħat ilu li inti xorta tista 'tuża l-firxa stil notazzjoni parentesi kwadri. Minħabba li l-fatt qasir idejn notazzjoni għall-aritmetika pointer aktar cryptic li tħares. fejn aħna se nagħmlu xi ħaġa bħal din: Ħu l-indirizz x, jimxu 10 spots fuq, allura jmorru hemm għal dak kollu indirizz huwa maħżun f'dak il-post. Iżda franchement, dan huwa biss atroċi li taqra u jiksbu komdi. Allura l-dinja tipikament juża l-parentesi kwadri sempliċement għaliex dan huwa tant aktar umana għall-utent biex jinqara. Imma dak li dak li verament għaddejjin taħt il-barnuża; x huwa indirizz, mhux firxa, per se. Allura dan huwa ħażna 0 fil-post 10 fil x. Għaliex dan huwa ħażin? Yeah? [Tweġiba Student, mhux intelliġibbli] Eżattament. Aħna biss allokat 10 ints, imma aħna għadd minn 0 meta jipprogrammaw fis-C, hekk ikollok aċċess għal 0 10 1 2 3 4 5 6 7 8 9, iżda mhux. Allura kemm il-programm ser tort seq jew mhuwiex. Iżda aħna ma verament jafu, dan huwa tip ta 'mġiba nondeterministic. Hija verament jiddependi fuq jekk irridu jiksbu xxurtjati. Jekk jirriżulta li s-sistema operattiva ma mind jekk I użu li byte żejda, anki jekk ma tatx lill lili, programm tiegħi ma jista crash. Huwa prima, huwa Buggy, imma inti ma tista 'tara li sintomu, jew inti tista 'tara biss darba fil-waqt. Iżda r-realtà hija li l-bug hija, fil-fatt, hemm. U huwa verament problematiku jekk inti stajt bil-miktub programm li inti tixtieq li tkun korretta, li ħadthom mibjugħa l-programm li n-nies qed jużaw li kull darba fil-waqt ġġarrfu minħabba li, naturalment, dan mhuwiex tajjeb. Fil-fatt, jekk għandek telefon Android jew iPhone u inti tniżżel apps dawn il-ġranet, jekk inti stajt qatt kellu app biss nieqaf, kollha f'daqqa dan jispiċċa, li kważi dejjem ir-riżultat ta 'xi kwistjoni memorja relatati, fejn il-programmer invitat up u dereferenced pointer li hu jew hi ma għandhomx ikollhom, u r-riżultat ta 'IOS jew Android huwa li joqtlu biss l-programm għal kollox aktar milli l-imġiba mhux definiti riskju jew xi tip ta 'kompromess tas-sigurtà. Hemm wieħed bug ieħor f'dan il-programm minbarra dan wieħed. X'iktar jiena invitat up f'dan il-programm? Stajt mhux prattikat dak li stajt preached. Yeah? [Tweġiba Student, mhux intelliġibbli]. Tajba I ma ħelset l-memorja. Allura l-istat tad-thumb issa għandu jkun ghaċ inti sejħa malloc, inti trid sejħa ħielsa meta inti qed isir bl-użu li l-memorja. Issa, meta kieku nixtieq biex ħielsa din il-memorja? Probabbilment, jekk wieħed jassumi din il-linja 1 kienet korretta, nixtieq li tagħmel dan hawnhekk. Minħabba I ma setgħux, per eżempju, jagħmlu dan stabbiliti hawn. Għaliex? Just barra mill-ambitu. Allura anke jekk aħna qed jitkellem dwar pointers, din hija ġimgħa 2 jew 3 ħruġ, fejn x huwa biss fl-ambitu ta 'ġewwa tal-ċingi kaboċċi fejn kien iddikjarat. Allura inti żgur ma tistax ħielsa hemmhekk. Uniku ċans tiegħi biex ħielsa hija bejn wieħed u ieħor wara linja 21. Dan huwa programm pjuttost sempliċi; kien pjuttost faċli ladarba inti tip ta mgeżwra moħħok madwar dak il-programm qed jagħmel, fejn l-iżbalji kienu. U anki jekk inti ma tara dan fl-ewwel, wieħed jittama huwa ftit ovvju issa li dawn l-iżbalji huma pjuttost faċilment solvuti u faċilment magħmula. Iżda meta l-programm ikun aktar minn 12 linji twal, huwa 50 linji twal, 100 linji twal, mixi permezz tal-linja kodiċi tiegħek mill-linja, il-ħsieb permezz ta 'dan loġikament, huwa possibbli iżda mhux partikolarment gost li tagħmel, kontinwament ifittxu bugs, u huwa wkoll diffiċli li tagħmel, u hu għalhekk li 'għodda bħal Valgrind jeżisti. Let me imorru quddiem u tagħmel dan: let me miftuħa tieqa terminal tiegħi, u let me mhux biss run-memorja, għaliex memorja jidher li jkun multa. Jien jkollna xxurtjati. Going għal dak byte addizzjonali fl-aħħar tal-firxa ma jidhirx li jkunu wisq problematiku. Iżda let me, madankollu, tagħmel verifika sanità, li sempliċiment ifisser li tivverifika jekk dan huwa effettivament korrett. Mela ejja do valgrind-v - leak-verifika = sħiħa, u allura l-isem tal-programm f'dan il-każ hija memorja, mhux a.out. So let me imorru quddiem u jagħmlu dan. Hit Ikteb. Għażiż Alla. Dan huwa l-output tagħha, u dan huwa dak I allużjoni għall preċedenti. Iżda, jekk inti titgħallem biex taqra kollha permezz ta 'l-nonsense hawn, aktar ta 'dan huwa biss l-output dijanjostiċi li mhux dak interessanti. Dak għajnejn tiegħek verament jixtieq li tkun tfittex xi tismija ta 'żball jew invalidi. Kliem li jissuġġerixxu problemi. U fil-fatt, ejja ara x'inhu għaddej ħażin stabbiliti hawn. I jkollhom sommarju ta 'xi tip, "fl-użu fil-ħruġ:. 40 bytes fir 1 blokki" Jien ma verament ċert liema blokk hu għadu, imma 40 bytes attwalment iħoss bħal I jistgħu figura fejn thats ġejjin minn. 40 bytes. Għaliex huma 40 bytes fl-użu fil-ħruġ? U aktar speċifiku, jekk irridu iscroll hawn, għaliex jiena definittivament mitlufa 40 bytes? Yeah? [Tweġiba Student, mhux intelliġibbli] Perfect. Yeah, eżattament. Kien hemm 10 interi, u kull wieħed minn dawn huwa daqs ta '4, jew 32 bits, so I tilfu preċiżament 40 bytes għaliex, kif inti propost, I ma imsejħa ħielsa. Din kienet waħda bug, u issa ejja tfittex l isfel ftit aktar u ara li jmiss għal dan, "Invalidi tikteb 'daqs 4." Issa dak li huwa dan? Dan l-indirizz huwa espress notazzjoni bażi liema, apparentement? Dan huwa hexadeċimali, u kwalunkwe ħin li inti tara numru li jibda bl 0x, dan ifisser hexadeċimali, li għamilna mod lura fl, I think, taqsima pset 0 ta 'mistoqsijiet, li kien biss biex jagħmlu eżerċizzju warmup, li jikkonverti deċimali lill hex li binarja u ibqa 'sejjer hekk. Hexadeċimali, biss billi konvenzjoni tal-bniedem, huwa normalment użat biex jirrappreżentaw pointers jew, b'mod aktar ġenerali, jindirizza. Huwa biss konvenzjoni, għaliex dan huwa ftit aktar faċli biex jinqraw, huwa ftit aktar kompatt minn xi ħaġa bħal deċimali, u binarji hija inutli għall-bnedmin l-aktar għall-użu. Allura issa dak li jfisser dan? Ukoll, jidher qisu hemm xi write invalidu ta 'daqs 4 fuq il-linja 21 tat memory.c. Mela ejja mmorru lura għal-linja 21, u fil-fatt, hawnhekk hija li jiktbu invalidu. Allura Valgrind mhux se kompletament jżommu naħa tiegħi u tell me dak l-jiffissaw huwa, iżda huwa iskoperta li jien wieħed jagħmel write invalidu. Jien jmissu 4 bytes li jien ma għandhom ikunu, u apparentement dan għaliex, kif inti enfasizzat, li qed nagħmel [10] minflok [9] maximally jew [0] jew xi ħaġa bejniethom. Bil Valgrind, tirrealizza kwalunkwe ħin int issa kitba ta 'programm li tuża indikaturi u l-użi memorja, u malloc aktar speċifiku, definittivament tikseb fis-drawwa ta 'tmexxija dan twil iżda faċilment kkupjati u pasted kmand tal Valgrind biex tara jekk hemm xi żbalji fil hemmhekk. U dan ser ikun kbir kull darba li inti tara l-output, iżda biss parse permezz viżwalment kollha tal-produzzjoni u ara jekk inti tara isemmi ta 'żbalji jew twissijiet jew invalida jew mitlufa. Kwalunkwe kliem li ħoss bħal inti invitat up x'imkien. Allura jirrealizzaw li l-għodda ġdida fil-toolkit tiegħek. Issa nhar it-Tnejn, kellna mazz sħiħ ta 'folks toħroġ hawn u jirrappreżentaw il-kunċett ta 'lista marbuta. U aħna introduċiet il-lista marbuta bħala soluzzjoni biex dak il-problema? Yeah? [Tweġiba Student, mhux intelliġibbli]. Tajba Arrays ma jistax ikollhom memorja miżjuda magħhom. Jekk inti jallokaw firxa ta 'daqs 10, li kollox ikollok. Tista 'sejħa funzjoni simili realloc jekk inti inizjalment imsejħa malloc, u li tista 'tipprova li jikbru l-firxa jekk hemm spazju lejn it-tmiem ta' dan li ħadd ikun qiegħed juża, u jekk ma jkunx hemm, se ssib biss inti chunk akbar x'imkien ieħor. Imma allura se kopja kollha ta 'dawk bytes fil-firxa ġdida. Dan ħsejjes bħal soluzzjoni ħafna korretta. Għaliex dan huwa attraenti? I jfissirx li taħdem, il-bnedmin solvejna din il-problema. Għaliex ma għandna bżonn biex isolvu din nhar it-Tnejn ma 'listi marbuta? Yeah? [Tweġiba Student, mhux intelliġibbli] Dan jista 'jieħu żmien twil. Fil-fatt, kull darba li inti qed titlob malloc jew realloc jew calloc, li huwa pass ieħor wieħed, kwalunkwe ħin li inti, il-programm, qed nitkellmu mas-sistema operattiva, inti għandek tendenza li bil-mod il-programm isfel. U jekk inti qed tagħmel dawn it-tipi ta 'affarijiet fil-linji, int verament jonqos affarijiet isfel. Int mhux se Avviż dan għall-aktar sempliċi ta '"bonjour dinja" programmi tat-tip, iżda fil-programmi ferm akbar, li titlob is-sistema operattiva għal darb'oħra u għal darb'oħra għall-memorja jew tagħti lura mill-ġdid u għal darb'oħra tendenza li ma tkun ħaġa tajba. Plus, huwa biss tip ta 'intellettwalment - huwa skart sħiħa ta' żmien. Għaliex jallokaw memorja aktar u aktar, riskju ikkupjar kollox fil-firxa ġdida, jekk għandek alternattiva li ihallik jallokaw memorja biss kemm inti fil-fatt bżonn? Allura hemm pluses u minuses fil hawn. Waħda mill-pluses issa hija li għandna dinamiżmu. Ma jimpurtax fejn l-biċċiet ta 'memorja huma li huma ħielsa, I jistgħu biss tip ta 'joħolqu dawn frak tal-ħobż permezz pointers li string lista sħiħa tiegħi marbuta flimkien. Imma I jħallsu għall-inqas prezz wieħed. What do I għandhom jieqfu fil-kisba listi marbuta? Yeah? [Tweġiba Student, mhux intelliġibbli]. Tajba Ikollok bżonn memorja aktar. Issa I bżonn l-ispazju għal dawn pointers, u fil-każ ta 'din il-lista super marbuta sempliċi li huwa biss tipprova li jaħżen interi, li huma 4 bytes, inżommu qal ukoll, pointer huwa ta '4 bytes, hekk issa stajt litteralment rdoppja l-ammont tal-memorja li għandi bżonn biss li taħżen din il-lista. Iżda għal darb'oħra, dan huwa tradeoff kostanti fix-xjenza tal-kompjuter bejn il-ħin u l-ispazju u l-iżvilupp, sforzi u riżorsi oħra. X'hemm ieħor tnaqqis ta 'użu ta' lista marbuta? Yeah? [Tweġiba Student, mhux intelliġibbli] Tajba. Mhux faċli għall-aċċess. Aħna ma jistax aktar lieva ġimgħa 0 prinċipji bħall firda u conquer. U aktar speċifiku, tfittxija binarja. Għaliex anki jekk aħna bnedmin tista 'tara bejn wieħed u ieħor meta l-nofs ta' din il-lista hija, il-kompjuter biss jaf li din il-lista marbuta tibda fl-indirizz imsejħa ewwel. U li 0x123 jew xi ħaġa bħal dik. U l-uniku mod il-programm jista 'jsib l-element tan-nofs huwa li attwalment tfittex l-lista kollha. U anke dakinhar, litteralment trid tfittex l-lista sħiħa għaliex anke ladarba inti tilħaq l-element tan-nofs minn wara l-pointers, inti, il-programm, l-ebda idea kemm din il-lista hija, potenzjalment, sakemm inti hit l-aħħar ta 'dan, u kif tkun taf programmatically li int fl-aħħar ta 'lista marbuta? Hemm pointer NULL speċjali, hekk darb'oħra, konvenzjoni. Pjuttost milli jużaw dan il-werrej, aħna żgur ma jixtiequ li din tkun xi valur żibel tipponta off-istadju x'imkien; irridu li jkun idejn isfel, NULL, b'tali mod li għandna dan terminus f'din l-istruttura tad-data hekk nafu fejn tispiċċa. X'jiġri jekk irridu li jimmanipulaw dan? Għamilna aktar ta 'dan viżwalment, u mal-bnedmin, imma dak jekk irridu nagħmlu xi inserzjoni? Allura l-lista oriġinali kienet 9, 17, 20, 22, 29, 34. X'jiġri jekk aħna mbagħad riedu spazju malloc għal numru 55, node għal dan, u mbagħad aħna tixtieq li daħħal 55 fil-lista hekk kif għamilna nhar it-Tnejn? Kif nistgħu nagħmlu dan? Ukoll, Anita ħarāu u hi essenzjalment mixi il-lista. Hija bdiet fl-ewwel element, allura l-li jmiss, li jmiss, li jmiss, li jmiss, il-li jmiss. Fl-aħħarnett hit-naħa tax-xellug it-triq kollha u realizzati oh, dan huwa NULL. Allura manipulazzjoni pointer dak meħtieġ li jsir? Il-persuna li kienet fuq l-aħħar, numru 34, meħtieġa naħa tax-xellug tiegħu mqajma għall-punt fi 55, 55 meħtieġa driegħ tax-xellug tagħhom tipponta 'l isfel li jkun il-terminatur NULL ġdid. Magħmul. Pretty faċli li ddaħħal 55 fil-lista magħżula. U kif tista 'din tfittex? Let me imorru quddiem u tiftaħ xi eżempju kodiċi hawn. I ser jiftħu gedit, u let me tiftaħ żewġ fajls 1. Wieħed huwa list1.h, u let me biss infakkarkom li dan kien il-blokki tal-kodiċi li aħna użati biex jirrappreżentaw node. A node għandu kemm int imsejħa n u werrej imsejjaħ jmiss li biss il-punti li l-ħaġa li jmiss fil-lista. Dan huwa issa fil-fajl h.. Għaliex? Hemm din il-konvenzjoni, u aħna ma ħadu vantaġġ ta 'dan l-ammont kbir nfusna, iżda l-persuna li kiteb il-funzjonijiet printf u oħrajn taw bħala rigal għad-dinja kollha ta 'dawk il-funzjonijiet billi tikteb fajl imsejjaħ stdio.h. U allura hemm string.h, u allura hemm map.h, u hemm dawn il-fajls h li inti tista raw jew użata matul it-terminu bil-miktub minn nies oħra. Tipikament f'dawk. ​​Fajls h huma affarijiet biss simili typedefs jew dikjarazzjonijiet ta 'tipi użanza jew dikjarazzjonijiet ta' kostanti. Inti ma tpoġġi implimentazzjonijiet funzjonijiet "fil-fajls header. Inti tpoġġi, minflok, biss prototipi tagħhom. Inti tpoġġi affarijiet li inti tixtieq li jaqsmu mal-dinja dak li għandhom bżonn sabiex jikkompilaw kodiċi tagħhom. Hekk biss li jsibu rwieħhom dan il-vizzju, aħna ddeċidew li jagħmlu l-istess ħaġa. Hemm Ma tantx fil list1.h, imma aħna stajt tpoġġi xi ħaġa li tista 'tkun ta' interess għall-persuni fid-dinja li jixtiequ jużaw implimentazzjoni tagħna lista linked. Issa, fil list1.c, jien mhux se jmorru permezz ta 'dan ħaġa sħiħa għaliex dan huwa daqsxejn twil, dan il-programm, imma ejja run reali malajr fil-pront. Let me jikkompilaw lista1, let me imbagħad run lista1, u dak li inti ser tara hija konna simulata programm ftit sempliċi hawn li għaddej biex ippermettuli li żżid u neħħi n-numri għal lista. So let me go l quddiem u t-tip 3 għall-3 għażla menu. Irrid li daħħal in-numru - ejja jagħmlu l-ewwel numru, li kien 9, u issa jien told-lista hija issa 9. Let me imorru quddiem u tagħmel ieħor inserzjoni, so I hit menu option 3. X'inhu n-numru ma nixtieq li daħħal? 17. Ikteb. U jien ser tagħmel biss waħda aktar. Let me daħħal in-numru 22. Allura aħna għandna l-bidu tal-lista marbuta li kellna fil-forma slide mument ilu. Kif huwa dan inseriment verament jiġri? Tabilħaqq, 22 issa hija fl-aħħar tal-lista. Allura l-istorja aħna told fuq il-palk tat-Tnejn u recapped heure għandu jiġi effettivament jiġri fil-kodiċi. Ejja tagħti ħarsa. Let me iscroll f'dan il-fajl. Aħna ser tleqqija fuq xi wħud mill-funzjonijiet, iżda aħna ser jinżlu għal, per eżempju, il-funzjoni daħħal. Ejja naraw kif immorru dwar ddaħħal node ġdid fis din il-lista marbuta. Fejn hi l-lista ddikjarata? Ukoll, ejja iscroll-triq kollha fil-quċċata, u tinnota li lista marbuta tiegħi huwa essenzjalment iddikjarat bħala pointer waħda li l-bidu NULL. Allura jien jużaw varjabbli globali hawn, li ġeneralment konna preached kontra għaliex dan jagħmilha kodiċi tiegħek messy ftit li żżomm, huwa tip ta 'għażżien, normalment, iżda mhux għażżien u mhuwiex ħażin u mhuwiex ħażin jekk l-iskop waħdieni programm tiegħek fil-ħajja huwa li jkun jixbah lista waħda linked. Liema huwa eżattament dak li aħna qed tagħmel. Allura minflok jiddikjara dan b'mod prinċipali u mbagħad ikollhom jgħaddu lill kull funzjoni konna bil-miktub f'dan il-programm, aħna minflok realizzata oh, ejja biss jagħmluha globali minħabba li l-għan sħiħ ta 'dan il-programm huwa li turi wieħed u wieħed biss lista marbuta. Allura li jħoss okay. Hawnhekk huma prototipi tiegħi, u aħna mhux se jmorru kollha permezz ta 'dawn, imma I kiteb funzjoni ħassar, funzjoni ssib, funzjoni daħħal, u funzjoni travers. Imma ejja issa jmorru lura għall-funzjoni daħħal u tara kif dan wieħed jaħdem hawn. Daħħal huwa fuq il-linja - here we go. Daħħal. Allura dan ma jieħux ebda argument, għaliex aħna qed tmur biex titlob ġewwa utent ta 'din il-funzjoni għall-numru li tixtieq li daħħal. Iżda l-ewwel, aħna qed inħejju biex jagħtuhom xi spazju. Dan huwa tip ta 'kopja u paste mill-eżempju ieħor. F'dak il-każ, konna jalloka int; dan iż-żmien aħna qed jalloka node. I ma verament tiftakar kif ħafna bytes node huwa, iżda li l-multa. Sizeof tista 'figura li out għalija. U għaliex jien iċċekkjar għall NULL f'konformità 120? Liema jista 'tmur ħażin fil-linja 119? Yeah? [Tweġiba Student, mhux intelliġibbli] Tajba. Just jista 'jkun il-każ li stajt talab għall-memorja wisq jew xi ħaġa ħażina u s-sistema operattiva ma jkollhom bytes biżżejjed biex jagħtu lili, għalhekk sinjali kemm billi jirritorna NULL, u jekk jien ma jiċċekkja għal dak u I biss bl-addoċċ jipproċedi biex jużaw l-indirizz lura, jista 'jkun NULL. Dan jista 'jkun xi valur magħrufa; mhix ħaġa tajba jekk I - fil-fatt mhux se jkun il-valur mhux magħruf. Dan jista 'jkun NULL, so I ma jridux li jsir abbuż minnha u riskju dereferencing dan. Jekk dan iseħħ, I biss ritorn u aħna ser nippretendu simili I ma jiksbu lura kwalunkwe memorja fil-livelli kollha. Inkella, I tell-utent tagħti me numru li daħħal, I call GetInt tagħna ħabib antik, u allura dan kien il-sintassi ġdida aħna introdotti nhar it-Tnejn. "Newptr-> n" tfisser jieħu l-indirizz li inti kienu mogħtija mill malloc li jirrappreżenta l-ewwel byte ta 'oġġett node ġdid, u mbagħad mur għall-qasam imsejħa n. A kwistjoni trivia ftit: Dan huwa ekwivalenti għal dak linja aktar cryptic tal-kodiċi? Kif inkella tista Ktibtu dan? Trid tieħu stab? [Tweġiba Student, mhux intelliġibbli] Tajba. Bl-użu n., Iżda mhux daqshekk sempliċi bħal dan. What do I l-ewwel bżonn tagħmel? [Tweġiba Student, mhux intelliġibbli] Tajba. I bżonn tagħmel * newptr.n. Allura dan huwa qal pointer ġdida ovvjament l-indirizz. Għaliex? Minħabba li kien lura mill malloc. Il newptr * qal "jmorru hemm," u mbagħad darba int hemm, allura inti tista 'tuża l-aktar familjari. n, iżda dan biss jistenna ftit ikrah, speċjalment jekk aħna bnedmin huma ser jiġbed pointers ma vleġeġ il-ħin kollu;-dinja għandha standardizzat fuq dan notazzjoni vleġġa, li ma eżattament l-istess ħaġa. Allura inti tuża biss il--> notazzjoni meta l-ħaġa fuq ix-xellug huwa pointer. Inkella, jekk huwa ta 'Struct attwali, uża l-n.. U allura dan: Għaliex għandi initialize newptr-> jmiss null? Aħna ma tridx naħa tax-xellug dangling off tal-aħħar tas-istadju. Irridu li tipponta straight isfel, li jfisser it-tmiem ta 'din il-lista potenzjalment jista 'jkun ta' dan għoqda, hekk aħna aħjar biex tiżgura li hi NULL. U, b'mod ġenerali, initializing varjabbli tiegħek jew membri tad-data tiegħek u l-structs għal xi ħaġa huwa biss prattika tajba. Just kiri żibel jeżistu u jkomplu jeżistu ġeneralment gets inti fl-inkwiet jekk tinsa li tagħmel xi ħaġa aktar tard. Hawn ftit każijiet. Dan, għal darb'oħra, hija l-funzjoni daħħal, u l-ewwel ħaġa I kontroll għall hija jekk il-varjabbli imsejħa ewwel, dak il-varjabbli globali hija NULL, li jfisser li m'hemm l-ebda lista marbuta. Aħna ma jiddaħħal kull numri, hekk huwa trivjali li daħħal dan in-numru attwali fil-lista, għaliex hija biss jappartjeni fil-bidu tal-lista. Allura dan kien meta Anita kien biss bil-wieqfa hawn waħdu, feint ebda wieħed inkella kien up here fuq il-palk sakemm aħna allokat node, allura hi tista 'tqajjem naħa tagħha għall-ewwel darba, jekk kulħadd kienet toħroġ fuq l-istadju wara tagħha nhar it-Tnejn. Issa hawnhekk, dan huwa kontroll ftit fejn jien ngħid jekk il-valur tal-node ġdid ta 'n huwa jmiss, li tfisser mur l-Struct li l-jiġu mfakkar fil permezz newptr, hekk aħna qegħdin hawn, jmorru hemm. Imbagħad il-vleġġa qiegħda tgħid tikseb l-qasam li jmiss, u allura l-= huwa qal jitqiegħed liema valur hemmhekk? Il-valur li kien fl-ewwel; liema valur kien fl-ewwel? L-ewwel kien li tipponta lejn dan għoqda, sabiex ifisser li dan għandu issa jiġi f'dan node. Fi kliem ieħor, dak li jistenna għalkemm mess redikoli ma kalligrafija tiegħi, x'hemm idea sempliċi ta 'ftit li jiċċaqalqu dawn vleġeġ madwar jittraduċi għal kodiċi ma biss dan liner waħda. Aħżen dak li huwa fl-ewwel fil-qasam li jmiss u mbagħad taġġorna dak 1-fatt hu. Ejja imorru quddiem u fast-quddiem permezz ta 'xi ta' dan, u ħarsa biss f'dan inserzjoni denb għal issa. Ejja ngħidu I jasal sal-punt fejn I isibu li l-qasam li jmiss ta 'xi node huwa NULL. U f'dan il-punt fl-istorja, dettall li jien jitwarrbu l hija li stajt introduċa ieħor pointer up hawn fil-linja 142, pointer predeċessur. Essenzjalment, f'dan il-punt fl-istorja, ladarba l-lista gets twila, I tip ta 'bżonn li jimxu ma' żewġ swaba għaliex jekk immur wisq, ftakar f'lista waħda tul, inti ma tistax tmur lura. Allura din l-idea ta 'predptr huwa finger xellug tiegħi, u newptr - mhux newptr. Ieħor pointer li l-hawn huwa finger tiegħi oħra, u jien biss tip ta 'mixi il-lista. C'est pourquoi li jeżisti. Imma ejja jikkunsidraw biss wieħed mill-każijiet sempliċi hawn. Jekk il-qasam li jmiss li pointer huwa NULL, x'inhu l-implikazzjoni loġika? Jekk inti qed jaqsmu din il-lista u inti hit pointer NULL? Inti fl-aħħar tal-lista, u għalhekk il-kodiċi li mbagħad tehmeż dan l-element addizzjonali wieħed huwa tip ta 'l-intuwittivi se jieħdu dik node li jmiss pointer huwa NULL, għalhekk dan huwa attwalment NULL, u l-bidla, għalkemm, li tkun l-indirizz tat-node ġdid. Allura aħna qed biss tpinġija fil-kodiċi tal-vleġġa li fassalna fuq il-palk billi tgħolli naħa tax-xellug ta 'xi ħadd. U l-każ li jien ser mewġa idejn tiegħi fuq għal issa, sempliċement minħabba Naħseb li huwa faċli li tintilef meta nagħmlu dan fil dan it-tip ta 'l-ambjent, qed jiċċekkja għal inserzjoni fuq tan-nofs tal-lista. Iżda biss intuwittivament, dak li jeħtieġ li jiġri jekk inti tixtieq li insemmu fejn xi numru jappartjeni fin-nofs huwa inti jkollhom jimxu dan ma 'aktar minn wieħed tas-swaba', aktar minn wieħed pointer, ċifra barra fejn jappartjeni mill-ikkontrollar kollu huwa l-element L-waħda kurrenti, u ladarba inti ssib li post, imbagħad inti għandek tagħmel dan it-tip ta 'logħba qoxra fejn inti tmur l-pointers madwar b'attenzjoni kbira. U din ir-risposta, jekk inti tixtieq raġuni permezz ta 'dan fid-dar fuq tiegħek, jeħodna biss għal dawn iż-żewġ linji ta 'kodiċi, iżda l-ordni ta' dawk il-linji hija super importanti. Għaliex jekk inti qatra idejn ta 'xi ħadd u tqajjem xi ħadd ieħor fl-ordni żbaljata, għal darb'oħra, inti tista 'tispiċċa orphaning-lista. Fil-qosor aktar kunċettwali, l-inserzjoni fil-denb huwa relattivament sempliċi. L-inserzjoni fir-ras hija wkoll relattivament sempliċi, iżda inti għandek bżonn jaġġornaw pointer addizzjonali f'dan il-ħin li jingħafsu numru 5 fil-lista hawn, u mbagħad inserzjoni fin-nofs tinvolvi sforz akbar, li b'attenzjoni kbira daħħal in-numru 20 fil-post korretta tagħha, li huwa bejn 17 u 22. Allura inti għandek bżonn tagħmel xi ħaġa simili għandhom l-ġdid node punt 20 sa 22, u mbagħad, werrej li node teħtieġ li tiġi aġġornata l-aħħar? Huwa 17, li attwalment daħħalha. Għalhekk għal darb'oħra, jien ser tipposponi l-kodiċi attwali għal dik l-implimentazzjoni partikolari. Ewwel daqqa t'għajn, huwa ftit kbira, imma huwa verament biss loop infinita li l-looping, looping, looping, looping, u li jiksru hekk kif inti hit-pointer NULL, f'liema punt inti tista 'tagħmel l-inserzjoni meħtieġa. Dan, imbagħad, huwa rappreżentattiv marbut kodiċi inserzjoni lista. Dan kien it-tip ta 'lott, u jħoss simili aħna ve solvuti problema waħda, imma konna introdotti waħda oħra kollha. Franchement, aħna ħadthom jintefqu dan il-ħin fuq big O u Ω u running time, jippruvaw isolvu l-problemi aktar malajr, u hawn aħna qed tieħu pass kbir lura, iħoss. And yet, jekk l-għan huwa li taħżen data, iħoss bħall-Grail s-Santu, kif għidna nhar it-Tnejn, ikun verament tkun biex jaħżnu l-affarijiet istantanjament. Fil-fatt, ejja ngħidu li għamilna tpoġġi lista imwarrba marbuta għal mument u aħna minflok introduċa l-kunċett ta 'tabella. U ejja jaħsbu biss ta 'tabella għal mument bħala firxa. Dan firxa u f'dan il-każ hawnhekk għandha xi 26 elementi, 0 sa 25, u jissoponi li inti meħtieġa xi blokki ta 'ħażna għall-ismijiet: Alice u Bob u Charlie u simili. U inti għandek bżonn xi struttura data li jaħżen dawk l-ismijiet. Ukoll, inti tista 'tuża xi ħaġa bħal lista marbuta u inti tista 'timxi l-lista li jdaħħal Alice qabel Bob u Charlie wara Bob u oħrajn. U, fil-fatt, jekk inti tixtieq li tara kodiċi bħal dik bħala twarrib, nafu li fil list2.h, nagħmlu eżattament dan. Aħna mhux se jmorru permezz ta 'dan il-kodiċi, iżda dan huwa varjant tal-ewwel eżempju li jintroduċi 1 Struct oħra konna rajna qabel student imsejħa, u mbagħad dak li attwalment ħwienet fil-lista marbuta huwa pointer ma 'struttura student minflok numru sħiħ ftit sempliċi, n. Allura jirrealizzaw hemm kodiċi hemmhekk li jinvolvi kordi attwali, iżda jekk l-għan fil-idejn verament issa huwa li tindirizza l-problema effiċjenza, ma kienx ikun sbieħ jekk aħna qed jingħataw oġġett imsejħa Alice, irridu li tqiegħed lilha fil-post dritt fi struttura tad-data, iħoss simili huwa d jkun tassew sbieħ li biss jitqiegħed Alice, li ismu jibda A, fl-ewwel post. U Bob, li ismu jibda B, fil-post tat-tieni. Ma 'firxa, jew Nibdew ssejjaħ dan tabella, tabella hash fuq li, nistgħu nagħmlu eżattament dan. Jekk aħna huma mogħtija isem bħall Alice, string bħall Alice, fejn do inti tpoġġi A-l-i-c-e? Għandna bżonn ta 'hueristic. Għandna bżonn ta 'funzjoni li jieħdu xi input bħall Alice u r-ritorn risposta, "Put Alice fil dan il-post." U din il-funzjoni, din il-kaxxa s-sewda, se jiġu msejħa funzjoni hash. A funzjoni hash hija xi ħaġa li jieħu input, bħal "Alice", u prospetti lilek, tipikament, il-post numeriku f'xi struttura tad-data fejn Alice jappartjeni. F'dan il-każ, il-funzjoni hash tagħna għandu jkun relattivament sempliċi. Funzjoni hash tagħna għandha tgħid, jekk inti tingħata "Alice", li karattru għandi jimpurtahom? L-ewwel waħda. So I ħarsa lejn [0], u mbagħad I say jekk [0] karattru huwa A, jirritorna l-għadd 0. Jekk huwa B, ritorn 1. Jekk C huwa, jirritorna 2, u ibqa 'sejjer hekk. Kollha indiċi 0, u li tippermetti lili li tiddaħħal Alice u mbagħad Bob u mbagħad Charlie u oħrajn fis din l-istruttura tad-data. Imma hemm problema. X'jiġri jekk Anita tidħol flimkien mill-ġdid? Fejn npoġġux Anita? Isimha, wisq, jibda bl-ittra A, u jħoss simili aħna ħadna mess saħansitra akbar ta 'din il-problema. Issa għandna inserzjoni immedjat, inserzjoni ħin kostanti, fi struttura tad-data minflok agħar każ lineari, imma x'nistgħu nagħmlu ma 'Anita f'dan il-każ? X'inhuma l-għażliet 2, tassew? Yeah? [Tweġiba Student, mhux intelliġibbli] Okay, hekk aħna jista 'jkollhom dimensjoni oħra. Li tajjeb. Allura nistgħu nibnu l-affarijiet fil 3D bħal tkellimna dwar verbalment nhar it-Tnejn. Nistgħu żid ieħor aċċess hawnhekk, imma ejja ngħidu li l-ebda, jien jippruvaw iżommu dan sempliċi. L-għan kollu hawnhekk huwa li jkun immedjat kostanti ta 'żmien aċċess, b'tali mod li s żżid il-kumplessità wisq. X'inhuma l-għażliet l-oħra meta jippruvaw daħħal Anita fis din l-istruttura tad-data? Yeah? [Tweġiba Student, mhux intelliġibbli]. Tajba Allura nistgħu jimxu kulħadd isfel, bħal Charlie nudges isfel Bob u Alice, u allura aħna tpoġġi Anita fejn hi verament jixtieq li jkun. Of course, issa, hemm effett sekondarju ta 'dan. Din l-istruttura tad-data hija probabbilment utli mhux għaliex irridu li daħħal in-nies darba imma għaliex irridu li jiċċekkjaw jekk dawn qed hemmhekk wara jekk irridu li jistampa kollha ta 'l-ismijiet fl-istruttura tad-data. Aħna qed tmur biex tagħmel xi ħaġa ma din id-data eventwalment. Allura issa konna tip ta 'invitat fuq Alice, li ma jibqax fejn hi suppost tkun. Lanqas Bob, u lanqas Charlie. Allura forsi dan mhuwiex tali idea tajba. Iżda fil-fatt, din hija għażla waħda. Nistgħu bidla kulħadd isfel, jew Heck, Anita waslet tard wisq biex il-logħba, għaliex ma we biss jitqiegħed Anita mhux hawn, mhux hawn, mhux hawn, ejja biss jitqiegħed tagħha ftit aktar baxx fil-lista. Iżda mbagħad din il-problema tibda biex tittrasferixxi mill-ġdid. Inti jista 'jkun kapaċi li jsibu Alice istantanjament, ibbażata fuq l-ewwel isem tagħha. U Bob istantanjament, u Charlie. Imma allura inti tfittex Anita, u tara, HMM, Alice huwa fil-mod. Well, let me check hawn taħt Alice. Bob mhuwiex Anita. Charlie mhux Anita. Oh, hemm Anita. U jekk inti tkompli dan ferrovija tal-loġika it-triq kollha, x'inhu l-ħin agħar każ tmexxija ta 'sejba jew idaħħal Anita fis din l-istruttura tad-data l-ġdida? Huwa O (n), id-dritt? Minħabba li fl-agħar każ, hemm Alice, Bob, Charlie. . . it-triq kollha li xi ħadd imsejjaħ "Y", sabiex hemm wieħed biss fuq il-post tax-xellug. B'xorti tajba, aħna għandna l-ebda wieħed imsejjaħ "Z", hekk aħna tpoġġi Anita fil-qiegħ nett. Aħna ma verament tissolva din il-problema. Allura forsi nagħmlu bżonn li tiġi introdotta din tielet dimensjoni. U jirriżulta, jekk aħna nintroduċu din id-dimensjoni terza, aħna ma tistax tagħmel dan perfettament, iżda l-Grail s-Santu se tkun jkollna kostanti ta 'żmien inserzjoni u inserzjonijiet dinamiċi sabiex aħna ma jkollhomx biex hard-kodiċi firxa ta 'daqs 26. Nistgħu daħħal kemm-ismijiet kemm irridu, imma ejja tieħu 5-minuta break tagħna hawn u mbagħad tagħmel dan b'mod xieraq. Kull dritt. I stabbilit l-istorja up pretty artifiċjalment hemm billi jagħżlu Alice u mbagħad Bob u mbagħad Charlie u mbagħad Anita, li isimha kien ovvjament se jikkonfliġġu ma 'Alice. Iżda l-kwistjoni aħna spiċċajna nhar it-Tnejn ma huwa kemm probabbli huwa li inti se tikseb dawn it-tipi ta 'ħabtiet? Fi kliem ieħor, jekk nibdew biex jużaw din l-istruttura ta 'tabella, li huwa verament ftit array, f'dan il-każ ta '26 postijiet, jekk dak inputs tagħna huma minflok mqassma b'mod uniformi? Mhuwiex artifiċjalment Alice u Bob u Charlie u David u oħrajn alfabetikament, huwa mqassma b'mod uniformi fuq A permezz Z. Forsi aħna ser biss tikseb xortik tajba u aħna mhux se jkollhom 2 A jew 2 tal-B bi probabbiltà għolja ħafna, iżda bħala xi ħadd rrilevat, jekk aħna ġeneralizzata din il-problema u ma tagħmel 0-25 iżda, jgħidu, 0 permezz 364 jew 65, ta 'spiss in-numru ta' ġranet f'sena tipiku, u staqsa l-mistoqsija, "X'hemm-probabbiltà li żewġ minna f'din il-kamra jkollha l-birthday istess?" Fi kliem ieħor, x'inhu l-probabbiltà li żewġ minna jkollu isem li jibda bl A? It-tip ta 'mistoqsija hija l-istess, iżda dan l-ispazju l-indirizz, dan l-ispazju tfittxija, huwa akbar fil-każ ta 'għeluq ta' snin, għaliex għandna ġranet tant aktar fis-sena minn ittri fil-alfabett. X'inhu l-probabbiltà ta 'ħabta? Well, nistgħu naħsbu ta 'dan billi jidhru l-matematika id-direzzjoni opposta. X'inhu l-probabbiltà ta 'l-ebda ħabtiet? Ukoll, din l-espressjoni hawnhekk jgħid li dak l-probabbiltà jekk hemm biss persuna waħda f'din il-kamra, li huma jkollhom birthday uniku? Huwa 100%. Għaliex jekk hemm biss persuna waħda fil-kamra, għeluq tiegħu jew tagħha jista 'jkun kwalunkwe mill-365 jum mill-sena. Allura għażliet 365/365 tagħti me valur ta '1. Għalhekk il-probabbiltà in kwistjoni fil-mument huwa biss 1. Imma jekk hemm it-tieni persuna fil-kamra, x'inhu l-probabbiltà li birthday tagħhom huwa differenti? Hemm biss 364 jum possibbli, snin biżestili jinjora, għall-għeluq tagħhom ma jikkonfliġġu mal-persuni l-oħra. Allura 364/365. Jekk terza persuna tidħol fi, huwa 363/365, u oħrajn. Allura aħna iżommu multiplikazzjoni flimkien dawn il-frazzjonijiet, li huma jkollna iżgħar, ċifra barra dak li huwa l-probabilità li lkoll għeluq is-snin uniċi? Imma allura aħna tista ', naturalment, ħu din ir-risposta u flip madwar u jagħmlu 1 nieqes kollha ta 'dak, l-espressjoni aħna ser eventwalment tikseb jekk tiftakar id-dahar ta 'kotba matematika tiegħek, jidher ftit xi ħaġa bħal din, li hija ferm aktar faċilment interpretata b'mod grafiku. U dan grafika hawn għandha fuq l-assi x l-għadd ta 'għeluq is-snin, jew in-numru ta 'persuni għeluq is-snin, u fuq l-assi y hija l-probabilità ta' taqbila. U dak li dan qed tgħid huwa li jekk ikollok, ejja ngħidu, anke, ejja jagħżlu xi ħaġa simili 22, 23. Jekk hemm 22 jew 23 nies fil-kamra, il-probabbiltà li tnejn minn dawn ftit nies huma se jkollhom l-birthday istess huwa attwalment għolja super, combinatorially. Odds 50% li fi klassi ta 'ftit 22-nies, ta' seminar, prattikament, 2 ta 'dawk in-nies huma se jkollhom l-birthday istess. Għaliex hemm hekk f'ħafna modi li bihom tista 'jkollhom l-birthday istess. Saħansitra agħar, jekk inti tħares lejn in-naħa tal-lemin tal-grafika, mill-ħin li inti jkollhom klassi bi 58 studenti fiha, il-probabbiltà ta '2 persuni li jkollhom birthday huwa super, għoli super, kważi 100%. Issa, li tip ta 'fatt gost dwar il-ħajja reali. Iżda l-implikazzjonijiet, issa, għal strutturi ta 'dejta u l-ħażna ta' informazzjoni ifisser biss li jekk wieħed jassumi għandek, sbieħ nadif, distribuzzjoni uniformi tad-dejta u inti għandek firxa kbir biżżejjed biex jitwaħħal mazz ta 'affarijiet ma jfissirx li inti qed tmur biex tikseb in-nies fil-postijiet uniku. Int ser ikollhom ħabtiet. Allura dan il-kunċett ta 'hashing, kif huwa msejjaħ, teħid input bħal "Alice" u timmassaġġja b'xi mod u allura jkollna lura tweġiba bħal 0 jew 1 jew 2. Jkollna lura xi output minn dik il-funzjoni hu qed ibati minn din il-probabbiltà ta 'kolliżjoni. Allura kif nistgħu jimmaniġġaw dawk ħabtiet? Ukoll, dwar il-każ waħda, nistgħu nieħdu l-idea li kien issuġġerit. Nistgħu biss ċċaqlaq kulħadd isfel, jew forsi, ftit aktar sempliċi, minflok kulħadd mossa oħra, ejja biss jiċċaqalqu Anita għall-qiegħ tal-post disponibbli. Mela jekk Alice huwa fil-0, Bob huwa fl-1, Charlie huwa 2, aħna ser biss jitqiegħed Anita fil-post 3. U din hija teknika fl-istrutturi tad-data msejħa lineari probing. Lineari għaliex int biss mixi din il-linja, u int xorta ta 'probing għal spots disponibbli fl-istruttura tad-data. Naturalment, dan jaqa 'fil O (n). Jekk l-istruttura tad-data tassew sħiħa, hemm 25 persuna fiha diġà, u mbagħad Anita tidħol flimkien, hi jispiċċa fuq dak ikun lokazzjoni Z, u li l-multa. Hija xorta taqbel, u nistgħu nsibu tagħha aktar tard. Iżda dan kien imur kontra l-għan ta 'tħaffif affarijiet up. Allura dak jekk aħna minflok introduċa din id-dimensjoni terz? Dan teknika huwa ġeneralment imsejjaħ ikkatenar separata, jew li ktajjen. U liema tabella hash issa huwa, din l-istruttura ta 'tabella, mejda tiegħek hija biss firxa ta 'indikaturi. Imma x'inhuma dawn pointers punt li huwa raden liema? A marbut lista. Allura dak li jekk nieħdu l-aħjar ta 'dawn iż-żewġ dinjiet? Aħna nużaw arrays għall-indiċijiet tal-bidu fl-istruttura tad-data hekk nistgħu istantanjament tmur [0] [1], [30] jew oħrajn, imma hekk li għandna xi flessibbiltà u nistgħu tajbin Anita u Alice u Adam u kwalunkwe A isem, aħna minflok tikri l-assi l-oħra jikbru b'mod arbitrarju. U aħna finalment, mill-Tnejn, jkollhom dik kapaċità espressiva ma 'lista linked. Aħna jistgħu jikbru struttura tad-data arbitrarju. Alternattivament, nistgħu biss tagħmel enormi 2-dimensjonali firxa, iżda li għaddej biex tkun f'sitwazzjoni orribbli jekk waħda mill-fillieri fil-firxa 2-dimensjonali mhuwiex kbir biżżejjed għall-persuna addizzjonali li isimha jiġri li tibda bil A. Alla jipprojbixxu għandna biex talloka mill-ġdid enormi 2-dimensjonali istruttura sempliċiment għaliex hemm daqstant nies jismu A, speċjalment meta jkun hemm in-nies hekk ftit jismu xi ħaġa Z. Huwa biss se tkun struttura tad-data ħafna skarsa. Għalhekk mhuwiex perfett bi kwalunkwe mezz, iżda issa għandna mill-anqas ikollhom l-abbiltà biex istantanjament issib fejn Alice jew Anita jappartjeni, għall-inqas f'termini tal-assi vertikali, u allura aħna biss għandhom jiddeċiedu fejn jitqiegħdu Anita jew Alice f'din il-lista marbuta. Jekk aħna ma jimpurtahom dwar issortjar l-affarijiet, kif malajr nistgħu daħħal Alice fi struttura bħal din? Wasal iż-żmien kostanti. Aħna indiċi fis [0], u jekk hemm l-ebda wieħed, Alice tmur fil-bidu ta din il-lista marbuta. Iżda li mhux jittrattaw enormi. Għaliex jekk Anita imbagħad ġejja flimkien xi numru ta 'passi ulterjuri, fejn ma Anita jappartjenu? Ukoll, [0]. OOP. Alice huwa diġà f'dik il-lista marbuta. Imma jekk aħna ma jimpurtahom dwar issortjar dawn l-ismijiet, nistgħu biss jiċċaqalqu Alice fuq, daħħal Anita, iżda anke li huwa żmien kostanti. Anki jekk hemm Alice u Adam u dawn kollha l-oħra l-ismijiet A, mhuwiex verament trasferit fiżikament. Għaliex? Għaliex aħna biss ma hawn ma 'lista marbuta, li jaf kienu dawn in-nodi huma xorta? Kulma għandek tagħmel huwa jimxu l-frak tal-ħobż. Mexxi l-vleġeġ madwar; inti ma għandekx fiżikament jiċċaqalqu kwalunkwe data madwar. Allura nistgħu daħħal Anita, f'dak il-każ, istantanjament. Kostanti tal-ħin. Allura aħna għandna kostanti ta 'żmien Lookup, u kostanti fil-ħin inserzjoni ta' xi ħadd bħal Anita. Iżda tip ta 'oversimplifying-dinja. X'jiġri jekk aħna aktar tard tixtieq li ssib Alice? X'jiġri jekk aħna aktar tard tixtieq li ssib Alice? Kemm passi huwa li se jieħu? [Tweġiba Student, mhux intelliġibbli] Eżattament. In-numru ta 'nies qabel Alice fil-lista marbuta. Allura huwa pjuttost mhux perfett, minħabba l-istruttura tad-data tagħna, għal darb'oħra, għandha dan l-aċċess vertikali u allura għandha dawn il-listi marbuta jiddendlu - fil-fatt, ejja ma tiġbed firxa ta '. Hija dawn il-listi relatati mdendlin off ta 'dan li jistenna ftit xi ħaġa bħal din. Iżda l-problema hija jekk Alice u Adam u dawn kollha l-oħra l-ismijiet A jispiċċaw aktar u aktar hemmhekk, konstatazzjoni xi ħadd jista 'jispiċċa tieħu mazz ta' passi, bcause ikollok biex travers il-lista marbuta, li hija operazzjoni lineari. Allura verament, allura, il-ħin inserzjoni, finalment, huwa O (n), fejn n huwa n-numru ta 'elementi fil-lista. Maqsuma minn, ejja arbitrarju sejħa hija meta m huwa n-numru ta 'listi marbuta li għandna f'dan il-assi vertikali. Fi kliem ieħor, jekk irridu verament tassumi distribuzzjoni uniformi tal-ismijiet, totalment mhux realistika. Hemm ovvjament aktar ta 'xi ittri minn oħrajn. Imma jekk aħna nassumu għall-mument distribuzzjoni uniformi, u għandna n-nies kollha, u l-ktajjen totali m disponibbli lilna, allura it-tul ta 'kull wieħed minn dawn katini pjuttost sempliċiment se tkun it-total, n diviż bin-numru ta 'ktajjen. Allura n / m. Imma hawn fejn aħna nistgħu nkunu kollha matematikament għaqlija. m hija kostanti, għaliex hemm numru fiss ta 'dawn. Int ser tiddikjara firxa tiegħek fil-bidu, u aħna mhux qed resizing-assi vertikali. Bħala definizzjoni, dak soġġorni fiss. Huwa biss l-assi orizzontali, biex ngħidu hekk, li l-bdil. Allura teknikament, dan huwa kostanti. Allura issa, il-ħin inserzjoni hija O pretty ħafna (n). Allura li ma jħossx kollha li ħafna aħjar. Imma x'inhu l-verità hawn? Ukoll, dan il-ħin, għal ġimgħat, aħna kont qed tgħid O (n ²). O (n), 2 x n ², - n, diviż bi 2. . . ech. Huwa biss ² n. Imma issa, f'din il-parti tas-semestru, nistgħu jibda jitkellem dwar id-dinja reali mill-ġdid. U n / m huwa assolutament aktar mgħaġġel milli sempliċement n waħdu. Jekk għandek ismijiet elf, u inti taqsamhom up fis bramel multipli sabiex inti għandek biss 10 ismijiet f'kull wieħed minn dawn ktajjen, assolutament tiftix għaxar affarijiet se tkun aktar mgħaġġla minn affarijiet elf. U għalhekk wieħed mis-settijiet problema li jmiss se isfida inti biex jaħsbu dwar eżattament li, anki jekk, yeah, asimptotikalment u matematikament, dan għadu biss lineari, li sucks b'mod ġenerali meta jippruvaw isibu affarijiet. Fir-realtà, li għaddej biex tkun aktar mgħaġġla minn dik minħabba dan divisor. U hekk theres għal darb'oħra se jkun dan il-kummerċ ta 'darba u dan il-kunflitt bejn it-teorija u r-realtà, u waħda mill-pumi se jibdew iduru f'dan il-punt fil-semestru hija aktar ta 'l-realtà wieħed kif aħna tip ta' jippreparaw għal tmiem semster tal- kif aħna nintroduċu d-dinja ta 'programmazzjoni tal-web, fejn verament, il-prestazzjoni se jgħodd minħabba l-utenti tiegħek ser tibda tħossok u japprezzaw deċiżjonijiet tad-disinn foqra. Allura kif do you go dwar l-implimentazzjoni ta linked - tabella hash ma '31 elementi? U l-eżempju preċedenti kien ta 'madwar arbitrarju għeluq ta' snin. Jekk xi ħadd ikollu birthday ta 'Jannar 1 jew 1 Frar, aħna ser jpoġġuhom f'din barmil. Jekk huwa Jannar 2, 2 Frar, Marzu 2, aħna ser jpoġġuhom f'din barmil. C'est pourquoi kien 31. Kif inti tiddikjara tabella hash? Jista 'jkun pjuttost sempliċi, tabella * node huwa l-isem arbitrarja tiegħi għaliha, [31]. Dan jagħti me 31 pointers għal lymph, u li tippermetti lili li jkollhom 31 pointers fil-listi relatati anki jekk dawk il-ktajjen huma inizjalment NULL. What do Irrid li jpoġġu jekk jien tixtieq li taħżen "Alice," "Bob," "Charlie"? Ukoll, għandna bżonn biex nagħlaq dawk l-affarijiet fi struttura għaliex għandna bżonn Alice għall-punt li Bob, għall-punt li Charlie, u oħrajn. Ma nistgħux biss ikollhom l-ismijiet waħdu, so I tista 'tinħoloq struttura ġdida msejħa node hawn. X'inhu node attwali? X'inhu node f'din il-lista l-ġdida marbuta? L-ewwel ħaġa, imsejħa kelma, huwa għall-isem tal-persuna. TUL, preżumibbilment, tirrigwarda t-tul massimu ta 'l-isem ta' bniedem, tkun xi tkun li tkun, 20, 30, 40 karattru f'każijiet kantuniera crazy, u 1 huwa għal liema? Huwa biss il-karattru NULL żejda, \ 0. Allura dan node huwa tgeżwir "xi ħaġa" ġewwa fih innifsu, iżda wkoll tiddikjara pointer imsejjaħ jmiss sabiex inkunu nistgħu katina Alice biex Bob li Charlie u oħrajn. Jista 'jkun NULL imma mhux bilfors għandhom ikunu. Kwalunkwe mistoqsijiet dwar dawn it-tabelli hash? Yeah? [Student tistaqsi mistoqsija, mhux intelliġibbli] Firxa - mistoqsija tajba. Għaliex din il-kelma char fil-firxa milli biss * char? F'dan l-eżempju kemmxejn arbitrarja, I ma jridux ikollhom jirrikorru li malloc għal kull wieħed mill-ismijiet oriġinali. Jien ridt li tiddikjara l-ammont massimu ta 'memorja għall-sekwenza I hekk li jista 'kopja fl-istruttura Alice \ 0 u ma jkollhomx għalfejn jinnegozjaw ma' malloc u ħielsa u simili. Imma I tista 'tagħmel li jekk jien ridt li jkunu aktar konxji ta' l-użu l-ispazju. Good kwistjoni. Mela ejja jippruvaw li tiġġeneralizza l bogħod minn din u tiffoka l-bqija tal-lum fuq l-istrutturi tad-data b'mod aktar ġenerali u problemi oħra li nistgħu ssolvi tuża l-elementi fundamentali istess anki jekk l-istrutturi tad-data nfushom jistgħu jvarjaw fil-partikolaritajiet tagħhom. Għalhekk jirriżulta fix-xjenza tal-kompjuter, siġar huma komuni ħafna. U inti tista 'taħseb ta' tip siġra simili ta 'siġra tal-familja, fejn hemm xi għeruq, xi matriarch jew Patrijarka, nannu jew nanniet jew qabel lura, taħt li huma mom u dad jew aħwa diversi jew simili. Allura struttura ta 'siġra tkun lymph u għandu t-tfal, normalment 0 itfal jew aktar għal kull node. U xi wħud mill-jargon li tara fil din l-istampa hawn huwa xi wieħed mill-gidjien ftit jew grandkids fuq it-truf li jkollhom l-ebda vleġeġ li joħorġu minnhom, dawk huma l-weraq hekk imsejħa, u xi ħadd fuq il-ġewwa huwa node ġewwa, inti tista 'sejħa hija xi ħaġa flimkien dawk il-linji. Iżda din l-istruttura hija pjuttost komuni. Dan wieħed ftit arbitrarju. Aħna għandna waħda tat-tfal fuq ix-xellug, għandna tliet tfal fuq il-lemin, żewġt itfal fuq il-qiegħ tax-xellug. Allura jista 'jkollna differenti ta' daqs siġar, imma jekk nibdew jiġu standardizzati l-affarijiet, u inti tista 'recall dan mill-video Patrick fuq tfittxija binarju minn qasir qabel online, tfittxija binarja ma għandhom ikunu implimentati mal-firxa jew biċċiet tal-karti fuq blackboard. Ejja ngħidu li inti ridt li taħżen numri tiegħek fi struttura data aktar sofistikati. Inti tista 'toħloq siġra bħal dan. Jista 'jkollok node ddikjarat fis-C, u li node jista' jkollhom mill-inqas żewġ elementi ġewwa ta 'dan. Wieħed huwa n-numru inti tixtieq li taħżen, u l-oħra - ukoll, għandna bżonn waħda aktar. L-ieħor huwa t-tfal tagħha. Allura hawnhekk ieħor istruttura tad-data. Din id-darba, l-node huwa definit bħala ħażna numru n u allura żewġ indikaturi; tfal xellug u tfal dritt. U dawn mhux qed arbitrarja. X'hemm interessanti dwar din is-siġra? X'hemm l-mudell fil-mod kif konna stabbiliti f'dan barra jew kif Patrick stabbiliti out fil-video tiegħu? Huwa tip ta 'ovvju li hemm xi issortjar jiġri hawn, imma x'inhu l-istat sempliċi? Yeah? [Tweġiba Student, mhux intelliġibbli] Perfect. Jekk inti t'għajn fil dan, inti tara n-numri żgħar fuq ix-xellug, numri kbar fuq ix-xellug, iżda li veru għal kull node. Għal kull node, tifel xellug tagħha inqas milli, u tat-tfal id-dritt tagħha akbar minn dan. X'inhu dan ifisser issa huwa jekk irrid biex tfittex din l-istruttura tad-data għal, ngħidu aħna, in-numru 44, I għandhom jibdew fil-għerq, minħabba li, kif kollha ta 'dawn l-istrutturi tad-data aktar kumplessi issa, aħna biss ikollhom pointer għal ħaġa waħda, il-bidu. U f'dan il-każ, il-bidu hija l-għerq. Huwa mhuwiex it-tmiem tax-xellug, huwa l-għerq ta 'din l-istruttura. So I ara hawn 55, u jien infittxu 44. Liema direzzjoni do Irrid immur? Well, I jridu jmorru lejn ix-xellug, għax ovvjament, għad-dritt se tkun kbira wisq. Allura avviż hawn, int tip ta 'kunċettwali tqattiegħ-siġra fil nofs għax int qatt ma jinżel 'l isfel għall-naħa tal-lemin. Allura issa mmur mill-55 sa l-33. Huwa żgħir wisq ta 'numru. Qed infittex għal 44, imma issa naf jekk 44 Huwa f'dan il-siġra, I tista 'tmur ovvjament għad-dritt. Għalhekk għal darb'oħra, jien żbir l-siġra fil nofs. Huwa pretty ħafna identiċi kunċettwalment mal-ktieb tat-telefon. Huwa identiku għal dak li għamilna mal-karti fuq il-blackboard, imma hija struttura aktar sofistikata li tippermetti magħna biex fil-fatt jagħmlu dan jaqsam u jirbħu bl disinn ta 'l-algoritmu, u fil-fatt, jaqsmu struttura bħal dan - Whoops. Traversat struttura bħal din, fejn huwa biss "go dan il-mod jew mur il-mod," ifisser dak kollu li kodiċi li bent moħħok fl-ewwel meta tiġi implimentata fis-sezzjoni jew il-mixi permezz ta 'dan fid-dar, għal tfittxija binarja, bl-użu recursion jew iterazzjoni, huwa uġigħ fl-għonq. Sib l-element tan-nofs, imbagħad tagħmel arrotondament tiegħek jew 'l isfel. Hemm sbuħija għal dan għaliex aħna issa jistgħu jużaw recursion darb'oħra, iżda ħafna aktar nadif. Tabilħaqq, jekk int fil-numru 55 u tixtieq issib 44, inti tmur xellug f'dan il-każ, allura dak do you do? Inti tmexxi l-algoritmu istess eżatt. Inti tiċċekkja l-valur tal-node, allura inti tmur lemin jew xellug. Imbagħad inti tiċċekkja l-valur tal-node, mur lemin jew xellug. Dan huwa adattati perfettament għal recursion. Għalhekk anki jekk fil-passat aħna ghamilt xi eżempji pjuttost arbitrarja li jinvolvu recursion li ma kellhomx bżonn jiġu rikursivi, bil STUCTURES tad-data, speċjalment siġar, huwa applikazzjoni perfetta ta 'din l-idea ta' teħid ta 'problema, qed jiċkien, u mbagħad issolvi l-istess tip ta ', iżda iżgħar, il-programm. Allura hemm ieħor istruttura tad-data li nistgħu jintroduċu. Dan wieħed huwa ddisinjat ewwel daqqa t'għajn li tħares cryptic, iżda dan wieħed aqwa. Allura dan huwa struttura tad-data msejħa trie, trie, li huwa wiret mill-irkupru kelma, li mhijiex ippronunzjata mill-ġdid jipprova-val, iżda dan huwa dak id-dinja sejħiet dawn l-affarijiet. Tipprova. T-r-i e. Hija struttura ta 'siġra ta' xi tip, iżda kull wieħed mill-lymph fil-trie jidher li dak li? U dan huwa daqsxejn qarrieqa, għaliex dan huwa tip ta 'mqassra. Iżda jidher qisu kull node f'dan trie huwa attwalment firxa. U anki jekk l-awtur ta 'dan dijagramma ma wrietx li, f'dan il-każ, dan trie hija struttura tad-data li l-għan fil-ħajja huwa li taħżen kliem bħall A-l-i-c-e jew B-o-b. U l-mod li bih dan Alice ħwienet data u Bob u Charlie u Anita u oħrajn huwa li juża l-firxa li biha biex jaħżnu Alice fil trie, nibdew fil-node għerq li tidher bħal firxa, u huwa kien miktub fl-notazzjoni shorthand. L-awtur barra abcdefg għaliex ma kienx hemm ismijiet ma 'dak. Huma biss wera M u P u T, iżda f'dan il-każ, ejja jimxu lil hinn mill Alice u Bob u Charlie għal xi ismijiet li huma hawnhekk. Maxwell huwa attwalment f'din l-istampa. Allura kif għamlet il-maħżen awtur M-a-x-w-e-l-l? Hu jew hi bdiet fil-node għerq, u marru [M], hekk bejn wieħed u ieħor 13, il-post 13 fil-firxa. Imbagħad minn hemm, hemm pointer. A pointer li jwassal għall-ieħor array. Minn hemm l-awtur indiċjati f'dak firxa fil-post A, kif muri hemm fil quċċata xellug, u allura hu jew hi tkun segwiet dik pointer għall-ieħor array, u marru għall-pointer fil-lokalità X. Imbagħad fil-li jmiss post array W, E, L, L, u oħrajn, u finalment, ejja fil-fatt tipprova tpoġġi stampa għal dan. X'jagħmel ħarsa node simili fil-kodiċi? A node fil-trie fih firxa ta 'indikaturi għall-lymph aktar. Iżda hemm wkoll ltqajna biex jkun hemm xi tip ta 'valur Boolean, għall-inqas din l-implimentazzjoni. I jiġri li hija sejħa is_word. Għaliex? Għaliex meta inti qed tiddaħħal Maxwell, int ma ddaħħal xejn f'din l-istruttura tad-data. Int mhux kitba M. Int mhux kitba X. Kollha qed tagħmel huwa wara pointers. Il-werrej li tirrappreżenta M, allura l-pointer li tirrappreżenta A, allura l-pointer li tirrappreżenta X, allura W, E, L, L, imma dak li għandek bżonn tagħmel fl-aħħar huwa tip ta 'go, kontroll, wasalt dan il-post. Kien hemm kelma li tispiċċa hawnhekk fl-istruttura tad-data. Allura dak li trie huwa verament mimli bl u l-awtur għażel li jirrappreżentaw dawn terminuses ma triangoli ftit. Dan ifisser biss li l-fatt dan il-trijanglu huwa hawn, dan il-valur Boolean ta veru ifisser li jekk inti tmur lura fil-siġra, li tfisser kelma jismu Maxwell huwa f'dan. Imma l-kelma foo, per eżempju, ma tkunx fil-siġra, għaliex jekk jien tibda fil-node għerq up hawn fuq quċċata, M'hemm l-ebda pointer f, l-ebda pointer o, l-ebda pointer o. Foo mhuwiex isem f'din dizzjunarju. Iżda għall-kuntrarju, ristrutturar, t-u-r-i-n-g. Għal darb'oħra, I ma taħżen t jew u jew r jew i jew n jew g. Imma jien ma maħżen f'din l-istruttura tad-data ta 'valur tal-mod veru stabbiliti hawn f'dan node - fil-siġra billi dan il-valur Boolean ta is_word li veru. Allura trie huwa tip ta 'din l-istruttura meta interessanti ħafna, fejn int ma verament ħażna tal-kliem stess ta 'dan it-tip ta' dizzjunarju. Biex ikunu ċari, int biss ħażna iva jew le, hemm kelma li tispiċċa hawnhekk. Issa x'inhu l-implikazzjoni? Jekk għandek 150.000 kliem fil-dizzjunarju li inti qed tipprova li jaħżen fil-memorja użu xi ħaġa bħal lista marbuta, inti se jkollhom 150.000 lymph fil-lista marbuta tiegħek. U ssib wieħed minn dawn il-kliem alfabetikament tista 'tieħu O (n) iż-żmien. Linear ħin. Iżda fil-każ hawnhekk ta 'trie, x'inhu l-running time ta 'sejba kelma? Jirriżulta l-sbuħija hawnhekk hija li anke jekk ikollok 149,999 kliem diġà f'dan dizzjunarju, kif implimentata ma 'din l-istruttura tad-data, kemm żmien ma jieħdu biex tinstab jew daħħal persuna waħda aktar fis li, bħal Alice, Alice? Ukoll, huwa biss 5, forsi 6 passi għall-karattru batuta. Minħabba li l-presense 'ismijiet oħra fl-istruttura ma jiksbu fil-mod ta 'ddaħħal Alice. Barra minn hekk, il-konstatazzjoni Alice ladarba hemm 150.000 kliem f'dan il-dizzjunarju ma jiksbu fil-mod tiegħek ta 'konstatazzjoni Alice fil-livelli kollha, minħabba Alice huwa. . . . . hawnhekk, minħabba I sabet valur Boolean. U jekk ma jkunx hemm Boolean vera, allura Alice ma jkunx f'din l-istruttura tad-data ta 'kliem. Fi kliem ieħor, il-ħin tmexxija ta 'l-iskoperta u ddaħħal l-affarijiet fis dan il-ġdid struttura tad-data ta 'trie hija O tal - mhuwiex n. Minħabba li l-presense ta '150.000 nies m'għandha l-ebda effett fuq Alice, jidher. Mela ejja sejħa hija k, fejn k huwa t-tul massimu ta 'kelma bl-Ingliż li huwa tipikament mhux aktar minn 20-xi ħaġa karattri. Allura k huwa kostanti. Allura l-Grail s-Santu aħna jidhru li sabu issa huwa dak ta 'trie, ħin kostanti għal inserzjonijiet, għall lookups, għal tħassir. Minħabba l-għadd ta 'affarijiet li diġà fl-istruttura, li lanqas biss huma fiżikament hemm. Għal darb'oħra, dawn qed biss tip ta 'ċċekkjati off, iva jew le, m'għandha l-ebda impatt fuq il-ħin għat-tmexxija tagħha fil-futur. Iżda hemm ltqajna biex tkun qabda, inkella aħna ma kienx moħlija tant żmien fuq dawn l-istrutturi data l-oħra biss li finalment jasal sal-1 sigriet li l-aqwa. Allura b'liema prezz aħna tħallas biex jinkiseb dan greatness hawn? Ispazju. Din hija ħaġa kbira. U r-raġuni li l-awtur ma ppreżentawx hawnhekk, avviż li kollha ta 'dawn l-affarijiet li jixbhu matriċi, huwa ma tiġbed il-bqija tas-siġra, il-bqija tal-trie, għaliex dawn qed biss mhumiex rilevanti għall-istorja. Imma kollha ta 'dawn in-nodi huma super wiesgħa, u kull node fil-siġra tibda 26 jew fil-fatt, jista 'jkun 27 karattri għaliex f'dan il-każ I kien inkluż l-ispazju għall-apostrophe hekk li jista 'jkollna kliem apostrophized. F'dan il-każ, dawn huma arrays wiesgħa. Allura anke jekk dawn mhux qed picutured, dan jieħu ammont massiv ta 'RAM. Liema jista 'jkun multa, especilly fil-hardware moderna, iżda li l-tradeoff. Nikbru inqas ħin mill-infiq aktar spazju. Għalhekk, fejn huwa dan kollu se? Ukoll, ejja tagħmel - ejja ara hawn. Ejja nagħmlu qabża li dan Guy hawn. Jemmnu jew le, gost kemm Ċ ilha għal xi żmien issa, aħna qed jilħaq il-punt fil-semestru fejn wasal iż-żmien biex jgħaddi għal affarijiet aktar moderni. Things fuq livell ogħla. U anki jekk għall-koppja li jmiss ta 'ġimgħat aħna ser xorta jkomplu tgħaddas ruħna fil-dinja tal-pointers u l-ġestjoni tal-memorja biex tikseb dak kumdità li magħhom nistgħu mbagħad jibnu fuq, l-logħba aħħari huwa finalment li jiġu introdotti, Ironikament, mhux din il-lingwa. Aħna ser jonfqu, bħall 10 minuta jitkellem dwar HTML. Kollha HTML huwa hija lingwa markup, u liema lingwa markup hija huwa dawn is-serje ta 'parentesi miftuħa u brazzi magħluqa li jgħidu "tagħmel dan kuraġġużi" "Tagħmel dan bil-korsiv" "tagħmel dan ċċentrata." Huwa mhux kollha li intellettwalment interessanti, iżda huwa super utli. U huwa ċertament omnipreżenti dawn il-jiem. Imma x'hemm qawwija dwar id-dinja ta HTML, u l-programmazzjoni tal-web aktar ġenerali, qed tibni affarijiet dinamiċi; miktub kodiċi fil-lingwi bħal PHP jew Python jew Ruby jew Java jew C #. Really, tkun xi tkun il-lingwa tiegħek ta 'għażla hija, u jiġġeneraw HTML dinamiku. Jiġġeneraw xi ħaġa imsejħa CSS dinamiku. Folji cascading stil, li huwa wkoll dwar l-estetika. U għalhekk anki jekk, illum, jekk immur xi websajt bħall-Google.com familjari, u mmur biex tara, iżviluppatur, sors fehma, li forsi inti ghamilt qabel, imma jmorru biex tara sors, dan il-għalf probabbilment jistenna pretty cryptic. Iżda dan huwa l-kodiċi sottostanti li timplimenta Google.com. Fuq il-tarf ta 'quddiem. U fil-fatt dan kollu huwa fluffy estetika Jittieħed. Dan huwa CSS up here. Jekk I iżommu scrolling isfel aħna ser nikseb xi għalf color-coded. Dan huwa HTML. Kodiċi Google qisu mess, imma jekk I attwalment jiftaħ tieqa differenti, nistgħu naraw xi struttura għal dan. Jekk I miftuħa dan up, avviż hawn, huwa ftit aktar leġġibbli. Aħna qed tmur biex tara qabel twil dan il-tikketta, [kelma] hija tikketta, HTML, ras, korp, div, b'kitba, żona test, span, ċċentrata, div. U dan huwa wkoll sort ta cryptic li tħares ewwel daqqa t'għajn, iżda kollha ta 'dan mess ġej ċerti xejriet, u l-mudelli repetuti, b'tali mod li ladarba irridu jiksbu l-affarijiet bażiċi stabbiliti, inti ser tkun tista 'tikteb kodiċi bħal dan u mbagħad timmanipula kodiċi bħal dan permezz énième lingwa, jissejjaħ JavaScript. U JavaScript huwa lingwa li timxi ġewwa ta 'browser illum li nużaw fuq korsijiet Harvard, għall-għodda tax-xiri kors li Google mapep tuża li jtik mazz sħiħ ta 'dinamiżmu, Facebook jagħtik turi aġġornamenti istatus instant, Twitter użi li turi li inti tweets istantanjament. Kollha ta 'dan aħna se tibda għaddas ruħna pulzieri Iżda biex naslu s'hemm, irridu nifhmu ftit xi ħaġa dwar l-Internet. Dan clip hawn huwa biss minuta fit-tul, u ejja nassumu għal issa dan huwa, fil-fatt, kif l-Internet xogħlijiet bħala teaser għal dak dwar li ġejjin. I jagħtuk "Warriors ta 'l-Net." [♫ Slow kor mużika ♫] [Rakkont Male] Huwa daħal bil-messaġġ. Bil-protokoll kollha tiegħu stess. [♫ mużika Faster elettroniku ♫] Huwa daħal għal dinja ta 'firewalls jibred, uncaring routers, u perikli ferm agħar minn mewt. Huwa tal mgħaġġel. Huwa tal b'saħħitha. Huwa tal TCP / IP, u hu ltqajna l-indirizz tiegħek. Warriors tal-Net. [Malan] ġimgħa d-dieħla, imbagħad. L-Internet. Programmazzjoni Web. Dan huwa CS50. [CS50.TV]