[Mūzikas atskaņošanai] DAVID J. Malan: Nu labi. Tas ir CS50, un šis ir beigas Nedēļas Four. Un viens no tematiem šodien ir tas, ka ciparu kriminālistikas, māksla atgūt informāciju. Un tiešām, pat ja tu esi vidū šobrīd Miera pie Triju un Breakout, nākamnedēļ, uzmanība tiks pievērsta tieši šis domēns. Tātad viena no stilīgākais darbavietu es kādreiz bija bija atpakaļ absolvents skolā, kad es strādāju par vietējo Middlesex County District Attorney s biroja, dara kriminālistikas strādāt. Tātad būtībā, Massachusetts Valsts policija, reizēm, strādājot gadījumos būtu ienest lietām, piemēram, cieto disku un disketes un atmiņas kartes un tamlīdzīgi. Un viņi varētu nodot tās man un manam mentors, un mūsu mērķis bija atrast pierādījumus, ja ir kāds, par šiem medijiem. Tagad, iespējams, esat redzējuši ieskatu Šīs pasaules kriminālistikas medijos, TV un filmām. Bet darbs man bija, un daresay ka pasaule, nav gluži kā jūs varētu redzēt to. Pieņemsim to apskatīt to, kas Jūs droši vien esat redzējuši. [Video atskaņošana] -OK. Tagad, pieņemsim iegūt labu apskatīt jums. [Mūzikas atskaņošanai] -Turiet To. Palaist šo atpakaļ. -Wait Minūti. Iet labi. -Nav. Freeze, ka. -Pilna Ekrāns. -OK. Freeze, ka. Padarīta stingrāka līdzi, ka, jūs? -Vector Kas par ka puisis no pakaļējā riteņa. -Zoom In tepat šajā vietā. -ar Pareizo aprīkojumu, attēlu var tikt paplašināta un palielinājusi. -Ko Tas tāds? -Tas Ir veicināšanas programma. -Vai Jums skaidrs, ka pat tādi ir? -Es Nezinu. Pieņemsim uzlabot to. -Enhance A6 sadaļa. Es uzlabota detalizēti, and-- -Es Domāju, tur ir pietiekami daudz, lai uzlabotu. Atlaidiet to uz mana ekrāna. -Es Uzlabota atspoguļojumu viņas acīs. -Ļaujiet Ir palaist to caur video uzlabošanu. -Edgar, Jūs varat uzlabot šo? -Hang On. -I've Ir strādājuši pie šī pārdomām. -Nav S kāds ir atspulgs. -Reflection. -Nav Ir atspulgs no cilvēka sejas. -The Pārdomas! -Nav Ir atspulgs. -Zoom Kas par spoguli. Jūs varat redzēt pārdomas. -Var Jums uzlabot attēlu no šejienes? -Var Jums uzlabot to? -Var Jums uzlabot to? -Var Mēs veicinām šo? -Var Jums uzlabot to? -Turiet Uz sekundi. Es uzlabot. -Zoom Jo uz durvīm. -Times 10. -Zoom. -Move In. -Vairāk. -Wait, Apstāties. -Stop. -Pause To. -Rotate Mums 75 grādus ap vertikāli, lūdzu. -Stop. Iet atpakaļ uz daļu par durvīm vēlreiz. -Got Attēla pastiprinātāju, kas var Bitmap? -Maybe Mēs varam izmantot pradeep Singh metode, lai redzētu, uz logiem. -The Programmatūra ir jaunākie sasniegumi. -The Īpašvērtību ir izslēgts. -ar Labi kombinācija algorithms-- -Viņš Ir veikti apgaismojums algoritmi uz nākamo līmeni, un es varu izmantot tos, lai uzlabot šo fotogrāfiju. -Lock Par un palielinātu z ass. -Enhance. Uzlabot. -Enhance. -Freeze Un uzlabot. [END VIDEO PLAYBACK] DAVID J. Malan: Tātad tie ir visi vārdi, bet tie nebija izmanto teikumus pareizi. Un tiešām nākotnē, jebkurā laikā, lūdzu, jūs dzirdat kādu sakām vārdu, "Uzlabot", nosmieties tikai mazliet. Jo, kad jūs mēģināt uzlabot, Piemēram, tas ir tas, kas notiek. Tātad, šeit ir krāšņs foto. Tas ir CS50 paša Daven. Un pieņemsim, ka mēs vēlējāmies koncentrēsies uz zibsnīšana viņa acīs, vai atspoguļojums slikts puisis, kas bija nepārprotami piesavināties drošības kameru. Tas ir tas, kas notiek, kad jūs tuvinātu attēlu, kas ir tikai ierobežots skaits bitu, kas saistītas ar to. Tas ir tas, ko jūs varētu saņemt. Un tiešām, jo ​​Daven acīm ir tikai četri, varbūt seši pikseļi ka rakstīt tieši to, ko Tika glimmering tur. Tātad Problem Set Four galu galā būs jūs izpētīt šo pasauli, jo īpaši raksturs, kaut mēs saucam failu i / o, kur i / o ir tikai iedomātā veids sakot, ieejas un izejas. Tātad līdz šim, visi mijiedarbības mēs esam bija ar datoru ir lielā mērā ar savu klaviatūra un ekrāns, bet ne tik daudz ar cietā diska, vai saglabājot failu ārpus tiem, jūs sevi rakstīt. Jūsu programmas līdz šim ir nav radīt, un ietaupot, un atjaunināt savus failus. Nu, kas ir fails? Nu, kaut kā JPEG. Šis ir attēlu jūs varētu ir vai augšupielādēt Facebook, vai redzēt jebkur tīmeklī. Patiešām, ka foto mēs tikko zāģis no Daven bija JPEG. Un, kas ir interesanti par failiem, piemēram, JPEG ir tā, ka tos var identificēt, parasti, dažas modeļus bitiem. Citiem vārdiem sakot, to, kas ir tas, ka atšķir JPEG no GIF no Ping no Word dokuments Excel failu? Nu, tas ir tikai atšķirīgs modeļi bitiem. Un šie dažādie modeļi ir Parasti sākumā šiem failiem. Lai tad, kad jūsu dators atver Word doc, vai arī tad, kad dators atver JPEG, tas izskatās parasti pie Pirmie vairāki biti failā. Un, ja tā atzīst, modelis, tā saka, ak, tas ir attēlu. Ļaujiet man parādīt to lietotājs kā grafiks. Vai arī, ak, tas izskatās Word doc. Ļaujiet man parādīs to lietotājam kā eseju. Tā, piemēram, JPEG, izrādās, ir diezgan sarežģīta zem motora pārsega. Bet pirmie trīs baiti biežāk kā reizi JPEG sākt ar šiem trim skaitļiem. Tātad baits nulle, viens, un divi, kas lielākā katru JPEG, 255, tad numurs 216, tad skaitlis 255. Un ko jūs varēsiet sākt darīt nākamnedēļ faktiski poking zem kapuci failus, piemēram JPEG un, piemēram, bitkartes failus, un redzot , kas vienmēr ir bijis tur tik ilgi kā jūs esat bijis, izmantojot datoru. Bet to, kas nav parasti rakstīts tāpat aiz skaitļiem, piemēram, šis. Datoru zinātnieki nav mēdz runāt aiz komata. Tie nav īsti runā bināro. Parasti, ja mēs vēlamies izteikt skaitļus, mēs faktiski izmantot heksadecimālo, kas jums var atgādināt no, teiksim, Problem Set Viens, kas apstrīdēja lai jūs domājat par citu sistēmu. Mēs, protams, ir pazīstami ar komata, nulles caur deviņi. Mēs runājām par bināro. Un mums nav īsti ir izmantot ka daudz šeit uz out, jo datori izmantos to. Bet programmētāji būs ļoti bieži, bet ne vienmēr, izmantot heksadecimālo, kas nozīmē tikai to, Jums ir 16 burti savā alfabētā, atšķirībā no diviem vai 10. Tātad, kā jūs rēķināties ar augstāku nekā deviņi heksadecimāli? Tu ej 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, tikai ar konvencijas. Bet to, kas ir galvenais ir tas, ka katrs no tiem ir viens simbols. Nav 10. Nav 11, per se, jo katrs Sava cipariem, tāpat patīk komata un tāpat kā binārā, būtu vienkārši būt vienu rakstzīmi, pēc vienošanās. Tāpēc, ka tad ir alfabēts mums mūsu rīcībā heksadecimālo. Tātad, ko tas JPEG izskatās, ja jūs bija rakstīt šo pirmo trīs baiti nevis kā aiz komata, bet, Piemēram, kā heksadecimālim? Un kāpēc ir hex pat viss, kas noder? Nu, ātri apskatīt piemēru. Tātad, ja es rakstīt, biti, kas pārstāvēt šos decimāldaļu numbers-- tas varētu būt nedaudz ierūsējis tagad no dažām nedēļām atpakaļ, bet pa kreisi vienu un labi viens ir diezgan viegli. 255 bija lielākais skaits, mēs varētu būt ar astoņiem bitiem. Tas viss bija ones. Tātad vienīgais, kas ir nedaudz interesanti ir vidējā viena. Un, ja jūs veida darīt out math, jūs secināt, ka, protams, ka modelis viens un nullītes pārstāv 216. Tāpēc pieņemsim tikai nosaka, lai tagad, ka tie ir pareizi. Bet kāpēc tas ir interesanti? Nu, baitu, protams, ir astoņi biti. Un izrādās, ka, ja jūs domājat, ka par baitu kā divu gabalos četru biti, kā šis. Ļaujiet man vienkārši pievienojiet dažas vietas. Tātad, pirms, pēc. Esmu tikko pievienotās dažas balto laukumu vizualizācijai dēļ šeit. Kā mēs varētu tagad pārstāv, teiksim, heksadecimālo katrs quad biti, katrs komplekts no četriem bitiem? Tā, piemēram, pa kreisi Tagad, mums ir 1111 bināro. Kas ir tas, ka skaits aiz komata, ja jūs out math? Jums ir ones vieta, twos vietu, četrrāpus vietu, un astotnieki vietu. AUDITORIJA: 15. DAVID J. Malan: Tas ir 15. Tātad, ja mēs astoņi plus četri plus divi plus viens, mēs iegūstam 15. Lai es varētu pierakstīt 15 zemāk 1111, bet viss punkts šeit ir heksadecimālo, nav decimālo. Tā vietā, rakstot uz leju 15, 1-5, Es esmu gatavojas rakstīt, ka hex, kas, ja jūs domājat, ka atpakaļ, ja Jums ir nulle caur f, kas ir 15 būs? AUDITORIJA: f. DAVID J. Malan: Tātad izrādās, tas ir f. Un jūs varat strādāt, ka ārā, sakot, labi, ja ir 10, tad OK, f ir 15. Tik tiešām, mēs varētu pārrakstīt tas pats skaitļu kopums kā f f. Un tad, ja mēs mazliet par matemātiku, mēs secināt, ka tas ir d. Astoņi ir diezgan viegli, jo mēs ir viens no eights vietā. Un tad mums ir pāris vairāk f f s. Tātad, ko cilvēki mēdz darīt pēc vienošanās ja viņi izmanto sešpadsmitnieku ir viņi vienkārši rakstu šo nedaudz vairāk kodolīgi, atbrīvoties no lielākā daļa no šī baltā telpā. Un tikai, lai būtu super skaidrs lasītāji, ka šis ir heksadecimāla, vienkāršs konvencija vidū cilvēki ir rakstīt nulli x, kas nav nekādas citas nozīmes nekā vizuālo identifikatoru, šeit nāk Hex numuru. Un tad, jūs nodot divus ciparus, f f šajā gadījumā, tad d, tad f f. Tik garš stāsts īss, heksadecimālo vienkārši mēdz būt noderīgi, jo katra tās cipari, nulle caur f, perfekti līnijas klajā ar modeli četriem bitiem. Tātad, ja jums ir divas heksadecimālo cipari, nulle caur F, atkal un atkal, , kas dod jums perfekti astoņi biti vai viens baits. Tātad, tāpēc tai ir tendence būt konvencionāli noderīga. Nav intelektuālo saturs tiešām pārsniedz to, izņemot tās faktisko lietderību. Tagad JPEG ir ne tikai failu formātus grafikas. Jūs varētu atgādināt, ka pastāv failus, piemēram, tas pasaulē, vismaz no pāris gadus atpakaļ. Tātad tas faktiski bija uzstādīta Windows XP uz miljoniem datoru visā pasaulē. Un tas bija bitmap failu, BMP. Un bitmap failu, kā jūs redzēsiet nākamo nedēļa, nozīmē tikai modeli punkti, pikseļi kā viņi sauc, karti par bitiem, tiešām. Tātad, kas ir interesanti, lai gan, par šo faila formātu, BMP, ir ka zem motora pārsega, to ir vairāk nekā tikai trīs baitu ka izveidot savu galvenes, tāpēc runāt, dažus pirmos kodieniem. Tas tiešām izskatās mazliet sarežģīta pēc pirmā acu uzmetiena. Un jūs redzēsiet šo P komplektā. Un iegūt kaut ko īpaši no šo tagad nav tik svarīgi, jo tikai ar to ka sākumā katra bitmap fails, grafiskā formātā, tur ir viss ķekars numuriem. Tagad Microsoft, autors šajā formātā, mēdz zvanīt tiem lietas ne ints un simboli un pludiņiem, bet vārdi un d vārdus un ilgojas un baiti. Lai viņi tikai dažādus datu tipus. Viņi dažādi nosaukumi par to pašu. Bet jūs redzēsiet, ka P Set Four. Bet tas ir tikai teikt, ka, ja cilvēkam double-noklikšķina kādu BMP failu uz viņa vai viņas cieto disku, un atveras logs parāda, viņam vai viņai, ka attēlu, ka noticis tāpēc, ka darbības sistēma, iespējams, pamanījuši ne tikai BMP faila paplašinājums faila nosaukumu, bet arī fakts, ka tur ir dažas konvencija modelis bitiem pašā sākumā Minētā bitkartes failu. Bet pieņemsim tagad jākoncentrējas uz šāda sarežģīta failu, bet gan par kaut ko līdzīgu šim. Pieņemsim, ka šeit gedit, I vienkārši ir iesākums no programmas, kas ir diezgan vienkārši. Man daži ietilpst līdz top. Tagad Man # include "structs.h", bet Es atgriezīšos, ka brīdi. Bet tas ir noderīgs tagad. Tātad, tas ir programma kas notiek, lai īstenotu tāpat dzimtsarakstu datu bāzē. Tātad datu bāze studentu, un katrs students pasaulē ir vārdu un māju un, iespējams, daži citas lietas, bet mēs saglabātu tā vienkārši. Katram studentam ir vārdu un māju. Tātad, ja es gribēju rakstīt programma, kuras mērķis dzīvē bija tikai atkārtot no nulle par līdz trim, ja tur ir trīs studentus Hārvarda universitātē. Un es tikai vēlos saņemt, izmantojot GetString, katra studenta vārds un mājas, un tad vienkārši izdrukāt tos out. Tas ir veida, piemēram, nedēļas Viens, Otrā nedēļa sīkumi tagad, kur es tikai gribu, lai cilpa, vai kaut kas tamlīdzīgs. Un es vēlos, lai izsauktu GetString maz reizes, un pēc tam izdrukāt f pāris reizes. Tātad, kā es varētu darīt, lai gan, kad gan nosaukumu un māju ir iesaistīti katram studentam? Tātad mans pirmais instinkts varētu būt darīt kaut kas līdzīgs šim. Es varētu vispirms pateikt, labi, man dot, saka, masīvs stīgas sauc par nosaukumiem. Un es nevēlos hardcode trīs šeit. Ko es gribu, lai tur? Tātad STUDENTIEM, jo tas ir tikai nemainīgs deklarēts augšpusē, tikai, lai man nav hardcode trīs vairākās vietās. Tādā veidā, es varu mainīt to vienu vietu, un tas ietekmē izmaiņas visur. Un tad, es varētu darīt string mājas studentiem. Un tagad, es varētu darīt kaut ko līdzīgu uz (int i = 0; i