>> [Daqq ta mużika]
DAVID J. Malan: Kull dritt.
Dan huwa CS50, u dan hija t-tmiem tal-Ġimgħa Erba.
U wieħed mis-suġġetti llum hija li tal-forensiċi diġitali,
l-arti ta 'rkupru informazzjoni.
U fil-fatt, anki jekk int fil-midst
dritt issa tal-Paċi fi Three u tbegħid, ġimgħa d-dieħla,
l-enfasi se tkun fuq preċiżament dan id-dominju.
>> Allura wieħed mill-impjiegi coolest I qatt kellhom kien lura fl-iskola gradwati,
I meta kien qed jaħdem għall-popolazzjonijiet lokali Middlesex County District Attorney tal
uffiċċju, forensika tagħmel xogħol.
Allura essenzjalment, il Massachusetts Pulizija Stat, f'okkażjoni,
meta jaħdmu fuq il-każijiet se jġibu affarijiet simili hard drives
u floppy disks u karti tal-memorja u simili.
U dawn se jgħadduhom lili u mentor tiegħi,
u l-għan tagħna kien li ssib evidenza, jekk kienx hemm xi, fuq dawn il-mezzi.
Glimpses Issa, inti tista raw din id-dinja tal-forensiċi
fil-midja, TV u films.
Imma l-impjieg kelli, u daresay li dinja,
mhuwiex pjuttost simili inti tara dan.
Ejja tagħti ħarsa lejn dak inti ħadthom probabbilment jidhru.
[Daqq ta 'video]
OK.
Issa, ejja tikseb ħarsa tajba lejn inti.
>> [Daqq ta mużika]
>> -Hold Dan.
Mexxi dik lura.
>> -Wait Minuta.
Mur dritt.
-Hemm.
Jiffriżaw dik.
Full-iskrin.
>> OK.
Jiffriżaw dik.
-Tighten Up fuq li, se inti?
>> -Vector Fl fuq dak Guy mill-rota lura.
>> -Zoom Fl-dritt hawn fuq dan il-post.
>> -Bil L-apparat dritt, il- image jistgħu jiġu mkabbra u inċiżiv.
>> Liema-li?
>> -Hija S programm titjib.
>> -Jista Inti ċar li up kwalunkwe?
>> -I Ma jafux.
Ejja ittejjeb dan.
>> -Enhance Taqsima A6.
I msaħħa l-dettall, and--
-I Think hemm biżżejjed biex itejbu.
Jgħadduha lill-iskrin tiegħi.
>> -I Msaħħa r-riflessjoni fil-għajn tagħha.
-Let S imexxu dan permezz video titjib.
>> -Edgar, Inti tista ttejjeb dan?
>> Hang fuq.
>> -I've Ilhom jaħdmu fuq din ir-riflessjoni.
>> Riflessjoni ta 'xi ħadd -Hemm tal.
>> -Reflection.
-Hemm S riflessjoni tal-wiċċ tar-raġel.
>> Riflessjoni -Il!
-Hemm L riflessjoni.
-Zoom Fuq il-mera.
Tista 'tara riflessjoni.
>> -Jista Inti jtejbu l-immaġini minn hawn?
-Jista Inti ittejjeb dan?
-Jista Aħna ittejjeb dan?
-Jista Inti ittejjeb dan?
-Hold Fuq it-tieni.
I ser itejbu.
-Zoom Fl fuq il-bieb.
-Times 10.
-Zoom.
-Move Fil.
-Aktar.
-Wait, Stop.
-Stop.
-Pause Dan.
Dawwar us 75 gradi madwar il-vertikali, jekk jogħġbok.
>> -Stop.
Mur lura għall-parti dwar il-bieb għal darb'oħra.
>> -Got Enhancer immaġni li jistgħu Bitmap?
>> -Maybe Nistgħu nużaw l Singh Pradeep metodu biex tara fil-twieqi.
>> -Il Software huwa l-istat ta 'l-arti.
>> -Il Eigenvalue huwa off.
>> -Bil-Dritt kombinazzjoni ta 'algorithms--
>> Meħuda illuminazzjoni -He tal algoritmi għal-livell li jmiss,
u nista jużawhom biex jsaħħu din ritratt.
>> Lock fuq u tkabbar l-assi-z.
>> -Enhance.
Tittejjeb.
-Enhance.
-Freeze U jtejbu.
[END daqq ta 'video]
DAVID J. Malan: Allura dawn huma kliem kollha, imma dawn ma kienux
użat fil-sentenzi korrett.
U fil-fatt fil-futur, kwalunkwe ħin, jekk jogħġbok, inti tisma xi ħadd jgħid l-kelma,
"Ittejjeb," chuckle biss ftit.
Għaliex meta inti tipprova biex ittejjeb, per eżempju, dan huwa dak li jiġri.
>> Allura hawnhekk ritratt sabiħ ħafna.
Dan huwa Daven CS50 stess.
U jissoponi li aħna riedu tiffoka fuq il-Twinkle fl-għajnejn tiegħu,
jew l-riflessjoni tal- Guy ħżiena li kienet b'mod ċar
maqbud mill-kameras tas-sigurtà.
Dan huwa dak li jiġri meta inti zoom fl fuq xbieha li
għandha biss numru finit ta 'bits assoċjati magħha.
>> Dan huwa dak li inti se tikseb.
U fil-fatt, fl-għajnejn Daven tal huwa iżda erba, forsi sitt pixels
li jikkomponu eżattament dak kien glimmering hemmhekk.
Allura Problema Set Erba finalment se jkollhom inti tesplora din id-dinja, partikolarment
min-natura ta 'xi ħaġa nitolbu i file / o, fejn
i / o huwa biss mod fancy ta ' qal input u output.
>> Allura s'issa, kollha ta 'l-interazzjonijiet aħna kellna ma 'kompjuter
kienu ġeneralment bil tiegħek keyboard u l-iskrin,
iżda mhux daqshekk mal-hard disk, jew iffrankar ta 'fajls lil hinn mill-dawk li inti
yourself jiktbu.
Programmi tiegħek s'issa jkollhom ma kien joħloq, u l-iffrankar,
u l-aġġornament fajls tagħhom stess.
>> Ukoll, x'hemm fajl?
Ukoll, xi ħaġa bħal JPEG.
Din hija immaġni inti tista għandhom jew upload biex Facebook,
jew tara kullimkien fuq il-web.
Tabilħaqq, li ritratt aħna biss raw ta Daven kien JPEG.
U x'hemm interessanti dwar fajls simili JPEGs
huwa li jkunu jistgħu jiġu identifikati, tipikament, minn ċerti mudelli ta 'bits.
>> Fi kliem ieħor, dak huwa li jiddistingwi JPEG minn GIF
minn Ping minn Word dokument ta 'xi fajl Excel?
Ukoll, huwa biss differenti mudelli ta 'bits.
U dawk mudelli differenti huma normalment fil-bidu ta 'dawn il-fajls.
>> Allura li meta l-kompjuter tiegħek tiftaħ Word doc, jew meta kompjuter tiftaħ JPEG,
jidher tipikament fil- ewwel diversi bits fil-fajl.
U jekk huwa jirrikonoxxi mudell, jgħid, oh, din hija immaġni.
Let me juru li l-utent bħala grafika.
Jew, oh, dan qisu doc ​​Word.
Let me juru lill-utent bħala esej.
>> Allura per eżempju, JPEGs, jirriżulta, huma
pjuttost sofistikati taħt il-barnuża.
Iżda l-ewwel tliet bytes fil aktar minn darba kull JPEG tibda bil dawn it-tliet numri.
Allura byte żero, wieħed, u tnejn huma, fil- aktar minn darba kull JPEG, 255, allura n-numru
216, allura n-numru 255.
>> U dak li inti ser tkun kapaċi biex tibda tagħmel ġimgħa d-dieħla
huwa attwalment poking taħt il-barnuża ta 'fajls simili JPEGs
u bħal fajls Bitmap, u tara x'hemm dejjem kien hemm sakemm
kif inti kont qed tuża kompjuter.
>> Imma x'hemm ma jkunx hemm tipikament miktub bħal numri deċimali bħal dan.
Xjenzjati tal-kompjuter ma tendenza li jitkellmu fil deċimali.
Huma ma verament jitkellmu fil binarja.
Tipikament, meta rridu li jesprimu numri,
aħna attwalment jużaw hexadecimal, li inti tista 'recall
minn, ngħidu aħna, Problem Set Wieħed, li kkontestat
inti biex jaħsbu dwar sistema differenti.
>> Aħna, naturalment, huma familjari bi deċimali, żero permezz disa.
Aħna tkellimna dwar binarja.
U aħna ma verament ikollhom għall-użu li ħafna hawn
fuq barra, għaliex kompjuters se jużaw dak.
Iżda programmaturi se ħafna spiss, imma mhux dejjem,
jużaw hexadecimal, li ifisser biss għandek 16-ittri fil alfabett tiegħek,
kif oppost għal tnejn jew 10.
>> Allura kif taħseb li għodd sa ogħla minn disa f'hexadecimal?
Inti tmur 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, biss billi konvenzjoni.
Imma x'hemm importanti hu li kull minn dawn huwa simbolu wieħed.
M'hemm l-ebda 10.
M'hemm l-ebda 11, per se, għax kull ta 'ċifri diġitali tiegħek, eżatt bħal fil-deċimali
u eżatt bħal fil binarja, għandhom biss jkun karattru wieħed, b'konvenzjoni.
>> Allura li allura huwa l-alfabett li għandna għad-dispożizzjoni tagħna għal hexadecimal.
Allura dak li ma JPEG look like jekk inti kellhom jiktbu out dawk l-ewwel tlieta
bytes mhux bħala informazzjoni, iżda, per eżempju, bħala hexadecimal?
U għaliex hija hex anki dak kollu li utli?
>> Well, ħarsa lejn eżempju.
Mela jekk nikteb l-bits li jirrappreżentaw dawn numbers-- deċimali
dan jista 'jkun ftit Rusty issa minn ftit ġimgħat lura,
iżda l-waħda xellug u l- dritt wieħed huma pjuttost faċli.
255 kien in-numru akbar aħna jista 'jirrappreżenta bi tmien bits.
Kien dawk kollha.
Allura l-unika waħda li kemmxejn interessanti huwa l-waħda tan-nofs.
U jekk inti tip ta 'do l- matematika, inti ser jiġi dedott li, tabilħaqq,
dak il-mudell ta 'wieħed u żerijiet tirrappreżenta 216.
Mela ejja biss jistipulaw għall issa li dawn huma korretti.
Iżda għaliex dan huwa interessanti?
>> Well, byte, naturalment, huwa tmien bits.
U jirriżulta li jekk taħseb ta 'byte bħala żewġ biċċiet ta' erba 'bits,
bħal dan.
Let me biss żid xi spazju.
Allura qabel, wara.
Stajt biss miżjud xi spazju abjad f'ġieħ viżwalizzazzjoni hawnhekk.
Kif tista aħna issa jirrappreżentaw in, jiġifieri, hexadeċimali kull quad ta 'bits,
kull sett ta 'erba' bits?
>> Allura per eżempju, fuq ix-xellug issa, aħna għandna 1111 fil binarja.
X'inhu dak in-numru fil-deċimali, jekk inti tagħmel l-matematika?
Inti għandek l-dawk post, il-post twos, il-fours post, u l-post eights.
>> UDJENZA: 15.
DAVID J. Malan: Huwa 15.
Mela jekk nagħmlu tmien plus erba flimkien ma 'tnejn plus wieħed, irridu jiksbu 15.
So I tista 'tikteb isfel 15 hawn taħt 1111, imma l-punt kollu hawnhekk
huwa hexadecimal, mhux Deċimali.
Allura minflok kitba fl-15, 1-5, Jien ser jikteb li fl hex,
li jekk taħseb lura, jekk għandek żero permezz f, x'inhu 15 se tkun?
UDJENZA: f.
DAVID J. Malan: Għalhekk jirriżulta li l f.
U inti tista 'taħdem li minn billi qal, ukoll, jekk huwa 10, imbagħad OK, f huwa 15.
Allura fil-fatt, nistgħu jikteb dan l-istess sett ta 'numri kif f f.
U mbagħad jekk nagħmlu daqsxejn ta 'matematika, aħna ser jiġi dedott li dan huwa d.
Tmien huwa pjuttost faċli, għaliex aħna jkollhom wieħed fil-post eights.
U mbagħad, aħna għandna koppja aktar f f'S.
>> Allura dak bnedmin tendenza li tagħmel permezz tal-konvenzjoni meta jużaw hexadecimal huwa huma biss
tikteb din ftit aktar konċiż, jeħles ta 'ħafna ta' dak l-ispazju abjad.
U biss li tkun super ċara li qarrejja li dan huwa hexadecimal,
il-konvenzjoni sempliċi fost bnedmin qed tikteb żero
x, li m'għandha l-ebda tifsira oħra minn identifikatur viżwali ta ',
hawn taqa 'numru hex.
>> U mbagħad, inti tpoġġi l-żewġ numri, f f f'dan il-każ, allura d a, imbagħad f f.
Allura qasir storja twila, hexadecimal biss tendenza
li jkun utli għax kull wieħed tagħha ċifri, żero permezz f, perfettament linji
up bil-mudell ta 'erba' bits.
>> Mela jekk għandek żewġ numri hexadecimal, żero permezz F, għal darb'oħra u għal darb'oħra,
li jagħtik perfettament tmien bits jew byte wieħed.
Allura hu għalhekk li għandha tendenza li jkun konvenzjonalment utli.
M'hemm l-ebda intellettwali kontenut verament lil hinn minn dak,
għajr utilità attwali tagħha.
>> Issa JPEGs mhumiex l-unika fajl formati għall-grafika.
Inti tista 'tfakkar li hemm files bħal dan fid-dinja,
inqas minn ftit snin lura.
>> Allura dan kien effettivament installat fil-Windows XP
fuq miljuni ta 'PCs madwar id-dinja.
U dan kien fajl Bitmap, BMP.
U fajl Bitmap, kif tkun taf tara li jmiss ġimgħa, ifisser biss mudell ta 'tikek,
pixels kif dawn qed imsejħa, mappa fuq bits, verament.
>> Allura x'hemm interessanti, għalkemm, dwar dan il-format fajl, BMP, huwa
li taħtha il-barnuża, dan għandha aktar minn biss tliet bytes
li jikkomponu header tagħha, hekk li jitkellmu, l-ewwel ftit gdim.
Hija fil-fatt jistenna ftit ikkumplikat ewwel daqqa t'għajn.
U tkun taf tara dan fil-P sett.
U jkollna xi ħaġa out partikolari ta 'dan issa
ma jkunx daqshekk importanti, bħala biss il-fatt li fil-bidu ta 'kull Bitmap
fajl, format grafika, hemm mazz sħiħ ta 'numri.
>> Issa Microsoft, il- awtur ta 'dan il-format,
tendenza li jsejħu dawk l-affarijiet mhux ints u Chars
u sufruni iżda kliem u d kliem u twal u bytes.
Allura dawn qed biss tipi differenti ta 'dejta.
Huma qed ismijiet differenti għall-istess ħaġa.
Imma inti taf tara li fil Set Erba P.
>> Iżda din hija biss li jgħidu li jekk bniedem double-klikks xi fajl BMP fuq tiegħu
jew hard drive tagħha, u tiftaħ tieqa up juri lilu jew lilha li l-immaġni,
li ġara minħabba li l-operattiva sistema preżumibbilment ndunat mhux biss
l-estensjoni fajl BMP fl-isem fajl,
iżda wkoll il-fatt li hemm xi konvenzjoni għall-mudell ta 'bits
fil-bidu nett ta dan il-fajl Bitmap.
>> Imma ejja issa jiffokaw fuq tali file kkumplikata,
iżda minflok fuq xi ħaġa bħal din.
Ejja ngħidu hawn fil gedit, I biss ikollhom l-bidu
ta 'programm li pjuttost sempliċi.
Stajt ltqajna xi jinkludi top up.
# Jinkludu "structs.h" Issa stajt ltqajna iżda I ser terga 'lura għal dik fil-mument.
Iżda din hija utli għal issa.
Allura dan huwa programm li għaddej biex jimplimentaw
bħall-database tar-Reġistratur.
Allura database ta 'studenti, u kull student fid-dinja
għandha isem u dar u probabbilment xi Jittieħed oħra, iżda aħna ser jżommha sempliċi.
Kull student għandha isem u dar.
>> Mela jekk jien ridt li jiktbu programm li l-għan fil-ħajja
kien biss li jtenni mill- żero fuq sa tlieta,
jekk hemm tliet studenti fil-Harvard University.
U jien biss trid li tikseb, bl-użu GetString, isem u d-dar ta 'kull student,
u mbagħad biss print dawk out.
>> Dan huwa tip simili Week Wieħed, Żewġ Week Jittieħed issa,
fejn I nur die għal loop jew xi ħaġa bħal dik.
U nixtieq li sejħa GetString ftit drabi, u mbagħad jistampaw f ftit drabi.
Allura kif tista 'nagħmel dan, għalkemm, meta kemm isem u dar
huma involuti għal kull student?
>> Allura l-ewwel istint tiegħi jista jkun li tagħmel xi ħaġa bħal din.
I jista ewwel ngħid, ukoll, jagħtu me, jgħidu, firxa ta 'spag imsejħa ismijiet.
U jien ma tridx hardcode tliet hawn.
What do I tixtieq li tqiegħed hemmhekk?
Allura STUDENTI, għaliex dan huwa biss kostanti ddikjarat fil-quċċata,
biss hekk I ma jkollhom hardcode tlieta fil-postijiet multipli.
Dan il-mod, I tista 'bidla f'post wieħed, u din taffettwa bidla kullimkien.
U mbagħad, I tista 'tagħmel string djar STUDENTI.
>> U issa, I tista 'tagħmel xi ħaġa simili għall (i int = 0; i <STUDENTI; i ++.
So jien ittajpjar malajr, iżda dan huwa probabbilment sintassi familjari issa.
>> U issa, dan kien aktar riċenti.
Jekk I tixtieq li tqiegħed fil-i-th isem istudent, I think I do dan.
U mbagħad, mhux ismijiet iżda djar parentesi i.
I do dan, GetString, u ħallieh me jmorru lura u tiffissa din il-linja.
Jaqblu?
Ma naqbilx?
Mhuwiex ħafna faċli għall-utent.
I ma qal lill-utent x'għandek tagħmel.
>> Imma issa, jekk I wkoll riedu aktar tard, ejja
jiġifieri, jistampa dawn l-affarijiet out-- hekk Todo aktar tard.
Jien ser jagħmlu aktar this-- dan forsi jiġifieri
implimentazzjoni korretta ta ' jkollna l-ismijiet u djar, tliet
minnhom totali ta 'kull, minn utent.
>> Imma dan mhux disinn tajjeb ħafna, id-dritt?
X'jiġri jekk student ikollu mhux biss l-isem u dar, iżda wkoll numru ta 'identifikazzjoni,
u numru tat-telefon, u l-indirizz email,
u forsi home page, u forsi Twitter manku,
u kull numru ta 'dettalji oħra assoċjat ma 'student jew persuna,
b'mod aktar ġenerali.
Kif aħna jibdew żid funzjonalità għal dan il-programm?
>> Well, I jħossu bħall-eħfef mod jista jkun li tagħmel xi ħaġa simili, ejja ngħidu,
int STUDENTI ids.
So I tista 'tpoġġi IDs kollha tagħhom fil hemmhekk.
U mbagħad, għal xi ħaġa bħal numri tat-telefon,
M'inix ċert kif jirrappreżenta dak għadha biss.
Mela ejja imorru quddiem u biss sejħa dan Twitters STUDENTI, li
hija ftit stramba, but-- u mazz aktar oqsma.
>> Stajt bdew b'mod effettiv kopja u paste hawn.
U dan se jikber pretty dens pretty malajr, right?
Ma Ikun sbieħ jekk kien hemm fid-dinja struttura data magħrufa
mhux bħala int jew string, imma xi ħaġa livell ogħla, l-estrazzjoni, hekk
biex jitkellmu, magħrufa bħala student?
C ma jiġu mal built-in funzjonalità għall-istudenti,
imma dak jekk jien ridt li jagħtih din?
>> Ukoll, jirriżulta, jien ser tiftaħ fajl imsejjaħ structs.h hawn,
u inti tista 'tagħmel eżattament dan.
U aħna qed tmur biex tibda tagħmel dan issa.
U taħtha l-hood tal Set Tliet P, inti stajt diġà qed tagħmel dan issa.
M'hemm l-ebda ħaġa bħal g rect jew a g ovali fil-lingwa ta 'programmar C.
>> Folks fil Stanford implimentati dawk tipi ta 'data bl-użu dan l-approċċ hawnhekk,
tiddikjara data ġdida tagħhom stess tipi jużaw keyword ġdida
imsejħa Struct u ieħor wieħed imsejjaħ typedef.
U fil-fatt, anki jekk l-sintassi jistenna ftit differenti minn għalf
Rajna qabel, fl prinċipju, huwa super sempliċi.
>> Dan ifisser biss "jiddefinixxi tip."
Li għaddej biex tkun istruttura, u struttura
huwa biss bħal kontenitur għal affarijiet multipli.
U li l-istruttura li qed jiġri li jkollhom string imsejjaħ isem,
u string imsejjaħ house.
U ejja sejħa, biss għall-konvenjenza, dan l-istudent kollu struttura tad-data.
>> Allura l-mument ikollok biex l-virgola, inti għandek issa
maħluqa data tiegħek stess tip imsejħa student
li issa stands flimkien int, u float, u char, u string,
u g rect, u g ovali, u kull numru ta 'affarijiet oħra nies ivvintat.
>> Allura x'hemm utli dwar dan issa huwa li jekk immur lura
li Struct 0 u jintemm dan implimentazzjoni, li I kiteb
bil-quddiem hawnhekk, avviż li kollha tal-messiness inevitabbli li
kienet waslet biex tibda jiġri bħala I miżjuda numri tat-telefon u twitters u kollha
dawn l-affarijiet oħra definizzjoni ta 'student,
issa huwa konċiż jitgeżwer bħala wieħed biss firxa ta 'studenti.
>> U kull wieħed minn dawk l-istudenti issa għandha affarijiet multipli ġewwa ta 'dan.
Allura li biss tħalli mistoqsija waħda.
Kif tista 'tikseb fil-isem, u l-dar, u l-ID,
u kwalunkwe ħaġa oħra huwa ġewwa tal-istudent?
Super sempliċi, kif ukoll.
Sintassi New, iżda idea sempliċi.
>> Inti sempliċiment indiċi fil-firxa, kif għamilna aħħar ġimgħa u dan.
U x'hemm b'mod ċar l- biċċa ġdida ta 'sintassi?
Just., Li tfisser "go ġewwa l- istruttura u x-qasam msejħa
isem, jiksbu l-qasam imsejħa dar, jiksbu l-qasam imsejħa istudent. "
>> Għalhekk fl Set Tliet P, jekk int għadhom jaħdmu fuq li,
u folks aktar għadhom huma, jirrealizzaw li kif inti
tibda tuża affarijiet simili g rects u G ovali
u affarijiet oħra li ma jidhirx li ġejjin minn Week Zero, One, jew tnejn,
jirrealizzaw li dan għaliex Stanford iddikjarata xi tipi ġodda ta 'dejta.
>> U fil-fatt, dan huwa eżattament dak li aħna ser do, kif ukoll, fir Set Erba P, meta
nibdew biex jittrattaw ma 'affarijiet bħal stampi, bitmaps, u aktar.
Allura li jinsab biss teaser u mudell mentali għal dak li huwa li ġejjin.
Issa, I procrastinated daqsxejn dalgħodu.
I kien tip ta 'kurjużi biex tara dak l-wallpaper Microsoft attwalment
Dehra illum.
U jirriżulta xi ħadd fl-2006 attwalment marret għal kważi preċiżament
l-istess post li r-ritratt fir-realtà dak qisu li dawn il-jiem.
Il-qasam issa huwa xi ftit overgrown.
>> Allura jitkellem issa 'immaġini, ejja iġibu lura Daven hawn
fuq l-iskrin u Nicholas, u biss infakkarkom
li jekk inti tixtieq li jingħaqdu magħna għall-ikel dan Ġimgħa, ras għal URL tas-soltu tagħna
hawn.
>> Għalhekk, fejn ma we leave off nhar it-Tnejn?
Aħna introdotti din il-problema, id-dritt?
Dan kien apparentement a korretta implimentazzjoni ta 'tpartit,
fejn inti tieħu żewġ ints, wieħed imsejjaħ, wieħed imsejjaħ b,
tpartit minnhom, bħad Laura għamlet hawn fuq il-palk mal-ħalib u l-ilma,
bl-użu ta temporanju varjabbli, jew tazza vojta,
sabiex inkunu tista 'tpoġġi b fil u fl b mingħajr ma tagħmel mess ta 'affarijiet.
We użati varjabbli.
Huwa sejjaħ temp.
>> Imma dak kien il-fundamentali problema ma dan il-kodiċi nhar it-Tnejn?
Liema kienet l-problema hawn?
Yeah.
>> UDJENZA: Huwa jieħu aktar spazju.
>> DAVID J. Malan: Jieħu up aktar ispazju, għaliex jien jużaw varjabbli,
u li OK.
Dan huwa veru, imma jien se ngħid li l-OK.
Huwa biss 32 bits fil-grand iskema ta 'affarijiet, hekk mhux big deal.
Ħsibijiet oħra?
UDJENZA: Huwa biss tpartit il-varjabbli lokalment.
DAVID J. Malan: Eżattament.
Hija biss tpartit-varjabbli lokalment.
Minħabba kwalunkwe ħin inti sejħa function-- meta kelli l-trejs mill Annenberg
aħħar darba, inti għandek prinċipali fuq il-qiegħ.
Hekk kif inti sejħa funzjoni msejħa tpartit, tpartit ma jiksbu x uy,
il-valuri oriġinali.
X'jagħmel get swap, ma aħna jsostnu?
Udjenza: Kopji.
DAVID J. Malan: Allura kopji tagħhom.
Allura jiġrilha wieħed u tnejn, jekk inti mfakkra l-eżempju mill-aħħar darba,
iżda kopja ta 'wieħed u tnejn li huma skambjati b'suċċess.
Iżda sfortunatament fl-aħħar, dawk il-valuri għadhom l-istess.
Allura nistgħu naraw dan mal tagħna ħabib ġdid, wieħed jittama GDB,
li inti jew il-TFS u l Ca jkollhom ġew gwida li inti lejn kif ġej.
>> Allura l-ebda irtirar swap jistenna like-- ejja jiftħu this-- tidher bħal dan.
Aħna initialized x għal wieħed, y għal tnejn.
Kieku mazz ta 'print f'S.
Iżda mbagħad, is-sejħa ċavetta hawn kien li tpartit, li
huwa eżattament l-kodiċi we biss raw mument ilu.
Liema hija korretta fl-ewwel t'għajn, iżda funzjonalment,
dan il-programm ma taħdimx, għaliex dan ma tpartit permanenti xuy.
>> Mela ejja ara dan, warm quick up hawn ma GDB, a ./noswap.
A mazz ta 'informazzjoni kbira li I ser teħles minn mal Kontroll L għal issa.
U issa, jien se imorru quddiem u run.
U sfortunatament, li ma kienet li utli.
Hija dam il-programm ġewwa ta 'dan programm imsejjaħ GDB, debugger,
iżda hija ma let me poke madwar.
>> Allura kif nista attwalment nieqaf eżekuzzjoni ġewwa dan il-programm?
Allura break.
UI jistgħu jiksru fuq kwalunkwe numru, wieħed, 10, 15 linja.
Imma I tista 'wkoll break simbolikament billi qal break prinċipali.
U li għaddej biex jistabbilixxu pawża punt, apparentement fil-linja 16 prinċipali.
U fejn huwa linja 16?
Ejja ħa mmorru sal-kodiċi u jitla 'sa noswap.
U fil-fatt, linja 16 hija l- ewwel ħafna fil-programm.
>> Allura issa, jekk I jimxi 'l quddiem u t-tip run dan iż-żmien, Ikteb, dan waqfa qasira.
Mela ejja poke madwar.
Stampa x-- għaliex huwa x żero?
U jinjora l-sinjal dollaru.
Li jinsab biss għal fancier użu tal-programm.
Għaliex hija x żero fil-mument?
Yeah.
>> UDJENZA: Huwa waqfa qasira dritt qabel linja 16, ma attwalment fuq il-linja 16.
DAVID J. Malan: Eżattament.
GDB, kontumaċja, kien waqfa qasira eżekuzzjoni eżatt qabel il-linja 16.
Għalhekk ma jkunx eżegwit, li ifisser x hija ta 'xi valur mhux magħruf.
U aħna ltqajna xxurtjati li huwa xi ħaġa nadif bħal żero.
Allura issa jekk I tip li jmiss, issa esegwiti 16.
Huwa stennija għalija li tesegwixxi 17.
Let me imorru quddiem u print x.
Huwa wieħed.
Let me imorru quddiem u y istampar.
X'għandi I tara issa?
>> UDJENZA: [inaudible]
>> DAVID J. Malan: A louder ftit.
>> UDJENZA: [inaudible]
DAVID J. Malan: Mhux pjuttost konsensus.
Allura iva, naraw xi valur żibel.
Issa, y hija 134514064 hemmhekk.
Ukoll, huwa biss xi valur żibel.
Programm My użi RAM għal skopijiet differenti.
Hemm funzjonijiet oħra.
Nies oħra kiteb ġewwa kompjuter tiegħi.
Allura dawk bits ġew użati għall- valuri oħra, u dak li jien jaraw
huwa l-fdalijiet ta 'xi użu minn qabel ta 'dak l-memorja.
>> Allura l-ebda big deal, għaliex malli tip I kif jmiss u mbagħad jistampaw y,
huwa initialized li il-valur li nixtieq.
Allura issa, ejja imorru quddiem ftit aktar mgħaġġel.
N għal li jmiss.
Ejja nagħmlu dan mill-ġdid.
Imma ma rridx li hit hawnhekk, għaliex jekk I
trid tara x'inhu għaddej ġewwa tal tpartit, x'inhu l-kmand?
>> UDJENZA: passi.
>> DAVID J. Malan: passi.
Allura dan passi me fi funzjoni, minflok fuqha.
U issa, huwa ftit cryptic onestament, iżda din hija biss
javżak me jien fil-linja 33 issa.
U ejja tagħmel dan mill-ġdid.
Temperatura Stampa.
Valur Żibel, negattiv dan iż-żmien, iżda li biss għadu valur żibel.
Mela ejja do jmiss, temperatura print.
Huwa initialized għal 1, li kien il-valur ta 'x, aka a.
>> Issa, fejn huma tagħna u X li ġejjin minn?
Ukoll, avviż fil prinċipali, aħna imsejħa dawn x valuri u y.
Aħna mbagħad għadda minnhom li tpartit kif ġej.
X daħal ewwel, y comma.
U mbagħad, swap tista jsejħulhom xuy.
Iżda għaċ-ċarezza, huwa ssejjaħ minnhom u b.
Iżda aub issa ser ikunu kopji ta 'xuy, rispettivament.
>> Mela jekk jien jmorru lura għall GDB, temperatura issa huwa wieħed u issa huwa wieħed.
Imma jekk I do jmiss u issa do print a, a diġà ġie mċaqalqa.
Il-ħalib ġie jitferra 'l-ewwel ħġieġ meraq tal-larinġ li, jew viċi versa.
>> U jekk jien tagħmel li jmiss darb'oħra, u issa jekk I jistampa bħala verifika sanità,
a huwa għadu tnejn, iżda b issa huwa wieħed.
Franchement, huwa għadu hemm.
I ma 'kura dak temperatura hu.
Imma malli I issa tip, ejja ngħidu, tkompli tmur lura, issa jien fl-aħħar
il-programm.
U sfortunatament, x hija xorta waħda u y għadu tnejn.
>> Allura dak li kien l-utilità ta 'GDB hemmhekk?
Hija ma għinni jiffissaw il-problema per se,
iżda nisperaw għinni jifhimha bit-twettiq
li iva, il-loġika tiegħi huwa dritt, iżda kodiċi tiegħi mhix finalment li
impatt permanenti.
Allura li hija problema aħna qed ser issa isolvu llum.
>> Imma ejja nikseb hemm permezz ta 'dan.
String huwa gidba.
Hija, wisq, mhux tip data li teżisti fl C. Huwa
kien sinonimu għal xi żmien għal xi ħaġa oħra,
u nistgħu jiżvelaw li kif ġej.
>> Let me imorru quddiem u tiftaħ programm imsejjaħ jqabblu-0.
U minflok tip dan wieħed out, aħna ser tibda biex jimxu permezz tal-kodiċi
I diġà kiteb, imma huwa biss ftit linji.
Allura dan huwa jqabblu-0.
U l-ewwel ħaġa li qed nagħmel huwa jkollna linja tat-test.
>> Imma liema avviż jien tagħmel għall-ewwel darba.
X'inhu differenti b'mod ċar dwar il-linja 21?
Attwalment, stenna minuta.
Dan huwa tnejn kopja.
Dan lanqas ma huwa l-programm dritt.
Kull dritt, twissija ISPOILER.
Kull dritt, hekk qatt f'moħħhom dik.
Dik hija l-risposta għal mistoqsija futur.
>> Hawnhekk huwa iqabblu-0, u jien dwar li tikseb linja ta 'test.
Tal Program ferm aktar sempliċi.
Allura dan huwa sempliċi.
Dan huwa simili One Week, Week Żewġ Jittieħed fil-mument. string s = GetString.
Issa, jien ngħid mill-ġdid stabbiliti hawn.
string t = GetString.
U mbagħad, l-aħħar ħaġa f'dan programm, kif ismu jissuġġerixxi,
huwa jien ser jippruvaw biex iqabblu lilhom.
>> Mela jekk i, l-ewwel string, ugwali = t, allura jien
se ngħid inti tip l-istess ħaġa.
Else, jien ser ngħid inti tip affarijiet differenti.
Mela ejja tiġbor u tmexxi dan il-programm.
Sabiex tagħmel jqabblu żero.
Jistenna tajba.
Ebda żbalji kumpilazzjoni.
>> Let me imorru quddiem issa u t-tip ./compare-0.
Let me imorru quddiem u jgħidu xi ħaġa : Daven u xi ħaġa: Rob.
U jien tip affarijiet differenti.
S'issa, hekk tajjeb.
Programm jidher li tkun korretta.
>> Imma ejja run mill-ġdid.
Say xi ħaġa: Gabe.
Kull dritt.
Maybe I hit l-ispazju bar jew xi ħaġa funky.
Ejja nagħmlu dan mill-ġdid.
Allura Zamyla.
Zamyla.
Affarijiet differenti.
Allura dak li qed jiġri?
>> Allura aħna għandna dawn iż-żewġ linji ta ' kodiċi, GetString qed jissejjaħ darbtejn.
U mbagħad, jien sempliċiment jippruvaw iqabblu s u t.
Imma dak li verament mbagħad qed jiġri?
Well, kalligrafija tiegħi waslet biex biċċier dan l-eżempju kemmxejn.
U ejja attwalment tarmi dan up hawn fuq, kif ukoll.
>> Allura għandna linja bħal string s = GetString.
Allura dak sempliċement l-ewwel linja interessanti minn dak il-programm.
Imma dak li dan il-ħin kien tmur fuq taħt il-barnuża?
Ukoll, fuq il-naħa tax-xellug ġenb huwa string, li hija xi tip ta 'varjabbli,
u huwa msejjaħ s.
So I taf li dan qed tuża memorja, jew RAM, fil-kompjuter tiegħi b'xi.
So I m ser astratt jiġbed li bħala kwadru.
32 bits, jirriżulta, iżda aktar fuq li fil-futur.
U mbagħad, x'inhu għaddej hawn?
>> Well, GetString ovvjament gets string mill-utent.
U GetString ltqajna Zamyla jew Gabe jew Daven.
Mela ejja jagħżlu l-ewwel ta 'dawk, li kien Daven.
Allura effettiv, liema GetString ltqajna me f'dik ewwel każ kien-D a-vs-e-n.
U mbagħad, x'iktar għamilt it tagħti me segretament?
UDJENZA: [inaudible]
DAVID J. Malan: Yeah, l / 0 jew null karattru.
Għalhekk effettivament tatni string.
Iżda aħna diġà jafu minn qabel jistenna li string huwa biss firxa
ta 'karattri, u huwa mitmum minn dan il-karattru sentinella speċjali, / 0.
>> Imma jekk dan huwa minnu u dan huwa kwadru,
dan huwa b'mod ċar rettangolu ħafna akbar.
U fil-fatt, dan huwa, I jsostnu, biss 32 bits.
U dan huwa b'mod ċar aktar minn 32 bits, għaliex dan huwa probabbilment
tmienja plus tmienja plus tmienja plus tmienja plus tmienja,
biss minħabba bytes fil ASCII.
Kif l-Heck aħna se tajbin Daven fis din il-kaxxa ftit hawn?
>> Ukoll, dak li huwa GetString fatt jagħmlu?
Ukoll, dan grid hawn tirrappreżenta memorja tal-kompjuter tiegħi jew RAM.
Mela ejja arbitrarju ngħid li jekk kull wieħed minn dawn jirrappreżenta byte,
allura nistgħu naħsbu ta 'kull byte bħala li għandhom l-indirizz,
bħal 33 Oxford Street, jew 34 Oxford Street, jew 35 Oxford Street.
>> Hekk biss bħal djar ikollhom indirizzi u l-bini jkollhom indirizzi,
so do bytes individwali ta ' memorja jkollhom indirizzi jew numri
li jidentifika unikament minnhom.
Issa, dan huwa arbitrarju.
Iżda biex jżommha sempliċi, jien ser użu hexadecimal biss b'konvenzjoni,
iżda l-0x mezzi xejn oħra minn "dan huwa hexadecimal."
u jien ser jsostnu li l- "D" jispiċċa fil Byte Wieħed fil-memorja.
>> I ltqajna xejn għaddejjin fil memorja, hekk Daven ltqajna l-ewwel post
fil Byte One.
Dan, imbagħad, se tkun 0x2.
Dan se 0x3.
Dan se jkun 0x4.
Dan se 0x5.
Dan se jkun 0x6.
>> Imma ladarba inti tibda taħseb dwar dak Nagħmlu l-kompjuter
taħt il-barnuża, inti tista 'tibda biex jiddeduċu
kif inti, xi snin ilu, kieku implimentaw C innifsu.
X'inhu GetString probabbilment returning-- minħabba li
iħoss bhalu mhuwiex jirritornaw Daven, per se,
għaliex hu żgur mhux se li jitwaħħal f'dan box-- ftit
Allura x'inhi GetString probabbilment jirritorna?
>> UDJENZA: [inaudible]
>> DAVID J. Malan: Il-lokazzjoni tal Daven.
U huwa qed tagħmel dan qatt peress One Week.
Dak GetString huwa verament jirritornaw mhix string, per se.
Din kienet waħda mir-jinsab ftit abjad.
Huwa jirritorna l-indirizz tal- string fil-memorja, l-indirizz uniku.
Daven jgħix fi 33 Oxford Street.
Iżda aktar konċiż, Gavin jgħix fil 0x1, Indirizz Numru Wieħed.
>> Allura dak gets tpoġġi f'dan kaxxa ftit imbagħad, tkun ċara,
huwa biss l-indirizz ta 'dak string.
Allura dan il-ħin, dan ilu għaddej.
Imma dak li din jagħti x'wieħed jifhem li issa hija li jekk kollox i għandha
huwa numru ġewwa ta 'dan, li l- biex int tieqaf, l-programmer,
milli jpoġġu kull numru fil kwalunkwe varjabbli u biss jaqbeż
għal dak blokki ta 'memorja?
U fil-fatt, aħna ser tara thats theddida ħin li jmiss.
>> Iżda għal issa, dan iħoss insuffiċjenti.
Jekk I say, nikseb me a string, inti tagħti me Daven.
Imma inti ma verament jagħtu me Daven.
Kulma għandek tagħti me huwa l-indirizz Daven tal.
Kif do I imbagħad jaf fiż-żgur fejn Daven jibda u ends--
l-istorja tal jkollna weird-- fejn Daven jibda u jispiċċa,
u mbagħad, l-li jmiss string fil-memorja jibda?
>> Ukoll, jekk int għoti me-bidu ta 'Daven,
essenzjalment, kif inkun naf fejn it-tmiem ta 'ismu hu?
Dan il-karattru null speċjali, li huwa aktar u aktar importanti issa
jekk kordi taħtha l- hood huma sempliċiment identifikati
unikament mill-post tagħhom fil-memorja.
Allura dan il-ħin, li l- dak li kien għaddej.
>> Allura meta nħarsu issa fil il-kodiċi hawn, jispjegaw
jekk inti l-bug fil-linja 26.
Għaliex hija Zamyla u Zamyla differenti?
Għaliex hija Gabe u Gabe differenti?
Yeah, fid-dahar.
>> UDJENZA: Huma għandhom indirizzi differenti.
>> DAVID J. Malan: Sempliċement minħabba huma għandhom indirizzi differenti.
Għaliex meta inti sejħa GetString darb'oħra, li jiena ser tagħmel malajr hawn,
jekk dan huwa l-tieni linja, spag t, kif għamilt f'dak il-programm,
ugwali sejħa oħra għall GetString.
Il-ħin li jmiss I call GetString, jien ser
biex tikseb blokki differenti ta 'memorja.
>> GetString huwa permess li titlob lill-operattiva
sistema għall-memorja aktar u aktar.
Huwa mhux se jerġa 'jintuża l-istess sitt bytes kull wieħed ħin.
Huwa ser tikseb ġdida blokki ta 'memorja, li
ifisser t hija se tikseb xi valur ta 'hawn fuq.
>> Allura meta I do i ugwali = t, int ma jitqabblu
D kontra dan u A kontra dan u V kontra dan.
Inti jqabbel dan kontra dan, li
franchement huwa useless-- pretty useful-- hija pjuttost inutli, minħabba li verament
jimpurtaha fejn il-kordi huma fil-memorja?
>> U fil-fatt, aħna ma.
U aħna mhux qed tmur biex jibdew partikolarment kura.
Biss sal-punt li jistgħu jinqalgħu bugs u theddid għas-sigurtà jistgħu jinqalgħu rieda
aħna attwalment jibdew għall-kura dwar dan.
Mela ejja tiffissa din il-problema.
Jirriżulta, inti tiffissa lilha super sempliċiment.
>> U ejja fil-fatt, qabel I juru li għal darb'oħra, dak li kieku
you do jekk fi klassi CS50, u inti kellhom jimplimentaw
paragun kontra żewġ kordi.
Inti b'mod ċar ma tistax sempliċement tuża s ugwali = t.
Iżda biss loġikament, kemm kieku inti tqabbel din is-sekwenza
kontra din is-sekwenza jużaw kodiċi C?
Yeah.
>> UDJENZA: Just jagħmlu l- għall loop [inaudible]
DAVID J. Malan: Perfect.
UDJENZA: [inaudible]
DAVID J. Malan: Yeah.
Just jużaw għal loop jew filwaqt loop jew ikun x'ikun.
Iżda biss tapplika l-idea bażika li jekk dan huwa blokki ta 'memorja jew firxa
u dan huwa, jtenni fuq kemm fl-istess ħin.
U biss jqabblu l-ittri.
>> U inti ħadthom ltqajna biex tkun ftit attenti, għaliex inti
ma jridux finger wieħed li jmorru passat l-oħra
għaliex string wieħed huwa itwal mill-oħra.
Allura int tmur jridu sabiex jikkontrolla għal dan il-valur speċjali fl-aħħar, null.
Imma huwa verament, fil- aħħar, sempliċi bħal dik.
U franchement, aħna m'għandekx bżonn biex jivvinta dik ir-rota.
Hawnhekk huwa Version Żewġ.
U dak li jien se ngħid hawnhekk hija li minflok jitqabblu s ugwali = t,
Jien minflok se ngħid, jekk string paragun ta 'virgola s t ugwali = 0.
Issa, dak li huwa string jqabblu?
>> Jirriżulta, huwa funzjoni li tiġi ma C, li l-iskop fil-ħajja
huwa li jitqabblu żewġ kordi.
U ħawwad jqabblu, jekk naqraw tagħha paġna bniedem jew dokumentazzjoni jew CS50
referenza, li se sempliċiment jgħidlek li ħawwad
jqabblu prospetti jew negattivi Numru jew numru pożittiv jew żero,
fejn zero ifisser li qed indaqs.
>> Hekk biss konġettura.
Liema jista jfisser jekk ħawwad prospetti jqabblu
valur negattiv jew il-valur pożittiv?
UDJENZA: Aktar minn jew inqas minn.
DAVID J. Malan: Yeah, akbar minn jew inqas minn.
Mela jekk int riedu biex issolvi kollu mazz ta 'kordi fil dictionary--
kif aħna se eventwalment tistabbilixxi l-road-- funzjoni perfetta għall-użu potenzjalment,
minħabba li għaddej biex tagħmel dan paragun ta 'kordi għalik, u għid
inti tagħmel jasal quddiem b, jew ma b come qabel alfabetikament.
Nistgħu nagħmlu eżattament dan.
>> U avviż Jien għamilt waħda oħra ħaġa f'dan l-eżempju.
X'iktar nbidel ogħla up f'dan funzjoni ewlenija?
Char *.
U dan huwa dak gidba abjad ieħor.
Dan il-ħin, meta inti stajt ġie kitba string,
aħna ġew segretament riskrittura string bħala char * hekk li clang attwalment
jifhem inti.
>> Fi kliem ieħor, fil CS50.h u kif aħna ser eventwalment tara,
għamilna sinonimu imsejjaħ string dak l-istess ħaġa bħat char *.
U għal issa, biss jafu li l- *, F'dan il-kuntest, għall-inqas,
ifisser-indirizz.
>> L-indirizz ta 'dak?
Ukoll, il-fatt li għidt char *, u mhux int * jew float *,
ifisser li char * hija l-indirizz ta 'char.
Allura din il-kaxxa ftit hawn, aka string, huwa verament ta 'tip char *,
li huwa sempliċiment mezz fancy ta 'tgħid, f'din il-kaxxa se jmorru indirizz.
U dak li ma l-indirizz jirreferu għall?
Apparentement, char.
>> Iżda nistgħu assolutament jkollhom int * u affarijiet oħra.
Iżda għal issa, char * huwa verament l-aktar sempliċi u waħda ta 'interess.
Allura din il-problema li qed jiġri jogħlew, għalkemm, għal darb'oħra.
>> Ejja ngħidu I jiftħu dan il-programm.
Ejja ara jekk issa nistgħu jbassru x'hemm ħażin ma 'dan il-kodiċi.
Allura f'dan il-programm, kopja-0, jien se jmorru 'l quddiem u għal darb'oħra sejħa
GetString u jaħżnu l-valur fl-i.
>> U mbagħad, għaliex jien tagħmel dan, biss bħala tfakkira minn ġimgħat passat?
Aħna ma jgħidu li GetString kultant prospetti null.
Xi jfisser jekk GetString prospetti null?
Xi ħaġa li marret ħażin.
Huwa probabbilment tfisser il-sekwenza huwa wisq big, out tal-kompjuter ta 'memorja.
Dan jiġri super, super, super rarament, iżda jista 'jiġri.
Aħna rridu li jikkontrolla għal dan, u li kollox li aħna qed tagħmel.
>> Għaliex aħna ser tara issa, jekk inti ma tibda iċċekkjar abitwalment għal affarijiet
bħal null, inti tista attwalment jibdew imorru
indirizzi fil-memorja li huma invalidi.
U int ser tibda inducing aktar u aktar difetti segmentazzjoni.
Jew fi Mac jew PC, just jikkawżaw kompjuter li hang
jew programm 'ffriżar, potenzjalment.
>> Allura issa, I talba f'kopja-0.c, li jien vais kopja dawn kordi permezz
tal-linja 28.
U mbagħad, jien ser li titlob fil-qiegħ
hawnhekk li jien ser jbiddel wieħed minnhom.
>> Allura avviż dan.
Jien ssejjaħ strlen tagħna ħabib antik.
U biss jispjegaw bl-Ingliż liema din il-linja 34 qed tagħmel?
X'tagħmel t bracket 0 jirrappreżentaw fuq ix-xellug.
Yeah.
>> UDJENZA: L-ewwel karattru ta 't?
DAVID J. Malan: L-ewwel karattru ta 't.
Li dan.
Ewwel karattru ta 't, nixtieq li jassenja l-verżjoni uppercase
ta 'l-ewwel karattru f't.
Allura dan huwa kapitalizzazzjoni l-ewwel ittra.
U mbagħad, il-ħafna aħħar ħaġa I do f'dan il-programm huwa nitlob hawn
l-oriġinali, i, u hawnhekk l-kopja, t.
>> Iżda bbażata fuq l-istorja aħna biss qal dwar liema kordi verament huma,
dak li hu linja 28 verament tagħmel, u dak li huwa
l-bug jirriżultaw għaddej li tkun fuq l-iskrin?
>> Allura l-ewwel, l-ewwel domanda, 28.
X'inhu = string t i verament tagħmel?
Jekk għandna fuq il-naħa tax-xellug ġenb hawn = string t s;
li tagħti me kaxxa waħda hawn u kaxxa waħda hawn.
U jissoponi dan l-indirizz huwa 0x, ejja ngħidu, 50 dan iż-żmien, b'mod arbitrarju.
X'jagħmel = string t s do taħt il-barnuża?
>> UDJENZA: [inaudible]
>> DAVID J. Malan: Taħżen l-memorja jindirizzaw hemmhekk, sabiex 0x50 tmur hemmhekk.
Allura jekk issa, I mur l-ewwel karattru f't u uppercase dan,
dak li jien effettivament jagħmlu biex i?
Ninsab verament tagħmel l-istess ħaġa, id-dritt?
Għaliex jekk 0x50-- Indirizz u biss, I m'għandhomx wisq spazju fuq il-bord hawn,
iżda jassumi li dan huwa 0x50 stabbiliti hawn, x'imkien fil-memorja tal-kompjuter tiegħi.
>> U jien, per eżempju, Gabe fl zghar hawn, bħal dan.
U għidt bracket t 0 gets kapitalizzat.
Ukoll, t parentesi 0 hija l-ewwel ittra f't.
Allura ftit g va jsiru G. big Iżda l-problema
huwa, dak ma s wkoll il-punt li?
>> UDJENZA: L-istess.
>> DAVID J. Malan: L-istess ħaġa eżatt.
Allura spjegazzjoni sempliċi forsi, anki jekk il-sintassi hija ftit stramb.
Mela ejja tagħmel dan.
Make-kopja 0 u mbagħad ./copy-0.
Say xi ħaġa: Gabe.
U sfortunatament, it-tnejn minnhom issa ġew kapitalizzat,
iżda għal dak sottostanti raġuni li aħna qed sempliċiment
issa jittrattaw indirizzi.
>> Allura kif nistgħu jibdew address-- no pun intended--
kif nistgħu tibda tindirizza din il-problema partikolari?
Ukoll, fil-copy1.c, affarijiet sejrin biex tikseb ftit aktar kumplikata.
Imma nixtieq tippretendi Soluzzjoni kunċettwalment sempliċi.
>> Allura diffiċli biex jiksbu ewwel daqqa t'għajn.
Mhux se tkun faċli għall-ewwel ħin inti tip out, forsi,
iżda jekk il-problema hija li sempliċiment tagħmel = t i biss
kopji-indirizz, liema, ġdid jekk I tista 'pick fuqek,
se tkun is-soluzzjoni għal fatt ikkupjar string?
>> UDJENZA: Aħna ser probabbilment tuża loop darb'oħra.
>> DAVID J. Malan: Yeah.
Allura aħna qed tmur biex bżonn loop darb'oħra.
U għaliex jekk aħna tixtieq li kopja string s fis string ieħor,
aħna probabbilment tixtieq li tagħmel dan karattru mill-karattru.
Iżda l-problema hija, jekk dan huwa oriġinarjament s,
issa għandna bżonn biex tibda espliċitu allokazzjoni memorja għal t.
>> Fi kliem ieħor, ejja tiġbed dan għall-aħħar darba.
Jekk dan huwa string s = GetString.
U ejja tpoġġi dan up here, kif ukoll.
Dan huwa GetString.
U mbagħad, l-istampa għal xi ħaġa bħal dik se tkun bħal qabel,
g-a-b e / 0.
Li jistenna ftit xi ħaġa bħal din.
U s għalhekk, nagħmlu sejħa dan 0x50, u li għaddej biex tkun 51, 52.
>> Allura dan huwa 0x50.
U mbagħad, I do string t.
Fil-memorja, li jinsab biss se tagħti me ftit kwadru bħal dan.
Allura x'inhu l-pass ewlieni issa?
Jekk I tixtieq li kopja s fis t, liema vojt għandna bżonn biex timla hawn?
Jew dak li għandna bżonn li do fuq livell għoli?
Yeah?
Xi ħadd?
Yeah.
>> UDJENZA: Għandna bżonn li [inaudible].
DAVID J. Malan: Yeah, aħna bżonn timla dan il-vojt.
I ma tista 'kopja u mbagħad kapitalizzazzjoni isem Gabe tal
sal I titlob lill-sistema operattiva għall chunk ieħor ta 'memorja
li l-inqas kemm kbar kif l-oriġinali.
Allura li tħalli us bil-kwistjoni.
>> Kif nista titlob lill-sistema operattiva ma biss għal Pointer ftit sempliċi
kif din tissejjaħ, ta indirizz, l-Pointer ma
għal ftit kaxxa sempliċi bħal din tissejjaħ string?
Kif nista titlob lill-operattiva sistema għal blokki kbar ta 'memorja?
S'issa, stajt biss gotten li back indirettament billi ċċempel GetString.
Allura kif huwa GetString anki jkollna memorja tiegħu?
>> Ukoll, jirriżulta li hemm din il-funzjoni oħra hawn
li aħna issa ser tibda tuża.
Issa, dan jistenna than-- b'mod aktar cryptic u jiena l-unika waħda li tista 'tara it--
din il-linja jistenna b'mod aktar cryptic allura għandu fl-ewwel daqqa t'għajn.
Imma ejja tease l barra.
>> Fuq in-naħa tax-xellug, I jkollhom char * t.
Allura bl-Ingliż, ejja nibdew biex jifformulaw sentenzi xierqa fil jargon tekniku.
Allura dan huwa allokazzjoni ta ' varjabbli ta 'char tip * t imsejħa.
Issa, dak li verament ma jfisser?
>> Ukoll, dan ifisser, dak li jien ser biex tistabbilixxi dan il-varjabbli imsejħa t?
An-indirizz ta 'char.
Allura li jinsab biss l-aktar sempliċi, aktar mod raġonevoli
jiddeskrivi in-naħa tax-xellug.
Allura li toħloq din il-kaxxa hawn biss.
Allura l-naħa tal-lemin, preżumibbilment, huwa għaddej
li jalloka li akbar blokki ta 'memorja kif?
Mela ejja tease dan apparti.
>> Huwa enormi fl-ewwel daqqa t'għajn, imma x'inhu għaddej ġewwa hawn?
L-ewwel, hemm malloc, li hija apparentement ħabib ġdid tagħna,
"Memorja jalloka."
Allura dan huwa l-argument qed ikunu mgħoddija fis dan, dan huwa argument pretty big.
Mela ejja tease dan apparti.
>> strlen ta 'i, naturalment, jirrappreżenta the--
UDJENZA: In-numru ta 'karattri.
DAVID J. Malan: Biss il- numru ta 'karattri fit s.
Allura l-tul ta 'i, il-string oriġinali.
Allura-G a-b-e.
Allura huwa probabbilment erba f'dan il-każ.
Why am I tagħmel +1 wara ssejjaħ strlen ta s?
UDJENZA: [inaudible]
DAVID J. Malan: Għal dak karattru speċjali null.
Jekk inti titlob lili x'inhu l-tul ta ' Isem Gabe, jiena vais ngħid erbgħa.
Taht il-barnuża, għalkemm, I bżonn li ħames byte għall-karattru null.
Allura hu għalhekk li jien tagħmel l +1.
>> Issa biss fil-każ li inti taħdem dan programm fuq il-kompjuter minbarra, say,
l-appliance CS50, fejn id-daqs ta 'char
jista 'jkun differenti minn computer-- tiegħi stess
Jirriżulta li nista 'sejħa dan sizeof operatur, staqsi il-kompjuter,
x'inhu d-daqs ta ' char fuq dan il-kompjuter?
>> U billi timmultiplika ħamsa f'dan pereżempju bl-daqs ta 'char, li
fuq kompjuters aktar se jkun biss wieħed, malloc
se talloka għalija dan big blokki ta 'memorja fuq hawn fuq il-lemin.
U li għaddej biex return-- huwa function-- hekk huwa
ser jirritornaw għall lili dak?
UDJENZA: L-indirizz?
DAVID J. Malan: L-indirizz ta 'dak?
UDJENZA: Tal il-memorja huwa allokat?
DAVID J. Malan: Tal il memorja huwa allokat.
So I jkollhom l-ebda idea, franchement, fejn dan ikun ser jispiċċaw.
Jien ser tipproponi li li għaddej biex jispiċċaw fil 0x88.
Kompletament arbitrarja, iżda x'imkien ieħor għajr 0x50,
għaliex is-sistema operattiva, liema Windows u Mac OS tagħmel għalija, huwa
kun żgur li huwa jagħti me biċċiet differenti ta 'RAM.
>> Allura dan huwa l-valur, fejn dan blokki ta 'memorja tista' tispiċċa.
Allura dan huwa dak jispiċċa fil hawn, 0x88.
Allura issa b'mod ċar, I jistgħu jifhmu li dan mhuwiex l-istess bħal dan,
għaliex qed tipponta lejn biċċiet differenti ta 'memorja.
Mela jekk jien issa fil-fatt tixtieq li kopja din fil, ejja do soluzzjoni proposta tiegħek.
>> Ejja biss jmorru, joħolqu għal loop, u jagħmlu bracket t i gets bracket s i.
Minħabba issa I jistgħu jużaw dan-array like notazzjoni,
għaliex anki jekk malloc ħafna ġeneriku jalloka me memorja,
memorja huwa bytes biss kontigwi.
Byte, byte, byte, lura lura biex lura.
>> I jista 'żgur bħala programmer titratta dan bħala firxa, li
tfisser I jistgħu jużaw dan finalment familjari notazzjoni tal biss xi parentesi kwadri.
>> So let me nieqaf hemm, għaliex dan huwa ħafna kollha f'daqqa, anke
għalkemm l-idea bażika li terġa hija li string, dan il-ħin,
mhix tip ta 'dejta ġdid per se.
Huwa biss hekk imsejħa pointer, indirizz ta 'karattru,
li ifisser biss huwa numru li permezz tal-konvenzjoni tal-bniedem
għandna t-tendenza li tikteb bħala 0x xi ħaġa.
>> Iżda huwa biss numru, bħal 33 Oxford Street,
li jiġri li jkun l- Indirizz bini CS tal.
Kwalunkwe mistoqsijiet dwar dawn id-dettalji?
Yeah?
>> UDJENZA: Għalfejn nagħmlu check għal t ugwali għal nulla?
>> DAVID J. Malan: Għalfejn nagħmlu iċċekkja għal t ugwali għal nulla?
Jekk naqraw il-documentation-- question-- kbira għall malloc,
li għaddej biex ngħid fil-istampar multa, kultant malloc tista 'ritorn null,
bħad GetString.
U fil-fatt, GetString prospetti nulli jekk, imbagħad, malloc prospetti nulli,
minħabba GetString użi malloc.
>> U li jista 'jiġri jekk il-OS, Mac OS, Windows, ikun x'ikun, huwa sempliċiment
out ta 'memorja għalik.
Allura dan huwa dak li ġara hemmhekk.
>> U let me jiżvelaw ħaġa waħda oħra li jistgħu biss blow moħħok
jew kompletament tkun wisq fuq il-linja.
Imma let me pull up il- istess għall loop għall-ikkupjar,
li mument ilu, recall kien dan. bracket t i gets bracket s i.
>> Nizza u faċli għall-utent.
Iħoss bħal Week Żewġ darb'oħra.
Iżda din il-verżjoni attwalment jista 'jkun miktuba mill-ġdid bħala dan, li tidher cryptic.
Huwa ta 'teknika msejħa pointer aritmetika, indirizz aritmetika.
Iżda għaliex ma dan ix-xogħol?
>> Issa annoyingly, il- awturi ta 'C iddeċidew li jużaw
is-simbolu * għal skopijiet differenti.
Rajna hija użat darba diġà, char *, li tfisser "tagħti me a varjabbli
li għaddej biex fihom l-indirizz ta 'char. "
* Allura char f'dak il-kuntest ifisser "tagħti me a varjabbli."
>> Sfortunatament, jekk inti tuża l-* mingħajr kelma quddiem ta 'dan, bħal char,
huwa issa msejjaħ l- operatur dereference.
U aħna ser tara aktar ta 'dan qabel twil.
Iżda dan ifisser biss "jmorru hemm."
Huwa simili qal, jekk xi ħadd mogħtija lili fuq biċċa karta "33 Oxford Street,"
jekk I do "* Oxford Street 33," dan ifisser "Go fl-triq għall-bini CS."
>> Allura * ifisser biss jmorru hemm jekk hemm l-ebda kelma quddiem ta 'dan.
Allura dak li huwa t, li jkun ċar?
t huwa l-indirizz tal-blokki ta ' memorja li ngħatat lura lili.
i huwa l-indirizz ta 'dak li, biex tkun ċara, fl-eżempju aħna kont qed tiddiskuti,
tal Gabe zghar?
i huwa l-indirizz of--
UDJENZA: L-sekwenza.
DAVID J. Malan: Of isem oriġinali Gabe tal.
Allura huwa l-indirizz ta ' din blokki ta 'memorja.
Mela jekk jien ngħid t + I-- i, avviż, huwa biss ħabib antik tagħna.
Huwa biss varjabbli indiċi thats mtennija minn żero fuq up
għat-tul tas-sekwenza s.
Allura li għaddej biex tkun żero, allura wieħed, imbagħad tnejn, imbagħad tlieta, imbagħad erba.
Mela ejja jimmuntaw dawn ġdida Biċċiet puzzle scratch simili, jekk inti se,
anki jekk, għal darb'oħra, il-sintassi huwa ferm aktar arcane minn Scratch.
Allura t huwa indirizz + i huwa ser jagħti me
numru, minħabba li dawn huma kollha numri li aħna kont qed tpinġija bħala hex.
Iżda dawn qed biss numri.
>> Mela jekk l-indirizz ta 't għidna kien 0x88, x'hemm 0x88 plus żero.
Anke jekk int mhux komdu ma hex għadhom, tieħu raden.
>> UDJENZA: L-oriġinal.
>> DAVID J. Malan: Still 0x88.
Allura dak li ma * 0x88 jfisser?
Dan ifisser, "jmorru hemm" li tfisser effettivament, "iqiegħed subgħajh tiegħek hawn."
U issa fuq in-naħa tal-lemin tal din l-espressjoni, * u mbagħad fl parens,
s + i jfisser i, li hija l- jindirizzaw up here tal-g ftit.
i + 0 huwa, ovvjament, i, ikun x'ikun i huwa.
>> Allura issa, huwa * i, li bħad * 33 Oxford Street ifisser mur l-indirizz
s.
Allura hawnhekk dan saba, lemin.
Allura dak am I se kopja fil dak?
Il-ħaġa dwar id-dritt, li hija Gabe, ftit g hawn, fis hawn.
>> U għalhekk l-effett ta 'dik ewwel iterazzjoni tal-linja,
kif inti propost, anki jekk jidher crazy aktar ikkumplikat minn kull ħaġa
konna rajna qabel, huwa sempliċiment tgħid mur hawn u kopja dan il-karattru hawnhekk.
Huwa giving you mappa biex żewġ postijiet.
>> U aħna ser tara ħafna aktar ta 'dan.
Iżda għal issa, it-tama hi biss li jintroduċu xi wħud minn dawn l-ideat bażiċi.
U fil-fatt, ejja nħarsu lejn programm finali wieħed hawn,
u allura l-claymation imwiegħed, li se tagħmel dak kollu dritt.
Kull dritt.
So let me tiftaħ up-- hemm immorru.
Mela ejja me-- aħna ser terga 'lura li din l-istampa qabel twil.
Let me jiftħu dan l-eżempju finali hawn.
>> Allura hawnhekk huwa super, super programm li accomplishes
xejn fil-ħajja li ma l-segwenti.
Hija l-ewwel jiddikjara żewġ varjabbli, x u y, li mhumiex numri dan iż-żmien,
per se.
Huma qed mhux interi, per se.
Huma apparentament int *.
Allura biss xi ħadd, xi jfisser jekk tip ta 'data tiegħek, varjabbli tiegħek,
huwa ta 'int tip * star?
Dik hija l-indirizz ta 'int.
>> So I stajt ebda idea fejn hu għadu.
Dan ifisser biss "mressaq, eventwalment, l-indirizz ta 'int hawn. "
0x50, 0x88, kull fejn hija fil- memorja, l-indirizz huwa għaddej hemmhekk.
U dan huwa dak y hija ser ikunu, kif ukoll.
>> Jekk I issa ngħid x = malloc (sizeof (int)), dan huwa mod fancy ta 'tgħid,
ħej sistema operattiva, permezz malloc, tagħti me memorja biżżejjed għall-daqs
ta 'int, li huwa probabbilment ser ikunu ta '32 bits jew erba bytes.
>> Allura dak li ma malloc ritorn?
Malloc jirritorna indirizz.
Allura x'inhu għaddej biex nikseb maħżuna fil x?
L-indirizz tal-blokki ta ' memorja, l-erba 'bytes, li malloc
biss sabu għalija billi tistaqsi is-sistema operattiva.
>> Issa sadanittant, linja erbgħa hawn, il-* x = 42.
Just biex tkun ċara, x'inhu għaddej hemm isfel?
Fuq in-naħa tax-xellug, * x.
li simili * 33 Oxford Street.
Allura * x ifisser liema?
>> UDJENZA: Mur.
>> DAVID J. Malan: Mur f'dak l-indirizz.
Kull fejn dik blokki ta ' memorja huwa, mur għaliha.
U tpoġġi dak hemm, ovvjament?
UDJENZA: 42.
DAVID J. Malan: 42.
Kull dritt, y *, l-istess idea.
Mur fl-indirizz y.
Poġġi n-numru 13 hemmhekk, imma dak li hu y fil-mument?
UDJENZA: M'hemm l-ebda memorja għall y.
DAVID J. Malan: M'hemm l-ebda memorja għall y.
Allura dak li ma y probabbilment fihom, kif aħna kont qed tgħid?
>> UDJENZA: Żibel.
>> DAVID J. Malan: Xi valur żibel.
Issa, il-valur żibel għadu numru.
Hija xorta jistgħu jiġu interpretati indirizz.
Huwa bħallikieku xi ħadd mħarrbxa xi ħaġa isfel,
u I interpretawh b'mod inkorrett fis-sens xi bini fl-triq.
U jekk inti biss tipprova li jmorru fis xi bini inti ma proprji,
jew xi blokki ta 'memorja int ma Kien mogħti, affarijiet ħżiena jista 'jiġri.
Computer jista crash, jew xi oħra imġieba mhux determinat jista 'jiġri.
>> Allura l-intro, imbagħad, li Binky hija din.
I still remember, 20 xi snin bil-fard aktar tard,
fejn I kien meta I finalment mifhum pointers.
>> Liema jiġifieri, jekk inti leave hawn fi tliet minuti
u think I ma jifhmu pointers, tirrealizza
Għandi mfakkar għall-20 snin għall xi raġuni crazy
meta u għaliex finalment għereq fil, seduta bit-tagħlim tiegħi
sħabi, Nishat Mehta fil- dahar tal Eliot Dining Hall.
Issa, stajt mfakkar dan minħabba li dan kien
waħda mit-temi I, fil partikolari, tħabtu ma.
U allura, finalment għafast, bħal I DARE jgħidu ħafna ta 'suġġetti
eventwalment se.
U issa, biex jagħmlu li jħossu li l- kuntenti u l-aktar konvinċenti,
ejja tagħti ħarsa finali tagħna aħħar tliet minuti hawn fuq Binky,
minn ħabib tagħna, Nick Parlante minn Stanford.
>> [Daqq ta 'video]
>> -Hey, Binky.
Wake up!
Wasal iż-żmien għall-gost pointer.
>> Liema-li?
Tgħallem dwar pointers?
Oh, Goody!
>> -Well, Biex tibda, I raden aħna qed ser jeħtieġu koppja pointers.
>> OK.
Dan il-kodiċi jalloka żewġ pointers, li jista 'jiġbed l interi.
OK.
Well, I tara l-żewġ pointers, iżda dawn ma jidhirx li jkun tipponta lejn xi ħaġa.
>> -li-Dritt.
Inizjalment, pointers ma jurux xejn.
L-affarijiet dawn jenfasizzaw huma msejħa pointees, u meta dawn jitwaqqfu l
pass separat.
>> -OH, Id-dritt, id-dritt.
Jien kont naf li.
Il pointees huma separati.
Er, hekk kif taħseb li jallokaw pointee?
>> OK.
Ukoll, dan il-kodiċi jalloka a pointee ġdid numru sħiħ,
u dan parti tistabbilixxi x-punt lilha.
>> -Hey, Li jistenna aħjar.
Sabiex tagħmel dan jagħmlu xi ħaġa.
>> OK.
I ser dereference il-pointer x biex jaħżen numru 42 fis pointee tagħha.
Għal dan trick, I bzonn tiegħi Magic Wand ta Dereferencing.
>> -Your Magic Wand ta Dereferencing?
That-- li l-kbir.
>> -Dan Huwa dak li l-kodiċi Dehra.
I ser biss twaqqaf in-numru, u [POP]
>> -Hey, Ħarsa.
Hemm din tmur.
>> -Allura Tagħmel dereference fuq x ġej il-vleġġa għall-aċċess pointee tagħha.
F'dan il-każ, maħżen 42 fil hemmhekk.
Hey ipprova uża dan biex jaħżnu l-għadd 13 permezz tal-pointer oħra, y.
>> OK.
I ser biss jmorru fuq hawn biex y, u jiksbu l-numru 13 set up.
U mbagħad, jieħdu l-Wand ta Dereferencing u biss [BUZZ]
>> -OH!
>> -OH, Ħej!
Li ma ħadmux.
Say, Binky, ma naħsibx dereferencing y hija idea tajba, għaliex inti taf,
twaqqif tal-pointee huwa pass separat.
U jien ma naħsibx li aħna qatt ma kien.
>> Punt -Good.
-Yeah.
Aħna allokat il-y pointer, iżda aħna qatt tistabbilixxi li jippuntaw lejn pointee.
>> -Very Attent.
-Hey, Qed tfittex tajba hemmhekk, Binky.
Inti tista 'tiffissa lilha hekk li l-punti y għall-istess pointee bħala x?
>> -Sure.
I ser tuża Magic Wand tiegħi ta 'Assenjament Pointer.
>> -Il Li għaddej biex tkun problema bħal qabel?
-Nru.
Dan ma tmissx il-pointees.
Hija biss bidliet pointer wieħed biex punt li l-istess ħaġa bħat ieħor.
>> -OH, Nara.
Issa punti Y-istess post bħall x.
Allura stenna.
Issa, y hija ffissata.
Hija għandha pointee.
Allura inti tista 'tipprova l-Wand ta Dereferencing darb'oħra biex jibagħtu l-13 fuq.
>> -Uh, OK.
Hawnhekk tmur. [POP]
>> -Hey, Tħares lejn dak.
Issa dereferencing xogħlijiet fuq y.
U minħabba l-pointers huma qsim li pointee wieħed, tnejn tara l-13.
-Yeah.
Qsim, ikun x'ikun.
Allura aħna se jaqilbu postijiet issa?
>> Oh, tħares.
We qed barra ta 'żmien.
>> -But--
>> Just ftakar-tliet regoli pointer.
Numru Wieħed, l-istruttura bażika huwa li inti għandek pointer,
u punti fuq għal pointee.
Iżda l-pointer u pointee huma separati,
u l-iżball komuni huwa li jitwaqqaf pointer,
iżda li tinsa biex tagħtiha pointee.
>> Numru Tnejn, dereferencing pointer jibda fil-pointer
u ssegwi vleġġa tiegħu fuq għall-aċċess pointee tagħha.
Kif nafu lkoll, dan jaħdem biss jekk ikun hemm
a pointee, liema tip ta ' gets lura għall-numru wieħed regola.
>> Numru Tliet, pointer assenjazzjoni jieħu pointer waħda
u bidliet li punt li l- istess pointee bħala pointer ieħor.
Allura wara l-assenjazzjoni, iż-żewġ pointers
se jindika l-istess pointee.
Kultant, li sejjaħ qsim.
U li kollox hemm għaliha, verament.
Bye bye issa.
[END daqq ta 'video]
DAVID J. Malan: Li lilha għall CS50.
Aħna se tara int ġimgħa d-dieħla.