>> [Musika jotzen]
DAVID J. MALAN: Ondo da.
Hau CS50 da, eta hau Astea Lau amaiera da.
Gaur gaietako bat eta da Kernet digitalen duten,
informazioa berreskuratzeko artea.
Eta hain zuzen ere, nahiz eta Oraindik Erdi egina duzun
eskuineko Bakearen orain hiru eta Breakout, datorren astean,
foku izango da hain zuzen, domeinu honetan.
>> Beraz, lanpostu coolest bat dut inoiz Izan graduondoko eskola batean itzuli zen,
tokiko egin izan dut lan Middlesex County District Attorney
bulegoan, Kernet egiten dabiltza.
Beraz, funtsean, Massachusetts du Estatuko Polizia, behin,
denean kasu lantzen ari iba disko gogorrak bezalako gauzak ekarri
eta disketeak eta memoria txartelak eta antzekoak.
Eta horien esku lukete ni eta nire Tutore izateko,
eta gure helburua frogak aurkitzea zen, ez zen edozein, hedabide horien inguruan bada.
Orain, ikusi dute agian glimpses Kernet mundu honetan
komunikabideetan, telebista eta filmak.
Baina lana, izan nuen eta daresay mundu horretan,
ez da nahiko atsegin duzu ikusi nahi.
Ikus dezagun begirada bat zer seguruenik ikusi duzun.
[Bideo-erreprodukzioa]
-Ados.
Orain, dezagun begirada bat ona.
>> [Musika jotzen]
>> -Hold Da.
Exekutatu back duten.
>> -Wait Minutu bat.
Joan eskubidea.
Itzulpenak.
Izoztu direla.
-Pantaila -Full.
>> -Ados.
Izoztu direla.
-Tighten Sortu horretan, ahal izango duzu?
>> -Vector Ere horretan atzeko gurpila by guy.
>> Hementxe Leku honetako ere -Zoom.
>> Ekipamendu egokia aldera, irudia handitu egin daiteke, eta zorroztu.
>> -Zer da hori?
>> -It Hobekuntza-programa bat da.
>> -Can Garbituz duen edozein?
>> Ez naiz ez dakit.
Dezagun hobetu da.
>> -Enhance Artikulua A6.
Xehetasun hobetu dut, and--
Uste dut, ez da nahikoa hobetzeko.
Askatu nire pantailan.
>> -I Bere begi isla indartu.
Ekarri ditzagun exekutatu honen bidez Bideo hobekuntza.
>> -Edgar, Hau ezin hobetu duzu?
>> -Hang On.
>> -I've Dira hausnarketa hori lantzen.
>> Itzulpenak en norbaiten hausnarketa.
>> -Reflection.
Itzulpenak gizonaren aurpegia isla da.
>> Hausnarketa-The!
Itzulpenak hausnarketa bat da.
-Zoom Ispilu gainean.
Hausnarketa bat ikusi ahal izango duzu.
>> -Can Irudian hobetzeko hemendik aurrera?
-Can Sustatuko duzu?
-Can Hau indartzea dugu?
-Can Sustatuko duzu?
Bigarren batean -Hold.
Hobetu dut.
-Zoom Batean atean.
-Times 10.
-Zoom.
In -Move.
-Informazio.
-Wait, Gelditu.
Geldialdia.
-Pause Da.
-Rotate Iezaguzu 75 gradu bertikalen inguruan, mesedez.
>> Geldialdia.
Joan atzera zatia atea buruz berriro.
>> Got irudia Enhancer bat bitmap daiteke?
>> -Agian Pradeep Singh erabili ahal izango dugu Metodo leihoak sartzen ikusi.
>> Software-The artearen egoera da.
>> Autobalorearen da laguntasuna off.
>> Eskubidea ditugu ikusgai algoritmoak konbinazio
>> Amorratua en hartu argiztatzea Hurrengo mailara algoritmoak,
eta horiek baliatzen ditut argazki hau hobetzeko.
>> On -Lock eta z ardatzean handitzeko.
>> -Enhance.
Hobetzeko.
-Enhance.
-Freeze Eta hobetzeko.
[END bideo-erreprodukzioa]
DAVID J. MALAN: Beraz, ez dira horiek hitz guztiak, baina ez ziren
Esaldi batean, behar bezala erabili.
Eta, hain zuzen, etorkizunean, edozein unetan, mesedez, norbaitek hitza esaten entzuterakoan,
"Hobetu", algara pixka bat.
Denean hobetzeko saiatu zarelako, esate baterako, hau da, zer gertatzen den.
>> Hortaz, hona hemen bat gorgeous argazki bat.
Hau CS50 Daven egin da.
Eta eman dezagun nahi dugun pilatzen dira bere begi Twinkle oinarrituta,
edo isla zela argi txarra lasaia
segurtasun kamerarekin ateratako argazkia.
Hau da, zer gertatzen da zoom irudi bat duen
kopuru mugatu batean baino ez ditu horri lotutako bit.
>> Hau da, zer lortu nahi duzun.
Eta, hain zuzen, Daven begian da baina lau, agian sei pixel
osatzen duten zehazki zer ez glimmering zen.
Beraz Arazoa Ezarri Lau azken finean dute Mundu honetan arakatzeko duzu, bereziki
Zerbait izaeraren arabera deitzen dugun fitxategia i / o, non
i / o fancy modu bat besterik ez da sarrera eta irteera esanez.
>> Beraz, beraz, orain arte, interakzio guztia ordenagailu bat dugu izan
dute neurri handi batean, zure teklatua eta pantaila,
baina ez da hain disko gogor batera askoz, edo direnak haratago fitxategien aurrezteko
zeuk idatzi.
Zure programei beraz, orain arte izan ez dira sortzen, eta aurrezteko,
eta beren fitxategiak eguneratzeko.
>> Beno, zer da irudi bat?
Beno, JPEG baten antzeko zerbait.
Hau irudi bat agian da dute edo Facebook-era igo,
edo ikusi web buruzko edozein tokitan.
Izan ere, argazki besterik ez dugu Daven of zerra JPEG bat izan zen.
Eta zer da interesgarria JPEGs bezalako fitxategiak buruzko
da dute ezagut daitezkeela, normalean, bit patroi jakin batzuen arabera.
>> Bestela esanda, zer dela JPEG bat bereizten GIF batetik
Word batetik PING batetik Dokumentu Excel fitxategi batetik?
Beno, besterik gabe, desberdina da bit ereduak.
Eta eredu desberdinak direnak dira normalean, fitxategi horiek hasieran.
>> Beraz, zure ordenagailuan Word bat irekitzen dituen doc, edo ordenagailua JPEG bat irekitzen du,
normalean itxura hartan fitxategiko hainbat lehenengo bit.
Eta eredu bat aitortzen bada, dio, oh, hau irudi bat da.
Let it bistaratzeko me erabiltzaileak grafiko gisa.
Edo, oh, hau Word doc itxura.
Let it erakutsi erabiltzaile saiakera bat bezala me.
>> Horrela, esate baterako, JPEGs, bihurtzen da, dira
nahiko sofistikatuak kanpaia azpian.
Baina lehen hiru byte gehien guztietan JPEG hiru zenbaki horiek hasteko.
Beraz byte zero, bat, eta bi dira, in gehien JPEG behin, 255, eta ondoren kopurua
216, ondoren 255 zenbakira.
>> Eta zer gai izango duzu Datorren astean egiten hasteko
benetan azpian poking fitxategiak kanpaia JPEGs bezala
eta bitmap fitxategiak bezala, eta ikusten zer da beti hor egon luze gisa
Ordenagailu bat erabiliz izan ditudan bezala.
>> Baina zer ez da normalean Zenbaki hamartar hau atsegin bezala idatzirik.
Informatikariak ez joera hamartar mintzatzen.
Ez dute benetan binary mintzatzen.
Normalean, nahi dugun Zenbakiak adierazteko,
benetan hamaseitarra erabiltzen dugu, Horrek gogora ekarri ahal izango duzu
, esan, Arazoa Ezarri One, desafioa
den beste sistema bat pentsatzen duzu.
>> Dugu, noski, gai arruntei hamartar, zero bederatzi bidez.
Binary buruz hitz egin dugu.
Eta ez dugu benetan askoz ere, hemen erabiltzeko
kanpo, zeren ordenagailuak erabiliko du.
Baina programatzaile oso will askotan, baina ez beti,
hamaseitarra erabili, besterik gabe esan nahi 16 zure alfabetoaren letrak izan duzu,
Bi edo 10 aurka.
>> Beraz, nola ez zenbatu handiagoa behar duzu hamaseitarrean bederatzi baino?
Duzu joan 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, besterik ez konbentzio.
Baina zer da gakoa, bakoitzak horien sinbolo bakar bat da.
Ez dago 10.
Ez dago 11, per se, bakoitza delako Zure digituen, besterik hamartarrean gustatzen
eta besterik bitar bezala, behar besterik Pertsonaia bakar bat, konbentzio izan.
>> Orduan hori alfabetoaren daukagun gure hamaseitarrean eskura.
Beraz, zer duzu bada itxura JPEG bat ziren idazteko lehen hiru horiek
Ez byte hamartar gisa baina, adibidez, hamaseitar bezala?
Eta zergatik hex da, nahiz eta guztiak baliagarriak?
>> Beno, begirada bat adibide bat.
Beraz, bada bit idatzi dut zenbaki hamartar hauek adierazten
hau apur bat herdoildu izan liteke orain aste batzuk atzera,
baina ezker bat eta Eskuineko bat nahiko erraza.
255 zenbaki ditugu handiena izan zen zortzi bit liteke.
Direnak izan zen.
Beraz, inork hori da mildly bakarrik interesgarri erdikoa da.
Eta zuk mota egin nahi den kanpo matematika, duela ondorioztatu beharko da, hain zuzen ere,
baten eredua dela eta zeroen suposatzen 216.
Hargatik zeintzuk besterik orain, horiek zuzenak dira.
Baina zergatik da hau interesgarria?
>> Beno, byte bat, jakina, zortzi bit.
Eta bihurtzen da hori uste baduzu byte bat, bi, lau bit zatiak bezala,
Hau atsegin.
Let me besterik espazio batzuk gehitu.
Beraz, aurretik, ondoren.
Besterik espazio zuri batzuk ditut gehitutako Bisualizazio mesedetan hemen.
Nola liteke orain adierazten dugu, esan, hamaseitarra bit quad bakoitzean,
lau bit multzo bakoitzean?
>> Beraz, adibidez, ezkerretik orain, 1111 ditugu bitarrean.
Zer zenbaki hori hamartarrean da, kanpo egiten duzun math bada?
Direnak leku daukazu, twos leku, the Fours leku eta eights lekua.
>> IKUSLEEN: 15.
DAVID J. MALAN: Da 15.
Beraz, egiten dugu zortzi gehi lau bada gehi bi gehi bat, 15 lortuko dugu.
Beraz, idatzi izan dut behera 15 azpitik 1111, baina puntu osoa hemen
da hamaseitarra, ez hamartarra izan.
Beraz ordez idazteaz 15, 1-5, Duten idazteko hex noa,
horrek atzera uste baduzu, baduzu zero f bidez, zer dago 15 izango da?
IKUSLEEN: f.
DAVID J. MALAN: Beraz, bere f bihurtzen da.
Eta hori lan dezakezu esanez, bai, bat da 10 bada, ondoren OK, f 15 da.
Beraz, hain zuzen ere, berridatzi ahal izan genuen Zenbaki f f gisa multzo horretan bertan.
Eta gero pixka bat egiten dugu math bada, ondorioztatu beharko dugu hori, eta d.
Zortzi nahiko erraza da, dugulako eights lekuan bat daukate.
Eta gero, pare bat gehiago f f-ren dugu.
>> Beraz, zein gizakiak joera konbentzio egin denean erabiltzen dute hamaseitar dute besterik ez da
idatzi hau apur bat gehiago succinctly, get zuri espazio hori gehiena kentzeko.
Eta besterik gabe, super argi izateko irakurle hori hamaseitarra da,
artean konbentzio simple gizakiak zero idazterakoan
x, horrek ez baitu beste esanahi no identifikatzailea entzunezko bat baino,
Hemen hex zenbaki bat dator.
>> Eta gero, bi digituak jarri duzu, f Kasu honetan, f, orduan d a, orduan f f.
Beraz, ipuin luze, hamaseitar besterik ez ohi
lagungarri izateko bakoitzak bere zenbakiak, zero f bidez, primeran lerroak
lau bit patroi batekin sortu.
>> Beraz, hurrengo hamaseitarra izan beharko duzu, zero F, behin eta berriro eginez,
primeran ematen dizu zortzi bit edo byte.
Beraz, horregatik ohi da conventionally erabilgarria izango.
Ez dago intelektual no Benetan hori baino haratago eduki,
bere benetako utility baino beste.
>> Orain JPEGs ez dira soilik fitxategi formatu grafiko da.
Gogoratzen ez direla fitxategi hau bezalako munduan,
gutxienez, urte batzuk atzera.
>> Beraz, hau izan zen benetan Windows XP instalatuta
Mundu osoko PC milioika on.
Eta honek bitmap fitxategi bat, BMP zen.
Eta bitmap fitxategi bat, ikusiko duzu hurrengo moduan astean, besterik puntu eredu bat esan nahi du,
pixel deitzen ari dira, a bit buruzko mapa, benetan.
>> Beraz, zer da interesgarria, nahiz eta, fitxategi formatu hau, BMP buruz, da
duten kanpaia azpian, hura besterik hiru byte baino gehiago ditu
dela bere goiburua konposatzen, hain esateko, lehen puska batzuk.
Benetan itxura apur bat da Lehen begiratuan zaila.
Eta hau ikusiko duzu P multzoan.
Eta zerbait lortzean honetatik kanpo bereziki orain
ez da hain garrantzitsua, besterik gabe, izan ere, gisa duten bitmap bakoitzaren hasieran
fitxategia, formatu grafiko bat, han zenbakien sorta oso bat da.
>> Orain Microsoft eta, Formatu honen egileak,
horiek deitu ohi Gauzak ez ints eta karakteretan
eta karroza baina hitzak eta d Hitz eta Longs eta byte.
Beraz, besterik gabe, datu-mota ezberdinak daudela.
Izen desberdinak ari dira gauza bera da.
Baina hori ikusiko duzu P Ezarri Lau urtean.
>> Baina hau ez dago esan dugunez, giza bat bada .bmp fitxategia batzuetan klik bikoitza egiten bere
edo bere disko gogorrean, eta leiho bat irekitzen du zion edo bere irudia egin badute sortu,
duen eragilea delako gertatu sistema ustez nabaritu ez bakarrik
.bmp luzapenarekin fitxategia izenean,
baina baita Izan ere, ez da batzuk bit patroi den konbentzio
hasieran oso bitmap fitxategi hori.
>> Baina dezagun orain arreta en adibidez, fitxategi zailean,
baina horren ordez, honen antzeko zerbait.
Demagun hemen gedit, I besterik ez dute hasieratik
hori nahiko sinplea da programa bat.
Nik batzuk sartzen dira sortu top.
Orain lortu dut #include "structs.h" baina Etorriko naiz atzera une batean.
Baina hau oso erabilgarria da, oraingoz.
Beraz, hau programa bat da, hori ezartzea joan
Erregistro datu-base bezala.
Beraz, ikasleek datu-base bat, eta munduko ikasle guztiek
Izen bat eta etxe bat eta, seguruenik batzuk ditu beste gauzak, baina simple mantendu egingo.
Ikasle bakoitzak izen bat eta etxe bat dauka.
>> Beraz bat idatzi nahi badut programa horren helburua bizitzan
besterik tik bestera joateko zen zero hiru gehienez,
hiru ikasle badago Harvard Unibertsitatean.
Eta besterik gabe, lortzeko GetString erabiliz nahi dut, ikasle bakoitzaren izena eta etxea,
eta, ondoren, inprimatu horiek out.
>> Hau Ordena Week bezalakoa da One, Aste Bi gauzak orain,
non nahi dut bat begizta edo horrelako zerbait.
Eta GetString deitu batzuk bat nahi dut aldiz, eta ondoren f hainbat aldiz inprimatu.
Beraz, nola liteke hau egiten dut, nahiz eta, denean bai izena eta etxe bat
dira parte hartzen duten ikasle bakoitzak?
>> Beraz, nire lehen sena agian izan honen antzeko zerbait egin nahi.
Lehenengo agian diot, bai, ematen dit, esateko, izenak izeneko kateak array bat.
Eta ez dut hardcode hiru hemen nahi.
Zer jarri nahi dut?
Beraz STUDENTS, hori delako, besterik gabe, konstante bat goialdean deklaratu,
Ez dut besterik ez beraz, hardcode Leku bat baino gehiago hiru.
Horrela, leku bat aldatu ahal izango dut, eta aldaketaren bat nonahi eragiten die.
Eta gero, agian egin behar dut katea STUDENTS daude.
>> Eta orain, agian antzeko zerbait egin nuen for (int i = 0; i <IKASLEAK; i ++.
Beraz, azkar ari naiz idazten, baina hau da, ziurrenik ezagutzen sintaxia orain.
>> Eta orain, hau berriagoa zen.
To the i-garren jarri nahi badut ikaslearen izena, uste dut egin behar dut.
Eta gero, ez izenak baina etxe tarte i.
Hau egin dut, GetString, eta utzi atzera me eta lerro hau konpontzeko.
Onartzen dut?
Ados?
Ez da oso lagungarria.
Ez dut erabiltzaileak zer egin esan.
>> Baina orain, badut gainera, nahi geroago, dezagun
esan, inprimatu gauza horiek out-- beraz TODO geroago.
Honekin gehiago egin nahi dut da horrek, dudarik gabe, hau da
ezartzeko zuzena Izenak eta etxeak, hiru lortzean
Horietako bakoitzean, guztira, erabiltzaile batek.
>> Baina hori ez da diseinu oso ona, ezta?
Zer ikasle bat da ez bakarrik izen bat badu eta etxe bat, baina, halaber, identifikazio zenbaki bat,
eta telefono zenbakia, eta helbide elektroniko bat,
eta, agian, hasiera orri bat, eta agian Twitter heldulekua,
eta beste edozein xehetasun kopurua Ikasle bat edo pertsona bat lotutako,
oro har.
Nola gehitu hasiko genuke Programa honen funtzionalitate?
>> Beno, modurik errazena bezala sentitzen dut agian izan antzeko zerbait egin nahi, demagun,
int ids STUDENTS.
Beraz, beren identifikazioak guztiak jarri ahal izango dut hor.
Eta gero, zerbait Telefono zenbakiak bezala,
Ez nago ziur nola besterik gabe adierazten duten.
Beraz, dezagun aurrera eta deia besterik hau Twitters STUDENTS, zein
Apur bat arraroa, but-- da eta mordo bat gehiago eremuak.
>> Nik hasi eraginkortasunez kopiatu eta itsatsi hemen.
Eta hori nahiko hazten joan unwieldy nahiko azkar, ezta?
Ez litzateke polita izango da eta ez ziren munduko datu-egitura bat ezagutzen
Ez int bat edo kate bat, baina zerbait gisa maila handiagoa, abstrakzioa, beraz,
esateko, ikasle gisa ezagutzen?
C ez zuen eraiki-etortzen ikasleentzat funtzionaltasuna,
baina zer da, hala nola eman nahi badut?
>> Beno, bihurtzen da, noa ireki structs.h hemen izeneko fitxategi bat,
eta zehazki hori egin dezakezu.
Eta ari gara hau egiten hasteko behar.
Eta P Ezarri Hiru kanpaia azpian, Nik jadanik hau orain egiten ari.
Badira g Laukiz gisa gauza, hala nola ez da: edo g programazio hizkuntza C. batean obalo bat
>> Stanford at Folks horiek inplementatu Datu mota hurbilketa hau erabiliz hemen arabera,
beren datu berriak egin deklaratzen keyword berri bat erabiliz motak
izeneko egiturari eta beste typedef izeneko bat.
Eta hain zuzen ere, nahiz eta sintaxia itxura apur bat gauzak desberdinak
ikusi dugu aurretik, in Printzipioz, super erraza da.
>> Hori esan nahi du "mota bat definitzeko".
Hori bat izango da joan egitura, eta egitura bat
besterik edukiontzi bat bezalakoa da Gauza bat baino gehiago da.
Eta egitura hori joan Izen izeneko kate bat izatea,
eta etxea izeneko kate bat.
Eta dezagun deitu, besterik gabe, erosotasuna, osoa datu-egitura ikaslea honetan.
>> Beraz, oraingoz lortzeko aukera puntu eta koma, orain duzu
Zure datuak propioa sortu Ikasle izeneko mota
orain dela int ondoan dago, eta karroza, eta char, eta katea,
eta g Laukiz, eta g obalatua, eta edozein zenbaki beste gauza pertsona izan asmatu.
>> Beraz, zein da honi buruz erabilgarria orain dela atzera egin badut
0 struct eta amaitzeko hau ezartzeko, eta bertan idatzi nuen
aldez aurretik, hemen, hori guztia nabarituko saihestezina messiness duten
gehitu dut hala gertatzen hasteko zorian zegoen Telefono zenbaki eta Twitters eta guztiak
gauza horiek beste ikasle baten definizioa,
orain succinctly da bilduta ikasleen array bakar gisa.
>> Eta ikasleak horietako bakoitzean orain anitz gauza horren barruan dago.
Beraz, besterik gabe, galdera bat uzten du.
Nola lortu izenaren at duzu, eta etxea, eta identifikazioa eman,
eta, dena dela ere da Ikasle-barrutik?
Super simple, baita.
Sintaxia, baina, ideia soil bat.
>> You indizea besterik array sartu, azken astean, eta hau egin dugu.
Eta zer da argi eta garbi, sintaxia pieza berria?
Just., Horrek esan nahi du "barruko joan egitura eta get izeneko eremuan
izena, lortu house izeneko eremuan, lortuko ikaslea izeneko eremuan. "
>> Beraz, P ezarri Three, bazaude Oraindik ere horretan lanean,
eta jende gehienak oraindik direnean, konturatzen zara gisa duten
gauzak bezala erabiltzen hasteko g laukizuzenei eta g ovals
eta beste gauza ez direla dirudi Aste zero, bat edo bi etorriko da,
konturatzen hori Stanford delako Datu-mota berri batzuk izendatu.
>> Eta hain zuzen ere, hori da zehazki zer zaitugu egin, bai, P ezarri Lau denean,
gauza aurre hasten gara irudiak, bit-mapak, eta gehiago atsegin.
Beraz, hori besterik teaser bat eta bat zer da etorri eredu mental.
Orain, procrastinated dut Pixka bat gaur goizean.
Motatako bitxi zer ikusi izan dut Microsoft wallpaper benetan
gaur egun duen itxura.
Eta bihurtzen da 2006an norbaitek benetan joan zen ia, hain zuzen
errealitatean argazkiak Leku berean zer itxura egun hauetan.
Eremu apur bat estali egiten da orain.
>> Beraz, gaur egun hitz egiten duten irudiak, horrek ekarri itzuli Daven hemen utzi
pantailan eta Nicholas on, eta besterik gogorarazten
duten gurekin bazkaltzeko nahi izanez gero ostiral honetan, gure ohiko URL burua
hemen.
>> Beraz, non off utzi genuen astelehenean?
Arazo hau aurkeztu dugu, ezta?
Hau izan zen, itxuraz zuzen bat swap ezartzeko,
Horren bidez, bi ints hartzen duzu, baten bat b izeneko izeneko bat,,
swap horiek, Laura egin hemen besterik ez bezalakoa esnea eta ura batera eszenatokian,
Aldi baterako bat erabiliz aldakorra, edo kopa huts bat,
horrela jarri b genezake eta batean ere b gauzak gaizki egin gabe.
Aldagai bat erabiliko dugu.
Honez temp izenekoa.
>> Baina zer funtsezkoa izan zen Kode hau astelehenean duen arazoa?
Zein izan zen arazoa?
Bai.
>> IKUSLEEN: leku gehiago sortu behar izaten ditu.
>> DAVID J. MALAN: Hartzen gehiago espazioa, I aldagai bat erabiltzen ari delako,
eta OK.
Hau da egia, baina nago OK esan du.
Grand bit 32 besterik ez da eskema gauza, beraz, ez da big aurre.
Beste pentsamenduak?
IKUSLEEN: besterik trukeak It aldagai lokalean.
DAVID J. MALAN: Zehazki.
Aldagaiak bakarrik trukeak Lokalean.
Delako edonoiz funtzio bat deitu denean Annenberg erretiluak izan nuen
Azken aldiz, behean nagusiak duzu.
Bezain laster izeneko funtzio bat deitu gisa swap, swap ez du x eta y lortu,
jatorrizko balioak.
Zer swap lortu du, ez zuen aldarrikatzen dugu?
IKUSLEEN: kopiak.
DAVID J. MALAN: Beraz, horien kopia.
Beraz, bat eta bi lortzen da, nahi baduzue Gogoratzen adibidez azken aldian plazaratzen,
baina bat eta bi kopia bat diren ongi trukatu.
Baina, azken batean, tamalez, oraindik balio horiek berdinak dira.
Beraz, hau ikusi ahal izango dugu, gure Lagun berriak, zorionez, GDB,
zuk edo TFS eta Ca-en izan duen Izan gidatzen honela aldera.
>> Beraz, swap abisuaren no itxura antzeko dezagun ireki honen itxura this--.
X hasieratu dugu bat, eta bi egiteko.
Inprimatu f-ren mordo bat izan zuen.
Baina orduan, funtsezko deia Hemen izan zen, trukatu zein
zehazki kodea garen da besterik ez duela une bat ikusi.
Zein da zuzena lehen at begiratuan, baina funtzionalki,
Programa honetan ez du funtzionatzen, zeren ez ez da betirako swap x eta y.
>> Beraz, ikus dezagun hau, bero azkar bat hemen GDB, ./noswap batekin sortu.
Erabatekoa informazio mordo bat duen Lortu dut Kontrol L kentzeko oraingoz.
Eta orain, ez naiz joan Aurretik joan eta exekutatu.
Eta zoritxarrez, hori ez zela baliagarria.
Honen barruan programaren ran GDB, araztailea izeneko programa,
baina ez zuen utzi ikutu zidan.
>> Beraz, nola benetan pausatu ahal dut Programa honen barruan exekuzioa?
Beraz apurtu.
Eta ezin edozein apurtzen dut linea-zenbakia, bata, 10, 15.
Baina nik ere sinbolikoki hautsi ahal break nagusiak esanez.
Eta hori break bat hasteko puntua, itxuraz 16 linea nagusian at.
Eta non line 16 da?
Goazen sortu kodeari eta igo noswap izateko.
Eta hain zuzen ere, 16 linea da programan oso lehen.
>> Beraz, gaur egun, aurretik joan naiz eta idatzi oraingoan exekutatu, Sartu, bertan pausatu.
Hargatik Poke inguruan.
Inprimatu x-- zergatik x zero da?
Eta alde batetara dolarraren ikurra.
Hori besterik fancier Programaren erabilera.
Zergatik da x zero une honetan?
Bai.
>> IKUSLEEN: eskuineko aurretik pausatu da 16 linea, ez benetan on line 16.
DAVID J. MALAN: Zehazki.
GDB, berez, pausatu exekuzioa besterik line 16 baino lehen.
Beraz, ez da exekutatu, eta horrek x esan nahi du balioa ezezagun batzuk da.
Eta zortea da hori lortu dugu Zerbait zero atsegin garbi.
Beraz, orain aurrera idazten badut, orain 16 exekutatu da.
Honez for 17 me exekutatu zain.
Dezagun aurrera eta inprimatu x me.
It bat da.
Dezagun aurrera eta inprimatu y me.
Orain zer ikusi behar dut?
>> IKUSLEEN: [INAUDIBLE]
>> DAVID J. MALAN: apur bat ozenago.
>> IKUSLEEN: [INAUDIBLE]
DAVID J. MALAN: ez da adostasun bat nahiko.
Beraz, bai, zabor balio batzuk ikusten ditugu.
Orain, 134514064 han y da.
Beno, besterik ez zabor balio batzuk da.
Nire programa erabiltzen du RAM helburu ezberdinetarako.
Beste funtzio Ez dago.
Beste pertsona nire ordenagailuan barruan idatzi zuen.
Beraz bit horiek erabili dira beste balio, eta zer ikusten dut
zenbait aztarnak da aurretiko memoria hori erabiltzea.
>> Beraz, big aurre ez, zeren eta lasterren hurrengo idazten nuen, eta, ondoren, inprimatu eta,
nik hasieratu hori nahi dut balioa.
Beraz, gaur egun, dezagun aurrera, pixka bat azkarrago.
N hurrengoa da.
Berriro egin dezagun da.
Baina ez dut nahi hit hemen, badut delako
zer gertatzen da barruan ikusi nahi swap, zer da komandoa?
>> IKUSLEEN: urratsak.
>> DAVID J. MALAN: urratsak.
Beraz, hau urrats me batean funtzioa, baizik eta haren gainean baino.
Eta orain, apur bat críptica da egia esanda, baina hori besterik ez da
me kontatzea naiz lerro 33 orain.
Eta Berriro egin dezagun.
Print temp.
Garbage balioa, une honetan negatiboa, baina horrek zabor-balioa besterik ez oraindik.
Beraz, egin ondoan, inprimatu temp utzi.
Honez 1 hasieratu, zein x-ren balioa, a aka zen.
>> Orain, non gure direla eta x datozen?
Beno, nagusian nabarituko, dugu balio horiek x eta y deitu.
Orduan gainditu dugu honela swap horiek.
X izan zen lehenengo, Koma y.
Eta gero, swap horiek x eta y deitu daiteke.
Baina argitasuna, da Horietako bat, eta b deituz.
Baina a eta b dira orain izango da x eta y, hurrenez kopiak.
>> Beraz, GDB atzera jo dut, temp bada da, gaur egun bat eta da gaur egun ere.
Baina hurrengo egin dut eta orain bada egin inprimatu a, a jadanik mugitu baino gehiago.
Esnea du lehenengoak isurtzen laranja zukua beira, edo alderantziz.
>> Eta hurrengo Berriro egiten badut, eta, orain, out behatu kontrol gisa inprimatu badut,
da oraindik bi, baina b da gaur egun bat.
Egia, oraindik hor da.
Ez zait axola zer temp da.
Baina orain idazten dudanean bezain laster, demagun, atzera joan jarraituko du, gaur egun naiz amaieran dut
programan.
Eta zoritxarrez, x da oraindik inork eta y da oraindik bi.
>> Beraz, zer izan da GDB ez baliagarritasuna?
Ez zuen lagundu me konpondu arazoa per se,
baina, zorionez, lagundu dit Ulertzen konturatu
hori bai, nire logika eskuinera, baina Nire kodea ez da, azken finean izatea
inpaktu iraunkorra.
Beraz, hori arazo bat ari gara Orain konpondu gaur egingo.
>> Baina dezagun Iritsi honen bidez.
String gezur bat da.
Ere, ez da datu-mota bat duten C. existitzen Da
zenbait sinonimo izan beste zerbait egiteko garaia,
eta honela ager dezakegu.
>> Dezagun aurrera eta ireki Programa bat izeneko alderatu-0.
Eta hau idazten out beharrean, ondorengo kodea ibiltzeko hasiko dugu
Jadanik idatzi nuen, baina lerro batzuk besterik ez da.
Beraz, hau da alderatu-0.
Eta lehenengo gauza egiten ari naiz da testu lerro bat lortzeko.
>> Baina konturatu zer naiz lehen aldiz egiten.
Zer desberdina da line 21 argi zer?
Egia esan, minutu bat itxaron.
Hau kopia bi.
Hori ez da, nahiz eta eskuineko programa.
Eskuinera, spoiler alert guztiak.
Ondo da, beraz, inoiz ez dio axola.
Hori etorkizuneko galdera bati erantzuna.
>> Hemen alderatu-0 da, eta ez naiz testu lerro bat lortzeko buruz.
Programa horrek askoz errazagoa.
Beraz, hau erraza da.
This One Week, Aste Bi gauza bezalakoa da une honetan. katea s = GetString.
Orain, berriro esango dut hemen.
katea t = GetString.
Eta gero, azken honetan gauzaren programa, bere izena dioen bezala,
hau da, naiz alderatu eramaten saiatuko da.
>> Beraz, sua bada, lehenengo katea, berdinen = t, orduan naiz
gauza bera idazten duzun esan nahi du.
Bestela, esan noa Idazten duzun gauza desberdinak.
Hargatik konpilatu eta exekutatu programa hau.
Beraz, alderatu zero.
Itxura ona.
No konpilazio akatsak.
>> Dezagun aurrera me now eta idatzi ./compare-0.
Dezagun aurrera eta zerbait esan : Daven eta zerbait: Rob.
Eta idazten dudanean gauza desberdinak.
Orain arte, beraz, ona da.
Programa dirudi zuzena izan.
>> Baina dezagun berriro exekutatu.
Esan zerbait: Gabe.
Guztiak eskubidea.
Agian espazio barra sakatu dut edo zerbait funky.
Berriro egin dezagun da.
Beraz Zamyla.
Zamyla.
Gauza desberdinak.
Beraz, zer gertatzen da?
>> Beraz, bi lerro hauek ditugu kodea, GetString ari birritan deitu.
Eta gero, besterik ez naiz s eta t alderatu nahian.
Baina benetan zer orduan gertatzen da?
Beno, nire idazkera-ren buruz harategia Adibide honetan zertxobait.
Eta dezagun benetan bota hau hemen baino gehiago, baita.
>> Beraz bezalako lerro bat dugu katea s = GetString.
Beraz, besterik gabe, lehena programa hori lerro interesgarri.
Baina zer gertatzen da denbora honetan guztian izan da den gertatzen kanpaia azpian?
Beno, ezkerreko albo katea da, zein aldagai mota batzuk,
eta, s izeneko it.
Beraz, hau da memoria erabiliz ezagutzen dut, edo RAM, nire ordenadorean nolabait.
Beraz noa abstraktuan marraztu karratu gisa.
32 bit, bihurtzen da, baina etorkizunean horretan gehiago.
Eta gero, zer gertatzen da hemen?
>> Beno, jakina, GetString erabiltzaileak kate bat jasotzen du.
Eta GetString lortu Zamyla edo Gabe edo Daven.
Hargatik aukeratu lehenengoa horiek, eta horrek Daven zen.
Beraz, modu eraginkorrean, zer GetString lortu Lehenengo kasu horretan ni D-a-v-e-n izan zen.
Eta gero, zer gehiago egin niri eman ezkutuka?
IKUSLEEN: [INAUDIBLE]
DAVID J. MALAN: Bai, / 0 edo nulua pertsonaia.
Beraz, modu eraginkorrean, kate bat eman dit.
Baina dagoeneko ezagutzen Aurrekoen dugu itxura duen katea array bat besterik ez da
pertsonaien, eta nik amaitu Sentinel pertsonaia berezi hau, / 0.
>> Baina hau egia bada eta hau karratu bat da,
hau da, argi eta garbi laukizuzen askoz handiagoa.
Eta, hain zuzen, hau da, Aldarrikatzen dut, bit 32 bakarrik.
Eta hau da, argi eta garbi, 32 baino gehiago bit, hau da, ziurrenik delako
zortzi gehi zortzi gehi zortzi plus zortzi gehi zortzi,
besterik ez ASCII byte delako.
Nola demontre ari gara moldatzen joan Daven kutxa txiki hau hemen sartu?
>> Beno, zer da benetan egiten GetString?
Beno, sare honek hemen adierazten nire ordenagailuko memorian edo RAM.
Beraz, esan dezagun arbitrarioki bada horietako bakoitzean byte adierazten du,
orduan guk bakoitzak pentsa dezakezu byte helbide bat izatea,
33 Oxford Street, edo 34 bezalako Oxford Street, edo 35 Oxford Street.
>> Beraz, besterik ez bezala etxeetan izan helbideak eta eraikinak izan helbideak
hacerlo byte banakako memoria helbideak edo zenbakiak
duten bakarrean identifikatu.
Orain, hau arbitrarioa da.
Baina simple mantentzeko, noa hamaseitarra erabili besterik ez konbentzio,
baina 0x ezer beste esan nahi du baino "hau hamaseitarra da."
eta nik nahi duten erreklamatzeko joan nintzen "D" amaitzen byte memorian at.
>> Beste ezerk ez den gertatzen lortu nuen memoria, beraz Daven lehen spot lortu
Byte One at.
Honek, beraz, hau da 0x2 izango.
Hau da 0x3 izango.
Hau da 0x4 izango.
Hau da 0x5 izango.
Hau da 0x6 izango.
>> Baina behin pentsatzen hasteko ordenagailuaren zertan ari buruz
kanpaia azpian, to ondoriozta hasteko dezakezu
nola zuk, duela urte batzuk, litzateke Izan C bera inplementatu.
Zer da GetString seguruenik returning-- delako
sentitzen ez bezala itzuli Daven, per se,
zuen ziur aski ez delako to box-- txiki honetan kabitzen
beraz, zer da GetString ziurrenik itzuli?
>> IKUSLEEN: [INAUDIBLE]
>> DAVID J. MALAN: Daven kokalekua.
Eta hori izan da lan hau egiteko geroztik One Week.
Zer GetString da, benetan itzuli ez den kate bat, per se.
Hori da gezur zuri pixka bat.
En helbide itzuli da memoria Kate, berezko helbidea.
Daven 33 Oxford Street at bizi da.
Baina gehiago succinctly, Gavin bizi 0x1 at, helbidea eta zenbakia One.
>> Beraz, zer lortzen honetan jarri kutxa txiki, ondoren, argi eta garbi,
besterik kate hori helbidea da.
Beraz, denbora horretan guztian, honek izan gertatzen da.
Baina zer gertatzen da hau ukituak orain hori guztia izanez gero ditu
barruan zenbaki bat, nor da gelditzeko, programatzailea,
edozein zenbaki jarriz etatik edozein aldagai eta besterik saltoka
zatia memoria hori?
Eta, hain zuzen, ikusiko dugu mehatxu hurrengoan bat da.
>> Baina orain, hau sentitzen nahikoa.
Diot bada, get me a katea, me ematen duzu Daven.
Baina ez duzu benetan ematen dit Daven.
Guztiak me ematen duzu Daven helbide da.
Zelan orduan ziur jakin non Daven hasi eta ends--
Istorioa hamarkadako weird-- lortzean non Daven hasten eta bukatzen da,
eta, ondoren, hurrengo memorian katea hasten da?
>> Beno, duzu gozamenerako bazabiltza me Daven hasieran,
funtsean, nola ez dakit Bertan, bere izena amaieran da?
Null karaktere berezia duten, zein da guztiak orain garrantzitsuagoa
azpian kateak bada hood dira, besterik gabe identifikatu
bakarrean beren memoria kokapena arabera.
Beraz, denbora horretan guztian, hori da zer gertatzen da.
>> Beraz, oraingoz begiratu dugu Kodea hemen, azaldu
line 26 bug baduzu.
Zergatik Zamyla eta Zamyla desberdina da?
Zergatik Gabe eta Gabe desberdina da?
Bai, berriro.
>> IKUSLEEN: helbideak ezberdinak dituzte.
>> DAVID J. MALAN: Besterik ez delako helbideak desberdinak dituzte.
GetString deitu duzulako berriro, eta horrek hemen egin dut azkar egingo,
hau da, bigarren lerroa, kate bada t, programa hori ere egin nuen bezala,
beste GetString dei berdin.
Hurrengo aldiz esaten diot GetString, noa
oroimenaren desberdinak pusketa bat lortzeko.
>> GetString da onartzen eragilea eskatu
Gero eta gehiago, memoria sistema.
Ez da gauza bera berrerabiltzea joan Sei byte aldi bakoitzean bakarra.
Honez berri bat iritsi memoria zatia, eta horrek
esan t da iritsi hemen baino gehiago, beste balio batzuk.
>> Beraz, ez dut s = berdinen t, ez duzu alderatuz ari
Hau eta A aurka D hau eta V honen aurka.
Hau alderatzen ari zara hau da, aurka
Egia nahiko useful-- useless-- da da, nahiko alferrikakoa, benetan delako
zaintzen non kateak oroimenean daude?
>> Eta, hain zuzen, ez dugu.
Eta ez gara joan hasteko bereziki solidario.
Only den neurrian bugs, eragin dezaketen eta segurtasun mehatxuak borondate sor ditzake
benetan honi buruz zaintzen hasten gara.
Hargatik konpondu arazo hau.
Kontua da, konpondu duzu super besterik gabe.
>> Eta dezagun benetan, I aurretik agerian uzten berriro, zer egingo zenuke
Egin duzu CS50 klase bat bada, eta ezartzea izan duzu
bi kateak aurka konparaketa.
Argi eta garbi, ezin duzu erabili s berdinen = t.
Baina besterik logikoki, nola litzateke katea erkatzen dugu
Kate honek C kodea erabiliz aurka?
Bai.
>> IKUSLEEN: Just egin du begizta [INAUDIBLE]
DAVID J. MALAN: Perfect.
IKUSLEEN: [INAUDIBLE]
DAVID J. MALAN: Bai.
Just erabili loop edo bat begizta edo dena berriz.
Baina besterik oinarrizko ideia aplikatzen bada hau memoria edo array baten zatia da
eta hau da, batetik bestera joateko baino gehiago biak aldi berean.
Eta besterik letrak konparatu.
>> Eta lortu duzun bat izan nahi du gutxi ibili, zeren
nahi ez hatz bestea iragana joan
zeren kate bat da bestea baino luzeagoa.
Beraz, ari den begiratzea nahi zoazen amaierako balioa berezi honetan, nulua.
Baina benetan, izandako amaieran, hori bezain erraza.
Eta Egia, ez dugu behar gurpil asmatu.
Hemen Bi bertsioa da.
Eta hemen zer esan nahi dut hau da: ordez s konparatuz berdinen = t,
Naiz ordez esan, joan katea bada s koma t konparaketa berdinen = 0.
Orain, zer kate alderatu da?
>> Bihurtzen da, funtzio bat da hori C, eta horren helburua bizitzan dator
da bi kateak konparatzeko.
Eta irabiatu alderatu, irakurri badugu bere Man orri edo dokumentazioa edo CS50
erreferentzia, izango da besterik ez dira ez nahastean duen
itzultzen bai negatiboa alderatu zenbakia edo zenbaki positibo bat edo zero,
non zero esan berdina ari dira.
>> Aierua Beraz, besterik ez.
Zer eragin izan dezake bada irabiatu alderatu itzultzen
Balio negatibo edo positibo?
IKUSLEEN: baino handiagoa edo baino gutxiago.
DAVID J. MALAN: Bai, baino handiagoa edo baino gutxiago.
Beraz, osotasunean ordenatzeko nahi baduzu kateak sorta hiztegian batean
azkenean road-- behera egingo dugu potentzialki erabiltzeko funtzio perfektua,
ez da eta ez da egin delako kateak konparatzeko zuretzat, eta esango
egiten duzu bat b aurretik dator, edo ez b alfabetikoki bat lehenago etorri.
Zehazki hori egin ahal izango dugu.
>> Eta konturatu bata bestearen egin nuen Adibide honetan gauza.
Zer gehiago egin du goi mailako aldatu funtzio nagusia honetan sortu?
Char *.
Eta hori beste gezur txikia dela.
Denbora horretan guztian, noiz dituzun dira idazten katea,
dute ezkutuka berridazketa dugu katea char * gisa beraz clang dela benetan
ulertzen duzu.
>> Bestela esanda, CS50.h saioa eta ikusiko dugu azkenean, ikusi,
sinonimo izeneko kate bat egin dugu char * gauza bera da.
Eta orain, jakin duten bakarra *, Testuinguru horretan, gutxienez,
helbide esan nahi du.
>> Zer helbide?
Ba, hain zuzen, esan nuen char *, eta ez int * edo flotatzen *,
esan char * dela char helbidea.
Beraz, kutxa txiki honetan hemen, aka katea, benetan mota char * da,
Horrek, besterik gabe, esaten modu fancy bat da, Kutxa hau helbide bat joango dira.
Eta zer helbide duten erreferentzia egiten?
Dirudienez, char bat.
>> Baina ezin izan erabat dugu int * eta beste gauza batzuk izan.
Baina, oraingoz, char * benetan gehien zuzena eta interes bat.
Beraz, arazo hau va , igotzen den arren, berriz ere.
>> Demagun, ireki dut programa hau.
Ea orain iragartzeko ahal badugu dezagun Zer da kode hori gaizki.
Beraz, programa honetan, kopia-0, naiz Aurretik joan eta berriro deitu joan
GetString eta s balioa gordetzeko.
>> Eta orduan, zergatik am egiten dut, besterik aste iraganeko oroigarri gisa?
GetString hori esan egin dugu batzuetan null itzultzen.
Zer esan nahi ote duen GetString itzultzen null?
Zerbait oker joan.
Agian esan nahi du kate handiegia da big, ordenagailuaren memorian daudelarik.
Super, super, super Gertatzen da gutxitan, baina gerta zitekeen.
Bertan egiaztatu nahi dugu, eta hori guztia egiten ari gara.
>> Ikusiko dugu orain delako, ez baduzu hasteko eskuarki egiaztapena gauzak
null bezala, baliteke benetan joan hasteko
helbideak memorian nahi duten baliogabeak dira.
Eta ari inducing hasteko zoazen gero eta segmentazio matxurak.
Edo Mac edo PC bat, besterik ez ordenagailu bat eragiten zintzilikatzeko
, edo programa bat izozteko potentzialki.
>> Beraz, orain, diotenez, kopia-0.c dut, dut naiz kate horiek kopiatzeko modu joan
lerroa 28.
Eta gero, noa behealdean diotenez
hemen noa horietako bat aldatzeko.
>> Beraz, nabarituko hau.
Gure zaharra lagun strlen deitzen naiz.
Eta besterik ingelesez azaldu lerro hau 34 zer egiten ari da?
Zer t tarte 0 egiten du ezkerreko ordezkatzen.
Bai.
>> IKUSLEEN: t eta behin pertsonaia?
DAVID J. MALAN: t eta behin pertsonaia.
Hori da.
T urteko lehen pertsonaia, nahi dut maiuskulaz bertsioa esleitzeko
t lehenengo pertsonaiaren.
Beraz, hau da kapitalizatuz lehen letra.
Eta gero, oso azken gauza egin nahi dut Programa honen dagoen aldarrikatzen dut hemen
jatorrizkoa, s, eta hemen kopiatu, t da.
>> Baina istorioa oinarrituta dugu besterik kateak benetan zer dira buruz esan,
zer linea 28 benetan , egiten du eta zer da
Emaitzeko bug joan pantailan izan?
>> Beraz, lehenik eta behin, lehen galdera, 28.
Zer da katea t = s benetan egiten?
Hemengo ezkerreko on bada albo hemen katea t = s;
duen kaxa bat ematen dit Hemen eta hemen kutxa bat.
Eta demagun helbide honetan 0x da, demagun, 50 oraingo honetan, arbitrarioki.
Zer esan nahi du kate t = s kanpaia azpian egin?
>> IKUSLEEN: [INAUDIBLE]
>> DAVID J. MALAN: memorian gordetzen aurre ez, beraz, 0x50 ez doa.
Beraz, gaur egun bada, lehenik nahi dut t-en pertsonaia eta, maiuskulaz,
zer naiz eraginkortasunez s egiten?
Benetan gauza bera ari naiz egiten, ezta?
Helbidea 0x50-- bada delako, eta besterik gabe, I ez dute taula gainean tarte handirik hemen,
baina suposatuko hori 0x50 behera hemen, nire ordenagailuaren memoria nonbait.
>> Eta, adibidez, Gabe I Hemen minuskula, hau atsegin dute.
Eta esan dut t tarte 0 kapitalizatuta lortzen.
Beno, t tarte 0 da t lehen hizkia.
Beraz g gutxi dago joan bihurtu G. big Baina arazoa
hau da, zer esan s Ere seinalatu?
>> IKUSLEEN: Gauza bera gertatzen da.
>> DAVID J. MALAN: jakinarazi bera gauza zehatza.
Beraz, azalpen sinple bat agian, sintaxia pixka bat arraroa bada ere.
Beraz, egin dezagun hau.
Egin kopia-0 eta ondoren ./copy-0.
Esan zerbait: Gabe.
Eta zoritxarrez, bai dute orain kapitalizatzen dira horiek,
baina horretarako azpiko Horregatik besterik ez gara
orain helbideak aurre.
>> Beraz, nola hasiko egiten dizuegu address-- Pun ez intended--
nola aurre hasteko ez dugu arazo jakin hori?
Beno, copy1.c ere, gauzak ez dira joan pixka bat zailagoa lortzeko.
Baina bat erreklamatzeko nuke Irtenbide kontzeptualki sinplea.
>> Beraz, zaila da hasiera batean lortu.
Ez da lehenengo erraza izango da idazten duzun denbora, agian,
baina arazoa dela, bada Besterik gabe, t = s besterik egiten
kopiak helbide, zer, Berriro zuk ezin dut jaso bada,
da konponbidea izango da benetan kate bat kopiatzeko?
>> IKUSLEEN: ziurrenik dugu begizta bat berriro erabili.
>> DAVID J. MALAN: Bai.
Beraz, begizta bat berriro behar du.
Eta kopiatu nahi badugu, zeren katea s kate batean sartzeko,
ziurrenik ere egin nahi dugu pertsonaia by pertsonaia.
Baina arazoa da, bada hau da, jatorriz s,
orain esplizituki hasi behar dugu memoria esleitzean t da.
>> Beste era batera esanda, dezagun marraztu hau azken aldiz.
Hau da, kate s = GetString.
Eta dezagun jarri hau hemen, bai.
Hau GetString da.
Eta gero, zerbait irudian Horrelako da lehen bezala izango,
g-a-b-e-/ 0.
Honen antzeko zerbait apur bat itxura.
Eta s, beraz, hau 0x50 deitzen diogu, eta hori, 51, 52 izango da.
>> Beraz, hau 0x50 da.
Eta gero, egin dut kate t.
Memoria, hori besterik ez da joan ematen dit hau bezalako plaza txiki bat.
Beraz, zer funtsezko urratsa da orain?
S kopiatzeko t sartu nahi badut, zer hutsik egin hemen bete behar dugu?
Edo zer egin behar dugun goi-mailan egin?
Bai?
Norbaitek?
Bai.
>> IKUSLEEN: behar [INAUDIBLE] nahi dugu.
DAVID J. MALAN: Bai, dugu to hau hutsik bete behar.
Ezin dut kopiatu eta gero larriz Gabe izena
sistema eragilearen eskatu arte I beste zatia memoria bat egiteko
hori da behintzat jatorrizko bezain handiak.
Beraz, galdera bat uzten gaitu.
>> Zelan sistema eragilea eskatzen dut ez besterik gabe, apur erakuslea sinple bat
deritzo honetan bezala, bat helbidea, erakuslea bat ez
little box sinple bat hau bezalako kate bat deitu?
Zelan eragilea eskatzen dut memoria zatia handi bat sisteman?
Horrela, orain arte, besterik ez dut atzera ahaztuak GetString deituz zeharka.
Beraz, nola da GetString nahiz eta bere memoria lortzean?
>> Beno, bihurtzen da, ez dagoela beste funtzio hau hemen
egingo dugu orain hasteko erabili.
Orain, itxura modu gehiago críptica than-- eta naiz bakarra nork ikusi ahal hobeto esanda
lerro hau itxura modu gehiago críptica ondoren egin beharko lukete lehen begiratuan.
Baina dezagun aurre egiten ez ezik.
>> Ezkerreko aldean, daukat char * t.
Beraz, ingelesez, dezagun hasteko formulatu jargon teknikoetan esaldiak egokia.
Beraz, hau da esleitzean bat mota char aldagai * izeneko t.
Orain, benetan zer esan nahi du?
>> Beno, hori esan nahi du, zer egingo dut t izeneko aldagai hau jartzen?
Char baten helbide bat.
Beraz, besterik gabe, errazagoa da, zentzuzko modu gehiago
ren ezkerraldean deskribatzeko.
Beraz, lauki hau hemen bakarrik sortzen.
Beraz, eskuineko aldean, ustez, va
ra handiagoa esleitu oroimenaren nola zatia?
Hargatik tease honetan gain.
>> Honez Lehen begiratuan erabatekoa, baina zer gertatzen da barruan hemen?
Lehenik eta behin, ez da malloc, itxuraz gure lagun berria,
"Memoria esleitu".
Beraz, honen argumentua ari gainditu da sartu, beraz, argumentua nahiko handi bat da.
Hargatik tease honetan gain.
>> S strlen, noski, suposatzen the--
IKUSLEEN: karaktere kopurua.
DAVID J. MALAN: Just s karaktere kopurua.
Beraz s luzera, jatorrizko katea.
Beraz, G-a-b-e.
Beraz, ziurrenik, lau kasu honetan ez da.
Zergatik naiz +1 egiten ondoren S strlen deituz?
IKUSLEEN: [INAUDIBLE]
DAVID J. MALAN: Dela null karaktere berezia.
Galdetu zer luzera Gabe izena, naiz lau esanen.
Kanpaia azpian, nahiz eta, behar dut null karaktere bosgarren byte duten.
Beraz, horregatik +1 egiten ari naiz.
>> Orain badaezpada duzu hau exekutatzen ari programa ez den beste ordenagailu batean, esateko,
CS50 tresnaren, non char baten tamaina
ezberdina izan daiteke nire ordenagailuan propioa
bihurtzen ahal izango dut hau deitu operadorea sizeof, besterik ordenagailu eskatu,
zer baten tamaina da ordenagailu honetan char?
>> Eta biderkatzeko bost honetan Adibidez char baten tamaina, eta haietako
ordenagailu gehienetan will bakar bat, malloc izan
da me big horretarako esleitu joan memoria zatia hemen eskuineko ertzean zehar.
Eta nik to itzultzeko joan funtzio bat da, da, beraz,
niri zer itzultzeko?
IKUSLEEN: helbide?
DAVID J. MALAN: zer helbide?
IKUSLEEN: memoria esleitu da?
DAVID J. MALAN: Of the memoria da esleituko.
Beraz, ideia ez dut, Egia, kode hau amaitzeko da.
Proposatzen noa nik amaitzeko 0x88 at joatea.
Erabat arbitrarioak, baina nonbait 0x50 baino beste,
sistema eragilea delako, zer Windows eta Mac OS niretzat egin, da
ziurtatu ematen ari dela me RAM zatiak ezberdinak.
>> Beraz, honen balioa kode hau da memoria zatia amaitzeko ditzake.
Beraz, hau da amaitzen hemen, 0x88.
Beraz, gaur egun, argi eta garbi, ulertzen dut hori ez da honen berdina da,
tan ari dira seinalatuz delako memoria zatiak ezberdinak.
Beraz, badut orain benetan hau kopiatu nahi urtean, egin zure proposatutako irtenbide utzi.
>> Goazen besterik sortu, begizta bat, eta egin t tarte i s tarte i lortzen.
Orain erabili ahal dudalako array-antzeko izendapen hori,
delako, nahiz eta malloc oso oro bideratzen dit memoria,
memoria besterik Alboko byte da.
Byte, byte, byte, back to back back.
>> Ziur aski, ahal nuen programatzaile gisa array bat bezala tratatzen da eta horrek
esan nahi du erabili ahal izango dut hau azkenik ezagunak kortxete batzuk besterik idazkera.
>> Hargatik pausatu ni han, zeren hau asko da guztiak aldi berean, nahiz eta
laburpena oinarrizko ideia katea da, denbora honetan guztian,
Ez da datu-mota berri bat per se.
Erakuslea deiturikoak bat besterik, pertsonaia baten ezaugarriak,
besterik gabe esan nahi zenbakia da duten giza konbentzio
to 0x zerbait bezala idatzi ohi dugu.
>> Baina zenbaki bat besterik ez da, 33 Oxford Street bezala,
eta hori gertatzen izaten CS eraikin helbidea.
Datu horiek edozein galdera?
Bai?
>> IKUSLEEN: Zergatik egiaztatu dugu t beragatik null?
>> DAVID J. MALAN: Zergatik egiten dugu egiaztatu t null berdina egiteko?
Documentation-- irakurri badugu malloc for question-- handia,
nik to inprimatu fina esan, batzuetan malloc null itzultzeko agian,
besterik GetString bezala.
Eta, hain zuzen, GetString null itzultzen du Aldi berean, malloc null itzultzen bada,
GetString malloc erabiltzen delako.
>> Eta agian OS bada gertatuko, Mac OS, Windows, edozein dela ere, besterik ez da,
zuretzat memoria.
Beraz, zer gertatu da.
>> Eta dezagun beste gauza bat erakusten dit besterik agian putz zure kontuan
edo erabat izan urrunegi line zehar.
Baina Tira me the kopiatzeko begizta bera,
Duela une bat, berreskuratutako honetan. t tarte i s tarte i lortzen.
>> Nice eta erabiltzaileak errespetatzen.
Astea Bi bezala sentitzen berriro.
Baina bertsio hau benetan ahal izango honek, itxura críptica gisa berridatzi.
Izeneko teknika erakuslea da aritmetika, helbidea aritmetika.
Baina zergatik egiten du lan?
>> Orain annoyingly, the C egileek erabaki erabiltzea
* helburu ezberdinetarako ikurra.
Ikusi dugu behin erabiltzen da dagoeneko, char *, horrek esan nahi du "ematen dit aldagai bat
hori eduki joan char helbidea. "
Testuinguru horretan, beraz, char * esan nahi du "ematen dit aldagai bat."
>> Zoritxarrez, gabe * erabiltzen baduzu horren aurrean hitz bat, char bezala,
nik orain deitzen du dereference operadorea.
Eta honen gehiago ikusiko dugu, luze baino lehen.
Baina esan nahi besterik ez da "Hara joan."
Bat esanez bezala, norbait entregatu me bada paper zati batean "33 Oxford Street,"
Egiten dut "* 33 Oxford Street," bada, horrek esan nahi "Jaisten errepidea CS eraikina."
>> Beraz, * joan besterik esan nahi ez bada han aurrean hitza ez da.
Beraz, zer da t, argi izan behar du?
t zatia helbidea da horretan eman zen atzera me to memoria.
ak zer, argi izan behar du helbidea da, Adibidez, gure taldea izan da, eztabaidatzen ditudan
minuskulaz gabe of?
s helbidea da horretako
IKUSLEEN: kate hauek.
DAVID J. MALAN: Gabe jatorrizko izena Of.
Beraz helbidea idatzi da zatia memoria hau.
Beraz, esan badut t + i i, iragarki, gure laguna besterik ez zituela.
Besterik indize-aldagai bat da hori up on zerotik errepikatzean
katea s luzera.
Beraz, zero, gero bat izango da, ondoren, bi, hiru, lau.
Hargatik muntatzen berri horiek Scratch-moduko puzzle piezak, izango bada,
nahiz eta, berriro ere, sintaxia askoz Scratch baino urrutira.
Beraz, t helbide + da i da niri emateko
zenbaki bat, horien delako guztiak garela dira marrazten ditudan hex moduan zenbakiak.
Baina zenbakiak besterik ez dira.
>> Beraz, t-helbidea, esan badugu 0x88 zen, zer da 0x88 gehi zero.
Oraindik eroso ez bada ere hex oraindik ere, hartu asmatzeko.
>> IKUSLEEN: Jatorrizkoa.
>> DAVID J. MALAN: Oraindik 0x88.
Beraz, zer esan nahi du * 0x88?
, Esan nahi du "Hara joan" horrek esan nahi du eraginkortasunez, "jarri atzamarra hemen."
Eta orain, eskuineko eskua bestaldean Espresio hau, * eta ondoren parens,
s + i z esan nahi du, hau da, jorratuko gora g txikiaren hemen.
s + 0 da, noski, s, edozein izanda s da.
>> Beraz, gaur egun, * s, ez da besterik bezalako * 33 Oxford Street esan nahi helbidera joan
s.
Beraz, hemen hatz honetan, eskuineko eskua da.
Beraz, zer ari naiz, zer sartu kopiatu joan?
Eskubideari buruzko gauza, hau da, gabe, g gutxi hemen, hemen sartu.
>> Eta beraz, eragina begizta honen lehenengo iterazio,
, proposatzen duzun bezala, nahiz eta itxura crazy gehiago ezer baino konplexuagoa
ikusi dugu aurretik, da, besterik gabe, esaten hemen joan eta pertsonaia horren kopia hemen.
Honez bi leku-mapa bat ematen dizu.
>> Eta, orain arte honen gehiago ikusiko dugu.
Baina orain, itxaropena besterik ez da oinarrizko ideia horietako batzuk aurkeztera.
Eta hain zuzen ere, utzi ditzagun final programa bat hemen,
eta gero agindu claymation, horrek dena du eskuin egingo.
Guztiak eskubidea.
Hargatik up-- ireki ez gara.
Hargatik me itzuli beharko dugu Argazki hau luze baino lehen.
Ireki me Azken adibide hau hemen.
>> Hortaz, hona hemen bat super, super da programa hori accomplishes
duten hauek egiten ditu bizitzan ezer ez.
Lehen bi aldagai, x deklaratzen da eta y, ez direla oraingoan zenbakiak,
per se.
Oraindik ez dute osokoak, per se.
Itxuraz dira int dute *.
Beraz, besterik ez edonork, zer esan nahi du Zure aldakorra, zure datu-mota bada,
mota int * izarra da?
Hau int baten helbidea da.
>> Beraz Dut ez daki non da oraindik.
Besterik gabe esan nahi du "jarri da, azkenean, int hemen helbidea. "
0x50, 0x88, lekuan bertan memoria, helbide bat dago han.
Eta hori zer da, y , egon baita joan.
>> Orain esaten badut x = malloc (sizeof (int)), hau esaten modu fancy bat da,
hey sistema eragilea, malloc bidez, emaidazu nahikoa memoria tamaina
Int bat, hau da, ziurrenik, 32 bit edo lau byte izango.
>> Beraz, zer itzuliko du malloc?
Malloc helbide bat itzultzen du.
Beraz, zer da x in get gordetzen ari da?
Zatia helbide memoria, lau byte, malloc
besterik niretzat aurkitu galdetuz sistema eragilea.
>> Orain berriz, lerro lau hemen * x = 42,.
Just argi izan, zer da hor behera joan?
Ezkerreko aldean, * x.
duten * 33 Oxford Street bezala.
Beraz * x esan zer?
>> IKUSLEEN: Joan.
>> DAVID J. MALAN: helbide horretara joan.
Lekuan zatia duten memoria da, bertara joaten.
Eta jarri zer ez, noski?
IKUSLEEN: 42.
DAVID J. MALAN: 42.
Ondo da, * y, ideia bera.
Y en helbide honetara joan.
Jarri 13 zenbakia ez, baina zer da une y?
IKUSLEEN: Ez dago memoria ez da y da.
DAVID J. MALAN: Ez dago no y memoria da.
Beraz, zer egiten duen eta, seguruenik, eduki, izan dugu esaten?
>> IKUSLEEN: Garbage.
>> DAVID J. MALAN: zabor balio batzuk.
Orain, zabor balioa zenbaki bat da oraindik.
Oraindik ezin da helbide bat oker.
Norbaitek bagina bezala da scribbled zerbait behera,
eta haren esanahia gisa interpretatu dut kalean behera eraikin batzuk.
Eta saiatu besterik ez duzu bada joan sartu eraikin batzuk ez duzu jabea,
edo memoria zatia, batzuetan ez duzu eman zaio, gauza txarrak gerta liteke.
Computer huts dezake, edo beste batzuk Zehaztu gabeko jokabidea gerta liteke.
>> Beraz, intro, ondoren, hegazti hau da.
Oraindik gogoan dut, 20 Zenbait urte bakoitietan geroago,
non, azkenik, I nengoela erakusleak ulertzen.
>> Zein da, duzu bada utzi hemen hiru minututan
eta uste ez dut erakusleak ulertzen, konturatzen
20 izan dut gogoan crazy arrazoi batzuk urte
noiz eta zergatik azkenean hondoratu da urtean, nire irakasle batekin eserita
ikaskide, Nishat Mehta in the Eliot, Jatetxe atzealdean.
Orain, gogoan dut horregatik hau izan zen
gaietako I, in bat Bereziki, borrokatu.
Eta gero, azkenik, bertan klik egin, bezalako gaiak asko esango nuke
azkenean izango.
Eta orain, hori sentitzen guztiak egiteko zoriontsuago eta gehiago guztiak konbentzitzen,
dezagun ere azken begirada bat gure Azken hiru minutu hemen Binky at,
gure laguna, Nick Parlante Stanford from.
>> [Bideo-erreprodukzioa]
>> -Aizu, Binky.
Wake up!
Erakuslea fun denbora da.
>> -Zer da hori?
Erakusleak buruz ikasi?
Oh, GOODY!
>> Beno, hasteko, ez dut asmatzen ari gara erakusleak pare bat behar izango.
>> -Ados.
Kode hau bi erakusleak esleitzen, bertan osokoak seinalatu.
-Ados.
Beno, bi erakusleak ikusten dut, baina ez dute ez dirudi ezer seinalatuz izan.
>> Hori da eskubidea.
Hasieran, erakusleak ez ezer seinalatu.
Seinalatu deitzen dira momentu honetan gauza hauek pointees, eta horiek egungo konfiguratzen
beste urrats bat.
>> -Oh, Eskuin, eskuin.
Hori banekien.
Pointees dira bereizi.
Er, beraz, nola ez pointee esleitu duzu?
>> -Ados.
Beno, kode hori bideratzen zenbaki oso pointee berri bat,
eta parte multzo honek x hura seinalatu.
>> -Aizu, Itxura hobea.
Beraz, zerbait egin da.
>> -Ados.
Egingo erakuslea x dereference dut 42 zenbakia gordetzeko bere pointee sartu.
Trick honetarako, behar dut nire Wand dereferencing Magic.
>> -Zure Makila magikoa Dereferencing of?
Egia hori handia.
>> Zer kodea itxura da -Honek.
Besterik ez dut kopurua, eta [POP] eratu
>> -Aizu, Begiratu.
Ez doa.
>> On x jarraitzen dereference bat egiten -Beraz gezi bere pointee sartzeko.
Kasu honetan, denda batean 42 hor.
Hey saiatu hura erabiltzen zenbakia gordetzeko 13 beste erakuslea, y.
>> -Ados.
Besterik ez dut joan hona y arte, eta zenbakia 13 set up.
Eta gero, hartu Wand Dereferencing eta besterik [BUZZ]
>> -Oh!
>> -Oh, Hey!
Horrek ez du funtzionatzen.
Esan, hegazti, ez dut uste dereferencing y ideia ona da, badakizu delako,
pointee konfiguratzeko beste urrats bat da.
Eta ez dut uste inoiz egin dugu.
>> -Good Puntua.
-Bai.
Erakuslea y bideratu dugu, baina ez dugu inoiz ezarri nahi pointee bat seinalatu.
>> -Oso Observant.
-Aizu, Ona ez bilatzen ari zaren, Binky.
Ezin konpondu da, beraz, y puntu pointee x bera?
>> -Sure.
Nire Magic Wand erabili dut erakuslea esleitzeko.
>> -Da Duten izango da aurretik bezala arazo bat?
-No.
Honek ez du pointees ukitzeko.
Erakuslea bat aldatzen besterik ez da beste gauza bera seinalatu.
>> -Oh, Ikusten dut.
X bezala leku berean Orain y puntos.
Beraz, itxaron.
Orain, y finkoa da.
Pointee bat du.
Beraz, makila dastatu ahal izango dituzu Berriro dereferencing 13 baino gehiago bidaltzeko.
>> -Uh, OK.
Hemen doa. [POP]
>> -Aizu, Hori begiratu.
Orain y buruzko lanak dereferencing.
Eta erakusleak partekatzen ari delako pointee bat dela, biek ikusi du 13.
-Bai.
Partekatzea, edozein izanda ere.
Beraz, leku batetik bestera joateko gaur egun?
>> Oh, begira.
Oraindik denbora atera dugu.
>> -But--
>> -Just Hiru erakuslea arauak gogoratzeko.
Zenbakia One, oinarrizko egitura da erakuslea bat duzula,
eta puntu ezazu pointee bat.
Baina erakuslea eta pointee bereizi dira,
eta akats arruntenak da konfiguratzeko erakuslea,
baina pointee bat emateko ahaztu.
>> Zenbakia bi, erakuslea dereferencing erakuslea hasten
eta gainean dagokion gezi jarraitzen bere pointee sartzeko.
Dakigun bezala, honetan bakarrik lan egiten ez bada
pointee bat, zein motatako lortzen back zenbakia One araua.
>> Kopurua hiru, erakusle esleitzeko erakuslea bat hartzen
eta seinalatu aldatzen da pointee bera erakuslea beste gisa.
Beraz, esleipena egin ondoren, bi erakusleak
egingo du pointee bera seinalatu.
Batzuetan, hori partekatzea du izena.
Eta hori da dena hor da, benetan.
Bye-bye orain.
[END bideo-erreprodukzioa]
DAVID J. MALAN: Hau CS50 da.
Duzu datorren astean ikusiko dugu.