[MUZIKO Ludante] DAVID J. Malan: Bone. Jen CS50, kaj ĉi Estas la fino de Semajno Kvar. Kaj unu el la temoj hodiaŭ estas tiu de cifereca jura, La arto de rekuperi informon. Kaj efektive, kvankam vi estas en la mezo nun de Paco ĉe Tri kaj Breakout, la proksima semajno, la fokuso estos sur ĝuste tiu domajno. Do unu el la malvarmaj laborpostenoj mi iam havis estis reen en postdiploma lernejo, kiam mi laboris por la loka Middlesex County District Attorney La oficejo, farante jura labori. Do esence la Masaĉuseco Ŝtata Polico, foje, kiam laborante en kazoj farus konduku aĵojn kiel malmolaj diskoj kaj disketojn kaj kartoj de memoro kaj similaj. Kaj ili transdonos ilin mi kaj mia mentoro, kaj nia celo estis trovi provojn, se estis iu, pri tiuj komunikiloj. Nun, eble vi vidis ekvidojn de tiu mondo de jura en la amaskomunikiloj, televido kaj kino. Sed la tasko mi havis, kaj daresay tiu mondo, ne estas tute kiel vi vidus ĝin. Ni rigardu kion vi probable vidis. [VIDEO Playback] -OK. Nun, ni akiras bonan rigardon ĉe vi. [MUZIKO Ludante] -Hold Ĝin. Kuri ke dorso. -Wait Minuton. Iri dekstren. -There. Frostigi tion. -Full Ekrano. -OK. Frostigi tion. -Tighten Sur tio, ĉu vi? -Vector En sur tiu ulo de la malantaŭa rado. -Zoom En ĝuste ĉi tie sur ĉi tiu loko. -kun Rajtas teamo, la bildo povas esti pligrandigita kaj akraj. -Kio Estas tio? -ĝi An plifirmigo programo. -Can Vi certe ke ĝis neniu? -Mi Ne scias. Ni plibonigi ĝin. -Enhance Sekcio A6. Mi plibonigis la detalon, kaj- -Mi Pensas ke estas sufiĉe por plibonigi. Ĵeti ĝin al mia ekrano. -Mi Plibonigita reflekto en ŝia okulo. -Let Run ĉi per video plibonigo. -Edgar, Vi povas plibonigi ĉi? -Hang Plu. -Mi Estis laborante en ĉi tiu interkonsiliĝo. -There De ies reflekto. -Reflection. -There Estas spegulbildo de la homa vizaĝo. -la Reflekto! -There Estas reflekto. -Zoom En la spegulo. Vi povas vidi reflekto. -Can Vi plibonigi la bildon de ĉi tie? -Can Vi plibonigi ĝin? -Can Vi plibonigi ĝin? -Can Ni plibonigi ĉi? -Can Vi plibonigi ĝin? -Hold Je sekundo. Mi plibonigos. -Zoom En la pordo. -Times 10. -Zoom. -Move En. -More. -Wait, Halti. -Stop. -Pause Ĝin. -Rotate Ni 75 gradoj ĉirkaŭ la vertikala, bonvolu. -Stop. Reiru al la parto pri la pordon denove. -Got Bildon Enhancer kiu povas bitmap? -Maybe Ni povas uzi la Pradeep Singh metodo vidi en la fenestrojn. -la Programaro estas stato de la arto. -la Ajgeno estas malŝaltita. -kun Dekstre kombino de algorithms-- -li La prenita lumigado algoritmoj por la sekva nivelo, kaj mi povas uzi ilin plibonigi tiun foton. -Lock Sur kaj disvastigu la z-akso. -Enhance. Plibonigi. -Enhance. -Freeze Kaj plibonigi. [FINO VIDEO Playback] DAVID J. Malan: Do tiuj estas ĉiuj vortoj, sed ili ne estis uzata en frazoj korekte. Kaj efektive en la estonteco, ajna momento, bonvolu, vi aŭdas iun diri la vorton, "Plibonigi" kluketo malmulta. Ĉar kiam vi provas plibonigi, Ekzemple, tiu estas kio okazas. Do jen belega foto. Jen CS50 propra Daven. Kaj supozu ke ni volas enfokusigi en la sekundo en la okulon, aŭ la reflekto de la malbona ulo, kiu estis klare kaptita de la ĉambro de sekureco. Jen kio okazas kiam vi zomi sur bildo kiu havas nur finia nombro de bitoj asociita kun ĝi. Tio estas kion vi ricevas. Kaj efektive, en Daven okulo estas nur kvar, eble ses rastrumeroj kiuj formas precize kion Estis glimante tie. Do Problemo Ara Kvar finfine havas Esplorante tiun mondon, aparte nature ion ni nomas dosiero i / o, kie i / o estas nur ornama metodo dirante enigo kaj eligo. Do ĝis nun, ĉiuj el la interagoj ni havis kun komputilo estis plejparte kun via klavaro kaj ekrano, sed ne tiel kun la malmola disko, aŭ ŝparado de dosieroj preter tiujn vi vi skribas. Viaj programoj tiel malproksime havas ne krei kaj savi, kaj ĝisdatigi siajn proprajn dosierojn. Nu, kio estas dosiero? Nu, iu kiel JPEG. Tiu estas bildo vi povus havi aŭ alŝuti al Facebook, aŭ vidi ie en la reto. Ja, tiu foto oni nur segilo de Daven estis JPEG. Kaj kio estas interesa pri dosierojn kiel JPEG-oj estas ke ili povas esti identigita, tipe, por iuj ŝablonoj de bitoj. Alivorte, kio okazis, ke distingas JPEG de GIF el PING el Vorto dokumento el Excel dosiero? Nu, estas nur malsama mastroj de bitoj. Kaj tiuj diversaj ŝablonoj estas kutime ĉe la komenco de tiuj dosieroj. Tiel ke kiam via komputilo malfermas Vorto doc aŭ kiam komputilo malfermas JPEG, ĝi aspektas tipe ĉe la unuaj pluraj bitoj en la dosiero. Kaj se ĝi rekonas mastro, ĝi diras, ho, tiu estas bildo. Lasu min montri ĝin la uzanto kiel grafika. Aŭ, ho, tio aspektas kiel Word doc. Lasu min montri al la uzanto kiel eseon. Do ekzemple, JPEG-oj, rezultas, estas sufiĉe kompleksa sub la kapuĉo. Sed la unuaj tri bajtoj en plej ĉiun JPEG starti kun tiuj tri nombroj. Do bajto nulo, unu kaj du estas, plej ĉiu JPEG, 255, tiam la nombro 216, tiam la nombro 255. Kaj kion vi povos komenci fari proksiman semajnon Efektive ŝovas sube la kapuĉo de dosieroj kiel JPEG-oj kaj kiel bitmap dosierojn, kaj vidante kio ĉiam estis tie por tiel longe kiel vi estis uzante komputilon. Sed kio estas tie ne estas tipe skribita kiel dekuma nombro ŝatas ĉi. Komputila sciencistoj ne inklinas paroli en dekuma. Ili ne vere parolas en duuma. Tipe, kiam ni volas esprimi nombrojn, ni vere uzas deksesuman, kiun eble vi memoras de, ni diru, Problemo Ara Unu, kiu defiis vi pensi malsama sistemo. Ni, kompreneble, estas familiara kun decimala, nula tra naŭ. Ni parolis pri duumaj. Kaj ni ne vere havas uzi ke multe ĉi tie sur ekstere, ĉar komputiloj uzos tion. Sed programistoj tre Ofte, sed ne ĉiam, uzi deksesuman, kiu signifas nur vi havos 16 literojn en via alfabeto kontraste al du aŭ 10. Do kiel vi bontrovas altaj ol naŭ en deksesuma? Vi iru 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, nur konvencio. Sed kio estas ŝlosilo estas ke ĉiu tiuj estas sola simbolo. Ne estas 10. Ne estas 11, per, ĉar ĉiu viaj ciferoj, ĝuste kiel en dekuma kaj ĝuste kiel en duuma, devus simple esti sola karaktero, per konvencio. Tial do estas la alfabeto ni havas je nia dispono por deksesuma. Do kion signifas al JPEG simila se vi estis verki tiujn unuajn tri bajtoj ne kiel dekuma sed, Ekzemple, kiel deksesuma? Kaj kial estas hex cxiuj tiom utila? Nu, rapidan rigardon al ekzemplo. Do se mi skribas la bitoj kiuj reprezentos tiuj decimalaj numbers-- tio povus esti iom rusta nun de kelkaj semajnoj reen, sed la maldekstra kaj la dekstra estas sufiĉe facila. 255 estis la plej granda nombro ni povus reprezenti per ok bitoj. Ĉio estis karaj. Do la sola kiu estas milde Interesa estas la meza. Kaj se vi speco de fari la math, vi deduktas ke, efektive, ke mastro de unu kaj nuloj reprezentas 216. Do ni nur kondiĉas por nun ke ili estas ĝustaj. Sed kial estas tiu interesa? Nu, bajto, kompreneble, estas ok bitoj. Kaj ĝi rezultas ke se vi opinias de bajto kiel du pecoj de kvar bitoj, kiel tiu. Lasu min nur aldoni iun spacon. Do antaŭ, post. Mi ĵus aldonis kelkajn blanka spaco por videbligo la bono tie. Kiom eble ni nun reprezentas en, diru, deksesuma ĉiu quad de bitoj, ĉiu aro de kvar bitoj? Do ekzemple, en la maldekstra Nun ni havas 1111 en duuma. Kio estas tiu nombro en dekuma, se vi faros la math? Vi havas la lokon de unuoj, la duope loko, la kvarpiede loko kaj la eights loko. Publiko: 15. DAVID J. Malan: Estas 15. Do se ni faras ok plus kvar plus du plus unu, ni ricevas 15. Do mi povus noti 15 sube 1111, sed la tuta punkto tien estas deksesuma, ne decimala. Do anstataŭ notante 15, 1-5, Mi tuj skribos, ke en deksesumajn, kio se vi pensas reen, se vi havas nulo per f, kio estas 15 tuj estos? Publiko: f. DAVID J. Malan: Do rezultas ke la f. Kaj vi povas labori ke el dirante, bone, se estas 10, tiam OK, f estas 15. Do ja, ni povus reverki tiu sama aro de nombroj kiel f f. Kaj tiam se ni faras iom de math, ni deduktas ke tio d. Ok estas sufiĉe facila, ĉar ni havas unu en la eights loko. Kaj tiam ni havas paron pli f f-aj jaroj. Do kion homoj inklinas fari per konvencio kiam uzi deksesuman estas simple skribi ĉi iom pli koncize, forigi plimulton de tiu blanka spaco. Kaj simple esti súper klara al legantoj, ke tiu estas deksesuma, la simpla konvencio inter homoj estas vi skribas nulo x, kiu havas neniun signifon aliaj ol vida ensalutilo de, tien venas hex nombro. Kaj tiam, vi metis la du ciferojn, f f en ĉi tiu kazo, tiam d a, tiam f f. Do longan rakonton, deksesuma simple inklinas esti utila ĉar ĉiu de liaj ciferoj, nula tra f, perfekte linioj kun ŝablono de kvar bitoj. Do se vi havas du deksesumaj ciferoj, nulo tra F, denove kaj denove, kiu donas al vi perfekte ok bitoj aŭ unu bajto. Tial do inklinas esti konvencie utila. Mankas intelektulo enhavo vere preter tio, alia ol lia reala utileco. Nun JPEG-oj ne estas la sola dosiero formatoj por grafikaĵoj. Vi eble memoras ke ekzistas dosierojn kiel tiu en la mondo, almenaŭ de kelkaj jaroj reen. Do tio estis fakte instalita en Windows XP sur milionojn da komputiloj ĉirkaŭ la mondo. Kaj tio estis bitmap dosieron, BMP. Kaj bitmap dosiero, kiel vi vidos apud semajno, nur signifas mastron de dots, rastrumeroj kiam ili estas vokitaj, mapo sur bitoj, vere. Do kio estas interesa, kvankam, pri tiu dosiero formato, BMP, estas ke sub la kapuĉo, ĝi havas pli ol tri bitokoj kiuj formas lian kaplinion, do paroli, la unuaj malmultaj pikoj. Ĝi vere aspektas iom komplikita unuavide. Kaj vi vidos tion en la P aro. Kaj ekhavi ion aparta el tiu nun ne estas tiel grava, kiel ĝuste la fakto ke komence de ĉiu bitmap dosiero, grafika formato, tie estas tuta aro de nombroj. Nun Microsoft, La aŭtoro de ĉi tiu formato, inklinas nomi tiujn aferoj ne ints kaj signoj kaj flosas sed vortoj kaj d vortoj kaj sopiras kaj bajtoj. Do ili estas simple malsamaj datumtipoj. Ili estas malsamaj nomoj por la sama afero. Sed vi vidos ke en P Ara Kvar. Sed tio estas nur por diri, ke se homo duoble klakas iun .BMP dosieron sur sia aŭ ŝi malmola disko, kaj fenestro malfermiĝas supren montranta lin aŭ ŝin tiu bildo, ke tio okazis ĉar la mastruma sistemo supozeble rimarkis ne nur la .BMP dosiersufikso en la dosiernomo, sed ankaŭ la fakto, ke ekzistas iuj konvencio al la ŝablono de bitoj en la komenco de tiu bitmap dosieron. Sed ni nun enfokusigi tiom komplika dosieron, sed anstataŭe sur iu kiel ĉi tio. Supozi tie en gedit, mi nur havi la komencoj de programo kiu estas sufiĉe simpla. Mi havas kelkajn inkludas ĝis supro. Nun mi havas #include "structs.h" sed Mi revenos al tio en momento. Sed tio estas utila por nun. Do tiu estas programo ke tuj apliki kiel la matrikulisto datumbazo. Do datumbazon de studentoj, kaj ĉiu lernanto en la mondo havas nomon kaj domon kaj verŝajne iuj aliaj aferoj, sed ni tenu ĝin simpla. Ĉiu studento havas nomon kaj domo. Do se mi volis skribi programo kies celo en la vivo Estis nur persisti el nulo en ĝis tri, se estas tri studentoj Harvard University. Mi nur volas, uzante GetString, ĉiu studenta nomo kaj domo, kaj tiam simple presi tiujn ekstere. Tiu estas speco de kiel Semajno Unu, Semajno Du aferojn nun, kie Mi nur volas por buklo aŭ io simila. Kaj mi volas nomi GetString kelkaj fojojn, kaj tiam presi f kelkajn fojojn. Do kiel povus mi tion faras, kvankam, kiam ambaŭ nomon kaj domo estas implikitaj por ĉiu studento? Do mia unua instinkto multobligita esti fari ion kiel tiu. Mi povus unua diri, nu, al mi, diri, tabelo de kordoj nomita nomojn. Kaj mi ne volas hardcode tri ĉi tie. Kion mi volas meti tie? Do studentoj, ĉar tio estas nur konstanta deklaris ĉe la supro, ĝuste tiel mi ne devos hardcode tri en multnombraj lokoj. Tiu vojo, mi povas ŝanĝi ĝin en unu lokon, kaj tio efikas ŝanĝon ĉie. Kaj poste, mi povus fari kordo gastigas studentojn. Kaj nun, mi povas fari ion kiel por (int i = 0; i