>> [Musiikkia]
DAVID J. MALAN: Tﺣ۳mﺣ۳ on kuin fuksi seminaarin tﺣ۳nﺣ۳ﺣ۳n.
OK.
Niin hyvin sateinen ulos.
Tﺣ۳mﺣ۳ yleensﺣ۳ tapahtuu keskiviikkoisin, mutta sitﺣ۳kin tilaisuus
kysymyksiﺣ۳ tﺣ۳nﺣ۳ﺣ۳n.
Joten alkaa todella kanssa elokuvan vain hetken.
Mutta aloitamme grandly kuten aina.
>> Tﺣ۳mﺣ۳ on CS50, ja tﺣ۳mﺣ۳ on viikon lopussa 4.
Joten jos olet koskaan katsonut Televisiota tai elokuvaa, jossa
siellﺣ۳ on tietokone asiantuntijat ja poliisi, tai FBI, tai jotkut virasto
yrittﺣ۳ﺣ۳ saada kiinni joitakin vastustaja, hyvin, olet
luultavasti kuulleet sanonnan "parantaa" jolloin se teknikko jotenkin
maagisesti zoomaa ﺣ۳ﺣ۳rettﺣﭘmﺣ۳n paljon nﺣ۳hdﺣ۳ rikollisia
identiteetin tai rekisterinumero parillisina hohto peilin
tai kimaltaa jonkun silmﺣ۳ﺣ۳n.
Joten todellakin, nyt katsomaan muutamia tﺣ۳llaisia ﻗﻗkohtauksia Hollywood.
[VIDEOTOISTOSTA]
-OK, Nyt Mennﺣ۳ﺣ۳n hyvﺣ۳ katsoa sinua.
>> -Pidﺣ۳ sitﺣ۳.
Ajelu ettﺣ۳ takaisin.
>> -Hetkinen.
Kﺣ۳ﺣ۳nny oikealle.
>> -On, Jﺣ۳ﺣ۳dyttﺣ۳ﺣ۳ ettﺣ۳.
-Koko nﺣ۳yttﺣﭘ.
-OK, Jﺣ۳ﺣ۳dyttﺣ۳ﺣ۳ ettﺣ۳.
Tiukentaa ylﺣﭘs, ettﺣ۳ aiotte?
-Vector Kauppaa nﺣ۳illﺣ۳ kaveri takapyﺣﭘrﺣ۳.
-Zoom Sisﺣ۳ﺣ۳n tﺣ۳ﺣ۳llﺣ۳ tﺣ۳llﺣ۳ paikalla.
-Kun Oikea laitteet, kuva voitaisiin laajentaa ja teroittaa.
-Mikﺣ۳ tuo on?
-Se Tehostamisohjelma.
Voitko selvﺣ۳ﺣ۳, ettﺣ۳ mihin tahansa?
-Minﺣ۳ en tiedﺣ۳.
Katsotaanpa parantaa sitﺣ۳.
>> -Paranna Kohta A6.
>> -En Parannettu yksityiskohta, and-- Mielestﺣ۳ni on olemassa
tarpeeksi parantaa, vapauta se minun nﺣ۳ytﺣﭘn.
-En Parannettu heijastus hﺣ۳nen silmﺣ۳ssﺣ۳.
>> -Anna Run tﺣ۳tﺣ۳ kautta kuvanmuokkausteknologia.
-Edgar, Voit parantaa tﺣ۳mﺣ۳n?
>> -Odota.
>> -I've Tyﺣﭘskennellyt tﺣ۳mﺣ۳n pohdintaa.
>> -Someone Heijastus.
-Reflection.
-On On heijastus miehen kasvot.
-The Heijastus.
-On On heijastus.
-Zoom Sisﺣ۳ﺣ۳n peiliin.
-Voit Nﺣ۳hdﺣ۳ heijastus.
Voitko parantaa kuvan tﺣ۳stﺣ۳?
Voitko parantaa hﺣ۳net tﺣ۳ﺣ۳llﺣ۳?
Voitko parantaa sitﺣ۳?
>> -Voi Parannamme tﺣ۳tﺣ۳?
>> Voitko parantaa sitﺣ۳?
-Hold Toisella, minﺣ۳ parantaa.
-Zoom Vuonna oveen.
-Times 10.
-Zoom.
-Muuttaa.
-Lisﺣ۳ﺣ۳.
-Wait, Lopeta.
-Stop.
-Pause Se.
-Rotate Meille 75 astetta ympﺣ۳ri pystysuoran, kiitos.
-Stop.
Mene takaisin osan noin ovi, jﺣ۳lleen.
>> -Got Kuva tehostajana, joka voi Bitmap?
>> Hei, ehkﺣ۳ voimme kﺣ۳yttﺣ۳ﺣ۳ Pradeep Sen menetelmﺣ۳ kurkistaa ikkunoita.
-tﺣ۳mﺣ۳ Ohjelmisto on uusinta.
>> -The Ominaisarvo on pois pﺣ۳ﺣ۳ltﺣ۳.
>> -Kun Oikea yhdistelmﺣ۳ algorithm--
>> -Hﺣ۳n Ottanut poistaminen algoritmit seuraavalle tasolle,
ja voin kﺣ۳yttﺣ۳ﺣ۳ niitﺣ۳ parantaa tﺣ۳mﺣ۳n valokuvan.
>> -Lock Pﺣ۳ﺣ۳lle ja suurentaa z-akselin.
>> -Paranna.
-Freeze Ja parantaa.
>> [Lopeta toisto]
>> DAVID J. MALAN: Selvﺣ۳, joten kaikki nﺣ۳mﺣ۳ ovat todella sanoja.
He vain kireﺣ۳ yhdessﺣ۳ ettﺣ۳ ei ole oikeastaan ﻗﻗjﺣ۳rkevﺣ۳ﺣ۳.
Ja itse asiassa, CS50 ja kursseja kuten se taipumus pilata paljon televisiota ja elokuvia
sinua varten.
Koska kun ne tietokone asiantuntijat ravistelevat pois ehdot ja sanomalla
fancy asioita, kuten ominaisvektoria, ja z-akselin,
ja useita muita oikeastaan ﻗﻗenemmﺣ۳n teknisiﺣ۳ termejﺣ۳,
he todella vain nauhassa sanat yhdessﺣ۳ aivan liian usein.
Onko se yksi toiveemme on, ettﺣ۳ kuten haittavaikutus kursseja
nﺣ۳in, tulee enemmﺣ۳n ihmisiﺣ۳ maailma todella voi punnita
ja juuri koskaan niin hieman vaikuttaa laatu ja tarkkuus nﺣ۳istﺣ۳ elokuvista?
>> Itse asiassa, nyt katsomaan todellisuutta.
Joten tﺣ۳ssﺣ۳ on henkilﺣﭘstﺣﭘn kuva Maria, yksi opetuksen Fellows.
Ja kai hﺣ۳n on epﺣ۳illﺣ۳ﺣ۳n jotain.
Ja silti, siellﺣ۳ on pilkahdus jotkut todiste hﺣ۳nen silmﺣ۳ssﺣ۳,
tai heijastus hﺣ۳nen silmﺣ۳lasit.
No, jos teemme juuri niin kuin elokuvien ehdottaa, jolloin me zoomata ja "parantaa",
tﺣ۳mﺣ۳ on kuinka paljon tietoa on Marian kasvot
kun kuvattaessa kanssa, ettﺣ۳ alkuperﺣ۳inen resoluutio.
>> Ja itse asiassa, voit nﺣ۳hdﺣ۳ nﺣ۳mﺣ۳ pisteet.
Ja nﺣ۳mﺣ۳ ovat mitﺣ۳ ovat kutsutaan pikseliﺣ۳, P-I-X-E-L-S,
joka on vain neliﺣﭘ tyypillisesti joka on piste, joka muodostaa kuvan.
Ja takaisin seuraavana pﺣ۳ivﺣ۳nﺣ۳, ja itse asiassa jopa tﺣ۳nﺣ۳ﺣ۳n jotkut nykypﺣ۳ivﺣ۳n LED-televisiot
tai LCD-televisiot, jos sinulla yksi oman huoneen tai kotona,
jos menet ylﺣﭘs Super lﺣ۳hellﺣ۳ sitﺣ۳, ja varsinkin jos se on hieman vanhempi TV,
voit todennﺣ۳kﺣﭘisesti jopa nﺣ۳hdﺣ۳ nﺣ۳mﺣ۳ pisteet ja sitﺣ۳hﺣ۳n sﺣ۳veltﺣ۳ﺣ۳ kuvan.
>> Ja ei ole enﺣ۳ﺣ۳ tiedot kuin tﺣ۳mﺣ۳.
Voisimme "parantaa", siinﺣ۳ mielessﺣ۳ tasoitus asioita yli ja tavallaan
pﺣ۳ﺣ۳ttelemﺣ۳llﺣ۳ sellainen, tavallaan mitﺣ۳ vﺣ۳ri pitﺣ۳isi olla vieressﺣ۳ Marian silmﺣ۳
niin ettﺣ۳ se ei ole oikeastaan ﻗﻗniin pixelated.
Mutta jos pidﺣ۳n zoomaus, siellﺣ۳ on paha kaveri hﺣ۳nen silmﺣ۳ssﺣ۳.
Kuin ettﺣ۳ on kaikki tiedot meillﺣ۳ on.
Et voi luoda tiedot tyhjﺣ۳stﺣ۳.
On vain rajallinen bittien mﺣ۳ﺣ۳rﺣ۳ siellﺣ۳.
>> Joten Harjoitus 4, jossa sinulla on mahdollisuus
pelata tﺣ۳llaista maailman.
Vuonna Harjoitus 4, voit tutkia maailmaan grafiikka, ja Forensics,
ja todella kirjoittaa koodia joka toipuu menetetty kuvia.
Sinun kirjoittaa koodia, joka manipuloi olevien kuvien
ja lopulta ymmﺣ۳rtﺣ۳ﺣ۳, mitﺣ۳ on meneillﺣ۳ﺣ۳n alla huppu.
>> Ja se kﺣ۳ﺣ۳ntyy pois, se on todella ole kovin monimutkainen.
Esimerkiksi, jos halusimme edustavat hymiﺣﭘ kasvot jossa
mustilla pikseliﺣ۳, tai nﺣ۳itﺣ۳ mustia pisteitﺣ۳,
hyvin, voisimme yksinkertaisesti edustaa ne todella bittikartta.
Ja jos koskaan kuullut, ettﺣ۳ ilmaisu bittikartta, ehkﺣ۳
nyt alkaa tehdﺣ۳ vﺣ۳hﺣ۳n enemmﺣ۳n jﺣ۳rkeﺣ۳ tﺣ۳nﺣ۳ﺣ۳n.
>> Tiedﺣ۳mme jo mitﺣ۳ vﺣ۳hﺣ۳n on.
Se on 0 tai 1.
Ja kartta on vain jotain kuten paperille
joka antaa sinulle ohjeita ja on ehkﺣ۳ verkkoon x- ja y-koordinaatit.
Joten tﺣ۳ssﺣ۳ on bittikartta.
Se on kartta bittejﺣ۳ jolloin 1 on ilmeisesti
menossa edustaa valkoinen pikseli, ja 0 on menossa edustamaan musta pikseli.
Mutta voisimme varmasti kﺣ۳ﺣ۳nnﺣ۳ se ympﺣ۳ri.
Se ei ole oikeastaan ﻗﻗvﺣ۳liﺣ۳ niin kunhan olemme johdonmukaisesti.
Ja tﺣ۳ssﺣ۳ miten, vuonna binary-- sisﺣ۳llﺣ۳ tietokoneen muistiin, tai jopa sisﺣ۳llﺣ۳
tiedoston kiintolevyn drive-- voi tallentaa
yksinkertaisin hymiﺣﭘ kasvot kuvia.
Mutta mitﺣ۳ me, tietenkin, puuttuu tﺣ۳mﺣ۳n kuvan?
Vﺣ۳ri, eikﺣﭘ?
Se on selvﺣ۳ﺣ۳, ettﺣ۳ seuraava askel tai lisﺣ۳laite parantaa tﺣ۳tﺣ۳ vﺣ۳riﺣ۳.
Joten valitettavasti vain yhdellﺣ۳ bittinen, 0 tai 1, voisimme esittﺣ۳ﺣ۳ vﺣ۳ri.
Se voisi olla punainen tai sininen, tai musta tai valkoinen, tai vihreﺣ۳, tai vaaleanpunainen,
tai paria vﺣ۳rejﺣ۳.
Mutta yksinkertaisuuden vuoksi, olemme will vain olettaa musta ja valkoinen.
>> Joten mitﺣ۳ loogisesti me tarvitsemme, jos haluamme halua toteuttaa kuvan vﺣ۳rin?
Mitﺣ۳ meidﺣ۳n on tehtﺣ۳vﺣ۳?
Kuten jos rajoittava tekijﺣ۳ tﺣ۳ssﺣ۳ on se, ettﺣ۳ yhden bitin voit vain
edustavat kahta valtiota, 0 tai 1, valkoinen tai musta, mitﺣ۳ haluat tehdﺣ۳?
Yleisﺣﭘ: Lisﺣ۳ﺣ۳ tietoja.
DAVID J. MALAN: enemmﺣ۳n bittejﺣ۳, joo enemmﺣ۳n tietoa, enemmﺣ۳n bittejﺣ۳.
Ja todellakin, juuri niin vﺣ۳rikuvia ovat edustettuina.
Sen sijaan kﺣ۳yttﺣ۳ﺣ۳ yhden bitin, 0 tai 1 kunkin pikselin, jokainen piste,
kﺣ۳ytﺣ۳t vain useita.
Ehkﺣ۳ kﺣ۳yttﺣ۳ﺣ۳ 8, ehkﺣ۳, yleisemmin kﺣ۳yttﺣ۳ﺣ۳ 24, ja todellakin, vuonna Harjoitus
4, tulee pelaat tiedosto muodossa, joka kﺣ۳yttﺣ۳ﺣ۳ 24 bittiﺣ۳ tyypillisesti.
>> Mutta useimmat teistﺣ۳ ovat luultavasti perehtynyt JPEG.
Jos olet koskaan ottanut kuva puhelimeen,
tai ladata tai nﺣ۳hnyt jotain Facebook, tai Flickr, mikﺣ۳ tahansa numero
valokuva-pohjaisia ﻗﻗweb-sivustoja, olet luultavasti nﺣ۳hnyt JPEG ennen.
Ja se kﺣ۳ﺣ۳ntyy pois, tﺣ۳mﺣ۳ on tiedosto muodossa aiomme kﺣ۳yttﺣ۳ﺣ۳ PSET 4,
jolloin aiot tﺣ۳ytyy palauttaa kuvia
ettﺣ۳ olen vahingossa poistettu vioittunut muistikortti kamerassa,
jos haluatte.
>> Ja kﺣ۳y ilmi, ettﺣ۳ vaikka JPEG on melko sophisticated--
se on paljon kehittyneempi kuin musta ja valkoisia pisteitﺣ۳
nﺣ۳imme hetki sitten, koska siellﺣ۳ todella fancy algoritmeja
kﺣ۳ytetﺣ۳ﺣ۳n pakata JPEG, joten ettﺣ۳ voit olla todella mukava,
kuvanlaatu mutta kﺣ۳yttﺣ۳mﺣ۳llﺣ۳ suhteellisen vﺣ۳hﺣ۳n bittiﺣ۳.
Ja me palaamme puristus ennen pitkﺣ۳ﺣ۳.
On kﺣ۳ynyt ilmi, ettﺣ۳ ensimmﺣ۳inen kolme tavua JPEG image--
mitﺣ۳ olet ottanut valokuvan of-- ovat arvot 255, 216, 255.
>> Toisin sanoen, jos vain nﺣ۳hdﺣ۳, ettﺣ۳ malli bittien,
tﺣ۳ﺣ۳llﺣ۳ edustettuina kolme tavua, tai 24 bittiﺣ۳ yhteensﺣ۳,
suurella todennﺣ۳kﺣﭘisyydellﺣ۳ voit pﺣ۳ﺣ۳tellﺣ۳, ettﺣ۳ etsit sitﺣ۳ tﺣ۳llﺣ۳ kolmen ensimmﺣ۳isen
tavua JPEG.
Ja tﺣ۳mﺣ۳ on mitﺣ۳ kutsutaan koska allekirjoitus JPEG.
Paljon tiedostomuotoja siellﺣ۳ yleensﺣ۳ alkaa
tiettyjﺣ۳ malleja 0s ja 1s, niin ettﺣ۳ Windows ja Mac OS, ja IOS,
ja Android tietﺣ۳ﺣ۳ minkﺣ۳lainen tiedosto he ovat lisﺣ۳ksi niin kutsutun tiedoston
laajennus paljon tiedostoja on.
Jos olet .jpg, se toinen vihje tietokoneeseen.
>> Joten nyt tarkastelemme tﺣ۳tﺣ۳ hieman teknisesti.
Tiedﺣ۳mme desimaalin jﺣ۳rjestelmﺣ۳ on 0 kautta 9.
Tiedﺣ۳mme binary on 0 ja 1.
Ja jos luulet takaisin PSET 0, meillﺣ۳ oli sinﺣ۳ painia,
varten hieman, jotain nimeltﺣ۳ﺣ۳n heksadesimaali,
jos sinulla on 16 numeroa, sijasta 10 tai sijasta 2.
Ja ne numeroa, sopimuksen mukaan, ovat 0 kautta 9 ja sitten
kautta f, jossa f edustaa mitﺣ۳ desimaaliluku, kuten nopea jﺣ۳rki
tarkistaa?
Niin, 15.
Ja on edustettava 10, vain luonne tilaus ettﺣ۳ olen antanut.
Se on vain mielivaltainen yleissopimus, mutta se on melko tavallinen.
>> Joten jos katsomme tﺣ۳tﺣ۳ mallia kolme bytes-- katsotaanpa
vain alkaa katsomaan sitﺣ۳ tavalla, joka on miten
tietotekniikan tutkijoita yleisesti tarkastella ja miettiﺣ۳ tiedostoja.
Voit varmasti ajatella tiedostoja 0s ja 1s, ja desimaalin,
mutta todellisuudessa meillﺣ۳ on tapana kﺣ۳yttﺣ۳ﺣ۳ binary tai tyypillisemmin hexadecimal--
takaisin PSET 0.
Haluan siis ehdottaa, ettﺣ۳ 255, 216, ja 255 ovat vain nﺣ۳mﺣ۳ mallit 0 ja 1s.
Ja voit tarkistaa tﺣ۳mﺣ۳n, jos haluavat tehdﺣ۳ matematiikka viikosta 0.
Mutta, nyt, vain olettaa ettﺣ۳ tﺣ۳mﺣ۳ on todellakin oikea.
Olen juuri uusiksi kolmen desimaalin numerot kolme binﺣ۳ﺣ۳riarvot.
Nyt mitﺣ۳ aion tehdﺣ۳, on lisﺣ۳ﺣ۳ vain tyhjﺣ۳ﺣ۳ tilaa,
vain luettavuuden vuoksi.
Ja ilmoitus, olen juuri menossa siirrellﺣ۳ toisistaan.
Joten ennen, jﺣ۳lkeen, ennen, jﺣ۳lkeen.
Mulla mitﺣ۳ﺣ۳n mielenkiintoista muut kuin vain levittﺣ۳ﺣ۳ asiat niin
ettﺣ۳ ilmoitus jokaisen sarjan kahdeksan bitit on nyt kaksi neljﺣ۳ bittiﺣ۳.
Tﺣ۳mﺣ۳ on hyﺣﭘdyllinen, koska heksadesimaali on erityisen muodikas
koska jokainen heksadesimaalinumero 0 f, tai tarkemmin sanottuna 0 lﺣ۳pi 15,
voidaan esittﺣ۳ﺣ۳ tﺣ۳smﺣ۳lleen neljﺣ۳ bittiﺣ۳.
Toisin sanoen, heksadesimaali jos haluavat edustaa 0, se on vain 0000,
neljﺣ۳ nollaa.
Ja jos haluat edustaa 15, se on 1111, mikﺣ۳ on neljﺣ۳ bittiﺣ۳.
Ja jos et matematiikka, jos tﺣ۳mﺣ۳ on itse paikka,
tﺣ۳mﺣ۳ on 16s paikka, joka tulee antaa sinﺣ۳--
pikemminkin se on menossa to-- pahoillani, binary,
joka on menossa antaa sinulle 15, niistﺣ۳ paikka, kaksittain paikka, nelosta ja kahdeksikkoa paikka.
Joten haluan ehdottaa, ettﺣ۳ Aseta neljﺣ۳ bittiﺣ۳ vasemmalle
on mitﺣ۳ aiomme soittaa f.
Se on suurin numero voi edustaa neljﺣ۳ bittiﺣ۳.
Ja tiedﺣ۳mme jo heksadesimaali, f on suurin numero heksadesimaalimuodossa.
Meillﺣ۳ toinen f siellﺣ۳, kaksi tuolla.
Ja nyt, ota uskoon ettﺣ۳ olen tehnyt matematiikka oikea
ja ettﺣ۳ vasen puoli Nﺣ۳iden bittien, 1101,
on sama asia kuin d heksadesimaalimuodossa.
Ja oikea kﺣ۳si, 1000, on vain 8.
>> Ja ettﺣ۳ yksi helppo nﺣ۳hdﺣ۳, eikﺣﭘ?
8 represents-- on oikea alla, ettﺣ۳ kahdeksikkoa paikka.
Joten meillﺣ۳ on yksi kahdeksikkoa sarakkeessa ja mikﺣ۳ﺣ۳n nelosta, kaksittain tai niistﺣ۳.
Joten nyt enemmﺣ۳n tavanomaisesti, ihmisillﺣ۳ on taipumus kirjoittaa heksadesimaaliluvut nﺣ۳in,
juuri litistﺣ۳ﺣ۳ ne yhteen, ja sitten etuliitteen ne 0x.
Se ei tarkoita mitﺣ۳ﺣ۳n muuta kuin visuaalinen vihje human--
tﺣ۳ssﺣ۳ tulee heksadesimaalinen value-- koska se ei ehkﺣ۳ muuten olisi ilmeinen.
>> Joka on sanoa, lopulta, ettﺣ۳ kuvio nollia ja ykkﺣﭘsiﺣ۳,
tai rakenteessa heksadesimaali numeroa vastaavasti, ettﺣ۳ olet
aikoo aloittaa etsivﺣ۳t vuonna Harjoitus 4 on this--
ja Harjoitus 4 spec kﺣ۳vellﺣ۳ sinua tﺣ۳ssﺣ۳ enemmﺣ۳n detail--
mutta ymmﺣ۳rtﺣ۳ﺣ۳ koska tavallaan mystistﺣ۳ kuin tﺣ۳mﺣ۳ saattaa nﺣ۳yttﺣ۳ﺣ۳ ensi silmﺣ۳yksellﺣ۳,
aiot alkaa nﺣ۳hdﺣ۳ tﺣ۳tﺣ۳ paljon.
Ja itse asiassa jopa GDB, debuggeri otimme kﺣ۳yttﺣﭘﺣﭘn maanantaina
ja Dan esittelee vuonna PSET 3, tulee usein nﺣ۳yttﺣ۳ﺣ۳ heksadesimaaliarvot
vain koska he ovat yleensﺣ۳ tavanomainen kuin desimaalin tai binary
maailman tietokoneita.
Nyt Taustaksi tﺣ۳lle.
Monet teistﺣ۳ saattaa muistaa tﺣ۳mﺣ۳ kuva tﺣ۳ﺣ۳llﺣ۳, joka tuli mitﺣ۳?
Vista, joten jopa aiemmin kuin ettﺣ۳, Windows XP teki tﺣ۳mﺣ۳n debyytti.
Joten tﺣ۳mﺣ۳ on kaunis maisema.
Ja itse asiassa, jos penkoa online-- Minusta se on Wikipedia-artikkeli,
jossa joku hyvin hﺣ۳mmﺣ۳styttﺣ۳vﺣ۳n lﺣ۳htivﺣ۳t lﺣﭘytyi tﺣ۳mﺣ۳ pﺣ۳in maailmaa perustettu
hﺣ۳nen kamera juuri oikeaan place--
ja tﺣ۳mﺣ۳ tﺣ۳nﺣ۳ﺣ۳n nﺣ۳yttﺣ۳ﺣ۳ like-- mutta se on tﺣ۳smﺣ۳lleen sama asetus.
Tﺣ۳mﺣ۳ kuva on kuitenkin tiedostoon muodossa nimeltﺣ۳ bittikartta, b-m-p.
Ja aiomme ottaa super Pikainen vilkaisu mitﺣ۳ se tarkoittaa.
>> Mutta bittikartta on vain erilainen tapa edustavat kuvia edelleen kﺣ۳ytﺣﭘssﺣ۳ pikseliﺣ۳
vuonna 0s ja 1s, lopulta.
Mutta nopealla silmﺣ۳yksellﺣ۳, se on mielenkiintoisempi allekirjoitus
alussa tiedoston.
Se ei ole vain kolme tavua, eikﺣ۳ siellﺣ۳
koko joukko malleja tavua jotka ovat ennalta merkitys.
Esimerkiksi jossain muutaman ensimmﺣ۳isen tavua bittikarttakuvan
tulee olla koko kuva, leveys kuvan,
kuvan korkeus, niin hyﺣﭘdyllinen metatiedot, jos haluatte.
Hyﺣﭘdyllistﺣ۳ tietoa ettﺣ۳ Photoshop tai kuvankﺣ۳sittelyohjelmaan kﺣ۳ytﺣ۳t
voisi itse vﺣ۳litﺣ۳.
>> Joten lisﺣ۳ﺣ۳ tﺣ۳stﺣ۳ Harjoitus 4, mutta tﺣ۳mﺣ۳
on vain sanoa, ettﺣ۳ pﺣ۳ivﺣ۳n pﺣ۳ﺣ۳tteeksi
kaikki tiedostomuodot olet kﺣ۳yttﺣ۳nyt varten years-- Microsoft Word-tiedostoja,
Numbers tiedostoja, Excel-tiedostoja, rajoittamattoman mﺣ۳ﺣ۳rﺣ۳n tiedostomuotoja
ettﺣ۳ saattaa olla joitakin tunnettu tiedostopﺣ۳ﺣ۳te
ovat vain 0s ja 1s alla huppu.
Ja ihmiset ovat pﺣ۳ﺣ۳ttﺣ۳neet mitﺣ۳ sopimukset ovat,
mitﺣ۳ malleja 0s ja 1s edustavat Word-tiedosto vs. Excel-tiedoston,
vastaan ﻗﻗuseita muita tiedostomuotoja.
Joten PSET 4, sinun on mahdollisuus pelata kanssa.
>> Mutta mitﺣ۳ se tarkoittaa olla struct.
Tﺣ۳mﺣ۳ on todella mukava segue nyt osaksi C, joka on vain pari
lisﺣ۳ominaisuuksia, jotka emme ole katsonut vielﺣ۳.
Se on aika pieni kieli ja yksi kivoja ominaisuuksia noin C on struct.
Esimerkiksi, jos halusi represent-- katsotaanpa
ettﺣ۳ haluat olla muuttuja, joka edustaa opiskelija joku ohjelma.
Ehkﺣ۳ olit kirjallisesti kurssi rekisterﺣﭘinti ohjelma, tai ydin ostoksia
tyﺣﭘkalu, tai jotain sellaista.
Mitﺣ۳ kappaletta liittyviﺣ۳ tietoja opiskelijalle, jotka tulevat mieleen?
Kuten opiskelija edustanut mitﺣ۳ arvoja?
Joo?
Sinulla nimi opiskelija.
Mitﺣ۳ muuta tyypillinen opiskelija on?
>> Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
>> DAVID J. MALAN: Niin, anteeksi.
>> Yleisﺣﭘ: Ikﺣ۳.
>> DAVID J. MALAN: ikﺣ۳ tai syntymﺣ۳pﺣ۳ivﺣ۳ vastaavasti, jep.
Mitﺣ۳ muuta?
Yleisﺣﭘ: ID-numero?
DAVID J. MALAN: Niin henkilﺣﭘtunnus, ehkﺣ۳ puhelinnumero, ehkﺣ۳ asuntolan, tai talo,
tai korkeakoulussa, tai jotain sellaista.
Mikﺣ۳ tahansa kappalemﺣ۳ﺣ۳rﺣ۳ tietojen saatat olla yhteystietoluettelossasi
on mitﺣ۳ voisi mﺣ۳ﺣ۳ritellﺣ۳ opiskelija.
Joten jos halusimme tehdﺣ۳ tﺣ۳mﺣ۳n koodin, voisimme tehdﺣ۳ jotain yksinkertaista, kuten tﺣ۳mﺣ۳.
Meillﺣ۳ saattaa olla ohjelman niin, ettﺣ۳ on sanokaamme, int main (void).
Ja jos haluan edustaa opiskelija voisin olla, esimerkiksi,
merkkijonon kehotti nimi ettﺣ۳ opiskelija, merkkijono nimeltﺣ۳ﺣ۳n asuntolan ettﺣ۳ opiskelija,
ehkﺣ۳ int kehotti tunnus ettﺣ۳ opiskelija.
Ja koska olen kﺣ۳yttﺣ۳en merkkijono, minﺣ۳ tﺣ۳ytyy mennﺣ۳ takaisin ja laittaa ylﺣﭘs CS50.h.
Ehkﺣ۳ olen menossa on stdio.h.
Joten anna minun ennaltaehkﺣ۳isevﺣ۳sti tehdﺣ۳ noita ja minﺣ۳ olen aikoo kutsua tﺣ۳tﺣ۳ student.c nyt
ja tallentaa.
>> Ja nyt voin tehdﺣ۳ jotain nﺣ۳itﺣ۳ muuttujia.
Ja me juuri menossa kirjoittaa ettﺣ۳ kuten kommentti pseudokoodin,
koska se ei ole kiinnostavaa mitﺣ۳ teemme nyt.
OK, joten tﺣ۳mﺣ۳ on ohjelma, joka jotenkin tallentaa opiskelija.
Mitﺣ۳ haluan tehdﺣ۳, jos haluat tallentaa kaksi opiskelijaa?
Joten minun ensimmﺣ۳inen vaisto on menossa olla kunnossa, odota minuutti,
jos minulla on toinen opiskelija Miksi en vain tehdﺣ۳ merkkijonon nimi 2, merkkijono asuntolan 2,
int ID2.
Ja olemme tehneet mennyt tﺣ۳llﺣ۳ tiellﺣ۳ ennen
ja mikﺣ۳ oli meidﺣ۳n ratkaisu mitﺣ۳ nﺣ۳yttﺣ۳ﺣ۳ olla erﺣ۳ﺣ۳nlainen hackish Kopioi Liitﺣ۳
tyﺣﭘ tﺣ۳ﺣ۳llﺣ۳?
Yleisﺣﭘ: array.
DAVID J. MALAN: Joo, voisimme kﺣ۳yttﺣ۳ﺣ۳ array.
Oikea tﺣ۳mﺣ۳ hyvin nopeasti tyﺣﭘskentely ruuhkautuu.
Sinun tﺣ۳ytyy lajitella mielivaltaisesti aloittaa nimeﺣ۳minen kaikkia nﺣ۳itﺣ۳ muuttujia.
Ja sinﺣ۳, ihminen, on pidettﺣ۳vﺣ۳ seurata, ettﺣ۳ OK NAME2 vastaa
kanssa dorm2 vastaa ID2.
Se vain tulee sotkua.
Niin se on paljon helpompaa, muistamme muutama viikko sitten,
vain ottaa kutsutaan merkkijono nimet ja ehkﺣ۳ antaa meille kolme nﺣ۳istﺣ۳.
Ja sitten ehkﺣ۳ meillﺣ۳ merkkijono asuntoloissa ja on
kolme nﺣ۳istﺣ۳, tai vakio, int tunnukset ja kolme noita.
Mutta jo nyt tﺣ۳mﺣ۳ tuntuu hieman huolimaton, oikea.
Puhumme opiskelijoita ja vielﺣ۳ Olen todella asunnon alhaisella tasolla
toteutuksen yksityiskohdat.
Opiskelija nimi ja asuntolan ja tunnus.
>> Miksi en voi vain julistaa muuttuja nimeltﺣ۳ﺣ۳n opiskelija ja kutsua sitﺣ۳ s.
Ja jos haluan toisen opiskelijan, miksi en vain kutsua sitﺣ۳ T.
Tai jos haluan koko joukko opiskelijoiden, miksi en vain
sanoa, ettﺣ۳ olen koko luokan opiskelijoille, ja se on kolme.
Toisin sanoen, miksi en tulla kanssa oman datatyypin, nimeltﺣ۳ﺣ۳n
Opiskelijoita, jonka sisﺣ۳llﺣ۳ on nimi, on tunnus, on asuntolan,
on useita muita kenttiﺣ۳.
Ja se osoittautuu sinua voi tehdﺣ۳ juuri nﺣ۳in.
>> Joten C on tﺣ۳mﺣ۳ ominaisuus nimeltﺣ۳ struct.
Se kielen ominaisuus, joka antaa meille mahdollisuuden tehdﺣ۳ juuri tﺣ۳mﺣ۳n.
Aion mennﺣ۳ eteenpﺣ۳in ja avata structs.h
minne olemme menossa katsomaan seuraava mﺣ۳ﺣ۳ritelmﺣ۳ opiskelija.
On kﺣ۳ynyt ilmi - ja tﺣ۳mﺣ۳ on jopa yksinkertaisempi kuin yksi mukana tunnus
hetki sitten.
Jos haluat keksiﺣ۳ kotitekoisia tietotyyppi,
ja lisﺣ۳ksi int, ja nieriﺣ۳ﺣ۳ ja float ja kaikki nﺣ۳mﺣ۳ muut olemassa,
voit tehdﺣ۳ niin kirjaimellisesti kirjallisesti typedef struct,
sitten jotkut aaltosulkeita, jonka sisﺣ۳llﺣ۳ sinua
luettelo muuttujat haluat liittﺣ۳vﺣ۳t tﺣ۳mﺣ۳n uuden mukautetun tiedot
kirjoita kuten nimi ja asuntolan, ja sitten sen jﺣ۳lkeen aaltosulkeita
annat nimen uusien tietojen tyyppi.
Niinpﺣ۳ esimerkiksi, opiskelija.
>> Ja mitﺣ۳ mukavaa tﺣ۳stﺣ۳ on, ettﺣ۳ nyt jos katsomme vastaava koodi,
yleissopimus, ensimmﺣ۳inen Kaikkien, on laittaa tﺣ۳mﺣ۳
tiedostoon nimeltﺣ۳ jotain piste h, header-tiedosto, joka meillﺣ۳ ei
alkoi kﺣ۳yttﺣ۳ﺣ۳ itseﺣ۳mme liikaa.
Mutta aiomme aloittaa kﺣ۳yttﺣ۳en melko vﺣ۳hﺣ۳n nyt.
Ja mitﺣ۳ voimme tehdﺣ۳ tﺣ۳mﺣ۳n, lopulta, nﺣ۳issﺣ۳ muutaman rivin koodia
on julistaa juuri sitﺣ۳ tietotyyppi, opiskelija.
Ja Nyt kﺣ۳yttﺣ۳ﺣ۳ sitﺣ۳.
>> Aion nyt mennﺣ۳ tiedosto nimeltﺣ۳ structs1.c.
Ja lﺣ۳hdetﺣ۳ﺣ۳n katsomaan harvat ominaisuudet tﺣ۳ﺣ۳llﺣ۳.
Joten tukkia tﺣ۳ssﺣ۳ enimmﺣ۳kseen tuttuja, ja me
palata mikﺣ۳ ei ole tuttu vain hetken.
Tﺣ۳mﺣ۳ tietenkin on myﺣﭘs omassani header-tiedosto, joka on uusi myﺣﭘs,
paitsi PSET 3 missﺣ۳, Recall, meillﺣ۳ on helpers.h.
Joten saatat muistaa # include helpers.h.
>> Miksi vaikka minulla on kﺣ۳ytﺣﭘssﺣ۳ lainausmerkkejﺣ۳ sijasta kulmassa suluissa?
Milloin voin valita ne?
Lﺣ۳hes aina Nﺣ۳ytﺣ۳n kﺣ۳yttﺣ۳ﺣ۳ kulma suluissa.
Ja sitten, yhtﺣ۳kkiﺣ۳ on line kuusi Kﺣ۳ytﺣ۳n lainausmerkkeihin.
Miksi voisi olla?
Joo?
>> Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
DAVID J. MALAN: Se todellinen, mitﺣ۳?
Yleisﺣﭘ: Se on teidﺣ۳n IDE.
DAVID J. MALAN: Joo, se on minun todellinen IDE.
Ja ﺣ۳lkﺣ۳ﺣ۳mme viipyﺣ۳ IDE, koska se on vain tyﺣﭘkalu, joka olen kﺣ۳yttﺣ۳en.
Se on minun nykyinen hakemiston, erityisesti.
Joten structs.h on oma tiedosto ei asennettu IDE,
kﺣ۳yttﺣﭘjﺣ۳rjestelmﺣ۳ itse, vaan se on minun hakemistossa.
Joten yleissopimus on, jos haluat sisﺣ۳llyttﺣ۳ﺣ۳ oman header-tiedosto,
kﺣ۳ytﺣ۳t vain lainausmerkkejﺣ۳.
>> Mitﺣ۳ me kutsumme tﺣ۳tﺣ۳ asia linja 8, yleisesti ottaen?
Tﺣ۳mﺣ۳ on mitﺣ۳?
#define jotain.
Tﺣ۳mﺣ۳ on vakiot, eikﺣﭘ?
Jos haluat olla arvoa ohjelman
ettﺣ۳ kﺣ۳ytﺣ۳t koko joukko kertaa, se on
hyvﺣ۳ yleissopimus tekijﺣ۳ sitﺣ۳, julistaa, ettﺣ۳ se, hash symboli
mﺣ۳ﺣ۳ritellﺣ۳, sitten Sopimuksen mukaan kaikissa isoiksi word-- vaikka se ei ole
ehdottoman vﺣ۳lttﺣ۳mﺣ۳tﺣﭘntﺣ۳, mutta se on ihmisen yleissopimus
hyﺣﭘdyntﺣ۳ﺣ۳ vakioita jotta ne hyppﺣ۳ﺣ۳ ulos
sinua visually-- tilaa ja niin arvo haluat olla
vastaa, ettﺣ۳ jatkuva nimi.
Ei puolipiste, mutta voit yksinkertaisesti seuraa, ettﺣ۳ kuvio siellﺣ۳.
>> Joten mitﺣ۳ teen tﺣ۳ssﺣ۳ todellinen koodi.
Joten katsomaan pﺣ۳ﺣ۳ohjelma tﺣ۳ﺣ۳llﺣ۳.
Linjassa 12, koska olen ovat olleet structs.h,
Minulla on nyt maagisesti minun hﺣ۳vittﺣ۳minen uusi tietotyyppi.
Minulla ei vain ole pﺣ۳ﺣ۳syﺣ۳ int, ja nieriﺣ۳ﺣ۳, ja kellua, ja string,
ja sininen ja muut.
Minulla on nyt pﺣ۳ﺣ۳sy opiskelija tietotyyppi.
Joten linja 12, olen yhdistﺣ۳mﺣ۳llﺣ۳ kaksi ideas-- yksi mukautetun tietotyyppi ja kaksi,
kﺣ۳yttﺣ۳en array.
Ja niin tﺣ۳ssﺣ۳ ohjelmassa, jos Haluan todella tukea
kolme eri opiskelijat minun ohjelma, minﺣ۳
voi yksinkertaisesti sanoa antaa minulle muuttuja kutsutaan opiskelijoita, joista jokainen
on tyyppiﺣ۳ opiskelijoita, jotka minulla on tapana tietotyyppi.
Ja, erityisesti, anna minulle kolme nﺣ۳istﺣ۳ minun array.
>> Joten nyt mitﺣ۳ me teemme tﺣ۳ssﺣ۳ ohjelmassa?
Tﺣ۳ssﺣ۳ on vain varten silmukka iteroimalla 0-3, koska se on
mitﺣ۳ arvo opiskelijoiden on.
Olen vain kehottaa kﺣ۳yttﺣ۳jﺣ۳ﺣ۳ anna minulle opiskelijan nimi.
Ja sitten linjassa 17, me on enimmﺣ۳kseen tuttuja linja.
Meillﺣ۳ on vanha ystﺣ۳vﺣ۳ GetString oikealla.
Ja mitﺣ۳ pala syntaksin on ilmeisesti uusi,
jos et ole koskaan ohjelmoitu C ennen, eikﺣ۳ ole koskaan kﺣ۳yttﺣ۳nyt structs?
Joo?
>> Yleisﺣﭘ: .name.
DAVID J. MALAN: .name.
Mutta tﺣ۳mﺣ۳ ei ole liikaa harppaus, koska nyt opiskelijat kannatin i
antaa sinulle i: nnen opiskelija.
Ja jos haluat sukeltaa sisﺣ۳llﺣ۳ ettﺣ۳ rakenne,
kﺣ۳ytﺣ۳t vain yhden kerran ja sitten muuttujan nimi sisﺣ۳llﺣ۳,
tai omaisuuden sisﺣ۳llﺣ۳ ettﺣ۳ haluat pﺣ۳ﺣ۳stﺣ۳ kﺣ۳siksi.
Samoin silloin, jos en sitten pyytﺣ۳ﺣ۳ kﺣ۳yttﺣ۳jﺣ۳, anna minulle opiskelijan asuntolan,
voit samalla tallentaa ettﺣ۳ merkkijono asuntolan muuttuja sisﺣ۳llﺣ۳
Kyseisen opiskelija rakenne.
>> Ja nyt asiat saavat hieman fancy.
Ja tﺣ۳mﺣ۳ tulee nﺣ۳yttﺣ۳mﺣ۳ﺣ۳n klo ehkﺣ۳ paljon melko pian.
Mutta nﺣ۳et tﺣ۳mﺣ۳n paljon enemmﺣ۳n PSET 4, joten haluan vain vilkaista sitﺣ۳ nyt.
On kﺣ۳ynyt ilmi, ettﺣ۳ linja 23 kautta 38, mitﺣ۳ luulet minun kenties tekemﺣ۳ssﺣ۳?
Olen poistanut kommentit tﺣ۳nﺣ۳ﺣ۳n, mutta versio
koodi verkossa viittaus on kaikki kommentit.
Mitﺣ۳ Nﺣ۳ytﺣ۳n tekevﺣ۳n?
>> Yleisﺣﭘ: tallentaminen tiedoston kaikki tiedot, jotka kﺣ۳yttﺣ۳jﺣ۳ on antanut.
>> DAVID J. MALAN: Joo, juuri, tﺣ۳mﺣ۳ on uusi tapa
ettﺣ۳ nﺣ۳emme kaksi, Toinen piirre C,
jolloin voin luoda oman tiedostoja.
Tﺣ۳hﺣ۳n mennessﺣ۳ lﺣ۳hes jokainen ohjelma olet kirjoittanut on kansalaisuudeton.
Heti kun se on tehty kﺣ۳ynnissﺣ۳, se on siinﺣ۳.
Ei ole muistia tai muistikuvaa siitﺣ۳.
Ei ole tallennettu tiedosto.
Mutta jos et halua tallentaa tulo ettﺣ۳ on
tapahtui, kuten pelin tai ohjelman nﺣ۳in, se kﺣ۳ﺣ۳ntyy pois voimme tehdﺣ۳ niin.
Ja nﺣ۳et tﺣ۳mﺣ۳n lisﺣ۳ﺣ۳ vuonna PSET 4 ja jaksossa.
Mutta tﺣ۳mﺣ۳ linja 23 olennaisesti luo tiedosto nimeltﺣ۳ students.csv.
Ja ehkﺣ۳ nﺣ۳hnyt tﺣ۳mﺣ۳n ennenkin.
Vaikka et ole koskaan opiskellut CS ennen, CSV on pilkulla erotettuna muuttujia.
Se on kuin hyvin kﺣﭘyhﺣ۳n versio Excel-tiedoston,
mikﺣ۳ tarkoittaa, ettﺣ۳ se voidaan avata Excel ja Apple numerot,
ja se on rivejﺣ۳ ja sarakkeita.
Mutta se ei ole omaa muodossa, kuten Microsoftin tai Applen.
Se on vain pilkkuja erottamalla arvot ettﺣ۳ nﺣ۳emme hetken kuluttua.
>> Ja ota arvaus.
Linjassa 23, aivan Lopulta minun toinen vﺣ۳ite
tﺣ۳hﺣ۳n uuteen toiminto nimeltﺣ۳ﺣ۳n f avoinna tiedosto auki on w.
Mikﺣ۳ mahtaa W tarkoittavat?
Joo?
>> Yleisﺣﭘ: Sen avulla voit kirjoittaa tiedostoon?
>> DAVID J. MALAN: Sen avulla voit kirjoittaa tiedostoon.
Joten siellﺣ۳ on pari vaihtoehtoja ettﺣ۳ voimme plug tﺣ۳ﺣ۳llﺣ۳.
Mutta jos haluat vain lukea tiedosto, joka on katsoa sitﺣ۳
ja lukea sen muistiin, voit vain kﺣ۳yttﺣ۳ﺣ۳ lainaus lainaus pﺣ۳ﺣ۳ttyy "R".
Jos haluat kirjoittaa tiedosto, kﺣ۳ytﺣ۳t lainaus lainaus pﺣ۳ﺣ۳ttyy "w".
Mukana on myﺣﭘs liittﺣ۳ﺣ۳ ja pari muutakin
jos haluat muokata olemassa olevia tiedostoja.
Nyt aiomme pitﺣ۳ﺣ۳ nﺣ۳hdﺣ۳ tﺣ۳mﺣ۳ asia, niin me palaamme linja 24.
NULL, se kﺣ۳ﺣ۳ntyy pois, on erityinen arvo
voidaan palauttaa tiettyjﺣ۳ toimintoja jos jotain on mennyt wrong--
jos tiedostoa ei ole olemassa, jos olet loppuu muisti,
tai joukko muita virheitﺣ۳.
Mutta nyt, haluan vain olettaa, ettﺣ۳ tﺣ۳mﺣ۳ on vain tavanomainen virheentarkistus.
Tﺣ۳ﺣ۳llﺣ۳ linja 26, olen iteroimalla 0-3 kaikkia oppilaitani.
Ja tﺣ۳mﺣ۳ on tavallaan erﺣ۳ﺣ۳nlainen Uuden toiminnon, fprintf,
mutta ota arvaus.
Jos printf on vain tulosta muotoiltu merkkijono,
mitﺣ۳ fprintf luultavasti tarkoittaa?
Yleisﺣﭘ: Tulosta tiedostoon.
DAVID J. MALAN: Tulosta muotoiltu merkkijono tiedostoon.
Sitﺣ۳hﺣ۳n lisﺣ۳ﺣ۳ f keino on tiedosto.
Ja uusi ensimmﺣ۳inen vﺣ۳ite on oltava muuttuja, joka edustaa tiedosto.
Sitten vain formaatti string kuten printf.
Ja vaikka tﺣ۳mﺣ۳ syntaksi on uusi, tﺣ۳mﺣ۳ vain
tarkoittaa kytke opiskelijan nimi, plug-in opiskelija asuntolan, ja sitten
kanssa fclose, sulje tiedosto.
Ja sitten lastly-- tﺣ۳mﺣ۳ on uusi ja me palaamme tﺣ۳hﺣ۳n
ennen long-- Olen vapauttaa opiskelija syistﺣ۳
tapahtui ylhﺣ۳ﺣ۳llﺣ۳ siellﺣ۳.
Mutta tulemme takaisin sen, ettﺣ۳ ennen long--
se johtuu siitﺣ۳, miten GetString on itse asiassa tyﺣﭘskentelevﺣ۳t alla huppu.
>> Joten ottaa vilkaista tﺣ۳ﺣ۳llﺣ۳.
Jos kirjoitan ls minun hakemistoon, huomata, ettﺣ۳ en
on tiedosto nimeltﺣ۳ students.csv, vain ole siellﺣ۳, ei ole olemassa.
Jos siis nyt kokoamaan tﺣ۳mﺣ۳n ohjelman, tehdﺣ۳ structs-1. / Tietueet-1,
ja aion mennﺣ۳ eteenpﺣ۳in ja kirjoita Andi, joka asuu Berkeley Yalen.
Aiomme olla Rob jotka asuu Thayer nﺣ۳inﺣ۳ pﺣ۳ivinﺣ۳.
Ja nyt keksiﺣ۳ missﺣ۳ on, mielestﺣ۳ni, Maria on Mather,
jos olen muistanut oikein.
>> Joten mitﺣ۳ﺣ۳n ei tunnu tapahtuvan.
Mutta jos kirjoitan ls nyt, on students.csv.
Mennﺣ۳ﺣ۳n eteenpﺣ۳in ja avoin students.csv.
Tﺣ۳mﺣ۳ on jﺣ۳lleen hyvin kevyt tiedostomuoto.
Mutta olen yksinkertaisesti antoi yleissopimus ettﺣ۳ minulla on kaksi riviﺣ۳ ja sarakkeita.
Ensimmﺣ۳isessﺣ۳ sarakkeessa on ihmisten etunimet.
Toinen sarake on opiskelijan asuntolan, tai korkeakoulussa, tai talon, tai vaikka mitﺣ۳.
Ja nyt olen tallentanut tﺣ۳mﺣ۳n pysyvﺣ۳sti tiedostoon.
>> Joten se ei ole kaikki, ettﺣ۳ mielenkiintoinen.
Mutta tﺣ۳mﺣ۳ on vain ponnahduslauta nyt , ettﺣ۳ voi jatkua tiedot
pysyvﺣ۳sti.
Katsotaanpa nyt, mitﺣ۳ enemmﺣ۳n voimme tehdﺣ۳ nﺣ۳itﺣ۳ ja muita ominaisuuksia.
Mutta ensin kysyttﺣ۳vﺣ۳ﺣ۳?
Se oli paljon, ja se oli nopea.
Mutta nﺣ۳et paljon enemmﺣ۳n PSET 4, samoin.
Joo?
>> Yleisﺣﭘ: Onko olemassa tapa jatkaa lisﺣ۳ﺣ۳mﺣ۳llﺣ۳ nimiﺣ۳ tiedoston?
>> DAVID J. MALAN: Hyvﺣ۳ kysymys.
Onko tapa jatkaa Nimien lisﺣ۳ﺣ۳minen tiedoston?
Kyllﺣ۳.
Ja itse asiassa, jos lopetat up uudelleen tiedoston avaus
kﺣ۳yttﺣ۳isit lainaus lainaus "" varten append,
joka olisi vain lisﺣ۳tﺣ۳ uuden rivin, Uusi linja uudestaan ﻗﻗja uudestaan, tarkalleen.
Hyvﺣ۳ kysymys.
Muita kysymyksiﺣ۳?
Joo?
Yleisﺣﭘ: Jos suoritit ohjelma uudelleen juuri nyt,
olisi se pitﺣ۳ﺣ۳ lisﺣ۳tﺣ۳ nimet tiedostoon tai olisiko avata uuden tiedoston?
>> DAVID J. MALAN: Ah, hyvﺣ۳ kysymys.
Jos juoksi ohjelman uudelleen oikea nyt, ehkﺣ۳ kirjoittanut uudet nimet,
olisi se lisﺣ۳ﺣ۳ tiedosto tai korvata tiedoston?
Jﺣ۳lkimmﺣ۳inen, koska olen et kﺣ۳ytﺣ۳ append tilassa.
Ja koska olen vain sokeasti tiedoston avaus kirjoittamista varten,
se vain menee korvata tiedoston.
Joten haluan todellakin tarvitsee vain liittﺣ۳ﺣ۳, jos haluan todella olla pitkﺣ۳llﺣ۳ aikavﺣ۳lillﺣ۳
tietokanta.
>> Nyt CSV on hyﺣﭘdyllinen, suoraan sanottuna, vaikka sillﺣ۳ kuten jos olet writing--
ja me lopulta nﺣ۳hdﺣ۳ tﺣ۳mﺣ۳ myﺣﭘhemmin lukukauden kun
kﺣ۳ytﺣ۳mme CSV-raportit voivat muihin tarkoituksiin.
Jos haluat tallentaa kaikki ihmiset jotka ovat rekisterﺣﭘityneet jostakin tapahtumasta,
tai rekisterﺣﭘitynyt oman opiskelija ryhmﺣ۳, tai jotain,
datan tallentamisen tﺣ۳llaisessa muotoa on erittﺣ۳in kﺣ۳tevﺣ۳.
Koska kirjaimellisesti, jos en olivat lataat tﺣ۳mﺣ۳n tiedoston.
Voisin double-- ja nyt itse kokeilla tﺣ۳tﺣ۳
jos minulla on Excel tai Numerot tﺣ۳ﺣ۳llﺣ۳.
>> Aion hiiren kakkospainikkeella tai Control-osoita minun arkistoida.
Oho.
Hiiren kakkospainikkeella tai Control-osoita minun arkistoida.
Tule, minun hiiri ei ole yhteistyﺣﭘtﺣ۳.
Download-- Aion ladata kaikki tiedostot tﺣ۳ﺣ۳llﺣ۳ niin
vain jotta voin napata tﺣ۳mﺣ۳ yksi.
Ja katsotaan, jos tﺣ۳mﺣ۳ toimii students.csv-- ensimmﺣ۳istﺣ۳ kertaa
Olen aktivoitu.
Nyt he haluavat nﺣ۳hdﺣ۳ minun yhteystiedot.
Nyt minun tﺣ۳ytyy rekisterﺣﭘityﺣ۳.
Katso, miten helppoa se on kﺣ۳yttﺣ۳ﺣ۳ CSV-raportit voivat?
Kyllﺣ۳, pitﺣ۳ﺣ۳ sen ajan tasalla.
OK, nyt olemme valmiita luokan.
OK, oi, mitﺣ۳ uutta?
OK, sulje.
Se oli maaginen.
OK, nyt meidﺣ۳n on pﺣ۳ivitettﺣ۳vﺣ۳.
Ja nyt, se unohtanut, mitﺣ۳ tiedosto Olen alun perin avannut,
mutta mitﺣ۳ a-- siellﺣ۳ mennﺣ۳ﺣ۳n.
OK, joten nyt meillﺣ۳ on Excel-tiedoston.
Kiitos.
>> OK, joten mitﺣ۳ tein oli helppoa.
Tietenkin olisin voinut esiasennettuna Excel- tai numerot, tai mitﺣ۳ ohjelmaa.
Mutta tﺣ۳mﺣ۳ on mukava, koska nyt voin manipuloida
tiedot vakiomuodossa.
>> Joten nyt Katsotaanpa yhteydessﺣ۳ vaihtaa mihin jﺣ۳imme
viime kerralla, jonka oli mﺣ۳ﺣ۳rﺣ۳ aloittaa ottaa pois apupyﺣﭘrﺣ۳t.
Mutta ensin sinun ei nﺣ۳hdﺣ۳ tﺣ۳mﺣ۳n aikaisemmin lounas
jﺣ۳lleen tapahtuu tﺣ۳ﺣ۳llﺣ۳ Palo ja Ice Cambridge, Sitar New Haven.
Rekisterﺣﭘidy ylﺣﭘs CS50s verkkosivuilla ASAP liittyﺣ۳ CS50 opiskelijoille ja henkilﺣﭘkunnalle.
>> Joten otimme apupyﺣﭘrﺣ۳t pois maanantain follows--
merkkijono on ilmoitettu CS50s kirjasto jonkin aikaa.
Ja se on mukavaa, koska se mahdollistaa voimme puhua muuttujien olevan
kokonaisia ﻗﻗsanoja ja lauseita ja enemmﺣ۳n.
Mutta se osoittautuu merkkijono ei ole olemassa.
Se on vain synonyymi, tai alias, ettﺣ۳ olemme luoneet jotain,
itse asiassa on hieman tekninen kutsutaan char *.
>> Ja todellakin, nﺣ۳imme esimerkki ohjelman maanantaina
ettﺣ۳ ei kﺣ۳yttﺣ۳ytynyt aivan kuin odotimme.
Tﺣ۳mﺣ۳ oli tiedosto, vertaa-0.
Ja muistuttavat, ettﺣ۳ vertaat-0, jos Olen kﺣ۳ﺣ۳ntﺣ۳ﺣ۳ maanantain ohjelma
ja ajaa vertaa-0 ja kirjoita ﺣ۳iti vuonna pieniﺣ۳, ja ﺣ۳iti pienillﺣ۳ kirjaimilla uudelleen.
Ohjelma vaati I Kirjoita eri asioita,
vaikka ﺣ۳iti, kaikki pieniﺣ۳, on sama visuaalisesti.
Joten mikﺣ۳ oli lyhyt vastaus miksi tietokoneen ajattelee
nﺣ۳mﺣ۳ kaksi merkkijonoa ovat erilaisia?
Joo?
>> Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
DAVID J. MALAN: Oikea.
Niin, ﺣ۳iti, ensimmﺣ۳istﺣ۳ kertaa Kirjoitan sen, ollaan
tallennettu jonnekin tietokoneeni muistia, mutta eri paikassa
kuin toinen kerta, kun kirjoitat ﺣ۳iti.
Nyt se varmasti voitaisiin optimoida.
Tietokone voi olla fiksu ja ymmﺣ۳rtﺣ۳ﺣ۳ nﺣ۳mﺣ۳ kaksi merkkijonoa, hei,
he identtisiﺣ۳.
Saanen ei tarpeettomasti sﺣ۳ilytﺣ۳ sitﺣ۳.
Mutta tietokoneet eivﺣ۳t tee sitﺣ۳ optimointi, ellet kerro heille.
Joten, oletuksena, he juuri menossa pﺣ۳ﺣ۳tyﺣ۳
kahdessa eri paikassa muistiin.
Ja niin olla selvempi, kun vertasimme kaksi merkkijonoa,
ensimmﺣ۳inen oli nimeltﺣ۳ﺣ۳n s, toinen oli nimeltﺣ۳ﺣ۳n
t, mitﺣ۳ nimenomaan oli I verrataan tﺣ۳ﺣ۳llﺣ۳ line 13?
Joo.
>> Yleisﺣﭘ: Se on paikka muistiin ettﺣ۳ muuttuja osoittaa.
>> DAVID J. MALAN: Aivan, olin vertaamalla paikka muistiin
ettﺣ۳ nﺣ۳mﺣ۳ muuttujat viittasivat.
Joten erityisesti, jos ﺣ۳iti oli tavu numero 1, ja 2, ja 3,
ja 4-- koska muistan kenoviiva 0 on oltava aina lopussa.
Ja muut esiintymﺣ۳ ﺣ۳iti, m-o-m, oli osoitteessa 10, 11, 12, ja 13.
Olin vertaamalla 1, ettﺣ۳ osoite, ettﺣ۳ paikalla muistissa,
vastaan ﻗﻗ10, joka on tietenkﺣ۳ﺣ۳n ole sama.
1 ei ole 10.
>> Joten tﺣ۳mﺣ۳ on mukavaa, ettﺣ۳ se on melko yksinkertainen.
Mutta se on ongelmallinen sikﺣ۳li kuin emme voi nﺣ۳yttﺣ۳ﺣ۳ verrata jouset.
Niin fundamentally-- ja tﺣ۳llﺣ۳ alhaisella tasolla,
jos halusi toteuttaa ohjelma verrata
kaksi erillistﺣ۳ sanaa, jotka kﺣ۳yttﺣ۳jﺣ۳ on kirjoitettu laatua,
he riviin char varten char, vain yleisesti,
mitﺣ۳ meidﺣ۳n tﺣ۳ytyy tehdﺣ۳, ilmeisesti?
Se ei ole riittﺣ۳vﺣ۳ﺣ۳ vain Katso nﺣ۳itﺣ۳ kaksi osoitetta.
Mitﺣ۳ meidﺣ۳n pitﺣ۳ﺣ۳ tehdﺣ۳?
Joo?
>> Yleisﺣﭘ: kerrata kautta string [kuultavissa].
>> DAVID J. MALAN: Joo, katsotaanpa kerrata lﺣ۳pi merkkijono.
Katsotaanpa kﺣ۳yttﺣ۳ﺣ۳ silmukka, kun silmukka, tai mitﺣ۳ olet eniten mukava.
Ja jos meillﺣ۳ kaksi merkkijonoa jonnekin muistiin, Katsotaanpa jokaisen n
Ensimmﺣ۳inen merkki, jokainen toinen merkki, sitten kolmas, ja neljﺣ۳s,
ja viides, kunnes osuma mitﺣ۳ erityisiﺣ۳ Sentinel arvo?
Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
DAVID J. MALAN: Joo, kenoviiva nolla, minkﺣ۳ jﺣ۳lkeen joko merkkijono
voimme pﺣ۳ﺣ۳ttﺣ۳ﺣ۳ se on siinﺣ۳.
Olemmeko Hyvﺣ۳ksytty jokainen merkki?
Jos ei, return false.
Jos nﺣ۳in on, return true.
Ja niin se on juuri mitﺣ۳ tﺣ۳mﺣ۳ versio Ohjelman vertaa-1.c tekee.
Se on sama kuin mitﺣ۳ me Katsoin maanantain paitsi ettﺣ۳ olen
pﺣ۳ﺣ۳ssyt eroon sanan string-- vaikka ettﺣ۳ ei ole toiminnallista impact-- kaikki
Teen nyt on poistaa joitakin visuaalisia apupyﺣﭘrﺣ۳t,
mutta nﺣ۳hdﺣ۳ selvﺣ۳sti, ettﺣ۳ s ja t ovat osoitteita.
Ja sitﺣ۳hﺣ۳n tﺣ۳hti, tﺣ۳hti, edustaa
on osoite, joka tunnetaan teknisesti osoittimena.
>> Joten kun Vakuutan s linja 9 ja sanoa char * s,
se ei tarkoita antaa minulle merkkijono.
Tﺣ۳mﺣ۳ tarkoittaa antaa minulle muuttuja, jonka tarkoitus elﺣ۳mﺣ۳ssﺣ۳ on sﺣ۳ilyttﺣ۳ﺣ۳ osoite.
Koska olen aikeissa laittaa osoitteen merkkijono siihen.
Ja todellakin, GetString, olla kirkas, ei palauta merkkijonon.
Se ei palauta ﺣ۳iti kenoviiva nolla, sinﺣ۳nsﺣ۳.
Mitﺣ۳ GetString erityisesti ja tarkasti palata?
Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
DAVID J. MALAN: osoite, osoite ensimmﺣ۳isen merkin
Joissakin merkkijono se on saanut.
Ja nyt nﺣ۳emme erityinen avainsana uudelleen.
Ja minﺣ۳ viittasi tﺣ۳hﺣ۳n aiemmin.
Tﺣ۳mﺣ۳ tulee olemaan hyvﺣ۳ yleissopimuksen ettﺣ۳ nﺣ۳emme uudelleen ja uudelleen nyt.
Olen tarkkailun varmistaa, ettﺣ۳ s ei ole nolla ja t ei ole nolla.
Koska perustuu minun todella nopea mainita aikaisemmin,
mitﺣ۳ saattaa merkitﺣ۳, jos GetString palauttaa ei osoite mutta N-U-L-L, joka on jﺣ۳lleen,
joitakin erityisiﺣ۳ arvoa?
>> Yleisﺣﭘ: Virhe.
>> DAVID J. MALAN: Se on virhe.
Jotain meni pieleen.
Ja mitﺣ۳ tyypillisesti voi tapahtua, erityisesti
kanssa strings-- jotka saattavat olla tuntemattomien pituus advance--
ehkﺣ۳ tietokoneet " muisti, ehkﺣ۳
kirjoitit tﺣ۳llaisessa pitkﺣ۳ sana tai lause
tai liittﺣ۳ﺣ۳ niin valtava essee siellﺣ۳ vain ole tarpeeksi muistia.
Ja niin GetString voi palauttaa osoitteen koko juttu,
niin se vain palauttaa mitﺣ۳ﺣ۳n.
Ja se sanoo virhe on tapahtunut palauttamalla erityinen NULL arvo.
Se on nolla osoite, niin sanoakseni.
>> Nyt on kﺣ۳ynyt ilmi C mukana toiminto, joka tekee sen iterointia.
Meillﺣ۳ ei tarvitse toteuttaa tﺣ۳mﺣ۳n kanssa silmukan tai while-silmukka itse.
Voimme kﺣ۳yttﺣ۳ﺣ۳ toimintoa, nimeltﺣ۳ﺣ۳n ytimekkﺣ۳ﺣ۳sti,
sekoita comp, tai merkkijono vertailla, jonka tarkoitus elﺣ۳mﺣ۳ssﺣ۳ on tehdﺣ۳ juuri nﺣ۳in.
Annat sille kaksi osoittimia, kaksi osoitetta, ja se menee osoitteet
ja sitten verrata kirjain kirjain, kirjain laatu,
pysﺣ۳htyen vain silloin, kun mikﺣ۳ on totta?
Kun intuitiivisesti pitﺣ۳isi sekoittua Comp lopettaa iteroimalla, vain olla selvﺣ۳?
Kun se osuu kenoviiva 0 joko string, jolloin se voi pﺣ۳ﺣ۳ttﺣ۳ﺣ۳
on kaikki Hyvﺣ۳ksytty, tai ei ole ollut ristiriita?
>> Joten, jos me suorittaa tﺣ۳mﺣ۳n nyt ja kokeile meidﺣ۳n pikku-arvo peli,
joten varmista vertailla-1, ./compare-1, ja Kirjoita ﺣ۳iti pienillﺣ۳ molemmilla kerroilla.
Nyt se on sama asia.
Ja jos teen sen uudelleen pieniﺣ۳ ja sitten ehkﺣ۳ isoja.
Nyt se todellakin erottaa pien- ja suuraakkosten vﺣ۳lillﺣ۳.
Joten kaikki, ettﺣ۳ kova tai maaginen, mutta se ei nyt selittﺣ۳ﺣ۳
mitﺣ۳ tapahtuu alla huppu.
>> Mitﺣ۳ enemmﺣ۳n voimme poimia tﺣ۳llaisesta oppitunnin?
Joten katsomaan tﺣ۳tﺣ۳.
Aion mennﺣ۳ eteenpﺣ۳in ja kirjoittaa nopea ohjelma tﺣ۳ssﺣ۳ kutsutaan copy-0.
Ja nyt mennﺣ۳ﺣ۳n eteenpﺣ۳in ja todella Tehdﺣ۳ﺣ۳n this-- kopio-0,
katsomaan mitﺣ۳ minulla tﺣ۳ﺣ۳llﺣ۳.
Haluan ensin kertoa kﺣ۳yttﺣ۳jﺣ۳lle, sanoa jotain.
Sitten saan merkkijono ja minﺣ۳ varastoidaan sen s.
Sitten minﺣ۳ tarkistaa, jos s on yhtﺣ۳ kuin vastaa NULL, vain palata 1.
Joten tﺣ۳mﺣ۳ on vain standardi virheentarkistus.
Mitﺣ۳ﺣ۳n mielenkiintoista on tapahtunut.
Ja itse asiassa, jos me eroon virhe tarkistus-, tﺣ۳mﺣ۳ nﺣ۳yttﺣ۳ﺣ۳ viikolla 1 koodi
hetkellﺣ۳.
Mutta olen alkanut saada vﺣ۳hﺣ۳n paremmin siitﺣ۳.
>> Nyt linja 16, viikko sitten, ehkﺣ۳ jopa pari pﺣ۳ivﺣ۳ﺣ۳ tai minuuttia sitten,
saatat sanoa linja 16 on luodaan muuttuja nimeltﺣ۳ t
ja kopiointi s siihen.
Ja se on tﺣ۳ysin kohtuullinen takeaway.
Mutta tarkemmin nyt.
Mitﺣ۳ tapahtuu linja 16?
Mitﺣ۳ on tulossa kopioidaan oikealta vasemmalle?
Joo?
Yleisﺣﭘ: on t saada osoitteen s?
>> DAVID J. MALAN: Aivan, t on saada osoitteen s.
Joten tehtﺣ۳vﺣ۳ selvﺣ۳ksi nyt, jos menen takaisin tﺣ۳mﺣ۳n aikaisemman esimerkin
ja minﺣ۳ vetﺣ۳ﺣ۳ ulos mitﺣ۳ olen kirjoittanut.
Ja mitﺣ۳ olen kirjoittanut in-- tﺣ۳ssﺣ۳ s, ja tﺣ۳ssﺣ۳
on mitﺣ۳ olen kirjoittanut jossain muisti, ﺣ۳iti ja sitten kenoviiva
0 joka on lisﺣ۳tty minulle.
Mitﺣ۳ minﺣ۳ tallennettu tﺣ۳ﺣ۳llﺣ۳, muistaa, tﺣ۳mﺣ۳ on paikassa 1, 2, 3, 4,
tﺣ۳mﺣ۳ on mitﺣ۳ tﺣ۳llﺣ۳ hetkellﺣ۳ n.
Joten jos linjalla 16, sanon anna minulle toinen muuttuja nimeltﺣ۳ t ja tallentaa
klo arvon s, mitﺣ۳ saa sﺣ۳ilyttﺣ۳ﺣ۳ tﺣ۳ﺣ۳llﺣ۳ ei ﺣ۳iti
vaan vain numero 1.
>> Joten jos katsomme eteenpﺣ۳in tﺣ۳ssﺣ۳ ohjelmassa nyt, mitﺣ۳ tulee tapahtumaan?
Niin huomaa, ettﺣ۳ on olemassa tﺣ۳mﺣ۳ toiminto saatat
ovat kﺣ۳yttﺣ۳neet tﺣ۳tﺣ۳ jonkin aikaa sitten Caesar, tai Vigenere, tai ehkﺣ۳ ei ollenkaan.
Vﺣ۳itﺣ۳n minun printf, olen menossa hyﺣﭘdyntﺣ۳ﺣ۳ kopion t.
Ensimmﺣ۳inen rivi 19, nopea jﺣ۳rki tarkista, strlen tarkastukset pituus t.
Koska en halua yrittﺣ۳ﺣ۳ hyﺣﭘdyntﺣ۳ﺣ۳ jotain
jos ei ole merkkijono siellﺣ۳.
Jos kﺣ۳yttﺣ۳jﺣ۳ painaa Enter, ei ole mitﺣ۳ﺣ۳n hyﺣﭘdyntﺣ۳ﺣ۳.
Joten en halua tehdﺣ۳ linja 21.
Joten linja 21 capitalizing joka kirjeen, ilmeisesti, t?
>> Yleisﺣﭘ: m?
DAVID J. MALAN: Se nﺣ۳yttﺣ۳ﺣ۳ kuten se on kopiointi kumpi?
Yleisﺣﭘ: m.
DAVID J. MALAN: Tuota, m.
OK, joten ensimmﺣ۳inen m, koska ilmoitus, ettﺣ۳ olen
ohimennen toupper, joka jos et ole koskaan nﺣ۳hnyt sitﺣ۳ se on
vain toiminto hyﺣﭘdyntﺣ۳mﺣ۳ﺣ۳n sen panos.
t kiinnike nolla tarkoittaa antaa minulle nolla luonnetta t.
Ja niin miten tﺣ۳mﺣ۳ kuva muutos, olla selvﺣ۳?
Mitﺣ۳ pitﺣ۳ﺣ۳ saada kirjoitettu uudelleen tai muuttaa suhteen s ja t ja ﺣ۳iti
kenoviiva nolla.
>> Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
>> DAVID J. MALAN: Joo, joten tﺣ۳mﺣ۳ yksi tﺣ۳ﺣ۳llﺣ۳ yksinkertaisesti
tarvitsee saada muuttunut to-- korjata this-- pitﺣ۳ﺣ۳ saada muuttunut pﺣ۳ﺣ۳oman m.
Mutta nyt, katso myﺣﭘhemmin ohjelma, jos olen tulostaa
s ja t kuin siivoan tﺣ۳ﺣ۳llﺣ۳, katsella mitﺣ۳ tapahtuu tulostaa s ja t.
Niin tehdﺣ۳ kopio-0, ./copy-0.
Anna minun mennﺣ۳ eteenpﺣ۳in ja kirjoita vuonna ﺣ۳iti on pienillﺣ۳.
Huomaa, sekﺣ۳ alkuperﺣ۳isessﺣ۳ kopio on aktivoitu.
Miksi?
Hyvin, s ja t ovat molemmat osoittavat, jos haluatte, sama murikka muistia.
Ja rehellisesti, tﺣ۳mﺣ۳ on tulossa todella uninteresting-- se
ettﺣ۳ kﺣ۳ytﺣ۳mme osoite nolla tﺣ۳ﺣ۳llﺣ۳.
Tarkoitan, en todellakaan vﺣ۳litﺣ۳ jossa tavaraa on muistissa.
Anteeksi pyyhkimﺣ۳llﺣ۳ hieman liikaa.
Mutta en oikeastaan ﻗﻗvﺣ۳litﺣ۳ jossa asiat ovat muistissa.
Ja niin, todellakin mitﺣ۳ ohjelmoijat taipumus ajatella
on, ettﺣ۳ kun puhut osoitteen, tai osoitin,
joka vﺣ۳littﺣ۳ﺣ۳ missﺣ۳ se on muistissa.
En vﺣ۳litﺣ۳, jos se on tavu yksi tai miljardi.
Minﺣ۳ vain vﺣ۳litﺣ۳, ettﺣ۳ tﺣ۳mﺣ۳ muuttuja on tehokkaasti
osoittaen ettﺣ۳ murikka muistia.
Ja niin, vastedes, pikemminkin kuin saivarrella yli mielivaltaisen muistin osoitteet, katsotaanpa
vain alkaa tehdﺣ۳ osoittimia osoittimia, kuten nuolet.
Joten mitﺣ۳ s ja t todella ovat, Tﺣ۳mﺣ۳n ohjelman mukaisesti,
koska miten Loin t, se on vain kaksi erillistﺣ۳ muuttujaa
osoittaen samalla murikka muistia.
Ja emme vﺣ۳litﺣ۳, missﺣ۳ ne ovat.
Joten voimme abstrakti pois, ettﺣ۳ yksityiskohtia.
>> Joten miten voin korjata tﺣ۳mﺣ۳n?
Jos haluan kirjoittaa version kopio ohjelma, joka todella kappaletta merkkijono
ja aktivoi vain kopio, vain intuitiivisesti,
mitﺣ۳ tﺣ۳ytyy olla ainesosa meidﺣ۳n ratkaisu?
Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
DAVID J. MALAN: Tarvitsemme mitﺣ۳?
Yleisﺣﭘ: murikka muistia.
DAVID J. MALAN: Tarvitsemme toinen kimpale muistia, eikﺣﭘ?
Emme tiedﺣ۳, miten tehdﺣ۳ sitﺣ۳ vielﺣ۳, vﺣ۳lttﺣ۳mﺣ۳ttﺣ۳.
Mutta olen sellainen tﺣ۳ytyy tﺣ۳mﺣ۳n tapahtua niin ettﺣ۳ alkuperﺣ۳inen ﺣ۳iti pienin kirjaimin
pﺣ۳ﺣ۳tyy ettﺣ۳ ylimﺣ۳ﺣ۳rﺣ۳inen murikka muistia.
Ja sitten kun muutan kopio, minﺣ۳ eivﺣ۳t halua muuttaa tﺣ۳mﺣ۳ kopio tﺣ۳ﺣ۳llﺣ۳.
Olen sen sijaan haluat muuttaa vain tﺣ۳mﺣ۳ kopio niin ettﺣ۳ alkuperﺣ۳inen on ennallaan.
>> Niin, Katsotaanpa, miten voisimme tehdﺣ۳ tﺣ۳mﺣ۳n.
In copy-1, joka on jo viety kommentti,
mutta ei kommentoi verkossa.
Me sen sijaan tehdﺣ۳ following-- nﺣ۳mﺣ۳ linjat ovat samat, saat minut merkkijono
ja kutsuvat sitﺣ۳ s.
Mutta nyt Katsotaanpa yksi kaikkein monimutkainen mutta viimeinen monimutkaisuus
jonkin aikaa, linja 16 tekee juuri tﺣ۳mﺣ۳n.
Joten jos mukava kanssa kuva me vain drew--
anna minulle uusi kimpale muistia, kopioida kaiken siihen,
Katsotaanpa, miten voimme kﺣ۳ﺣ۳ntﺣ۳ﺣ۳, ettﺣ۳ koodin.
>> Joten linja 16, vasemmalla puolella, char * t antaa minulle tﺣ۳mﺣ۳ jos tﺣ۳nne.
Siinﺣ۳ kaikki se tekee.
Oikealla puolella, m Alloc, tai malloc,
on muistin jakamista, Super fancy, arvoituksellinen tapa vain sanoa
antaa minulle palan muistia.
Kuinka paljon muistia tarvitaan?
No, on tavallaan iso ilme.
Mutta katsotaanpa, mitﺣ۳ tﺣ۳ssﺣ۳ sanotaan.
Joten tﺣ۳mﺣ۳ tietenkin on antaa minulle merkkijonon pituus n.
Niin, ﺣ۳iti olisi mitﺣ۳?
Joten vain kolme, eikﺣﭘ? ﺣ۳iti on kolme merkkiﺣ۳.
Sinun ei lasketa kenoviiva nollaan, kun
puhua pituus merkkijono on todella ihmisen nﺣ۳kyvissﺣ۳ kirjaimet.
Niin ﺣ۳iti, joten tﺣ۳mﺣ۳ antaa minulle 3.
Mutta hetkinen, olen nyt lisﺣ۳ﺣ۳mﺣ۳llﺣ۳ 1.
Miksi todella haluavat jakaa 4 tavua eikﺣ۳ vain 3?
Joo?
>> Yleisﺣﭘ: Sentinel arvo?
>> DAVID J. MALAN: Aivan, ettﺣ۳ Sentinel arvo.
Sillﺣ۳ kenoviiva nolla, Tarvitsen 4 tavua yhteensﺣ۳.
Joten minun on pituus merkkijonon plus 1.
Ja sitten vain hyvﺣ۳ measure-- vaikka tﺣ۳tﺣ۳ jﺣ۳rjestelmﺣ۳ﺣ۳,
se on aina olemaan 1-- sanon moninkertaistaa tﺣ۳tﺣ۳ koko char.
Osoittautuu sizeof on operaattori C ettﺣ۳
vain kertoo tavujen, joka on
vaaditaan tiettyjen tietojen tyyppi.
Se ei toimi paneelit, tyypillisesti, joskus se tekee.
Mutta yleisessﺣ۳ tapauksessa ei.
Mutta se kertoo minulle, kuinka monta tavua nieriﺣ۳ on, joka osoittautuu on aina 1.
Joten tﺣ۳mﺣ۳ on kuin kertomalla 1.
>> Joten Super arvoituksellinen etsivﺣ۳t riviﺣ۳ koodia.
Mutta kaikki se on antanut minulle kimpale muistia.
Mutta se nﺣ۳yttﺣ۳ﺣ۳ olevan kopiointi mitﺣ۳ﺣ۳n tuohon muistiin?
Ei vielﺣ۳.
Ja niin mitﺣ۳ voin verkossa 22, ja 23, 24, 25, no, minﺣ۳ yksinkertaisesti tehdﺣ۳ tﺣ۳mﺣ۳n.
Ja tﺣ۳mﺣ۳ on tavallaan old school kamaa nyt.
Tﺣ۳mﺣ۳ on kuin PSET 2, jossa olet vain liikkuvat asiat
noin muistiin tai pikemminkin jouset.
>> Joten olen iteroimalla 0 merkkijonon pituus n.
Ja olen kopiointi i: nnen merkin S osaksi i: nnen hahmo t.
Ja koska minﺣ۳, ohjelmoija, tehty Muista jakaa tﺣ۳smﺣ۳lleen yhtﺣ۳ monta tavua
kuten minﺣ۳ tarvitsen, se on tﺣ۳ydellinen yksi-yhteen suhde.
Ja voin kopioida ﺣ۳iti vuonna pieniksi uuteen yhteen.
Ja sitten lopuksi, teen tﺣ۳tﺣ۳ linjaa.
Ja niin vaikutus on vain hyﺣﭘdyntﺣ۳ﺣ۳ t tﺣ۳ﺣ۳llﺣ۳.
Niin paljon imeﺣ۳, mutta jos vain harkita
mitﺣ۳ todella tapahtuu on alla huppu
on vain liikkuvat nﺣ۳mﺣ۳ tavua noin, kaikki,
tarvitaan ratkaista tﺣ۳mﺣ۳ ongelma on vain antaa meille tﺣ۳mﺣ۳n murikka muistia.
Nyt riski ylivoimainen, haluan nﺣ۳yttﺣ۳ﺣ۳
Toinen esimerkki, joka on lﺣ۳hes identtinen, lukuun ottamatta tﺣ۳mﺣ۳
koodiriviﺣ۳.
Joten tﺣ۳mﺣ۳ on hakkeri versio tﺣ۳mﺣ۳n ohjelman, jos haluatte.
Mutta Haluan vain polttaa se mitﺣ۳ tapahtuu.
Rivi 24 aiemmin t kiinnike i saa s kiinnike i.
Nyt olen muuttuvat tﺣ۳mﺣ۳n paljon arvoituksellinen tﺣ۳hti t
plus 1 vastaa tﺣ۳hti s plus 1.
>> Joten mitﺣ۳ tapahtuu ja miksi meillﺣ۳ on tﺣ۳hti merkki?
Olemme nﺣ۳hneet tﺣ۳hti ennen, ja sitﺣ۳ kﺣ۳ytetﺣ۳ﺣ۳n eri tavalla tﺣ۳ﺣ۳llﺣ۳.
Olemme aiemmin nﺣ۳imme char *, nyt nﺣ۳en tﺣ۳hti alussa, ja se on OK.
Koska se osoittautuu meillﺣ۳ voi sellaista pﺣ۳ﺣ۳tellﺣ۳ vain
Nﺣ۳istﺣ۳ ensimmﺣ۳inen periaatteita mitﺣ۳ tapahtuu.
Joten vain tehdﺣ۳ selvﺣ۳ksi, mikﺣ۳ on s?
Viime viikolla se oli merkkijono.
Se ei riitﺣ۳ enﺣ۳ﺣ۳.
Mikﺣ۳ on s, erityisesti?
>> Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
>> DAVID J. MALAN: Se on osoitin.
Se on osoite Ensimmﺣ۳inen merkki me kirjoitetaan.
OK, mikﺣ۳ on t?
>> Yleisﺣﭘ: [ﺣ۳ﺣ۳netﺣﭘn]
>> DAVID J. MALAN: osoite ensimmﺣ۳isen tavun
t, ettﺣ۳ murikka muistia uudelleen.
Joten kﺣ۳y ilmi, ettﺣ۳ kun me kerrata 0 jopa merkkijono
length-- ensinnﺣ۳kin, i alkaa klo 0, koska
Tﺣ۳mﺣ۳n vanhan koulun silmukka asia.
Joten yksinkertaisuuden, katsotaanpa olettaa, ettﺣ۳ ensimmﺣ۳inen rivi koodia
on oikeastaan ﻗﻗvain tﺣ۳mﺣ۳, oikea.
Jos i on nolla, lisﺣ۳ﺣ۳mﺣ۳llﺣ۳ nolla jotain oletettavasti
ei tule vaikuttaa.
>> Joten mitﺣ۳ on tﺣ۳mﺣ۳ sanonta?
On kﺣ۳ynyt ilmi, ettﺣ۳ tﺣ۳hti toimija tﺣ۳ssﺣ۳ yhteydessﺣ۳
on dereference operaattori, joka on vain
hieno tapa sanoa mennﺣ۳ seuraavaan osoitteeseen.
Joten jos s on osoite ensimmﺣ۳isen merkki tﺣ۳ssﺣ۳ kimpale muistia,
* S tarkoittaa sinne.
Ja koska olemme laadittu kuva tﺣ۳llﺣ۳ tavalla,
voit hyvﺣ۳ksyﺣ۳ Seuraavat henkinen malli.
Jos tﺣ۳mﺣ۳ on s, ja sanot * s, * s ikﺣ۳ﺣ۳n kuin liukumﺣ۳et ja tikkaat,
jos muistat peli lapsuudesta, on kuin seurata, ettﺣ۳ nuoli ja mennﺣ۳
osoitteeseen.
>> * T on sama asia.
Niin alkaa tﺣ۳ﺣ۳llﺣ۳, siirry sen kimpale.
En voi vain hyﺣﭘdyntﺣ۳ﺣ۳ tﺣ۳mﺣ۳n nﺣ۳ytﺣﭘn nﺣ۳in.
* T tarkoittaa mennﺣ۳ tﺣ۳nne.
Ja sitten, silmukka on vain sanomalla siirtﺣ۳ﺣ۳ tﺣ۳tﺣ۳ merkkiﺣ۳ tﺣ۳ﺣ۳llﺣ۳,
siirtﺣ۳ﺣ۳ tﺣ۳tﺣ۳ merkkiﺣ۳ tﺣ۳ﺣ۳llﺣ۳, siirtﺣ۳ﺣ۳ tﺣ۳mﺣ۳n merkin tﺣ۳ssﺣ۳.
Mutta miten voin tehdﺣ۳, ettﺣ۳ incrementation?
Minun tﺣ۳ytyy perua, mitﺣ۳ juuri poistettu.
Tﺣ۳mﺣ۳ on mitﺣ۳ yleensﺣ۳ kutsutaan osoitin aritmeettinen, joka
tarkoittaa matematiikka osoitteita.
>> Jos tﺣ۳ssﺣ۳ silmukka, Jatkan monesko I,
ja s on osoite ja t on osoite, jos vain pitﺣ۳ﺣ۳ lisﺣ۳tﺣ۳ 1,
ettﺣ۳ vain sitﺣ۳ jatkaa eteenpﺣ۳in, ja eteenpﺣ۳in, ja eteenpﺣ۳in muistissa.
Se on kuin Oxford Street, katu ettﺣ۳ CS rakennus sijaitsee.
CS rakennukset on 33 Oxford Street.
Joten jos olit tehdﺣ۳ 33 Oxford Street plus 1,
joka vie sinut 34 Oxford Katu, sitten 35 Oxford Street,
sitten 36 Oxford Street, riippumatta nﺣ۳iden rakennukset todellisuudessa ovat - jos ne ovat olemassa.
Ja niin, ettﺣ۳ kaikki teemme tﺣ۳ﺣ۳llﺣ۳ osoitin aritmeettinen.
>> Joten se on erittﺣ۳in mystistﺣ۳ tavalla ilmaista itseﺣ۳mme.
Mutta kaikki, mitﺣ۳ tapahtuu alla huppu
on vain seuraava nﺣ۳istﺣ۳ osoitteista, kuten seuraava kartta, jos haluatte,
tai seuraavat nuolia kuten olemme piirretﺣ۳ﺣ۳n ruudulle.
OK, paljon sulattaa.
Kysymyksiin on syntaksi, kﺣ۳sitteitﺣ۳, osoittimia, malloc, tai vastaavat.
Joo, tﺣ۳ﺣ۳llﺣ۳ ensin.
>> Yleisﺣﭘ: Missﺣ۳ ettﺣ۳ sanoo * t vastaa toupper * t,
on, ettﺣ۳ aikoo hyﺣﭘdyntﺣ۳ﺣ۳ kaikki kirjaimet tai just--
>> DAVID J. MALAN: Ah, todella hyvﺣ۳ kysymys.
Joten tﺣ۳tﺣ۳ linjaa tﺣ۳ﺣ۳llﺣ۳, 31, tﺣ۳mﺣ۳ tulee hyﺣﭘtymﺣ۳ﺣ۳n
ensimmﺣ۳inen kirjain tai kaikki kirjaimet.
Joten vastata tﺣ۳hﺣ۳n menemﺣ۳llﺣ۳ takaisin ensimmﺣ۳iset periaatteet.
Ja ensimmﺣ۳iset periaatteet tﺣ۳ssﺣ۳ tarkoitan vain mennﺣ۳ perusmﺣ۳ﺣ۳ritelmﺣ۳t
ja mitﺣ۳ mukana.
Joten toupper on funktio ettﺣ۳ aktivoi merkkiﺣ۳.
Siinﺣ۳ kaikki.
* T tarkoittaa mennﺣ۳ first-- Siirry osoitteeseen t.
Joten, kuvassa, jos tﺣ۳mﺣ۳ on murikka muistia me kohdennetaan malloc,
ja tﺣ۳mﺣ۳ on t, * t tarkoittaa tﺣ۳ﺣ۳ltﺣ۳.
>> Samalla olet ohimennen ettﺣ۳ arvo, pieniﺣ۳ m
ettﺣ۳ toupper, saat takaisin pﺣ۳ﺣ۳oma M, missﺣ۳ olet laittoi pallon?
Olet laskemisesta sitﺣ۳, ettﺣ۳ samassa paikassa.
Ja niin, ettﺣ۳ logiikka nﺣ۳iden perusmﺣ۳ﺣ۳ritelmiﺣ۳ se on vain
hyﺣﭘdyntﺣ۳minen ensimmﺣ۳inen kirjain ellet kerrata I tai
silmukan tai while-silmukka, se ei tule tehdﺣ۳ mitﺣ۳ﺣ۳n enemmﺣ۳n kuin kysyt sitﺣ۳.
Hyvﺣ۳ kysymys.
Joo?
>> Yleisﺣﭘ: Miksi kﺣ۳ytﺣ۳t dereference tapa eikﺣ۳
array?
>> DAVID J. MALAN: Ah, hyvﺣ۳ kysymys.
Miksi kﺣ۳ytﺣ۳t dereference menetelmﺣ۳ sijaan array menetelmﺣ۳?
Mitﺣ۳ﺣ۳n erityistﺣ۳ syytﺣ۳, olla rehellinen.
Ja, itse asiassa, tﺣ۳mﺣ۳n Tﺣ۳llainen esimerkiksi oikea,
Olen vain vﺣ۳ittﺣ۳en tehdﺣ۳ ohjelma monimutkaisempi,
lisﺣ۳ﺣ۳ silmﺣ۳t lasitus yli, ihmiset ovat tarkkailun
koska tﺣ۳mﺣ۳ nﺣ۳yttﺣ۳ﺣ۳ erittﺣ۳in mystistﺣ۳, mutta vaikka se tekee saman asian.
Ja niin, rehellisesti, tﺣ۳mﺣ۳ on tarpeettoman visuaalisesti monimutkainen ratkaisu
ongelmaan.
>> Se on edelleen hyvﺣ۳ suunnittelu, viidessﺣ۳ viidestﺣ۳ suunnittelun,
onko se on kiinnike merkintﺣ۳ tai osoitin merkintﺣ۳.
But-- erityisesti uusista myﺣﭘhemmin kurssin PSET 5
kun toteutamme ettﺣ۳ sanakirjaa Olen maininnut pari times--
me todella kiinnostaa alhainen muistiosoitteita
ettﺣ۳ me todella ymmﺣ۳rtﺣ۳ﺣ۳ mitﺣ۳ on meneillﺣ۳ﺣ۳n.
>> Mutta, nyt, kﺣ۳y ilmi, ettﺣ۳ tﺣ۳mﺣ۳ koodiriviﺣ۳ tﺣ۳ssﺣ۳ hakasulkeet
ei ole edes olemassa.
Ne ovat mitﺣ۳ kutsutaan syntaktisia sokeria, joka
on vain outo viileﺣ۳ tapa sanoa kﺣ۳ﺣ۳ntﺣ۳jﺣ۳ muuntaa hakasuluissa olevan
ettﺣ۳ matemaattinen lauseke.
Joten se on ihmisen yleissopimus pystyﺣ۳ vain kirjoittaa
nﺣ۳mﺣ۳ erittﺣ۳in kﺣ۳yttﺣ۳jﺣ۳ystﺣ۳vﺣ۳llinen suluissa.
Mutta mitﺣ۳ kﺣ۳ﺣ۳ntﺣ۳jﺣ۳, clang, on todella tekee tahansa
voit kirjoittaa mitﺣ۳ korostetaan linja 24, alla huppu se on todella
muuntaa sen tﺣ۳hﺣ۳n.
Se on vain enemmﺣ۳n miellyttﺣ۳vﺣ۳ﺣ۳ kuin ihmisen lukea ja kirjoittaa koodia rivi 24.
Mutta lopulta ne apupyﺣﭘrﺣ۳t liian irtoa
kun oman mukavuuden vahvistuu.
>> Selvﺣ۳, joten muistuttaa sitten, ettﺣ۳ tﺣ۳mﺣ۳ oli tavallaan suurin ongelma
tﺣﭘrmﺣ۳simme.
Ja sitﺣ۳hﺣ۳n herﺣ۳tti tﺣ۳mﺣ۳ koko hemmetin keskustelua viitteitﺣ۳,
ja osoitteet, ja kopiointi asioita.
Se oli, koska me kompastui tﺣ۳mﺣ۳ tyhmﺣ۳, tyhmﺣ۳ kysymys, jolloin
Olen toteuttanut logically-- Lauren tﺣ۳ﺣ۳llﺣ۳ demo ja appelsiinimehu
vuonna milk-- tﺣ۳ydellisesti algoritmisesti oikea toiminto
ja vaihtamalla kaksi muuttujaa " arvot, mutta hemmetin asia
ei ollut pysyviﺣ۳, tai pysyvﺣ۳, vaikutus minun koodi.
>> Ja miksi se oli?
Lyhyesti sanottuna, miksi tﺣ۳mﺣ۳ tﺣ۳ytﺣ۳ntﺣﭘﺣﭘnpano swap
loogisesti oikea, mutta sillﺣ۳ ei ole vaikutusta muuttujia, jotka vﺣ۳litetﺣ۳ﺣ۳n se,
kuten x ja y pﺣ۳ﺣ۳asiallisten?
Mikﺣ۳ oli ydin kysymys?
Joo?
Yleisﺣﭘ: Koska vaihteleva tehty kopiot muuttuja pass
Lﺣ۳pitoiminto.
>> DAVID J. MALAN: Aivan, kun ohitat muuttujia funktio, tai vﺣ۳itteitﺣ۳
osaksi toiminto, he ohi kopio, joka
tarkoittaa, saat samanlaista nﺣ۳kﺣﭘinen kuvio bittiﺣ۳ sekﺣ۳ x ja y,
kutsutaan tﺣ۳ﺣ۳llﺣ۳ ja b.
Ja voit tehdﺣ۳ mitﺣ۳ﺣ۳n haluat nﺣ۳iden kopiot,
mutta he aikovat ei ole Vaikutus kutsuvan toiminto.
Ja itse asiassa me kiinnitti ettﺣ۳ kuva ruudulla, Recall
viime kerralla, jolloin jos todella miettiﺣ۳, mitﺣ۳
meneillﺣ۳ﺣ۳n alla hood-- jos tﺣ۳mﺣ۳ on tietokoneen muistiin,
ja tﺣ۳ﺣ۳llﺣ۳ on kimpale muistia kﺣ۳ytetﺣ۳ﺣ۳n pﺣ۳ﺣ۳asiassa
tﺣ۳mﺣ۳ on kimpale muistia kﺣ۳ytetﺣ۳ﺣ۳n swap,
ja niin vaikka tﺣ۳rkein on kaksi muuttujaa, x ja y,
swap saattaa olla samanlainen nﺣ۳kﺣﭘinen arvot, jotka molemmat ovat 1 ja 2,
mutta ne ovat tﺣ۳ysin eri paloina muisti.
>> Tarvitsemme siis ratkaisu tﺣ۳hﺣ۳n.
Ja rehellisesti, nﺣ۳yttﺣ۳isi siltﺣ۳, ﻗﻗettﺣ۳ me nyt on ratkaisu tﺣ۳hﺣ۳n ongelmaan, oikea.
Jos meillﺣ۳ on nyt mahdollisuus manipuloida asiat Poiketen osoitteiden
ja, tavallaan liukumﺣ۳et ja tikkaat tyyli, toimi nuolet
ja mennﺣ۳ minne haluamme muistiin, emmekﺣﭘ voisi
ratkaista tﺣ۳mﺣ۳n ongelman kulkee pﺣ۳ﺣ۳ssﺣ۳ tﺣ۳rkeimmistﺣ۳ vaihtaa
ei arvoja haluamme swap, mutta vain intuitiivisesti
mitﺣ۳ voisimme kulkea vaihtaa sijaan?
>> [Vﺣ۳liin ﺣﺣNTﺣ]
>> DAVID J. MALAN: Miksi emme vain siirtﺣ۳ﺣ۳ sen osoitteet, eikﺣﭘ?
Miksi emme anna swap aarrekartan, jos haluatte,
joka johtaa sen todelliset arvot x ja y.
Katsotaanpa swap, todella muuttaa Original bittiﺣ۳ sijasta
vain ohimennen kopioita bittiﺣ۳.
Ja niin, itse asiassa, se on mitﺣ۳ olemaan ratkaisu.
Tﺣ۳mﺣ۳ versio tﺣ۳ssﺣ۳ selvﺣ۳sti huono ja puutteellinen.
Ja nyt, ensi silmﺣ۳yksellﺣ۳, se vain nﺣ۳yttﺣ۳ﺣ۳ kuin lisﺣ۳simme nippu tﺣ۳htiﺣ۳ satunnaisesti
ja keskitti sormet ettﺣ۳ se koota.
Mutta se nyt koota.
>> Mutta katsotaanpa mitﺣ۳ ne oikein ovat.
Ja valitettavasti laatijat C olisi voinut valita toisen symbolin
tehdﺣ۳ tﺣ۳stﺣ۳ hieman selkeﺣ۳mpi, mutta tﺣ۳hti operaattori
on eri merkitys kahdessa eri yhteydessﺣ۳.
Ja olemme nﺣ۳hneet molemmat, mutta nyt erottaa.
>> Joten ylﺣﭘs huipulla siellﺣ۳, kun olen muuttanut ja b
olemasta int n huono versio int tﺣ۳htiﺣ۳, ja b,
aikaisemmin, oli kokonaislukuja.
Mitﺣ۳ ovat a ja b nyt hyvﺣ۳, vihreﺣ۳ versio?
He osoitteet.
Osoitteet mitﺣ۳, olla selvﺣ۳?
Osoitteet kokonaislukujen.
Niin ettﺣ۳ olen sanomalla int tﺣ۳hti vﺣ۳lineet
tﺣ۳mﺣ۳ on osoite kokonaisluku, erityisesti.
>> Joten nyt ilmoituksen riviﺣ۳ koodia, jotain muuta on muuttunut liikaa.
TMP pysyy samana, koska se on vain vﺣ۳liaikainen kokonaisluku,
ei muisti taikuutta siellﺣ۳.
Mutta tarvitsee nyt tﺣ۳hti.
Ja, itse asiassa, joka muut maininta ja b,
huomaat, ettﺣ۳ kaikki se muuttuvat punaisesta vihreﺣ۳ksi
on ettﺣ۳ olen prefixing nﺣ۳mﺣ۳ muuttujat tﺣ۳htien kanssa.
Koska en halua kopioida ja b.
Koska jos vain kopioida ja b ja swap ja b, mitﺣ۳ olen todella vaihtokauppa?
Vain osoitteet, haluan vaihtaa mitﺣ۳ noita osoitteita.
Haluan mennﺣ۳ sinne.
Ja niin tﺣ۳hti operaattori sisﺣ۳llﺣ۳ minun toiminto,
ei sisﺣ۳llﺣ۳ parametriluetteloon tarkoittaa menet osoitteet
ja todella muuttaa nﺣ۳itﺣ۳ arvoja.
>> Joten mitﺣ۳ kuva nyt nﺣ۳yttﺣ۳ﺣ۳ sijaan.
No, jos sen sijaan olen ohimennen in ja B 1 ja 2--
Olen itse tﺣ۳ytyy lisﺣ۳tﺣ۳ yksi muu mﺣ۳ﺣ۳ritelmﺣ۳ tﺣ۳ﺣ۳llﺣ۳.
Joten olettaa, ettﺣ۳ tﺣ۳mﺣ۳ mﺣﭘhkﺣ۳le muistia on paikassa 10.
>> Tﺣ۳mﺣ۳ on paikka 11, mutta tﺣ۳mﺣ۳ on vﺣ۳hﺣ۳n yksinkertaistamista,
Minulla on nyt kaksi vaihtoehtoa tehdﺣ۳ vﺣ۳litﺣ۳n X ja y tai voin siirtﺣ۳ﺣ۳ niiden osoitteet?
Jos kuljen heidﺣ۳n osoitteet nﺣ۳in, minﺣ۳ vain
nyt tﺣ۳ytyy toteuttaa swap kohti vihreﺣ۳ﺣ۳ koodi
niin ettﺣ۳ kun se nﺣ۳kee, ja kun se nﺣ۳kee b, se ei vain kopioida ja b
ja siirrﺣ۳ maito ja appelsiinimehu.
Maito ja appelsiinimehu metafora nyt hajoaa,
koska ne ovat kupit nesteen eikﺣ۳ karttoja.
Meidﺣ۳n sijaan tﺣ۳ytyy mennﺣ۳ kﺣ۳sitellﺣ۳ 10 ja me
tﺣ۳ytyy mennﺣ۳ kﺣ۳sitellﺣ۳ 11, ja sitten suorittaa ettﺣ۳ vaihtamalla logiikka.
>> Joten logiikka on sama, mutta Tarvitsemme hieman eri tavalla
saada yhteys nﺣ۳iden muuttujien.
Ja niin lopulta, mitﺣ۳ Ohjelma on nﺣ۳yttﺣ۳ﺣ۳ tﺣ۳mﺣ۳.
Vuonna swap.c kirjaimellisesti kopioitu ja liittﺣ۳nyt vihreﺣ۳ versio.
Mutta minun tﺣ۳ytyy tehdﺣ۳ yksi muutos.
Se ei ole riittﺣ۳vﺣ۳ﺣ۳ vain vaihtaa swap.
Mitﺣ۳ muita koodiriviﺣ۳ minun tﺣ۳ytyy muuttaa?
Joo?
>> Yleisﺣﭘ: Jos se vie vﺣ۳itteet.
>> DAVID J. MALAN: Missﺣ۳ se tekee vﺣ۳itteen.
Jos siis siirry jopa tﺣ۳rkein, I voi vain kulkea x ja y,
ja, lupaan, viimeinen pala uusia syntaksin tﺣ۳nﺣ۳ﺣ۳n.
Minun tﺣ۳ytyy kulkea ei X ja y mutta osoite x ja y.
Ja se osoittautuu, symboli ettﺣ۳ laatijat C valitsi
on jos kﺣ۳ytﺣ۳t et-merkki tﺣ۳ﺣ۳llﺣ۳, ei sekoittaa ja verkon peiton et-merkki,
jos kﺣ۳ytﺣ۳t et-merkki tﺣ۳ﺣ۳llﺣ۳ ja et-merkki tﺣ۳ﺣ۳llﺣ۳,
tﺣ۳mﺣ۳ keksii sinulle, mitﺣ۳ osoitteen x,
ehkﺣ۳ se on 10, mikﺣ۳ on osoite y, ehkﺣ۳ se
11, ja kulkee kuin sijasta.
>> Niin paljon imeﺣ۳ kaikki kerralla.
Mutta katsotaanpa nyt nopeasti meidﺣ۳n jﺣ۳ljellﺣ۳ neljﺣ۳ minuuttia
jossa asiat voivat mennﺣ۳ pieleen.
Ja syrjﺣ۳ﺣ۳n, todella Otin tﺣ۳mﺣ۳n kuvan,
TF otti tﺣ۳mﺣ۳n kuvan vuosi tai kaksi sitten.
Joten tﺣ۳mﺣ۳ on takaisin nurkka Eliot ruokasalissa.
Osoittimet ovat ehkﺣ۳ vaikein aihe, ettﺣ۳ me kattaa CS50.
Joten jos olet huolissasi lajitella kaltevuus on kuin ehkﺣ۳ se
enemmﺣ۳n jﺣ۳ﺣ۳kiekkomailasta nﺣ۳in, ymmﺣ۳rtﺣ۳ﺣ۳
olemme tavallaan loppusuoralla huippu ehdot kﺣ۳sitteellinen monimutkaisuus.
>> Ja minﺣ۳ tuoda tﺣ۳tﺣ۳ valokuva, koska vannon
Jumalalle, syksyllﺣ۳ 1996, kun otin CS50 minun opetus muiden,
Nishat Mehta, hﺣ۳n istui minua alas nurkassa Eliot D. Hall lounaalla,
tai pﺣ۳ivﺣ۳llinen, tai jotain yrittﺣ۳ﺣ۳ auttaa minua ymmﺣ۳rtﺣ۳mﺣ۳ﺣ۳n osoittimia.
Ja tﺣ۳mﺣ۳ on missﺣ۳ olin viikon kuluttua se otettiin kﺣ۳yttﺣﭘﺣﭘn vuonna luento kun
Olen vihdoin ymmﺣ۳rtﺣ۳nyt osoittimia.
Ja olen toiveikas, ettﺣ۳ tﺣ۳mﺣ۳ klikkaa paljon nopeammin sinulle.
Mutta ymmﺣ۳rtﺣ۳ﺣ۳ tﺣ۳mﺣ۳ ehdottoman keskuudessa kehittyneempiﺣ۳ aiheita
teimme.
Mutta se on yksi tehokkaimmista.
Ja kun saat sen, se on oikeastaan ﻗﻗkaikki juuri menossa vihdoinkin yhdessﺣ۳.
Joten varma se ei tﺣ۳ytyy kaikki uppoavat tﺣ۳nﺣ۳ﺣ۳n.
>> Joten tﺣ۳ssﺣ۳ on viimeinen ohjelma aiomme tarkastella.
Ja aiomme pﺣ۳ﺣ۳ttyy nopea kolmen minuutin claymation
tekemﺣ۳t ystﺣ۳vﺣ۳mme, Nick Parlante.
Tﺣ۳ssﺣ۳ ohjelmassa, ettﺣ۳ kaksi parasta linjat ilmoittaa muuttujan x ja y.
Jotka molemmat ovat osoitteita kokonaislukujen, AKA osoittimia.
Sitten kﺣ۳yttﺣ۳ﺣ۳ riittﺣ۳vﺣ۳sti muisti tallentaa int
ja tallenna osoite Tﺣ۳mﺣ۳n muistin x.
Niin, se on vielﺣ۳kin helpompaa kuin esimerkiksi ennen.
Anna minulle neljﺣ۳ tavua muistia, se koko int,
ja esittﺣ۳ﺣ۳, ettﺣ۳ osoite X.
Tﺣ۳mﺣ۳ linja tﺣ۳ssﺣ۳ tarkoittaa Siirry osoitteeseen X
ja laittaa merkitys elﺣ۳mﺣ۳, numero 42 siellﺣ۳.
Mutta tﺣ۳mﺣ۳ linja huolestuttaa minua.
Star y tarkoittaa mennﺣ۳ osoitteeseen y, ja laittaa epﺣ۳onnen luku 13 siellﺣ۳.
Miksi on vaarallista, tﺣ۳ssﺣ۳ vaiheessa vuonna story-- joskin nopeasti kertoi
meidﺣ۳n hiipuu minuutissa here-- miksi se huono
minun sanoa, mene osoitteeseen y?
>> Yleisﺣﭘ: Et ole [kuultavissa].
DAVID J. MALAN: En ole laita mitﺣ۳ﺣ۳n y.
Joten mikﺣ۳ on arvo y, tﺣ۳ssﺣ۳ vaiheessa tarina?
Meillﺣ۳ ei ole aavistustakaan.
On joitakin roskat arvo ja eikﺣ۳ Binky tiedﺣ۳.
Jos voisimme pﺣ۳ﺣ۳ttyy tﺣ۳mﺣ۳n merkinnﺣ۳n.
>> [VIDEOTOISTOSTA]
>> Hei, Binky, herﺣ۳tﺣ۳.
On aika osoitin hauskaa.
>> -Mikﺣ۳ tuo on?
Lisﺣ۳tietoja viitteitﺣ۳?
Voi, Goody.
>> -No, Pﺣ۳ﺣ۳stﺣ۳ alkuun, kai olemme menossa on pari viitteitﺣ۳.
>> -OK.
Tﺣ۳mﺣ۳ koodi jakaa kaksi osoitinta joka voi viitata kokonaislukuja.
>> -OK, Hyvin nﺣ۳en kaksi osoitinta, mutta ne
eivﺣ۳t nﺣ۳ytﺣ۳ olevan osoittaa mitﺣ۳ﺣ۳n.
>> -Oikein.
Aluksi Nata eivﺣ۳t viittaa mihinkﺣ۳ﺣ۳n.
Mitﺣ۳ he viittaavat ovat nimeltﺣ۳ﺣ۳n pointees ja asettamalla ne
on erillinen vaihe.
>> -Voi, Oikea, oikea.
Tiesin sen.
Pointees ovat erillisiﺣ۳.
Joten miten jakaa pointee?
>> -OK, Hyvin tﺣ۳mﺣ۳ koodi allokoi uusi kokonaisluku pointee,
ja tﺣ۳mﺣ۳ osa sarjaa x osoittamaan sitﺣ۳.
>> -Hei, Ettﺣ۳ nﺣ۳yttﺣ۳ﺣ۳ paremmalta.
Joten tee se jotain.
>> -OK, Minﺣ۳ epﺣ۳viittausongelman osoitin X Tallenna numero 42 osaksi pointee.
Tﺣ۳mﺣ۳n temppu, minﺣ۳ tarvitsen taikasauva on dereferencing.
>> -Sinun Taikasauva on dereferencing?
Uh, ettﺣ۳ se on suuri.
>> -Tﺣ۳mﺣ۳ On mitﺣ۳ koodi nﺣ۳yttﺣ۳ﺣ۳.
Otan vain perustanut numero and--
>> [POP SOUND]
>> Hei, katso siellﺣ۳ se menee.
Joten, tekee dereference X seuraavasti nuoli pﺣ۳ﺣ۳sy sen pointee.
Tﺣ۳ssﺣ۳ tapauksessa, tallentaa 42 siellﺣ۳.
Hei, kokeile sitﺣ۳ tallentaa numero 13 kautta muiden osoitin, y.
>> -OK.
Otan vain mennﺣ۳ tﺣ۳nne y, ja saada numero 13 perustaa.
Ja sitten ottaa sauva on dereferencing ja just--
>> [Summeriﺣ۳ﺣ۳nen]
>> -Voi, Hei ettﺣ۳ ei toimi.
Sano, ﺣﭘh, Binky, en ajatella dereferencing
y on hyvﺣ۳ idea, koska asetus ylﺣﭘs pointee on erillinen vaihe.
Ja en usko meidﺣ۳n koskaan tehnyt sitﺣ۳.
>> -Hmm, Hyvﺣ۳ pointti.
>> -Joo, Me varattu osoitin, y, mutta emme koskaan aseta se osoittamaan pointee.
>> -Hmm, Hyvin tarkkaavainen.
Hei, etsit hyvﺣ۳ siellﺣ۳, Binky.
Voitteko korjata sen niin, ettﺣ۳ y pistettﺣ۳ samaan pointee kuin x.
>> -Sure, Kﺣ۳ytﺣ۳n taikasauvaa osoitin tehtﺣ۳vﺣ۳n.
>> -Onko Se tulee ongelma, kuten ennen?
>> -Ei, Tﺣ۳mﺣ۳ ei kosketa pointees.
Se vain muuttaa yksi osoitin osoittamaan samaan thing--
>> [Poksahdus]
--as toiseen.
>> -Voi, Nﺣ۳en.
Nyt y pistettﺣ۳ samaan paikkaan kuin x.
Niin, odota, nyt y on kiinteﺣ۳.
Se on pointee.
Joten voit kokeilla sauva on dereferencing jﺣ۳lleen lﺣ۳hettﺣ۳ﺣ۳ 13 yli.
>> -Voi, OK, tﺣ۳ssﺣ۳ menee.
>> Hei, katso tuota.
Nyt dereferencing toimii y.
Ja koska viitteitﺣ۳ jakavat ettﺣ۳ yksi pointee, he molemmat katso 13.
>> -Niin, Jakaminen, ﺣﭘh riippumatta.
Joten, aiomme vaihtaa paikkoja nyt?
>> -Voi, Katso olemme myﺣﭘhﺣ۳ssﺣ۳.
>> -But--
>> -Vain Muistaa kolme osoitin sﺣ۳ﺣ۳ntﺣﭘjﺣ۳.
Numero 1, perusrakenne on, ettﺣ۳ sinulla on osoitin,
ja se osoittaa yli pointee.
Mutta osoitin ja pointee ovat erillisiﺣ۳.
Ja yleinen virhe on perustaa osoitin
mutta unohtaa antaa sille pointee.
>> Numero 2, osoitin dereferencing alkaa osoittimen
ja seuraa sen nuoli yli pﺣ۳ﺣ۳sy sen pointee.
Kuten me kaikki tiedﺣ۳mme, tﺣ۳mﺣ۳ toimii vain jos on pointee, millaisia ﻗﻗsaa takaisin
lausua numero 1.
>> Numero 3, osoitin toimeksianto kestﺣ۳ﺣ۳ yhden osoitin
ja muuttaa sen osoittamaan sama pointee kuin toinen osoitin.
Niin sen jﺣ۳lkeen tehtﺣ۳vﺣ۳n, kaksi osoitinta
tulee kohta samaan pointee, joskus sitﺣ۳ kutsutaan jakaminen.
Ja siinﺣ۳ kaikki on sitﺣ۳, todella.
Hei hei nyt.
>> [Lopeta toisto]
>> DAVID J. MALAN: Se on se CS50.
Kiitos professori Nick Parlante.
Nﺣ۳hdﺣ۳ﺣ۳n ensi viikolla.
>> [ELECTRONIC musiikkia]