>> SPEAKER 1: Olgu.
Tere tulemast tagasi.
See on nädal Kaks CS50, ja meil on siiani kasutades funktsioone, kuid
suuresti võetud neid iseenesestmõistetavaks.
Oleme kasutanud printf mis on kõrvalmõju trükkimine
asjad ekraanil.
Oleme kasutanud get-int, saada hõljuda.
>> Aga mis siis, kui sa tegelikult tahad luua oma funktsioone, nagu mõned
võite on juba alustanud teha Ülesanded Üks, kuigi
mitte tingimata vajalik?
Noh, lähme edasi ja vaadata, et probleem lihtsalt paludes kasutaja
oma nimi ja trükkimine midagi ekraan, kuid proovige tegurdada mõned
Euroopa ühtsust, mida me oleme näha meie kood siiani.
Nii et ma mõtlen järgmise.
>> Ma lähen edasi minna ja luua uus programm, helistage
see hello.c nagu tavaliselt.
Ma lähen edasi minna ja mina sisaldavad standard io.h ülaosas.
Ma lähen ka siis ennast preemptively CS50 raamatukogu, nii et
Ma ei saa aru karjus poolt tõlkija.
Ja nüüd ma lähen edasi minna ja deklareerima int, peamine, tühine.
>> Ja siis siin, see on koht, kus ma tahan alustada tellida funktsionaalsust
mõne muu funktsiooni, et ma ise olen kavatsen kirjutada, kuid see ei
praegu ei ole.
Oletame näiteks, et ma tahtsin kirjutada funktsioon, mis võimaldab mul
välja printida tere, koma ja siis mõned kasutaja nimi.
Selle asemel, et jätkata seda, printf Tere,% s, kas ei oleks tore, kui
oli lihtsalt funktsiooni nimega ei printf kuid print nimi?
>> Nii teisisõnu, ma tahan, et oleks võimalik Kirjutada programm, mis teeb veidi
midagi sellist.
Esiteks, ma lähen ütlen printf oma nimi, mis ajendades kasutajal
anna mulle tema nime, ja siis ma olen kavatse kasutada tuttav string s
kuulutada string.
Anna tüüpi muutuja stringi kutsume seda s ning kaupluse, et
kaasa kutsudes saada string.
Aga nüüd nädalat varem, oleksin veidi igavalt tehtud tere,% s / n.
>> Ja Teisisõnu, me oleme näinud selles Näiteks kamp korda, ja see on
triviaalne näide, sest seal on vaid üks koodirida nii see tõesti ei ole
suur asi, et hoida kirjutades uuesti.
Aga oletame, et see rida koodi tegelikult olid koormata, ja
see ei ole üks rida koodi, kuid see on 10 rida koodi paar nädalat nüüd,
ja sa oled lihtsalt väsinud kopeerimine ja kleepimine või
tippida sama kood.
Kas poleks tore, selle asemel et teha printf Tere,% s ja nii edasi,
kas ei oleks tore, kui seal oli lihtsalt funktsioon nimega print nimi
võtab argument -
Teisisõnu, see võtab sisend -
ja siis semikoolon.
Nii et funktsioon, kas ei oleks Ole kena, kui see on olemas?
Siis ma ei pea muretsema mida printf on, mida% s ja kõik
neid keerukusi, mis on ei ole kõik nii huvitav.
Need on kasulikud.
>> Nii print nimi kahjuks ei olnud leiutas umbes 40 pluss aastat tagasi.
Keegi arvas, et kirjutada seda.
Aga mis on ilu, millel programmeerimiskeel, just nagu
Scratch saate määrata kohandatud plokid, nii C ja kõige tahes keeles, sa saad
määrata oma funktsiooni, saate sa määrata oma funktsioone.
Nii et kuigi me saame peamine poolt automaatselt vabaks saame kuulutada
oma funktsioone.
>> Ma lähen tegema ruumi siin üleval ja ma lähen kuulutada minu
oma funktsiooni, et läheb otsima natuke imelik alguses, kuid me tuleme
tagasi selle enne pikk.
Ma lähen ütlen tühine, seega näitab see funktsioon teeb
midagi, on kõrvaltoime, kuid see ei tagasta mulle midagi
Samamoodi, et saada int või saada string ise teeb.
Ja ma annan selle funktsiooni nimi print nimi, ja ma lähen
täpsustada, et see mees ei kavatse võtta string, ja ma lähen, et helistada, et
string nimi.
Ma võiksin nimetada seda, mida tahan, vaid ma tahan oma kood olla füüsilisest isikust dokumenteerimine.
Teisisõnu, kui üks sa olid seda faili avada ja seda lugeda, siis võib
omamoodi järeldavad nime, et sisend, millist rolli see peaks mängima.
>> Ja nüüd alla, et ma lähen avama lokkis traksidega ja suletud lokkis traksidega,
ja nii teate Olen järginud sama mustri rida neli läbi seitse nagu
Olen jälginud hea nädal pluss nüüd vahel, ütleme, read üheksa ja
14, mis moodustavad peamise.
Teisisõnu, printida nimi on teine ​​funktsioon.
Nüüd koostaja ei kavatse teada helistada see asi automaatselt
sest ma sõna otseses mõttes lihtsalt leiutas selle, kuid ta ei tea veel helistada peamine
automaatselt ja siis muidugi line 13 kutsun ma oma funktsiooni.
Ja kuna ma olen teatanud, et funktsioon up line neli enne peamisi,
see läheb õpetama koostaja mida tsiteerin lõppeb, "print nimi"
tähendab ja mida ta peaks tegema.
Nii et ma olen omamoodi annab see uue kohandatud blokeerida kontekstis, ütleme, nullist.
>> Nii et siin, ma ei saa panna, et väga sage või korduv muster kood Hoian
kirjalikult klassi printf % S Tere,% s / n ", -
Mida ma tahan panna siia?
S?
Nii et ma tahan panna nimi selles kontekstis.
Nii märkate natuke dihhotoomia siin.
Sest ma kuulutan oma funktsiooni ja ma olen mõnevõrra meelevaldselt nimetatakse
see trükkida nimi ja kuna ma olen sulgudes täpsustatud, et see
Funktsioon üks argument, tüüp mis on string - nii et see on sõna
või fraas või midagi sellist - ja Ma helistan, et argument nimi, et
sugugi ainus muutuja, mis on in reguleerimisala, nii et rääkida, on nimi.
>> S ainult vahel, mida kaks looksulg muidugi?
Noh tegelikult, nagu liin 10 kaudu 14, nii lihtsalt meeldib esmaspäeval ei saa kasutada
S, kuid see, mida ma teha saan, on edasi S arvesse print nimi.
Trüki nimi lihtsalt nii juhtub, et anda sellele alias, sünonüüm, hüüdnimi,
nimetades seda nime, ja nüüd kasuta seda joont.
Nüüd lubage mul päästa see, zoom out.
>> Lubage mul minna ja teha tere.
Paistab hea.
Ei sülitama vigu. . / Hello Enter.
Mis mu nimi on?
David.
Ja tere David.
Nii et mitte kõik, põnev, kuid mõtle nüüd.
Nüüd on teil, et sama koostisosa nagu me tegime Scratch et
teha oma funktsioone.
>> Aga seal on natuke gotcha.
Oletame, et ma ei olnud tõesti arvasin see läbi ja ma tegelikult ilma
tegelikult mõtlesin selle kirjutas et funktsioon siin.
Tundub täiesti mõistlik.
Scratch puudub mõiste Asukoha oma skripte.
Sa võiksid panna ühe siia, üks siin, üks siin, ja see võib hakata
vaadata veidi räpane, kui te ei näha seda korralikult, kuid see ei ole
oluline, kus füüsiliselt skriptid olid ekraanil.
Kahjuks C - ja see on erinevalt keeltes nagu Java ja Python
ja teised, et võite olla tuttav koos - kahjuks C, et temal
oluline, sest vaata, mis on juhtub nüüd.
>> Vaikefunktsioon mis toimub täitmiseks on muidugi põhiline.
Main läheb helistada print nime line kaheksa, kuid kahjuks
koostaja ei tea isegi, et print nimi olemas enne, kui see jõuab liini 11,
mis kahjuks on saab olema liiga hilja.
Teeme teha tere.
Ja nüüd neetud, kaks viga tekkinud.
Nüüd lubage mul kerida kuni väga Esiteks, nagu me alati teeme, ja
märgata, et see on minu peale karjumine, "Kaudne deklaratsiooni funktsioon
prindi nimi. "
>> Nii et me oleme näinud seda enne sõnumi, kaudne deklaratsiooni funktsioon.
Millal me oleme näinud, et selline viga?
Kui ma ei sisaldanud raamatukogu.
Kui ma unustasin cs50.h ja ma saaksin karjus eest saada string või saada int.
Aga sel juhul, selle funktsiooni print nime pole raamatukogu, eks?
See on sõna otseses mõttes seda pilti, nii et mida on tõesti probleem?
>> Noh kahjuks C, kulub teil nii uskumatult sõnalt, et kui sa
soovite funktsiooni nimetatakse print nime olemas, siis kas rakendada
mis toimivad väga peal oma koodi nii, et see on kättesaadav alandada
funktsioone, kuid ausalt öeldes, et muutub lohakas väga kiiresti.
Isiklikult mulle meeldib panna peamised esimene sest siis on väga selge, mida see
programm teeb esimesel pilgul.
Ja pluss, võite sattuda kummaline nurgas kui siis, kui x tahab helistada
y kuid y võib helistada x, sa lihtsalt füüsiliselt ei saa tegelikult panna üks
peale.
>> Aga selgub, C, saame lahendada väga lihtsalt.
Ma panen natuke ruumi siin, ja ma olen lihtsalt läheb
ennetavalt, ehkki mõnevõrra liigselt, mida kavatsetakse õpetama hakata
koostaja, et on olemas funktsioon nimetatakse print nimi, see võtab stringi,
ja ma lähen helistada see nimi semikooloniga.
>> Nii see nüüd vastavalt neli, mis me pole enne näinud, on deklaratsioon
ning funktsiooni print nimi, kuid see on ainult luban, et see funktsioon
lõpuks tuleb määratleda, lõpuks rakendada.
See nüüd ma ei jäta üksi, sest Nüüd on see mõiste,
rakendamise, omamoodi viimane miil rakendamise selles
Konkreetse funktsiooni.
Nii öeldes on see loll, see on tüütu, kuid see on tee C on, ja see on
sest see viib teid väga sõna-sõnalt ja, kui arvuti öeldes peaks
ainult ei täpselt, mida sa öelda seda, et teha, ja nii, et tellimine on oluline.
>> Nii et hoidke seda silmas pidades, ja jälle hakata teate kordumise mustrid.
Koefitsiendid on teil, kui te pole juba alustada kogevad sõnumeid
nagu see, mis esmapilgul tunduvad täiesti segasena, kuid kui te alustate
otsida need märksõnad nagu "Kaudne avaldus," mainitakse
funktsioon sel juhul - ja ausalt, siis mõnikord isegi natuke roheline
porgand sümbol, mis ütleb teile, kui küsimus ilmselt on -
võite alustada tööd teed kaudu veel nähtamatu veateateid.
Kõik küsimused on kirjalikult oma oma funktsiooni niimoodi?
>> Teeme midagi, mis on natuke selgem.
Selle asemel, et lihtsalt midagi teha, mis on kõrvalmõju trükkimine, lase mul minna
minna ja salvestada uus fail ja me nimetame seda positive.c, kuigi see on
kavatse olla natuke erinev versus viimast korda.
Ja see kord, ma tahan uuesti rakendada viimane aeg on positive.C näiteks mis
on sundida kasutaja anda mulle positiivne täisarv.
Aga mul oli kasutada saada int viimast korda.
Kas poleks olnud tore, kui seal oli funktsiooni nimetatakse saada positiivne int
et ma võiks lihtsalt osta see tükk funktsionaalsust?
Seega erinevus on selles, paneme rakendama saada positiivne int, kuid erinevalt
print nimi mis oli kõrvalmõju - see ei andnud mulle midagi nagu
number või string -
saada positiivne int on muidugi läheb tagasi loodetavasti positiivne int.
>> Teeme seda.
Kaasa cs50.h sisaldab standard io.h.
Int main tühine.
Ja nüüd siin, ma lähen edasi minna ja oletame int, nimetame seda n, võrdub
saada positiivne int.
Ja just nagu saada int juba olemas sest töötajad kirjutas ta, ma lähen
eeldada, et praegu, et saada positiivse int olemas, ja nüüd ma lähen
minna ja öelda printf, tänud% i / n ", n.
>> Nüüd, kui ma kompileerida seda programmi, mida juhtub minu terminal
akna allosas ekraani?
Ma ilmselt saan et sama viga nagu enne.
Seega proovime seda.
Tee positiivne.
Ja jälle kaudne deklaratsioon funktsiooni, saate positiivse int.
Nii saame lahendada seda paar võimalust.
Ma lähen hoida lihtsa ja lihtsalt panen avaldus siin ja saada
positiivse int.
Mul on vaja nn allkirja.
Allkiri lihtsalt viitab et esteetika
esimesel real on programmi.
Niisiis, mida peaks saama positiivne int tagasi?
>> Nii int.
Ma mõtlen ideaalis oleks tagasi midagi positiivset int, kuid et
ei ole olemas.
Me ei ole näinud, et üks meie andmed tüüpi, nii et me peame tegelema
Asjaolu, et meil on väga vähe andmetüübid töötada.
Aga me ei saa tagasi int ja lihtsalt usun, et see saab olema positiivne.
See saab nimetada saada positiivne int.
>> Ja nüüd, kui umbes tema argumendid?
Kas see võtab iga sisend?
Kas see vaja sisend?
Nii et see ei ole vaja teada, ette midagi.
Hangi string ei, saad int ei ole.
Printf ei - see peab olema mingi input läks see - ja print nimi
vaja mingit sisendit, kuid saavad positiivse int ei ole.
Nii et ma lähen selgesõnaliselt ütle koostaja tühine.
Void on ilma midagi muud.
Nii void tähenda midagi läheb sees need sulgudesse, semikoolon.
>> Ja nüüd allosas minu faili - ja jälle, ma olen lihtsalt selline anal
siin paneb peamise ülaosas, mis on hea tava, kuna see viis,
millal teie või keegi teine avab faili
funktsionaalsus on seal.
Võite sukelduda alates algusest.
Nüüd ma lähen korrata seda, saada positiivne int tühine, aga ma ei ole
läheb löögi semikooloniga nüüd.
Ma lähen avama looksulg, ja nüüd ma pean laenama
mõned ideed esmaspäevast.
>> Nii nagu te mäletate, me tegime midagi meeldib teha järgmist ajal
midagi on tõsi.
Ja mida ma tegin?
Ma tegin midagi anda mulle positiivne täisarv,
natuke kiire.
Ma ei kasuta sõnu, mida ma tahan.
Ja siis ma kasutasin mida?
Int n võrdub saada int, argumente pole seda.
>> Ja märgata erinevust.
Kui te helistate funktsiooni, kui kasutate funktsiooni, siis ei panna tühine.
Sa ainult seda deklareerimisel funktsioon, õpetades koostaja mida
tuleb oodata.
Nii et sa ei pea tegema void seal ise.
>> Ja nüüd, mis oli minu tingimus?
Noh, n ei võrdu positiivne, kuid see on vaid pseudo-kood.
Niisiis, kuidas ma väljendada seda puhtamalt?
Nii on väiksem või võrdne nulliga.
Nii et taas, teate saate teha väiksem või võrdne.
Kuigi see on kaks eraldi sümboleid, saate seda teha
klaviatuuri kui sellist.
>> Aga seal on veel viga, mis Ma silmamunad viimane kord ka.
Ma pean deklareerima -
täpselt.
Ma pean deklareerima n väljaspool silmus.
Nii et ma vaja panna n siia üles, ja Ma ei ole soovite uuesti kuulutada siin
et ma saan uue muutuja.
Ma lihtsalt tahan, et määrata väärtus siin.
>> Ja nüüd ma ei ole päris teha siin.
Las ma saan enne ise ja teeselda, ma olen teinud.
Tee positiivne ja nüüd seal on uus viga.
Kontroll jõuab lõpuks mitte tühine funktsioon.
Nii uus veateadet, aga kui sa lahke kohta tease peale iga sõna, see
Ilmselt vihjab mis viga.
>> Kontrollida.
Kontroll tähendab lihtsalt, et operatsioonide programm.
Arvuti kontrolli ja midagi läks valesti.
Nii et see jõuab lõpuks mitte tühine funktsioon.
Mis funktsioon on see ilmselt viidates?
Mis ülesanne on mitte-tühine?
Nii et saada positiivne int ja natuke segane, et hästi,
see on selline tühine.
See on kirjeldus void oma argumente, kuid tema toodang läheb
olema tüüpi n.
Nii sõna vasakul on niinimetatud tagastab tüüp.
Sõna sees siin null või rohkem argumente
et funktsioon võtab.
>> Mida ma pean tegema?
Siinkohal minu kood, joon 21, kus vilgub kiire praegu, ma
positiivne int sees muutuja nimega n.
Kuidas ma annan selle tagasi main?
Sõna otseses mõttes.
Tagasi n semikooloniga.
>> Nii nagu Colton tagasi tükk paberile vastus mind visates
et paberile väike must kast laual, seda teha
koodi, siis sõna otseses mõttes lihtsalt kirjutada, tagasi n, ja see on nii, nagu Colton olid
jagab mulle midagi füüsilist tagasi.
Sel juhul, mis juhtub, on saada positiivse int läheb tagastama
mis eeldatavasti positiivne täisarv kellele?
Kuhu see raha lõpuks?
See jõuab see muutuja, n, ja siis astume line üheksa.
>> Nii teisisõnu, järjekorras toimingud, see programm hakkab
täidesaatva ja koostaja mõistab, oh, sa tahad raamatukogu?
Lubage mul minna haarata kõike, mis on sees, et.
Oh, sa tahad standard IO raamatukogu?
Lubage mul minna haarata kõike, mis on sees, et.
Mis koostaja ütlen ise kui see tabab rida neli?
Oh, sa lubasid, et rakendada funktsiooni nimetatakse saada positiivne, kuid
me jõuame hiljem tagasi, midagi sarnast.
>> Int main void lihtsalt tähendab siin julgust oma programmi.
Line seitse on lihtsalt lokkis traksidega.
Line kaheksa ütleb vasakul, anna minu 32-bitise täisarvu, nimetame seda n.
Paremal pool, see on öeldes saan positiivse int.
Nüüd paus, et lugu, sest nüüd Ma ei liigu edasi minu kursor alla.
Minu kursor nüüd loojub siin, sest nüüd saan positiivse int hukatakse.
Int n deklareeritakse.
Tehke järgmist.
Printf annab mulle positiivne täisarv.
>> Get int kasutaja, hoidke seda n, ja võib-olla seda uuesti ja uuesti.
See ahel tähendab, et see kood võib täitma üles-alla nagu see uuesti
ja uuesti, kuid kui kasutaja lõpuks koostööd ja annab mulle positiivne
int, ma tabanud rida 21, kus punkt number antakse tagasi, ja kus üks
ma peaks esile nüüd?
Üheksa.
Kontrolli, nii et rääkida, tagastab liinile üheksa.
See on joon, mis on nüüd tasuta.
>> Nii et mis siin juhtunud kõik seekord all kapuuts, kuid
kui meil kasutada funktsioone nagu printf või isegi saada string, et keegi
kirjutas teie jaoks, kontroll oli sunnitud edasi off kellegi koodi rida
poolt rida-realt.
See on lihtsalt me ​​ei näe seda ja me ei saa tõesti kirjeldada seda selles
programm, sest see on mõnes muus faili kõvakettale
meile teadmata.
Teeme tegelikult kompileerida ja kasutada seda nüüd.
>> Tee positiivne.
Koguda, et see edu.
. / Positiivne.
Anna positiivne täisarv.
Olgem raske.
Negatiivne 1.
Zero.
Anname ta 50.
Täname 50, ja nii kontroll on nüüd tagasi.
Kõik küsimused, siis on seda?
Jah?
>> [Kuuldamatu].
>> Ütle uuesti.
Oh, hea küsimus.
Nii võite märgata paralleelselt siin, et Ma olen selline lõikamine nurgas.
Vastavalt 12, ma väidan, saad positiivse int tagastab int, kuid sama
loogika, see nüüd loogiline, et line kuus, ma väidan, et peamine tulu
int, kuid mis meil kunagi olid kõik meie programmid?
Meil pole kunagi olnud mainitud see võtmesõnaks tagasi.
>> Nii selgub, et C, vähemalt versioon see, et me kasutame
valmistatud aastal 1999, tehniliselt, see on toimub automaatselt.
Igakord kui rakendada programmi ja te rakendada funktsioon nimega peamine,
et funktsioon tagastab nulli Vaikimisi, kui te ei öelda teisiti,
ja null on vaid konventsiooni.
Maailma tagastab null seeläbi näitab, et kõik on hästi,
tõhusalt jättes meid 4000000000 võimalik asju, mis võiksid minna
vale, nii et kui me tagasi üks, mis võib tähendada kood, mis tähendab, see
asi läks valesti.
Võiksime tagasi kaks, mis tähendab, see asi läks valesti.
Võiksime tagasi 4000000000, mis tähendab see muu asi läks valesti.
>> Ja kui te nüüd mõtlema oma PC või Mac, võite meelde tuletada, et
mõnikord saad segasena veateateid alates tarkvara, mis sa oled
kasutavad, ja mõnikord on tal inimese sõbralik kirjeldus, kuid seal
sageli kood või number ekraanil?
Kui see ei tule meelde, lihtsalt hoida silma peal seda.
See on tavaliselt, mida need koodid viitavad.
Nad kuuluvad Microsoft Word ja teised programmid, nii et kui sa faili
veateatele firmaga, saate ütle neile, oh, ma sain viga number 45.
Ja mõned programmeerija tagasi ettevõte saab vaadata, et kuni tema
kood ja öelda, oh, see on sellepärast tegin see viga ja sellepärast kasutaja
sain selle sõnumi.
>> Aga ausalt, see on lihtsalt veidi häirivad ja natuke tüütu
järeldada, et vähemalt meie Esimese paari programmid, et me oleme
välja jättes ta.
Aga kõik see aeg iga ühe oma funktsioone peamine on salaja oli see
line lisatakse automaatselt teie poolt tõlkija, lihtsalt kokkuleppeliselt, et
säästa aega.
>> [Kuuldamatu].
>> Sul ei ole vaja lisada see peamine.
See on hea.
Sa ei vaja seda, kui sa olid rakendatakse funktsiooni niimoodi.
Vastasel funktsioon korter välja ei tööta.
Aga peamine, et see ei ole vajalik.
In nädal või kaks, me alustada saada arvesse, et harjumus kui tahame alustada
tähendades vigu.
Tõesti hea küsimus.
>> Nii kiire verbaalne break mainida, et Selle reede, me ei lõunatamas
per se, vaid saadame őhtustan mõned õpilased ja töötajad.
Kui soovite meiega liituda, võid tasuta minna cs50.net/rsvp.
06:00 see reede.
Kosmos on, nagu alati, on piiratud, kuid me jätkata teed neid on peaaegu
kord nädalas, kui ruumi otsa sel nädalal.
>> Nii pinge et jätsime maha Esmaspäev oli, et stringe saab tegelikult
indekseeritakse arvesse, mis tähendab, et sa saavad esimese märgi,
teine ​​märk, kolmas märk ja nii edasi, sest sa võid
tõhusalt mõelda string, nagu tere, nagu oleks sel juhul viis
tähed sees kastid.
Ja saad iga nimetatud lahtrid, mida süntaks kas me
tutvustada esmaspäeval?
Need nurksulgudes klaviatuuril.
See lihtsalt tähendab, minge asukohta null.
>> Alustame nullist, nii et sulg null tähistab h, sulg üks
tähendab e, ja nii edasi.
Ja nii kogu aeg, kui me oleme abil stringid ja kirjutama "tere"
ja "maailm" ja muid asju ekraan, see on hoitud
lahtrites niimoodi.
Ja võtke oletus.
Mis igas kastis esindama füüsiliselt sees arvuti?
>> [Kuuldamatu].
>> Vabandust?
>> Lõbu.
>> Nii iseloomu, kindlasti puhul stringide ja iseloom on lihtsalt
kaheksa bitti või üks bait.
Nii et ilmselt on vähemalt ähmaselt tuttavad asjaoluga, et oma
Arvutil on mälu.
See on kahte tüüpi mälu vähemalt.
Üks on kõvakettal, kuhu salvestada kraami püsivalt, ja see on
tavaliselt suur, siis võite olla filme muusika ja nii edasi.
>> Siis on teist tüüpi mälu nimetatakse RAM, R-A-M, Random Access
Memory, ja see on tüüpi mälu mida kasutatakse siis, kui arvuti on
töötab, aga kui sa kaotad võimu või oma aku sureb, midagi, mis on salvestatud
RAM kaob, kui sa kaotad võimu üldse, sest see ei ole
püsiv.
Siis tavaliselt on need päevad, kaarik on kaks kontserti, võibolla rohkem.
Ja teistpidi RAM on, et see on palju palju, palju kiiremini kui kõvakettad
või isegi SSD kõvakettad nendel päevadel, aga see on tavaliselt kallimad, nii
sul on vähem seda.
>> Nii tänane vestlus tegelikult viitab RAM, mis tüüpi mälu, mis
olemas ainult siis, kui seal on võim söödetakse arvutisse.
Nii et kui sa kirjutad H-E-L-L-O, Enter klaviatuur, H läheb üks
bait RAM, E läheb teine ​​bait RAM, nagu on
ülejäänud sõna.
Nii meenutada, mida me suutsime teha viimane kord oli see.
Lubage mul minna ja avada fail et me kutsusime string.c ja meenutavad
et see tundus vähe midagi sellist.
Lubage mul tegelikult tagasi pöörata ja muuta see täpselt see, mida ta nägi,
string pikkusega s.
>> Nii vaatate programmi siin.
Me sisaldama CS50 raamatukogu nii et saame kasutada saada string.
Me sisaldama standard io.h nii saame kasutada printf.
Miks me hulka string?
See oli uus esmaspäeval.
Nii et me tahtsime string pikkus.
Str leng.
Inimesed otsustas aastaid tagasi, Olgem lühidalt.
Selle asemel, nimetades seda "string pikkus" kutsume seda "str leng" ja lasta
maailma näitaja läbi, ja nii see on mida me pääse koos string.
>> See on tuttav.
See on tuttav.
See on natuke uus.
Kooskõlas 22 - ja me tuleme tagasi sellele, kuid nüüd teame -
ja sa oleks vaid tean seda omamast dokumentatsiooni lugeda või kui
sa teadsid C juba -
saada string mõnikord võib kägardama.
Kui kasutaja on tõesti võistlev või koostöövalmiduse ja ta lihtsalt
ei kirjuta midagi klaviatuuri või liigid niivõrd klaviatuur, mis
see haarab arvuti mällu teoreetiliselt saada string võib naasta
midagi muud kui märgijada.
See võib naasta eriline väärtus nimega NULL kõik mütsid, T-U-L-L, ja see on
lihtsalt nn valvur väärtus.
See on eriline väärtus, mis tähendab midagi halba juhtunud käesolevas asjas.
On puudumisel string.
>> Nii tühjaks Ma kontrollin jaoks lihtsalt nii, et pikk lugu lühike, str leng ja
muid funktsioone, mis tulevad koos C, kui nad ootavad string kuid te kaotate neid
Kuna string, kui te kaotate neid nullimine, arvuti või programmi
lihtsalt krahhi tähelepanuta.
See riputada.
See öökima mõned veateate.
Halbu asju juhtub.
Nii et kuigi see on veel mitte täpselt määratletud -
seda mõttekam on nädalas või kaks - vastavalt 22, see on lihtsalt
Näiteks füüsilisest kaitsev veatuvastuse igaks juhuks üks kord välja
miljoni midagi läheb valesti, on Vähemalt minu programm ei krahhi.
>> Nii et kui te ei ole võrdne midagi halba, Mul on seda loop, ja see oli
kus meil oli, et teised uus tükk süntaks.
Mul on silmus iterating alates null kuni pikkus s.
Ja siis siin, olin trüki välja s sulg i, kuid miks ma kasutan% c kõik
ootamatu asemel% s isegi kuigi s on string?
See on märk, kas pole?
S on string, kuid s sulg midagi, s sulg i kus i on null
või üks või kaks, see on individuaalne märgi string, ja nii kohta
et printf tuleb teavitada, et see on tõesti märk oodata.
>> Ja siis meenutada, mis tegi programm tegelikult teeb?
>> Trükitud see välja veerud.
>> Jah, täpselt.
See lihtsalt trükitud sõna, et ma kirjuta kolonn, üks märk igale reale.
Vaatame seda uuesti.
Nii et string.
Koostanud OK. . / String.
Las ma kirjuta H-E-L-L-O, Enter ja tõesti Ma saan aru, üks rea kohta.
>> Nii et lubage mul teha üks optimeerimise siin.
Kui mõtled seda, eriti kui oled programmeeritud enne, seal on
väidetavalt ebatõhusus line 24.
Teisisõnu, see ei ole tingimata parim disain.
Arusaadav, vähemalt kui sa mäleta, mida str leng on, kuid see on
midagi loll olla.
Mis see võiks olla?
>> [Kuuldamatu].
>> Täpselt.
See kontrollimine pikkus s iga kord, kuigi
H-E-L-L-O alati saab kuni viis tähemärki.
Iga kord, kui läbi selle silmuse, viis ei muutu.
Ma võiks incrementing i, kuid mida on pikkus s iga
iteratsiooni see loop?
See on viis, see on viis, see on viis, ja kuid ma olen siiski küsida seda
küsimus uuesti ja uuesti ja uuesti.
Nüüd ausalt öeldes arvuti on nii kuradi kiire, keegi läheb teade
vahe sel juhul, kuid sellised halva disaini otsuseid võib
hakkavad tõusta, kui koostaja ise ei püüa seda parandada teid, mis
ta tavaliselt ei teeks, on vähemalt aparaat.
>> Ma lähen seda tegema.
Ma lähen Koma pärast minu esimene muutuja i.
Ma annan endale veel muutuja, nimetades seda n, lihtsalt
konventsiooni numbreid ja siis ma olen kavatse anda n väärtus string
pikkus s.
Ja siis ma lähen muuta minu tingimus oleks see, mida?
Ma muudan tingimus et kui ma alla n.
>> Nüüd, kui mitu korda olen ma kontrollides pikkus s?
Kord, kuid see on OK, et kontrollida i vastu n ja jälle, sest nüüd need
väärtused ei ole tegelikult muutumas.
Nüüd kohe, lihtsalt teada, et millal helistada funktsioon, seal on natuke
üldkulud, ei piisa, et takistada teid tegelikult enam kunagi kasutades funktsioone, kuid
kindlasti, kui seal on rida koodi niimoodi - ja liinid saavad
huvitavam enne pikk - kui seal on võimalus mõelda, kui ma
kirjuta see kood, kui palju korda on ta ellu?
Hakkate näha ajas täita oma programme saab
tõepoolest muuta.
>> Tegelikult üks probleem seab oleme teinud varasematel aastatel hõlmab
rakendamisel, nagu te võib-olla mäletate alates nädal null, õigekirjakontrolli, kuid
Õigekirja kontrollija, mis on kavandatud toetama sõnaraamat 150000 pluss
sõnad, mis me teile poisid.
Sa oleks kirjutada kood, mis laeb need sõnad RAM, nii et arvesse
kastid nagu nägime ekraanil hetkeks tagasi, ja siis nii kiiresti kui
ei, sa pead suutma vastata küsimus vormis, on see sõna
valesti?
Kas see sõna valesti?
>> Ja midagi sellist, mida me oleme teinud varasematel aastatel on välja see,
ehkki opt-in vabatahtlikult konkurents kehvasti, kusjuures
õpilased, kes kasutavad vähem RAM ja vähem ajal vähem protsessori, lõpetame
vahustamine kuni tippu veidi juht pardal või pingerida et me panna
Muidugi kodulehte nagu me oleme teinud varasematel aastatel.
Nii et taas, täiesti vabatahtlik, kuid see räägib disaini võimalusi
mis on ees, kui me hakkame hoone atop mõned neist
ehituskive.
>> Nii et lubage mul minna tagasi selle skeemi hetk ja paljastada vähe
midagi enamat.
See tõesti on string, ja me oleme võtnud ära mõned raamatukogud,
standard io.h mis on -
>> Printf.
>> Printf, muu hulgas.
cs50.h, mis on saada int ja saada string ja nii edasi, string, mis
oli str leng.
Aga selgub, seal on veel üks.
Ausalt, seal on palju ja palju header faile, mis kuulutab funktsioonid
raamatukogude, kuid see ctype.h on tegelikult saab olema mõnevõrra
kasulik, sest ma lähen minna ja rakendada üks
muu programm siin.
>> Lubage mul minna ja avada midagi Kirjutasin eelnevalt kutsunud
capitalize.c ja võtame Vaata, kuidas see töötab.
Pange tähele, et ma kasutan, et see versioon see, kolm tuttav faile.
Pane tähele, et rida 18, ma olen saada rida teksti.
Teade liin 21, ma olen väites, et järgmine kood läheb
ära s, olenemata kasutaja sisestatud aastal, ja kuidas ma teen seda?
Noh, ma võtan -
õppetund viimast korda -
Teatan i ja n ning iterating üle märkide string.
Ja mis siis on see plokk koodi rida 24 kuni 27
teeme üldarusaadavat mõttes?
>> Väiketäht tagasi.
>> Täpselt.
Kui te sulg i - nii et kui i-nda iseloomu s, mis on spetsiifiline
char string on suurem kui võrdne või väiketähed ja -
meelde tuletada, et topelt-märk tähistada ja -
ja sama märk, s sulg i, on väiksem või võrdne väiketähed z,
mis tähendab, et see või b või c või dot, dot, dot, või z, mis tähendab,
see on väiketähed.
Mida ma tahan teha sel juhul?
Noh, ma ei saa seda teha mõnevõrra cryptically, kuid
olgem kiusupunn see peale.
>> Ma lähen kutsun printf, prindib% c sest ma tahan kordustrükk see
märk ekraanile.
Ma siis kavatseme s sulg i, i-nda märgi s ja siis miks
ma teen seda veidi trikk siin väiketähed miinus kapitali?
Mis on see, et annan mulle üldiselt?
>> [Kuuldamatu].
>> Täpselt.
Ma tõesti ei mäleta -
see oli 65 kapital A. Ma tõesti ei mäleta, mida väiketähed on
kuid ükski asi.
Arvuti teab.
Nii öeldes, väiketähed miinus kapitali, see on imelik olla
lahutatakse üks char teise, kuid Millised on sümbolid all kapuuts?
Nad on lihtsalt numbrid.
Mida iganes need numbrid on, lase arvuti mäleta
mitte mulle inimene.
>> Nii väiketähed miinus kapitali on annan mina erinevus.
See juhtub olema, 32, ja et oleks puhul väiketähti b ja kapitali B
ja nii edasi.
See püsib muutumatuna, õnneks.
Nii et ma olen põhiliselt öeldes võtma väiketäht, lahutada maha, et
standard erinevus, ning et tõhusalt muutuste s sulg i alates
väiketähed, muidugi, suur-, ilma minu tõesti võttes mõelda
kohta või mäletad, millised olid need numbreid me rääkisime, kui kaheksa
vabatahtlikud tulid lavale?
Nüüd vahepeal on muud, kui see ei ole väiketäht määratud
realt 24, lihtsalt printida.
Ma tahan ainult puudutada märgid, mis olid
tegelikult algselt väiketähed.
>> Vaatame seda.
Tee ära.
Koostanud, OK.
. / Lõikama.
Ja las ma kirjuta H-E-L-L-O väiketähtedega, Enter.
Ja teate, mis on ümber arvesse suurtähtedega.
Las ma teen seda jälle eri sõna.
Kuidas D-A-V-I-D esimese D kapitaliseeritud nimi tavaliselt on?
Enter.
Teade see on ikka õige.
See lihtsalt väljastada et esimene D muutmata kaudu, mis muidu ehitada.
>> Nii et pidage meeles, siis paar asja siin.
Üks, kui sa kunagi tahad, et kontrollida kaks tingimustel korraga, saad ja neid
koos, kui me ennustada.
Võite võrrelda tähemärki sel viisil ja tõhusalt ravida märgid
numbrid, aga ausalt, see on nii kuradi segasena ma kunagi meeles
kuidas tulla see nullist ilma põhjendusi läbi see täiesti
natuke aega.
>> Kas poleks olnud tore, kui keegi seal kirjutas funktsioon nimega on
alandada, mis võiks vastata mulle tõeline või vale, see märk on väiketähed?
Noh õnneks kes kirjutas ctype.h just tegigi.
Lubage mul minna siia ja lisage ctype jaoks c liigid ja nüüd ma lähen alla ja
Kirjutan selle rea järgmiselt.
>> Nii et kui seda nimetatakse on väiksem, ma väita, s sulg i, siis ma lähen kustutada
need kaks rida kokku.
Nüüd keegi, ma loodan, kirjutas funktsioon nimega on väiksem, ja see
Tuleb välja, et nad tegid ja nad kuulutatud see sees ctype.h.
Ja nüüd ma lähen lahkuda line 27 üksi, ma lähen lahkuda line 31
üksi, kuid teate, kui palju ma olen karmistada oma kood.
See on nüüd puhtam.
See on vähem raske vaadata läbi sest nüüd funktsioon on lisaks
nii imeliselt nimetas seda lihtsalt teeb mida ta ütleb.
>> Nüüd ma lähen salvestada.
Ma lähen välja suumida.
Ja just nagu Scratch te oleksite Tõeväärtused Kahendmuutujad tõsi või
vale, see on täpselt see, mida on alandab tõhusalt tulu.
Las ma kompileerida.
Lubage mul uuesti jooksma.
Ja nüüd proovime uuesti, H-E-L-L-O, Enter.
See on päris hea.
Ja proovige uuesti, veendumaks, et ma ei kruvi midagi välja.
See on kapitaliseeritud samuti.
>> Aga see ei ole piisavalt hea, sest Teine asi, mida ma kunagi
mäletan, kui ma töötan läbi see tõesti ettevaatlikult, ütleme, paber on
see pagana joon.
Kas poleks tore, kui oli funktsiooni nimetatakse ülemise?
Noh selgub seal on ctype.h samuti.
Ma lähen edasi minna ja kirjutada -
lubage mul tuua selle joone taga.
Selle asemel siin, lase mul minna ja öelda, asenda% c
tulemusena kutsudes seda funktsiooni ülemine on i-nda iseloomu s.
Ja nüüd teate, et see muutub veidi tasakaalustada.
Mul on jälgida, kui palju Sulgudes Olen avatud ja suletud.
>> Nüüd on see veelgi puhtamaks.
Nüüd on see programm hakkab parem ja paremini kavandatud väidetavalt, sest see on
palju, palju rohkem loetav kuid see ei lase nii.
Tee ära.
. / Lõikama.
H-E-L-L-O. Olgem kasutada seda uuesti, D-A-V-I-D. OK, nii et me oleme ikka
päris hea kuju.
>> Aga nüüd, et ülemine.
Pakun, et seal on veel üks täiustamise saaksime et oleks
tore, et võiks tõesti pingutada kuni see kood ja tegelikult annab meile viis
Viiest projekteerimiseks, näiteks.
Mida oleks tore vabaneda?
Noh, vaata kui kuradi kaua see plokk kood on lihtsalt teha midagi lihtsat.
>> Nüüd kui kõrvale, nagu te võib-olla näha super osa möödunud
nädalavahetus, siis ei ole rangelt vaja looksulg kui sa lihtsalt üks
koodirida, kuigi me pakkusime hoida neid nii, et ta teeb palju
veel selge, nagu Scratch U-kujuline plokid, mis seal sees on filiaali.
Aga kas ei oleks tore, kui ülemise, kui andnud oma panuse, pöördus see
suureks kui see ei ole, ja see, mida oleks imeline, vastupidisel juhul, kui
see on juba suur-?
Lihtsalt lastakse läbi ja jäta ta rahule.
>> Nii et äkki ta ei tee seda.
Ma võiks proovida ja lihtsalt loodan, et see, kuid lubage mul
tutvustada veel üks asi.
Selle asemel, see sisseehitatud terminal aken siia, meelde tuletada, et
Selle ruudu must ikoon annab teile suurem terminal akna, et ma saan täis
ekraani, kui ma tahan?
Nii selgub, et nad omamoodi kummaliselt nime, kuid seal on neid asju nimetatakse
man, manuaal lehti mees lühikeseks, ja ma saan kasutada neid, mida
kirjutades mees -
Mida ma tahan tüüpi?
Man ülemine.
>> Ja nüüd teate, kui on olemas funktsiooni sees arvuti, sisse
Sel juhul on seade, mis on lihtsalt operatsioonisüsteemi Linux, see läheb
mulle veidi segasena komplekt väljund, kuid leiad aja, et
alati on vormindatud päris palju sama nii hakkate harjuda.
Teade ülaosas ülemise ja ilmselt on sama dokumentatsioon
jaoks alandada.
Kes kirjutas ta lõikamise mõned nurgad ja panna see kõik ühel lehel.
Need asjad "eesmärk elu on teisendada
kirjas Suur-ja väiketähti.
>> Pange tähele, et alla Synopsis, man õpetab mulle, mis fail on mul
lisada, et kasutada seda asja.
See annab mulle allkirju need funktsioonid, mõlemad on isegi
kuigi me praegu ainult hooli üks.
Siin on nüüd kirjeldus.
Ülemise teisendab kirja c suureks kui võimalik.
>> Ikka ei ole nii õpetlik, kuid lubage mul Nüüd vaadake tagasi raha, asi
mis on kätega tagasi.
Seega väärtus tagastatakse on see, et ümber tähe või c, kui
muutmine ei ole võimalik.
Mis on c?
>> Algne iseloom.
>> Originaal iseloomu ja me teame, et jälle läheb kuni
ülevaate, ja kes iganes selle kirjutas funktsioon lihtsalt otsustas, et sisestada
et ülemise ja alumise on lihtsalt omavoliliselt nimetama hakatakse c.
Nad oleksid võinud seda nimetas kõige midagi nad tahavad, kuid nad hoidsid seda
lihtne kui c.
Nii et ma olen konsulteerinud mees lehele.
See lause rahustab mind, et kui see ei ole väike täht, see on
lähed anna mulle tagasi c, mis on täiuslik, mis tähendab, et ma saan lahti
minu teine ​​tingimus.
>> Nii et lubage mul minna tagasi gedit ja Nüüd lubage mul seda teha.
Ma kopeerida minu printf avaldus.
Ma lähen edasi minna ja õige sees loop print läbi, ja saada
lahti nüüd kogu see kui ehitada.
Kas ei ole halb mõte, ja see oli väga palju õige ja kooskõlas
kõik oleme kuulutanud, kuid lihtsalt ei ole vaja.
Niipea, kui sa mõistad, mõned raamatukogu funktsioon on olemas, et keegi
kirjutas, või äkki sa kirjutasid mujal fail, saab seda kasutada ja tõesti
alustada karmistada kood.
>> Ja kui ma ütlen asju nagu hea stiil, Asjaolu, et see isik nimetatakse
funktsiooni, et ülemine või varem on madalam on imeliselt kasulik, sest
nad väga kirjeldav.
Sa ei taha, et helistada oma ülesandeid x ja y ja z, mis on
palju, palju vähem tähendust.
Kõik küsimused selle seeria parandusi?
>> Seega piisab, kui öelda üks takeaways on isegi oma probleem
set - äkki lahendamist, vaid kindlasti P seatud kaks ja edasi, isegi
kui nad on õige ei pruugi tähenda, et nad on täiuslik lihtsalt
veel või hästi disainitud.
See on teise telje hakata mõtlema.
Nii et see oli string sees oma arvuti mällu, kuid kui teil on
terve hunnik sümboleid, näiteks H-E-L-L-O sees RAM, ja arvan,
et sinu programm helistada saada string mitu korda nii, et sa
kutsuvad saada string kord, siis helistada saan stringi.
Noh, mis läheb juhtub aja jooksul?
>> Teisisõnu, kui teil on joon kood, ehkki kontekstist välja, nagu
string s saab -
Teeme seda.
String nimi võrdub saada string.
Olgu, oletame, et koodirida on mõeldud küsida kasutajalt tema nime.
See järgmise koodirida mõeldakse küsida kasutaja jaoks tema kooli ja
see järgmisele reale, ja nii edasi.
Oletame, et me küsime endiselt kasutaja teise ja
teine ​​ja teine ​​string.
Nad ei kavatse jääda mälu samal ajal.
Üks ei kavatse Tellida muud.
Kool ei kirjuta muud.
Aga kus nad kõik sattuda mälu?
>> Noh, kui me hakkame juhtida ekraanil mida saame kasutada seda asja
siin nagu tahvlile, kui see must ristkülik esindab minu arvuti
mälu, ma lähen suvaliselt alustada jagades selle üles võetud väike ruutu,
millest igaüks esindab üks bait mälu.
Ausalt, kui teil on GB RAM Nendel päevadel, teil on miljard baiti
mälu arvutisse, nii et miljardi need ruudud.
Seega piisab, kui öelda, et see tegelikult ei ole skaalal.
>> Aga me võiksime hoida joonistus kõik need selgelt ei ole mõõtkavas ruudud ja see
kollektiivselt esindab mu arvuti mällu.
Nüüd me lihtsalt teha dot, dot, dot.
Nii teisisõnu, kui ma nüüd kiire kasutaja get string mulle
string, mis juhtub?
Kui kasutaja liigid "tere", mis lõpeb üles H-E-L-L-O. Aga oletame
kasutaja siis liigid -
tegelikult, ma ei oleks pidanud tere kuna me palume
neid oma nime all.
Seega lähme tagasi, kui ma ei tee seda.
>> Nii et kui ma tüüpi D-A-V-I-D minu nimi, aga meelde tuletada, et teine ​​rida
kood oli saada stringi saada oma koolis.
Kus on see sõna, mida kasutaja liigid lähe edasi?
Noh, võib-olla see läheb minema H-A-R-V-A-R-D. Nii et kuigi ma olen
ära, kui kaks rida, see on lihtsalt terve hunnik baite oma
arvuti RAM.
Seal on probleem nüüd, sest nüüd, kui ma olen kasutades RAM selles väga mõistlik
aga omamoodi naiivne tee, mida saate ei ilmselt vahet?
Kui üks algab ja kus üks otsas, eks?
Nad on omamoodi hägustumas kokku.
>> Nii selgub arvuti ei tee seda.
Las ma tegelikult liikuda ajas tagasi mõned märgid, ja selle asemel, et Harvard
läheb kohe pärast kasutaja nimi, kasutaja tegelikult muutub, taga
stseene, erimärk lisatud
arvuti temale.
/ 0, muidu tuntud nul iseloomu tüütult nimega N-U-L, ei
N-U-L-L, kuid sa kirjutad seda / 0.
See on lihtsalt kõik null bitti on SM vahel esimene sõna, et kasutaja
kirjutatud ja teine.
>> Nii Harvard tegelikult nüüd jõuab kui see märgijada
ja veel üks / 0.
Nii teisisõnu, lastes need valvur väärtused, kaheksa külgnevas null
bitti, saab nüüd hakata eristama üks märk teisest.
Nii et kõik see aeg, mis on "tere" on tegelikult "Tere" / 0, ja
Vahepeal võib väga hästi olla üsna natuke rohkem RAM
arvuti sisemus.
>> Lubage mul teha üks asi nüüd.
Selgub, et kõik need väljakud oleme olnud joonistus, nad on, jah,
stringid, kuid üldisemalt need asjad on massiivid.
Massiiv on lihtsalt tüki mälu see on seljad et seljad,
ja sa tavaliselt kasutada massiivi teel Selle nurksulg märke.
Nii et me näeme neid üsna vähe aja jooksul, kuid lubage mul minna ja
avama, ütleme vanuses.
Ja teate, mis me saame teha koos neid samu trikke, veidi
natuke rohkem süntaks siin.
>> Nii rida 17 on see programm - tegelikult, las ma käivitada programmi esimene
nii et me saame näha, mida see asi teeb.
Las ma helistan teha vanuses koostada programmi.
. / Aegade.
Mitu inimest on ruumi?
Kõne see kolm.
Vanus esimese inimesena?
18, 19, ja 20.
Ja nüüd veidi naeruväärselt, ma lihtsalt on teinud programmi, mis vanuses need
kolm inimest.
>> Nii et seal on selgelt võimalus lõbutseda aritmeetika siin.
Õnneks matemaatika on õige.
18 läks 19, 19 läks 20 ja nii edasi.
Aga mis tegelikult mõeldud olema illustreerivad siin on, kuidas me hoidmine
Nende kolme inimese vanuses.
Lubage mul suumida, mida on siin toimub.
>> Nii et esimene, need paar esimest rida peaks saada üsna tuttav.
Ma lihtsalt sunnib kasutaja inimeste arvu ruumis.
Siis ma kasutan saada int ja teha samal ajal, et seda uuesti ja uuesti ja uuesti.
Me oleme näinud, et muster enne, kuid line 27 on uus ja tegelikult üsna
kasulik ning muutub enam kasulik.
Pange tähele, et see, mis on erinev vastavalt 27 on see, et ma tundub, et kuulutatakse
int nimega vanuses, kuid oota.
See ei ole lihtsalt int aegade.
Seal on need nurksulgudesse mille sees on n.
>> Nii sulg n selles kontekstis ei sees printf avaldus siin aga
Selles ainus liin 27, see liin on ütles mulle n ints, millest igaüks
on tüüpi int.
Nii et see on ämber, nii et rääkida, on, sel juhul kolm täisarvu tagasi
seljad et ma tõhusalt on kolm muutujat.
Alternatiivina oleks selge, oleks see.
>> Kui ma tahtsin esimese õpilase vanusest, ma võin seda teha.
Kui ma tahtsin teise õpilase vanus võin seda teha.
Kui ma tahtsin kolmanda õpilase vanusest, ma võin seda teha.
Ja jumal hoidku peame igaühe vanus selles ruumis -
Ma mõtlen, et see on paganama palju koopia, pasta ja jälle ja jälle.
Ja pluss kui ma kompileerida seda programmi, kui teine ​​üliõpilane kõnnib üle viia
selle ukse, nüüd minu number muutujaid on vale.
>> Mis on ilus umbes massiiv on niipea kui hakkate tunne ennast
kopeerimine ja kleepimine, koefitsiendid on see mitte parim lahendus.
Massiiv on dünaamiline potentsiaalselt.
Ma ei tea ette, kui palju inimesi hakkavad olema ruumis,
aga ma tean, mul on vaja n neist ja ma nuputada, n, kui aeg tuleb.
See koodirida tähendab nüüd, anna mulle tüki mälu, mis näeb välja selline
kus kastide arv ekraanil sõltub täielikult n, et
kasutaja sisestatud sisse
>> Nüüd ülejäänud seda programmi tegelikult üsna sarnane sellega, mida me
tegin tegelastega.
Teade mul silmus alates rida 30.
Niisiis peale saan massiiv, I itereerima alates y võrdub null kuni n.
Mul on ainult see õpetlik printf sõnum lihtsalt ütlen, anna mulle vanus
Isiku #% i, nii et number üks, number kaks, number kolm.
Ja miks ma seda teen?
Ausalt, inimesed eelistavad lugeda ühest püsti et arvuti teadlased,
nulli siia.
arvuti teadlased ei kavatse kasutada sellist programmi, nii et me oleme
läheb lihtsalt hakka lugema üks nagu normaalsed inimesed.
>> Ja nüüd vastavalt 33, märkate veidi erinev tükk süntaks.
I-nda vanuse mis tüüpi muutuja massiiv on hakka int.
Ja nüüd lõpuks, see on lihtsalt aritmeetiline siin.
Ma otsustasin eraldi loop nõuda mõnda aega möödub, ja nüüd on see
eraldi loop, need read täita.
>> Aasta pärast, inimene i saab i aastat vana, kuid teade ei ole
muutujale i.
See on nüüd% i jaoks int.
Ja teate esimest kohatäide, I pistik i pluss 1, seega me loota, nagu
normaalne inimene.
Ja siis, et raha nende vanusest i-aastane, mul kuluda sulg
i - ja miks ma teen pluss üks siin?
Nad lihtsalt vanuses.
See on minu loll programmide valiku.
Nad lihtsalt aastastel.
Ma ei kirjuta iga number, mis Ma tegelikult tahan seal.
>> Mis on tegelikult kõik tekst siin?
Noh, las ma tegelikult kerida tagasi siin ja maalida pilti
mis ees ootab.
Mida me teeme, meie kõrval Ülesanded Kaks on dabbling
maailma krüptograafia.
Nii et see on märgijada, nii jada mitu tähte, ja mida
see ütleb?
See ei ole online-versioon kohta slaidid.
>> Nii et ma väita, et see võrdub see, loll reklaam paljude aastate
tagasi, et võiks tegelikult meenutada üks selle päritolu.
Nii et see on näide krüpteerimist või krüptograafia.
Selgub, et kui sa tahad tegelikult saata teavet või osa
teavet keegi kindlalt, nagu selline teade, saate
rüselus tähed.
Aga tavaliselt, sõnad ei Segipaisatud juhuslikult.
Nad permuteeritakse mingil moel muutunud kuidagi nii, et - oih.
See on lõbus spoiler järgmine kord.
>> Nii saab kaardistada, mis on ilmselt O B. Pange tähele, et read üles
kapitalisatsioon tark.
Ilmselt r muutub e.
Ilmselt F-H-E-R saab S-U-R-E. Nii Selgub seal kaardistamine ja
Sel juhul on päris loll kaardistamine, kas keegi on aru saanud?
See on midagi, mida nimetatakse Rot 13, Pööra 13.
See on kõige lollim krüpteerimist mehhanisme, sest see sõna otseses mõttes lihtsalt
lisab 13 iga üks tähti, loll selles mõttes, et kui sa lihtsalt
on natuke vaba aega oma käed ja pliiats, või sa lihtsalt arvan, et see
läbi oma peas, võid proovida kõik võimalikud lisandused - üks, kaks,
kolm, dot, dot, dot, 25 lihtsalt pööramiseks kogu tähestikku ja
lõpuks, siis saad aru, mida see sõnum on.
Nii et kui sa tegid midagi sellist algkool kulgeb sõnumeid oma
Parim sõber, kui oma algkool õpetaja lihtsalt läbi lugeda
sõnum ja loomalik sunnitud lahus võite olla saanud
Vastus, et.
>> Nüüd muidugi, reaalses maailmas, krüptograafia on keerukamad.
See on väljavõte teksti arvutisüsteem, mis on kasutajanimed ja
paroole, nagu peaaegu kõik meie teha ja see on see, mida oma parooli võib
nägema kui salvestatud raske sõita kuid krüpteeritud kujul.
See ei ole lihtsalt rotatsiooni tähed On B ja B on C. See
palju keerukam, kuid ta kasutab mis üldiselt tuntud kui salajane võti
krüptograafia.
See pilt ütleb järgmist lugu mõne ikoonid.
>> Vasakul, meil on see, mida me kutsume lihttekstina.
Tänapäeva maailmas on krüptograafia, tavaline tekst on lihtsalt algse sõnumi
kirjutatud inglise või prantsuse või keel üldse.
Kui soovite krüptida ta, siis me edasi see piltlikult läbi tabalukk, nii
mõned liiki algoritmi mõne funktsiooni või programmi, et keegi kirjutas
et ajaja tähed loodetavasti rohkem complicatedly kui lihtsalt lisades 13
igaühele neist.
>> Mida sa välja, et protsessi keskel on kutsutud cyphertext.
Nii omamoodi seksikas sõna.
See tähendab lihtsalt, et see on krüpteeritud versioon lihttekstina.
Ja ainult siis, kui sul on see sama salajane, 13 või miinus 13, on teil võimalik
dekrüpteerimiseks sõnum niimoodi.
>> Nii Ülesanded Kaks hulgas asjad saate teha, kui ka Hacker
Edition, siis on vaja kirjutada koodi crack nende paroolide figuring
mida nad olid ja kuidas nad olid krüpteeritud, kuigi me teeme teile natuke
juhendamise teel.
In Standard Edition, tutvustame paar ciphers krüpteerimine
mehhanismid, üks nimega Caesar, üks nimetatakse Vigenere, mis on veel
vahelduva ciphers kus saab midagi, B muutub midagi, kuid
sa pead seda tegema programmiliselt sest seal on tõepoolest saladus
võti kaasatud, mis on tavaliselt number või märksõna, mis ainult
saatja ja saaja need kirjadest aru.
>> Nüüd, see on tegelikult inkarnatsiooni reaalses maailmas.
See on näiteks vähe harva Annie salajane decoder ring, ja sa
saab tegelikult rakendada neid vahelduva ciphers -
Muutub midagi, B muutub midagi - koos paari rattaid,
üks väljaspool, üks sees nii et kui te pöörake ratast või
ring, saab tegelikult rivistama tähed erinevate tähtedega,
saada salakood.
Ja nii nagu pinge täna, mida ma mõtlesin, et ma teha, on natuke
Sarnasusi et kui lülitate TV 24. detsembril, saab vaadata
film ad nauseum eest 24 tundi järjest.
Aga täna, ma seda avatumaks siin ja anna meile ainult kaks minutit
pedagoogiliselt asjakohane Christmas Story koos väikese mehe nimega Ralphie.
>> [VIDEO PLAYBACK]
>> -Olgu see kõigile teada ja mitmesugused et Ralph Parker nimetatakse
liige Little Orphan Annie saladus ringi ning tal on õigus kõigile
kiitusega ja hüvitised esinevad lisa.
>> Allkirjastatud, Little Orphan Annie.
Allkirjastas Pierre Andre tindiga.
Kiitusega ja kasu juba aastaselt üheksa.
>> [Karjumine raadio]
>> Tule, lähme edasi.
Ma ei pea kõik, mis jazz umbes salakaubavedajate ja piraatidest.
>> Kuula homme õhtul sõlmides seiklus must
Piraatlaeva.
Nüüd on aeg Annie Secret Sõnum teile kohal
saladus ringi.
Pea meeles, et lapsed.
Ainult liikmed Annie Secret Circle saab dekodeerida Annie salajane sõnum.
Pea meeles, et Annie on sõltuvalt teile.
Määra oma sõrmed B2.
Siin on sõnum.
12, 11, 2 -
>> -Ma olen oma esimese salajane koosolek.
>> -25, 14, 11, 18, 16 -
>> Pierre oli suurepärane hääl täna.
Ma võiksin öelda, et tänase sõnum oli tõesti oluline.
>> -3, 25.
See on sõnum Annie ise.
Pea meeles, et ei räägi kellelegi.
>> -90 Sekundit hiljem, ma olen ainult tuba maja, kus poiss üheksa
võiks istuda privaatsust ja dekodeerida.
Aha, B. Ma läksin edasi.
E. esimene sõna on "olema." S. See oli tulemas lihtsam nüüd.
U. 25.
See on R.
>> Tule, Ralphie.
Ma pean minema.
>> -Ma kohe alla, ema.
Gee viuhti.
>> -T. O. Kindlasti.
Kindlasti mida?
Mis oli Little harva Annie sellega öelda tahad?
Kindlasti mida?
>> -Ralphie, Randy minema.
Kas te välja tulema?
>> -Olgu, ema.
Ma tulen kohe välja.
>> -Ma olin jõudmas nüüd.
Pinge oli kohutav.
Mis see oli?
Saatus planeet võib vaekausil.
>> -Ralphie, Randy pean minema.
>> -Ma kohe välja Tule taevas appi.
>> -Peaaegu valmis.
Minu sõrmed lendas.
Minu arvates oli teras lõksu.
Iga pooride vibreerima.
See oli peaaegu selge.
Jah, jah, jah, jah, jah.
>> -Kindlasti joo oma Ovaltine.
Ovaltine?
Trullakas kaubandus?
Son of a bitch.
>> [END VIDEO PLAYBACK]
>> SPEAKER 1: See on CS50, ja et on probleem Set Two.
Näeme järgmisel nädalal.
>> SPEAKER 2: Järgmisel CS50, see juhtub.
>> SPEAKER 1: Nii üks teema meil ei Vaatasin seni on
et funktsiooni osuti.
Nüüd funktsiooni osuti on lihtsalt aadress avaliku
funktsioon, kuid palju nagu -
poeg -