[Powered by Google Translate] David J. Malan: Gerai.
Tai CS50, ir tai yra savaitę du pabaiga.
Jei tikitės, kad būtų alkanas maždaug šiuo metu rytoj, žinau, kad mes ketiname
sušaukti kaip mažoje grupelėje rytoj, ketvirtadienį, 01:15.
Yra toks URL čia, jei norite RSVP.
Erdvė yra ribota, todėl prašome atleisti, jei forma yra užpildyta iki to laiko jūs
užpildyti.
Eilinė URL nors, kad gali būti įdomūs.
>> Taigi, tik apie mėnesį laiko, žinoma, bus prieinama
plačiau per EDX, internete, per kurią žmonės bus
galėtų laikytis kartu, gana aktyviai dalyvauti kurso, iš tikrųjų.
Jie bus naudojant CS50 Appliance ir CS50 aptarti ir dauguma
įvairios programinės įrangos įrankius, mes jau naudojant šį semestrą.
Ir viena iš iniciatyvų, mes norėtume priimti kaip eksperimentą šiemet
yra pamatyti, tik kaip daug turinio, mes galime išversti į kitas kalbėjo ir
rašytines kalbas.
Taigi, jei galite turėti susidomėjimą dalyvauti šiame projekte, pagal kurį
mes suteiksime anglišką išrašai ir subtitrus kursas
paskaitos ir šortai, ir seminarus ir specialieji profiliai ir panašūs -
jei kalbėti laisvai arba laisvai rašyti nors kitą kalbą, mes
patinka užsiimti jums šio projekto, kuriuo iš vienos arba daugiau
video, versti juos į kalbą, žinote, gana gerai.
Norėdami suteikti jums sąsajos jausmą, yra tai interneto vartotojo sąsaja
kad mes naudoti, kad bus sukurti iš esmės kaip tai UI.
Tai buvo man mokyti kai Helovinas prieš.
Ir ten dešinėje pusėje, juoda, šalia šių laiko,
pamatysite įvairių dalykų, kad atėjo iš mano burnos, kad dieną.
Ir tada po juo, jums būtų galima išversti į kurią nors kitą kalbą.
Būtent tai, ko kartografavimo yra tarp jų, šiuo atveju, anglų
ir, pavyzdžiui, ispanų.
Taigi, tai tikrai labai patogus įrankis.
Galite atsukti atgal ir pirmyn labai lengvai naudodami sparčiuosius klaviatūros klavišus.
Taigi, jei norėtumėte dalyvauti šiame eksperimente ir turėti savo žodžius
potencialiai tūkstančiai žmonių ten matyti ir skaityti, prašome jaučiasi
Dalyvavimas nemokamas.
>> Dabar vieną žodį apie nuo pirmadienio kačiukas, kad ne mes išsiuntėme pernelyg
baisu pranešimą.
Suprantate, kad biuro darbo valandomis pasiūlyti ir fasoniniai rodo
dizainas žinoma yra labai daug studentų bendradarbiauja ir
kalbėti kartu dirbti per probleminių rinkinių ir problemas.
Ir tikrai linija tik ateina, dar kartą, jūs galų gale darbo
turėtų pateikti, turėtų būti jūsų pačių.
Ir todėl, gana garbingai - darbo valandų, tai visiškai normalu -
tai visiškai galima tikėtis, net kalbasi su kai
draugą šalia savęs.
Jei jis arba ji kovoja su tam tikru klausimu, ir jūs, pavyzdžiui, oh, na tegul
man duoti jums kai kurių kodo eilutę, kad aš parašiau žvilgsnis.
Tai gerai.
Tai atsitiks.
Ir kad yra labai palanki, manau, su mokymosi procesą.
Jei linija, vėlgi, gauna kirto, kai galva yra tarsi pakreipus per
čia pernelyg daug sekundžių ar minučių, kad tikrai ką tik
atblokavimo galimybė savo draugui.
Ir, žinoma, kai viskas susitvarko keičiamasi elektroniniu paštu ir Dropbox
pavyzdžiui, ten taip pat yra linija.
Taigi visais būdais, jaustis patogiai ir jaučiasi skatinami bendrauti su draugais
ir klasiokų apie psets ir daugiau.
Ir tiesiog suprasti, kad tai, ką jūs galiausiai pateikti tikrai turėtų būti
produktas savo vietas, o ne kažkas kitas.
>> Taigi, ta pačia dvasia Džiugu būtybių, galbūt
žinau, kad šis vyrukas čia.
Taigi tai yra horrifically sūrio filmą iš prieš keletą metų.
Kiekvienas čia matyti Spaceballs?
Gerai.
Taigi nemažai čia.
Taigi tai yra mūsų nuostabiai akademinis būdas įvedant šiandien galiausiai
kriptografijos sąvoka.
Ir taip vienas iš domenų konkrečių problemų, susijusių su 2 pset, kuri bus
pavėluotai rytoj vakare, yra pasinerti į Kriptografija pasaulyje, kuris
yra šifravimo arba kodavimo informaciją menas.
Ir tai galiausiai susijęs su saugumo pasaulyje.
>> Dabar saugumas labiausiai mums yra gana žemiškas mechanizmų.
Visi turime vardus ir slaptažodžius.
Ir visi mes turime labai blogų vardus ir slaptažodžius, greičiausiai.
Jei jūsų slaptažodis yra keletą svetainių, kad tikriausiai ne
pati geriausia idėja, nes mes aptarsime į semestrą pabaigos.
Jei jūsų slaptažodis yra parašyta lipni dėmesį - ne juokai - savo
monitorius, tai irgi nebūtinai yra geriausias dizainas, bet gana dažna
reiškinys.
Ir jei nesate naudojant kriptografiją užšifruoti savo slaptažodžius, jie
ypač pažeidžiami.
Taigi, jei jūs manote, kad esate super protingas turėti paslėptą žodį
dokumentais kažkur kietajame diske, kad turi visus savo slaptažodžius, bet
aplanke, kad niekas ketina ieškoti, tai irgi nėra labai
saugus mechanizmas.
Ir kas pset 2 pristatys tai kriptografija menas
kodavimo informaciją, kad yra dalykų, pavyzdžiui, slaptažodžius
saugesnis.
Taigi, kaip motyvuoti šį labai realaus pasaulio problemas, susijusias su labai ne realaus pasaulio
scenarijus, leiskite man pristatyti jums vieną iš mūsų mėgstamų klipus čia iš to
filmas, Spaceballs.
>> [VIDEO PLAYBACK]
-Šalmas, piktoji dvasia, kas vyksta?
Ką tu darai su mano dukra?
Leiskite man pristatyti jauną talentingą plastikos chirurgas Dr Philip
Schlotkin, didžiausias nosies darbą žmogus visą
Visata ir Beverly Hills.
Jūsų Didenybe.
-Nosis darbas?
Nesuprantu.
Ji jau turėjo nosies darbą.
Ji buvo saldus 16 metu.
-Ne, ne tai, ką jūs manote.
Tai daug, daug blogiau.
Jei jūs neturite duok man kombinaciją oro skydas, Dr Schlotkin
Duok savo dukterį savo seną nosį.
-Ne!
Kur tu jį gavai?
-Viskas gerai.
Pasakysiu.
-Ne, tėtis, Nr.
Neturi.
-Tu teisus, my dear.
Aš praleisti savo naują nosį.
Bet aš ne pasakykite jiems kombinaciją, nesvarbu koks.
-Labai gerai.
Dr Schlotkin, padaryti savo blogiausias.
Mano malonumas.
-Ne!
Palauk, palauk.
Pasakysiu.
Aš žinojau, ji turėtų dirbti.
Viskas gerai, jį man.
Derinys yra vienas.
-One.
Dviejų.
Trijų
-Keturi.
Penkių
Penki.
Taigi derinys yra vienas, du, trys, keturi, penki.
Štai stupidest derinys, aš kada nors girdėjau mano gyvenime.
Štai koks dalykas idiotas galėtų turėti savo bagažo.
-Ačiū, Jūsų Didenybe.
-Ką tu padarei?
Pasuku nuo sienos.
-Ne, tu negali.
Išjungiant visą filmą.
Turiu paspaudėte klaidingą mygtuką.
-Na, padėkite jį atgal.
Įdėti filmą atgal.
-Taip, sere.
Taip, pone.
-Eime, Erna.
Ateik, Gretchen.
Žinoma, jūs žinote, aš vis dar turi sąskaitą jums už tai.
-Na, ar tai veikia?
Kur yra vartai?
Jis dirbo, pone.
Mes turime derinys.
-Puiku.
Dabar mes galime imtis gryną orą iš planetos Druidia kiekvieną paskutinįjį iškvėpimą.
Kas yra derinys?
-Vienas, du, trys, keturi, penki.
-Vienas, du, trys, keturi, penki?
-Taip.
-Tai nuostabi.
Aš turiu tą pačią kombinaciją ant mano bagažo.
Parengti SPACEBALL 1 neatidėliotinas išvykimas.
-Taip, sere.
Ir pakeisti kombinaciją mano bagažą.
-OW!
[END VIDEO PLAYBACK]
>> David J. Malan: nuostabus filmas jums reikia dabar visi matome.
Taigi, čia yra kontekstas,, kad nesaugių duomenų ateina galimybę
užšifruoti ją ir peštynės.
Ir todėl tai, pavyzdžiui, yra šifruotą pranešimo pavyzdys.
Tai iš tiesų sako kažką anglų kalba.
Bet tai akivaizdžiai nėra visiškai akivaizdus.
Ir mes ateiti Full Circle šiandien erzinti išskyrus tai, ką šis slaptas
žinutę čia.
Bet realiame pasaulyje kompiuterių dalykų nereikia net pažvelgti, kaip jie gali
Anglų frazės.
Pavyzdžiui, tai, ką galite rasti ant standartinės Linux ar Mac ar
Unix kompiuteryje failą, kuris buvo kažkada vadinamas slaptažodžių failą.
Šiandien, tai buvo perkelti į kitas vietas.
Bet jei pažvelgti sistemos tinkamoje vietoje, pamatysite ne tik savo
vardas arba kitų žmonių apie sistemos, bet jūs pamatysite
saugiame versija slaptažodžio.
Iš tiesų, žodis kripta yra rodo, kad medžiaga yra užšifruotas.
Ir šis iš pažiūros atsitiktinių raidžių ir simbolių ir skaičių serija ir
tt gali būti iššifruojama tik paprastai žinant kažkokią paslaptį
slaptas žodis, paslaptis.
Ir iš tiesų, kriptografija galiausiai suvesta menas pasitikėti kai
rūšiuoti ir žinant, ką nors, kad kažkas nėra.
Tai mes ištirti šiek tiek išsamiau šiandien ir į pset ateiti.
>> Ir dabar atitikimo / neatitikimo žodis.
Taigi, visų pirma, kaip kai kurie iš jūsų jau nėrė į pset 1, prietaisas ir
labai naujas pasaulis save, suprato, kad nepasitenkinimas ir
sumišimas ir tiesiog techninis sunkumų, kurių galima tikėtis.
Ypač su pirmasis pset, kur yra tik tiek daug naujo, tik gauti
susipažinę su ls ir CD ir visų šių paslaptingų komandas naujoje aplinkoje.
Ir tai atskirtas nuo faktinės medžiagos ir programavimo pati.
Taigi suvokti, taip pat, kad yra žinoma, biuro darbo valandomis, kurios egzistuoja kaip
atraminė struktūra.
Sekcijos pradėti šį ateinantį sekmadienį.
Bet svarbiausia, jei esate jausmas tik, kad tai yra ne
pasaulis jums, suprasite, kad tai tikrai tik reikia laiko.
Ir jeigu ne tai už šią galimybę, prieš keletą metų man imtis klasės
atitikimo / neatitikimo, sąžiningai, aš niekada net nustatyti snukio klasėje.
Ir jūs galite pakeisti iki, tarkim, penktas nuo pirmadienio kurso.
Taigi, jei esate ant krašto, suprantame, kad, o ne galva į kai kurių kitų
vandenys apskritai, be jokios abejonės, kad tiesiog pakeisti verčių atitikimo / neatitikimo.
Vėlgi, tikrai ši kultūra čia Harvardo atsižvelgiant dalykų
atitikimo / neatitikimo, nes visi tikrai nori pasiekti ar overachieve.
Bet atvirai, tai yra puikus būdas bando kažką iš,, kad galėtų ne
būti susipažinę su jumis.
Ir jūs galų gale padaryti daugeliu atvejų yra gana gerai, galbūt
daug savo nuostabą.
Ir daugiau konkrečiai, ką aš galvoju atitikimo / neatitikimo paprastai veikia,
ypač kiek tai galite patyrė pset 0, jei jūs įdėti
, 10 valandų, 15 valandų, 25 valandų į kai pset - ir jūs tiesiog beldžiasi
savo galvą į sieną,
ir tai vis super vėlai naktį,
, bet jūs atlikote pset kaip 90%, kaip,
jūs žinote, jūs tiesiog negali išsiaiškinti vieną dalyką -
atitikimo / neatitikimo tikrai mano kraštą nuo A klasės, kaip tai, kur galite rūšiuoti
laimingai pasakyti gerai, aš žinau, ji nėra tobula.
Bet aš dirbau savo ass off apie tai.
Aš esu labai laimingas su kur jis galų gale.
Ir kad bus patenkinti lūkesčius pravažiuojančio / nepavyks.
Taigi, keep that in mind.
>> Gerai.
Taigi tiems, kurie stengėsi naudoti Harvardo universiteto Wi-Fi žinoti
kad yra CS50 SSID, "Wi-Fi" ryšys plūduriuojančius aplink, kad jūs
gali tekti geriau sekasi.
Tai šiek tiek ironiška, kad šis slaptažodis - jei jūs norėtumėte pabandyti
prijungti prie geresnių greičiu ir leiskite mums žinoti, jei ji ne geriau -
yra vienas, du, trys, keturi, penki, visą kelią iki 8, nes 8 yra
saugesnis nei penki.
Taigi, jei jums reikia, prisijungti prie "Wi-Fi slaptažodį CS50 belaidžiu būdu čia.
Vienas, du, trys, keturi, penki, šeši, septyni, aštuoni.
Ir paskelbkite CS50 Aptarti, jei jūs vis dar turite pertrūkiais ryšio problemas,
ir mes pranešime, įgaliojimus, žino šioje vietoje.
>> Gerai.
Taip greitai kibinimas, ypač tiems iš jūsų, kurie ventiliatoriaus berniukai ar mergaitės
viskas "Apple".
Ką aš iškasti prieš kelis metus atgal buvo šį failą čia, ilock.c, tik
rūšies padaryti betono ir sudėtingesnis, kai daugiau pagrindinių C
programas mes jau rašymo.
Taigi, aš atvėrė šį failą, ilock.c.
Tai paskaitų šiandien.
Kairėje pusėje, pamatysite ilgą sąrašą funkcijų.
Taigi kolegos, Kas parašė šią surašė daug funkcijų,
daugiau nei tik pagrindinis.
Jis naudojamas visa krūva bibliotekų čia.
Ir jei mes pradėti slinkti per, ką tai iš tikrųjų yra labai
pirma, manau, nulaužti originalus iPhone.
Kai tu nori originalaus iPhone Jailbreak, o tai reiškia untether
nuo AT & T ir iš tikrųjų įdiegti specialią programinę įrangą ir daryti dalykus,
kad "Apple" nenorėjo, kad žmonės darytų -
Na, kažkas paėmė laiko išsiaiškinti tiksliai, kaip jie galėtų pasinaudoti
programinės įrangos trūkumų, klaidų, klaidų, "Apple" programinės įrangos.
Ir tokiu būdu gimė ilock.c.
, Kad jei surinkti jį į kompiuterį ir įdiegti ją į "iPhone", kad
buvo prijungtas prie kompiuterio, tarkim, per USB kabelį, tai jums
administracinės arba iš šaknų ir privilegijos jūsų "iPhone" ir leiskite jums padaryti gana daug
ką tik norite.
>> Ir taip ten buvo šioje įdomioje katės ir pelės žaidimas tarp "Apple" ir
likusio pasaulio, ypač kai jie, kaip ir daugelis įmonių, pabandykite užrakinti
savo stuff žemyn taip, kad jūs galite tik su juo daryti ką jie ketina.
Tačiau dėka žmonių kaip ir jų supratimą apie žemo lygio
informacija ir, šiuo atveju, C programavimo ir gerai pažįstamų konstruktai aikštelė
kad mes pradėjome žaisti su, galite tikrai sverto
techninės įrangos kaip jums atrodo tinkama, ir nebūtinai tam tikrą juridinį asmenį.
Taigi, pavyzdžiui, aš neįsivaizduoju, ką visa tai veikia.
Bet GetVersion skamba gana paprasta.
Ir atrodo, kad tai yra funkcija, kad šis asmuo rašė.
Paimkite šiek tiek natūra sveikojo skaičiaus kaip argumentu, neturi grįžti nieko, bet
kilpa su už linijos čia ir jei sąlyga, jei sąlyga,
pertrauka, ir kažkaip susijęs su versijos numerius.
Jei mes slinkti žemyn -
nors daug šių raktažodžių bus nauja, ir ten
visai daug funkcijų, čia niekada nesame matę ir galbūt kada nors pamatyti per
semestro kursas -
dienos pabaigoje, tokios pačios taisyklės ir logika, kad mes buvo
žaisti su iki šiol.
Taigi tai yra pernelyg senas, kad nulaužti jūsų iPhone 3s arba 4s arba greičiau 5s, šių dienų,
bet žinau, kad visa tai labai kilęs iš šio pasaulio, kad mes
nėrė į.
>> Todėl galime imtis už šiek tiek daugiau paprastą pavyzdį išvaizdą.
Tai vienas, tik gauti pašildytas su kai kuriais sintaksę, o taip pat kai kurie kiti duomenys
tipo, kad mes kalbėjome apie, bet ne iš tikrųjų matyti C. Taigi, tai yra,
failą pavadinimu positive1.c.
Ir už viršuje komentarus, tai tiesiog reikalauja, kad vartotojas pateiktų
teigiamas skaičius.
Todėl do-while cikle, kuris yra gražus vartotojo interaktyvus pavyzdys
programos, kur jums reikia, pranešti vartotojui, kažką daryti.
Ir jei jie nebendradarbiauja, jūs klykauti į juos arba atmesti savo indėlį.
Byla punktas, aš einu daryti linijas 19 per 24 taip ilgai, kaip vartotojas turi
davė man teigiamą skaičių.
Dabar tai išsamiai čia on line 18 kodėl aš pareiškiu, n virš visa ši
kilpų konstruktas, o ne šalia eilutės 22, kur aš
iš tikrųjų rūpi gauti n?
Taip?
[Nesigirdi]
>> David J. Malan: Taip, todėl šis taikymo srities klausimas.
Ir profanas kadencijai, ką apimtis kreiptis?
Taip?
[Nesigirdi]
David J. Malan: Ar galite kalbėti šiek tiek garsiau?
GARSIAKALBIS 1: Kur galima pasiekti tam tikrą kintamąjį.
David J. Malan: Perfect.
Kur galite gauti tam tikrą kintamąjį.
Ir apskritai, nykščio taisykle iki šiol buvo, kad kai
kintamasis rodiklis apibrėžiamas naujausiais Garbanotasis petnešos, kad jūs mačiau.
Ir todėl šiuo atveju, jei aš padariau klaidą paskelbti n on line 22
kad linija veiktų.
Norėčiau gauti int, ir aš įdėti jį į tą kintamąjį n 22 eilutė.
Bet kuri linija kodo dabar neįsivaizduoju, ką aš kalbu apie?
Taigi, 25, ir paaiškėja, 24, taip pat, nes šiuo atveju, tai nepatenka
Garbanotasis petnešos.
Taigi, tiesiog šiek tiek nepatogumų, tačiau labai lengvai išsprendžiama tiesiog deklaruojant
kintamasis ne pačios funkcijos.
>> Dabar mes pamatysime vėliau šiandien, galite žengti dar vieną žingsnį.
Ir jūs galite net gauti šiek tiek tingus -
ir tai ne būti rekomenduojama, kad apskritai
bet jūs galite net gauti tingus ir įdėti kintamąjį visame pasaulyje, taip sakant, ne
funkcijos viduje, o ne viduje kilpa, bet patį failą, ne
visas funkcijas, jums parašiau, kaip aš čia on line 15.
Bet tai paprastai frowned.
Bet suprantame, kad tai kartais kitų problemų sprendimas, nes mes
galų gale pamatyti.
Taigi dabar, mes palikti jį, kaip šis.
Bet tegul pamatyti, jei mes galime perrašyti tik pradėti išreikšti save
šiek tiek kitaip.
>> Todėl ši programa, tiesiog turi būti aišku, yra positive1.
Leiskite man eiti į priekį ir savo terminalo lange positive1, įveskite.
Kaupia, gerai.
Aš ruošiuosi paleisti positive1, paspauskite Enter.
Reikalauju, kad galite man duoti teigiamą sveikąjį skaičių.
Pasakysiu -1.
Tai nepadėjo.
0, 99, kad atrodo į darbą.
Gal ne griežčiausių testas.
Bet bent jau gražus normalumas patikrinti, kad esame teisingame kelyje.
Taigi dabar leiskite man eiti į priekį ir atidaryti šio dviejų versiją.
Ir tai, kas jau skiriasi?
Ji įgyvendina tą patį.
Bet kas šokinėja kaip aiškiai skiriasi šiuo metu?
Taip, kad tai bool žaliai.
Gedit paryškinamas žalia šį raktinį žodį, žinomas kaip Bool,
kuri yra duomenų tipas.
Jis nėra ateis pastatytas visiems C versijų Turite įjungti
šioje bibliotekoje.
Mūsų atveju, aš įtraukti CS50 biblioteką, kad mes
turi prieigą prie Bool.
, Bet atitinka 18, mes, atrodo, čia vadinama Būlio vertė dėkinga.
, Kad galėčiau nieko.
Bet aš jį pavadino dėkinga tik rūšies perteikti tam tikrą semantinę prasmę.
Taigi, iš pradžių on line 18, aš, matyt, ne dėkinga, nes
Būlio vertė dėkingi yra inicializuoti false atitinka 18.
Ir tada ji atrodo, ką aš padariau čia eilutėse 21 iki 23, aš tiesiog
rūšies perrašyti savo logiką.
Taip ne funkciškai skiriasi.
Bet 22 eilutė, dabar, aš patikrinti, jei int vartotojas yra didesnis nei
0, tada aš tiesiog pakeisti dėkingi tiesa.
Ir kodėl man tai padaryti?
, Nes 25 eilutėje, matyt, aš ruošiuosi patikrinti sąlygą.
Tai padaryti kilpą, nes esu dėkingas, yra klaidinga.
>> Taigi siūlau tai, kaip alternatyvą 1 versija, nes tai bent
šiek tiek daugiau intuityvus, galbūt.
Tai šiek tiek daugiau pagrįstas anglų kalba.
Taigi, atlikite šiuos veiksmus, o jūs nesate dėkinga, nes esu dėkingas, yra klaidinga.
Ir šį kartą, taip pat, aš, matyt, neturi rūpintis prisiminti tai, ką vartotojas turi įvesti
nes įspėjimo nėra kintamasis n.
Taigi, iš tikrųjų, aš -
šiek tiek balta melas.
Funkciškai, programa yra šiek tiek kitokia, kai mes gauname apačioje
nes aš ne prisiminti, kas n.
Bet aš norėjau parodyti, čia per daug, kad net jei mes matėme GetInt ir
GetString naudojamas ant dešinėje pusėje lygybės ženklu iki šiol, kad
mes prisimename vertę, techniškai, tai nėra tikrai būtina.
Jei dėl kokios nors priežasties jūs tiesiog nerūpi, kad įrašytumėte reikšmę, jūs tiesiog norite
patikrinti vertę, pastebėsite, kad mes galime tiesiog parašyti tai, kaip GetInt atvira
skliaustas, netoli paren.
Kad funkcija grąžina reikšmę, kaip mes buvo suprantama.
Ji ketina suteikti jums atgal į int.
Ir todėl, jei jus psichiškai galvoja tai vyksta, kai aš tipo 99, GetInt
grąžina skaičių 99.
Ir taip konceptualiai, tai kaip nors mano kodas buvo iš tikrųjų tai.
99 Taigi, jei iš tiesų yra didesnis už 0, tada dėkingi tampa realybe.
Tada linija 25 supranta, ooh, mes padarėme, nes aš dabar dėkinga.
Ir 26 eilutėje, mes tiesiog pasakyti, ačiū už teigiamas sveikasis skaičius, kokia ji
atsitiko.
>> Dabar galime padaryti šiek tiek cukraus sintaksinę čia, taip sakant.
Leiskite pamatyti, jei mes galime išvalyti šią eilutę su šio trečiojo ir paskutiniojo dispersija 25
positive3.
Taigi, pastebėjote, vienintelis skirtumas yra tai, ką eilutę kodo?
Taip, kad 25.
Ir mes tikrai matė šį triuką, tik dar.
Tačiau mes tai padarėme šauktukas pirmadienį, kuris reiškia ką?
Taigi ne, ar neigimas.
Taigi imtis Būlio vertė ir apversti savo vertę.
Tiesa tampa klaidinga.
False tampa realybe.
Taigi, aš norėčiau pasiūlyti, yra net šiek tiek daugiau intuityvi būdu,
rašyti kodą, nes aš vis dar inicijuoti dėkingi false.
Aš vis dar atlikite šiuos veiksmus.
Aš nustačiau dėkinga, tiesa, kai ateis laikas.
Tačiau dabar jūs galite tiesiog išversti šį kodą žodžiu iš kairės į dešinę,
o nėra dėkinga.
Nes sprogimo, arba šauktukas, reiškia ne sąvoka, todėl nors
nėra dėkinga.
>> Taigi dar kartą, mes jokių naujų sąvokas per se.
Mes kalbėjome apie loginę atgal, kai mes grojo su nulio.
Bet suprantame, dabar mes galime tiesiog pradėti rašyti savo kodą
įvairiais būdais.
Taigi ypač pset1, jei esate tarsi stengiasi išsiaiškinti, kelią
parašyti šiek tiek programą, šansai yra jums pasisekė, nes ten bus bet koks
sprendimų, kurie jums gali atsitikti dėl skaičių.
Pavyzdžiui, tai yra tik trys net paprasčiausių programų.
Gerai.
, O dabar atšaukti pirmadienį, mes palikome su grįžtamaisiais vertybių šio pranešimo.
Taigi, labai pirmą kartą, mes parašėme programą, kuri ne tik turi pagrindinis
ji taip pat turi savo funkcija individualizuotos, kad aš parašiau čia.
Taigi, per 34 31 eilutėje, aš įgyvendino kubo funkciją.
Tai nėra sudėtinga.
Tai tik kartus per kartus per šiuo atveju.
Tačiau tai, ką svarbu apie tai yra tai, kad aš visai forma ir
Aš sugrįžus produkcijos kartų kartų a.
>> Taigi dabar turiu galimybę, panašiai kaip aš naudojamas su printf vien, skambinti
tai paskambinus funkciją kubo funkcija.
Ir kubas funkcija užtrunka tam tikrą įvesties.
Ir kubas funkcija grąžina kažkokią išvestį.
Ir priešingai, printf tiesiog padarė kažką.
Ji neturėjo grįžti nieko, kad mes rūpinosi apie - nors, kaip
žemę, jis grąžina reikšmę.
Jūs tiesiog paprastai jį ignoruoti.
Printf tiesiog padarė kažką.
Jis turėjo šalutinį poveikį spausdinti į ekraną.
Priešingai čia, turime kubo funkciją, kuri
faktiškai grąžina kažką.
>> Taigi tai iš esmės -
tiems, kurie susipažinę su šiuo, tai gana paprasta idėja.
Tačiau tiems, kurie mažiau susipažinę su šia artimųjų sąnaudų ir gauti idėja
atgal išėjimai, pabandykime tiesiog kažkas super paprasta.
Ar kas nors patogiai artėja scenoje trumpai?
Jūs turite būti patogu su kamera apie jus, taip pat.
Taip.
Gerai, kas yra jūsų vardas?
Ken: Ken.
David J. Malan: Ken.
Visos teisės Kenas.
Ateiti iki.
Taigi Ken rūšių funkcija bus čia.
Ir eikime į priekį ir tai padaryti.
Galime gauti šiek tiek fantazijos.
Malonu jus matyti.
Sveiki atvykę į centre.
Gerai.
Leiskite paspausti šį mygtuką.
Gerai.
Taigi čia jūs turite modernią Lenta.
Ir kas aš esu, yra pagrindinė funkcija, pvz.
Ir aš neturiu į mano rankas iPad.
Aš tikrai ne prisiminti, kaip - gerai, iš tikrųjų, negali pasakyti, kad.
Aš ne tikrai gera ranka.
Ir todėl, aš noriu jums ką nors atspausdinti už mane ant ekrano.
>> Taigi, aš yra pagrindinė programa.
Ir aš einu, kad jūs pasakyti tai raštu jį mano vištienos nulio ir
tada jums perduoti įvestį.
Taigi, kaip kvailas, nors ši veikla, funkcijų samprata ir raginama
funkcija ir grįžti funkciją tikrai suvesta į tai.
Esu pagrindinis.
Aš ką tik parašyta printf ("kažkas") ekrane.
Bėgu šią programą.
Ir kuo greičiau printf iškviečiamas, ji užima vieną argumentą - arba vienas parametras,
kartais -
tarp dvigubų kabučių.
Čia yra, kad argumentas.
Aš perduoti ją Ken.
Dabar jis yra "black box", parašyta maždaug prieš daugelį metų, kad, matyt
tik žino, kaip spausdinti dalykus ekrane.
>> Taigi, vykdyti.
Tai nėra blogai.
Taigi, labai gerai.
Taigi dabar Ken daroma vykdyti.
Ar jis turi perduoti man nieko atgal?
Taigi, ne tai, kad mes matėme iki šiol.
Vėlgi, printf tikrųjų grįžti numerį.
Bet mes ketiname ignoruoti, kad dabar, nes mes niekada naudojo jį.
Taigi, kad tai Ken.
Ir todėl dabar pagrindinis grįžta vykdyti
pagrindinis vėl perima kontrolės programos, nes šio kodo eilutę,
printf, daroma vykdyti.
Ir mes einame apie mūsų vykdančiosios kokios kitos eilutės yra ten.
>> Gerai.
Taigi, dabar pabandykime šiek tiek kitokį pavyzdį.
Ir šį kartą čia, tegul pirmas išvalyti ekraną.
Ir šį kartą, mes padarysime Kubas funkciją.
Bet šį kartą, tikiuosi, išvesties vertę.
Taigi eikime į priekį ir tai padaryti.
Taigi dabar turiu kodo eilutę, kad sako, x = kubas (x).
Taigi faktiškai let's -
kodo linija, prisiminti, atrodo taip.
x = kubas (x).
Taigi, kaip tai vyksta į darbą?
Taigi eikime į priekį ir suteikti jums baltas ekranas vėl.
Ir aš dabar einu rašyti žemyn x vertę, kuri šiuo metu
laikas atsitinka būti, tarkim, 2, keep it simple.
Taigi, aš užrašyti ant popieriaus lapo vertės 2
kuris yra mano x vertė.
Aš nuneškite jį Ken.
KEN: Ir aš tiesiog parašyti atsakymą?
David J. Malan: Taip, tegul tiesiog rašyti atsakymą.
Gerai.
Ir dabar jis turi grąžinti man kažką.
Taigi -
tobula.
Nice Segue.
>> Taigi dabar jis paduoda man atgal 8 vertę, šiuo atveju.
Ir ką man su juo daryti?
Na, iš tikrųjų, galime pamatyti.
Gauti šią teisę.
Ką man su juo daryti?
Dabar aš ruošiuosi į šią vertę ir iš tikrųjų laikyti jį tiems,
vienodais bitais atmintyje.
Tačiau pastebėkite, aš tipo kovoja čia.
Aš esu šiek tiek supainioti, nes kai aš iš tikrųjų rašyti x vertę?
Nes tai, ką aš ką tik padarė, yra fiziškai ranka Ken popieriaus gabalas
, kuris turėjo vertę, 2, kuris buvo x.
Ir iš tiesų, tai būtent tai, kas vyksta.
Taigi paaiškėja, kad, kai skambinate funkciją ir pereisite į argumentą,
patinka "Hello World" arba pereisite argumento kaip 2, paprastai, jūs
einančios į šį argumentą kopiją.
Ir taip kaip aš užrašė skaičių 2 čia ir perdavė jį į Ken, kad turi
reiškia, kad vis dar turiu vertės 2 kopiją kažkur.
Nes iš tiesų, dabar, kad aš Dotarłeś atgal dydis 8, man reikia grįžti į
RAM ir užsirašyti 8 kur Aš vieną kartą turėjo skaitmeniu "2".
>> Taigi vizualiai prisiminti šią einančios pažodžiui sąvoka
vertės kopija.
Ken daro savo dalyką, paduoda man ką nors - šiuo atveju,
vertė kaip 8.
Ir tada aš turiu kažką daryti su tos vertės, jei aš
norite laikyti jį aplink.
Taigi, visa tai bus pernelyg pažįstami prieš ilgas.
Thank you so much už šio demo čia, Ken.
Gerai.
Labai gerai padaryta.
Taigi pažiūrėkime, kaip kad galiausiai kai funkcijos
skambinama, kad mes čia darai.
Taigi leiskite man eiti į priekį ir gražina mus į Kubas pavyzdžiui čia.
Ir pastebėjo, kad, jei norime, kad iš tikrųjų pradėdami vartoti šį toliau, mes ketiname
turi būti atkreipia dėmesį į tai, kad skaičius x, praėję
čia yra skirtingas, kas iš tikrųjų yra perduodama į funkciją.
Taigi dar kartą, tai praėjo kopiją ketina tapti gana
Priklauso tik akimirką.
>> Todėl galime imtis ne kažką, kad nėra gana dirbti dar atrodo.
Aš ruošiuosi eiti į priekį ir atidaryti trečią Buggy pavyzdį, kuris
yra ydinga iš prigimties.
Ir ji vadinama buggy3 ir jis vykdo apsikeitimo funkcija.
Taigi čia mes turime pagrindinę funkciją, kad x ir y savavališkai inicijuotas
1 ir 2, atitinkamai.
Mes galime naudoti GetInt, bet mes tiesiog reikia paprastas pratimas.
Todėl sunku koduojamos kaip 1 ir 2.
21 ir 22 eilutėse, mes, matyt, atspausdinti X ir Y, po vieną eilutėje.
Tada, 23 on-line, aš patvirtinu, aš Swapping šias vertybes, tašką, taškas, taškas.
Aš, matyt, skambinti 24 eilutėje funkcija vadinama apsikeitimo
, kad mano du argumentus.
Tai visiškai teisėtas funkcijas imtis du argumentus.
Mes matėme, printf padaryti jį jau.
Taigi, apsikeitimo, matyt, mano X ir Y.
Ir, kaip rodo jo pavadinimas, aš tikiuosi, kad ji ketina
apsikeitimo šias dvi reikšmes.
Taigi, aš reikalauti on line 25, pavertė.
Ir aš perspausdinti darant prielaidą, kad X ir Y
jie iš tikrųjų buvo sukeistas.
Bet jei aš iš tikrųjų paleisti šią programą -
leiskite man atverti terminalo langą.
Leiskite man padaryti buggy3.
Kaip rodo pavadinimas, tai ne baigsis gerai.
Nes kai aš paspauskite "Enter", atkreipkite dėmesį, kad x yra 1.
y 2.
Ir dar programos pabaigoje, jie vis dar, iš tiesų, ta pati.
>> Taigi remiantis demonstravimo tik dabar su Ken, kas iš tikrųjų vyksta?
Na, galime pasinerti į šią apsikeitimo funkcija.
Tai itin trumpas.
Tai tik keletą eilučių kodo ilgą.
Bet kas pagrindinė problema, remiantis paprasta istorija papasakojo
čia su Ken?
Kodėl apsikeitimo neveikia?
[Nesigirdi]
Tiksliai.
Taigi mes saugoti kopiją, o ne kintamasis.
Kitaip tariant, apsikeitimo matyt du argumentus, int.
Ir tai sąlygiškai pavadinta a ir b.
Ir čia, aš vyko X ir Y, kurie yra atitinkamai 1 ir 2.
Bet aš ne pažodžiui perduoti x.
Aš ne pažodžiui eina y.
Aš artimųjų x kopiją ir y kopiją.
Tai kaip ir beveik taip, lyg jums nukopijuoti ir įklijuoti apsikeitimo tas vertybes, kurios
norite, kad ji iš tikrųjų manipuliuoti.
Taigi, jei tai toks atvejis, kai aš, programa, pradėti vykdyti
linija 35, tada 36 -
kai gaunu 37 eilutėje, Šiuo istorija, kas yra vertė?
Šiuo istorija, linija 37, kas yra vertė šiuo metu?
Todėl ji turėtų būti tik 1.
Tiesa?
Nes buvo priimtas kaip pirmąjį argumentą x.
Ir ši funkcija tiesiog savavališkai skambina savo pirmąjį argumentą,.
Taip pat yra y, kad antrasis argumentas.
Ir tai tik savavališkai paskambinę antrasis argumentas b.
>> Dabar ši dichotomija yra iš tikrųjų gana tiesiog paaiškino.
Pagalvokite apie tai.
Nė vienas iš mūsų susitiko asmuo, kuris parašė printf.
Todėl tikrai, jis ar ji neturi jokios idėjos, ką mūsų kintamieji 30 metų ketinate
būti vadinamas.
Taigi, turi būti skirtumas tarp to, ką vadiname kintamųjų
funkcijos rašote ir ką vadiname kintamųjų funkcijų esate
skambinti arba naudojant.
Taigi, kitaip tariant, aš parašiau savo kintamuosius x ir y.
Bet, jei kažkas buvo parašyta apsikeitimo funkcija, jis ar ji tikrai
negalėjo žinoti, ką mano kintamieji bus vadinamas.
Taigi suprasti, kad tai, kodėl jūs turite šią vardų dvilypumą.
Techniškai, galėčiau tai padaryti sutapimo.
Bet jis vis tiek būtų priimtas, kopijas.
Tai tiesiog grynas atsitiktinumas, estetiškai, jei tas asmuo, kuris parašė
apsikeitimo sandoris buvo naudojamas tais pačiais pavadinimais.
>> Gerai.
Taigi Šiuo istorija, linija 37, yra 1.
b 2.
Ir dabar aš pereiti prie apsikeitimo juos.
Na, visų pirma, leiskite man iš tikrųjų tai padaryti daug paprasčiau.
Aš nežinau, ką darė šie tris eilutes kodo.
Leiskite man tiesiog tai padaryti.
b gauna.
gauna b.
Atlikta.
Kodėl tai yra skaldytų, logiškai?
Tai tipo intuityvi dalykas, tiesa?
Taigi tampa b.
Ir b tampa.
Tačiau problema yra ta, kad kuo greičiau linija 37 vykdo, kas
vertė a ir b?
Tas pats, 1.
, Nes jūs sugadinta, taip sakant, jūs pakeitėte B lygi.
Taigi, kai linija yra vykdoma 37, tai puiku.
Dabar jūs turite dvi kopijas skaičių 1 šios funkcijos viduje.
Taip, tada, kai jūs sakote, 38 eilutėje, gauna b, gerai, tu tipo prisukamas.
Kadangi jūs tik priskiriant 1 iki 1.
Jūs rūšies prarado vertę, kurią rūpinosi apie.
>> Taigi iš pradinės versijos, atkreipkite dėmesį, ką aš padariau.
Aš vietoj trečiosios eilutės kodą, kuris atrodė taip.
Paskelbti laikiną kintamąjį - TVP yra labai dažnas vardas
laikinas kintamasis.
Tai int, nes ji atitiktų tai, ką aš noriu padaryti kopiją.
Galiu laikyti tmp viduje kopiją. Taigi, kai linija įvykdė 37
vertė -
greitai normalumas patikrinti -
1.
B vertė yra 2.
Ir tmp vertė taip pat yra 1.
Taigi, dabar aš atlikti linija 38.
Taigi, kai vykdo linija 38, įgauna b vertei.
Ir b 2.
Taigi dabar yra 2.
Šiuo istorija, yra 2, b - 2,
ir tmp yra 1.
Taigi dabar logiškai, mes galime tiesiog Plop tmp vertė į b.
Ir baigsime.
>> Taigi, mes išspręsti šią problemą.
Deja, kai aš paleisti šią programą šią formą, jis nėra iš tikrųjų apsikeitimo
bet kokias reikšmes.
, Tačiau turi būti aišku, kodėl?
I fixed loginių problemų, nuo vos prieš akimirką.
Bet vėl, jei aš paleisti šią programą, x ir y lieka nepakitę pabaigoje
programos vykdymas.
[Nesigirdi]
David J. Malan: Taigi mes negrąžinami nieko.
Taip, tai tiesa.
Tačiau paaiškėja, yra šiek tiek problemų, nes čia iki šiol,
Vienintelis dalykas, mes negalėjo grįžti yra vienas dalykas.
Ir tai yra C. apribojimas Galite grįžti tik tikrai vieną reikšmę,
tokiu atveju, aš natūra įstrigo čia
nes aš negalėjau grįžti naują vertę x, ar aš galėtų grįžti
y nauja reikšmė.
Bet aš noriu, tiek atgal.
Taigi, grįžtant nėra paprastas sprendimas.
Tačiau problema iš esmės yra, kodėl?
Ką mes iš tikrųjų pavertė?
a ir b.
Tačiau a ir b yra kopijos X ir Y, o tai reiškia, mes tiesiog padarė visa tai
dirbti - mes tiesiog praleido kaip tris minutes kalbėti apie apsikeitimo sandorio
funkcija ir visi trys iš šių kintamųjų.
Ir tai puiku, visiškai teisinga atskirai.
Tačiau a ir b taikymo sritis tik čia Šiose eilutėse.
Taigi, kaip ir už linijos, jei pareiškiate, sveikasis skaičius i viduje už
kilpa - Be to, jei jūs skelbiantis a ir b viduje funkcijos, kad
parašiau, jie galioja tik šios funkcijos viduje.
, O tai reiškia, kuo greičiau apsikeitimo daroma vykdant ir mes pereiti nuo iki 24 eilutėje
linija 25, x ir y nebuvo pasikeitė.
Jūs tiesiog švaistomi visai daug metu apsikeičiama kintamųjų kopijas.
>> Taigi paaiškėja, kad sprendimas yra tai tikrai ne akivaizdus.
Tai ne visai pakanka grąžinti reikšmes, nes mes galime
grįžti tik vieną reikšmę.
Ir aš tikrai norite apsikeitimo x ir y tuo pačiu metu.
Taigi, mes ketiname grįžti į šį.
Bet dabar, suprasti, kad klausimas iš esmės kyla iš to,
, kad a ir b yra kopijos.
Ir jie yra savo taikymo sritį.
Na, pabandykime išspręsti šią problemą tam tikru būdu.
Leiskite man iš tikrųjų slinkti atgal čia ir atverti, tarkim, ketvirtasis variantas
tai, buggy4.
O ką apie tai?
Tai yra panašus, bet paprastesnis problema, pažvelgti į tai, kol mes imtis Pabandyti
ją sprendžiant.
Ši programa yra vadinamas prieaugis.
Ir tai, matyt, inicijuoja sveikasis skaičius x 1, 18 eilutėje.
Aš tada prašyti x 1.
Aš tada prašyti incrementing, taškas, taškas, taškas.
Aš tada skambinti prieaugio.
Bet tada 22 ir 23 eilutėse, galiu reikalauti tai buvo padidinamas.
Galiu reikalauti, x yra dabar, kokia ji yra, 2 matyt.
>> Tačiau ši programa yra klaidų.
Kokia tai problema?
Taip?
[Nesigirdi]
David J. Malan: Būtent.
Taigi buvo paskelbtas akivaizdžiai x 18 on-line.
Tai yra viduje pagrindinis klamrami.
Taigi, čia yra paprastas atsakymas, kad gerai, x yra čia.
Jis neegzistuoja, atitinka 32.
Todėl ši programa iš tikrųjų net nebus surinkti.
Sudarytojas,, kai bandau sudarant šį kodą, ketina klykauti ne man
apie kai nedeklaruoto identifikatorius arba kažką šiuo klausimu.
Tiesą sakant, pabandykime.
Tai padaryti buggy4.
Ji yra.
Nedeklaruoto identifikatorius x 32 eilutėje.
Ir iš tikrųjų, būkime daugiau aiškiai čia šiandien taip, kad tai yra naudinga
darbo valandomis, ir namuose.
Atkreipkite dėmesį, kad tai šiek tiek cryptically parašyta.
Bet faktas, kad Apsukite metalinis garsas turi rėkė į mus, sakydamas:
buggy4.c: 32:5, yra iš tikrųjų naudinga.
Tai reiškia, kad klaida yra ne simbolių poziciją 5 32 eilutėje.
Taigi, vienas, du, trys, keturi, penki.
Štai, iš tiesų, kai problema yra.
Ir taip pat reikia nepamiršti, darbo valandomis, ir namuose, aš esu laimingas čia.
Turiu vieną klaidą.
Tai bus gana lengva nustatyti.
Bet jei jūs gaunate visą ekraną, pilną didžioji klaidų pranešimų, dar kartą,
suprasti, kad gali būti tik simptominis apatinis
Viršutinis.
Todėl visada Chase žemyn klaidas iš viršaus į apačią.
Nes ten gali būti tiesiog Nuosekliai-poveikis, kuris siūlo jums
būdas daugiau problemų, negu jūs iš tikrųjų.
>> Taigi, kaip mes galime išspręsti šią problemą, jei mano tikslas yra prieaugio x?
Kas tai?
Gerai.
Taigi, mes galime padaryti x pasaulio.
Paimkime nuorodą, kad aš perspėjo apie anksčiau.
Bet gi, mums tik reikia greitai išspręsti.
Taigi tegul tiesiog pasakyti, int x, čia.
Tai daro x Global.
Taigi dabar pagrindinis turi prieigą prie jo.
Ir prieaugis turi prieigą prie jo.
Ir todėl leiskite man eiti į priekį ir kaupti tai dabar.
Padaryti buggy4, "Enter".
Atrodo sudaryti dabar.
Apsvarstykite, buggy4 ir atrodo, kad dirbtų.
Dabar tai vienas iš šių dalykų -
daryti, kaip aš sakau, o ne kaip aš, kaip aš tiesiog padaryti čia.
Nes apskritai, mūsų programos ketinate gauti daug įdomesnis ir
daug ilgiau, nei šis.
Ir jei jūsų gyvenimo problemų sprendimas yra tiesiog ah, įdėti visus
kintamieji failo viršuje, labai greitai padaryti, programos gauti
horrifically sunku valdyti.
Ji pasireiškia sunkiau sugalvoti naujų kintamųjų vardai.
Ji pasireiškia sunkiau suprasti, kas yra kintamasis yra tai, ką.
>> Ir apskritai, tai nėra geras sprendimas.
Todėl galime tai padaryti geriau.
Mes nenorime naudoti pasaulinį kintamąjį.
Aš noriu prieaugio x.
, Kad galėčiau akivaizdžiai
dienos pabaigoje, tai tipo kvailos istorijos, nes mes tiesiog tai padaryti.
Bet jei aš ne žinoti apie tokio subjekto, ar aš nebuvo leista
jį pakeisti pagrindinis pati, kaip kitaip galėčiau įgyvendinti Ken čia, tai
laikas ne kubo, bet prieaugio?
Kaip aš galiu pasikeisti tai, ką čia?
Taip.
[Nesigirdi]
David J. Malan: Gerai, gerai.
Tad kodėl gi ne galiu perduoti x?
Ir tada, o ne grąžinti, kodėl gi ne Aš tiesiog grįžti x + 1?
Dabar pora daugiau ką keisti čia.
Aš esu teisingame kelyje.
Ką dar man reikia įgnybti?
Kas nors kitas.
Taip?
[Nesigirdi]
David J. Malan: Man reikia pakeisti grįžimo tipo prieaugio
, nes jis negaliojančiomis.
Void tai nieko grąžinamas.
Tačiau aišku, kad dabar ji yra.
, Todėl tai turi pakeisti int turi būti suderinti su kokia
Aš iš tikrųjų grįžta.
>> Dabar kažkas vis dar Buggy čia.
Taip?
[Nesigirdi]
David J. Malan: Taigi man reikia prieaugio x?
[Nesigirdi]
David J. Malan: Ak, kad man reikia perduoti x.
Taigi man reikia tai padaryti čia.
Todėl prototipą, turiu pakeisti čia.
Taigi tai turi tapti int.
Tai turi tapti -
hmm.
Aš iš tikrųjų turi apie klaidą čia.
Leiskite išspręsti šią iš pradžių.
Ką tai turėtų būti iš tiesų?
Taigi tai turite būti int kažkas.
Tai gali būti x.
Bet atvirai, jei pradėsite Kreipiamės į visus savo kintamieji x, tai ketina gauti
mažiau aišku, kas yra kas.
Todėl galime tik savavališkai pasirinkti kitą pavadinimų konvencijos Mano
padėjėjo funkcijas, funkcijas, aš rašau.
Mes paskambinsime.
Arba galėtume vadinti jį - tegul jį vadiname even_number būti dar aiškesnis.
Taigi, tada aš turiu grįžti, bet skaičius plius 1.
Ir dabar turiu pakeisti vienas kitas dalykas, čia ir vienas
kitas dalykas čia.
Ką turiu pakeisti eilutę 21?
Turiu priskirti jį x.
Taigi aš negaliu tiesiog paskambinti prieaugio x.
Man reikia prisiminti atsakymą keičiant x vertę
kairėje pusėje.
Ir nors čia x yra dabar į kairę ir į dešinę, kad visiškai gerai, nes
dešinėje pusėje pirmiausia paleidžiama vykdyti gauna plopped į kairę
rankų dalykas, šiuo atveju x.
Ir tada galiausiai, tai lengva nustatyti.
Tai tiesiog reikia suderinti, kas žemiau.
Int numeris.
>> Gerai.
Taigi visa krūva pokyčių tikrai kvailas funkcija.
Tačiau atstovas dalykų, kad mes vis labiau nori daryti.
Todėl įsitikinkite, buggy4.
Aš įsukus kažkur.
O, Dieve.
Penkios klaidos, kaip, šešių eilutės programa.
Taigi, kas yra negerai on line 18 5, charakteris?
Gerai.
Taigi, aš turiu pripažinti šią int.
Gerai.
Taigi, pažiūrėkime, visa krūva kitų klaidų.
Oh my god.
19, 18, 21.
Bet vėl, tegul tiesiog išvalyti ekraną -
Kontrolė L čia ir iš naujo paleiskite Apsukite metalinis garsas.
Taigi penkių uždavinių iš tikrųjų yra tik tai, kad vienas.
Taigi dabar galime paleisti buggy4, "Enter".
FIU.
x buvo padidinamas teisingai.
>> Gerai.
Kokių nors klausimų apie tai, kaip prieaugio skaičius?
Taip?
KOLONĖLĖS 2: Kodėl tai, kad jūs galite tik pakeisti x kintamasis skaičius
įvardyti ir žinosite, ką turite galvoje?
David J. Malan: Geras klausimas.
Kaip tai, kad aš galiu tiesiog pakeisti x skaičių ir programa bus žinoti
iš karto?
Taigi dar kartą, manau, apie tai, kaip šios abstrakcijos.
Taigi, jei aš esu pagrindinis ir Kenas yra pažangus, tiesą sakant, aš ne rūpintis,
ką Ken vadina savo "iPad".
Man nerūpi, ką jis vadina nieko, kad turi daryti su jo įgyvendinimo
šios funkcijos.
Taigi tai yra įgyvendinimas išsamiai, kad aš, pagrindinė, ar ne
turi rūpintis.
Ir taip tiesiog pakeisti jį nuolat viduje funkcijos, numeris čia
ir numeris čia, visa tai trunka taip ilgai, kaip aš perkompiliuoti.
Tai rūšiuoti, pavyzdžiui, jei jūs manote apie - daugelis iš mūsų, tiems iš jūsų, su vairuotojo
licencijos, kurie jau važiuoti, arba, jei jūs net važiuoti automobilyje -
dauguma iš mūsų neįsivaizduoju, kaip automobilis veikia po kapotu.
Ir tiesiogine prasme, jeigu Jūs atidarote gaubtą, dauguma iš mūsų - tarp jų ir aš -
nesiruošia tikrai žinote, ką mes ieškome.
Rūšies, kaip jūs galite jausti dalykų, kaip šios teisės dabar.
Bet mes tikrai turime rūpintis, kaip automobilis veikia.
Mes neturime rūpintis, ką visi strypai ir stūmoklius ir kabelių viduje
automobilis iš tikrųjų daro.
>> Taigi, kažkas panašaus į tai, ką vadiname stūmoklio nesvarbu
čia šiuo atveju.
Pati idėja.
Taip?
[Nesigirdi]
David J. Malan: Jei ten buvo daugiau naudoja kintamojo xa metu prieš
jūs, programuotojas, turėtų pakeisti juos visur.
Arba jūs tiesiog gali padaryti failą, meniu, ir tada Rasti / pakeisti,
kažkas panašaus.
, Bet jūs ketinate turi atlikti šiuos pakeitimus sau.
Jūs turite būti nuoseklūs.
[Nesigirdi]
David J. Malan: tikra tvarka kaip čia?
Jei tai buvo int kitą numerį?
Taip.
Taigi, kad svarbu, kai skambinate funkciją.
Taigi, jei aš vadino prieaugis čia su kažkuo kableliais kažką,
yra tiesioginis žemėlapių.
Pirmasis kintamasis, kokia ji vadinama, yra pagamintas iš pirmųjų kopiją
argumentas čia.
Atsiprašome, tai neturėtų būti skliausto.
Antrasis argumentas linijos iki su antrąją.
>> Taigi, kad taip, klausimai.
Gerai.
Atsiprašome aš paėmė ilgą kelią, kad ten patekti.
Kiti klausimai?
Gerai.
Taigi pažiūrėkime, jei mes negalime dažų vaizdą apie tai, kas iš tikrųjų vyksta
čia po kapotu, taip sakant.
Taigi tai yra stačiakampis, gali atstovauti jūsų kompiuterio atminties.
Taigi, net jei jūs neturite idėjos, kaip atmintis veikia arba kaip RAM darbai, bent jau
manyti, kad turite kekių šių dienų.
Jūs turite megabaitų.
Jūs turite gigabaitų.
Ir mes žinome, iš savaitę nulio, kad baitų yra tai, ką?
8 bitai.
Teisus, todėl 8 nuliai ir tie.
Taigi, jei jūsų kompiuteryje yra RAM koncertą, du koncertai RAM šių dienų, jūs turite
milijardas ar 2 milijardas baitų atminties, arba maždaug 8 mlrd arba 16 mlrd.
bitai, viduje jūsų kompiuteryje.
Dabar, skirtingai nei mažai vilnonę Willy Pavyzdžiui, tai nėra magnetinės dalelės
paprastai daugiau.
Vis daugiau, nešiojamieji kompiuteriai bent jau tai kietojo kūno diskai, SSD,
tiesiog ne judančių dalių.
Visa tai yra elektroninis.
Tai visi elektros pagrindu.
Todėl manau, kad, nors, kaip tik vieną ar du šio stačiakampio
GB atminties, kad jūs turite.
>> Todėl atminties riekė.
Dabar kompiuterių mokslo pasaulyje yra tarsi atitverta gabaliukus
atminties tai skirtingi dalykai.
Taigi, pavyzdžiui, jei tai yra jūsų kompiuterio RAM - kaip siūloma
stačiakampis ten - paaiškėja, kad pagal susitarimą, jūsų RAM viršuje, todėl
kalbėti, paprastai yra tai, kas vadinama teksto segmentas.
Jie yra nuliai ir tie, kurie turite surinkti.
Taigi, kai mes pažvelgė, ką a.out yra po gaubtu, visi
nuliai ir tie -
, kai paleidžiate programą, tie nuliai ir tie pakraunami iš jūsų standžiajame
diską į kažką vadinama RAM.
Ir RAM, jie įdėti viršuje.
Dabar tuo tarpu, jūs turite kitų dalykų.
Inicializuoti duomenis, niezainicjowanymi duomenų.
Šios dvi atminties swaths kreiptis globalių kintamųjų, kurie
jums nereikia dažnai naudotis.
Bet kartais, jei jūs darote, jie galų gale ten taip pat.
Tada ten kai kurių kitų dalykų.
Aplinkos kintamieji, kuriuos mes ne išleisti daug laiko.
Bet tada du svarbūs dalykai, kad ateis atgal per
semestrą, kamino ir krūva.
>> Taigi, dauguma iš jūsų kompiuterio atmintyje saugomos paleidžiant programą
kažkas vadinamas kamino ir kažką vadinama krūvą
Ir mes ketiname kalbėti apie krūvą šiandien, tačiau mes
kalbėti apie kamino.
Ir kamino skirtas įsivaizduoti vizualiai kaip ir valgomajame
miltai padėklai Mather House ar kur būtumėte, kur
valgykla darbuotojai juos valyti kiekvieną dieną.
Jie sukrauti juos nuo grindų On Up.
Ir panašiai atmintyje, yra ši idėja pradėti kažką
kaminą, kamino, pradėti kažką pradėti kažką ant kamino.
Ir ką reiškia šis?
Na, galime padidinti tik apatinėje šioje nuotraukoje, jūsų kompiuterio
RAM, pasiūlyti šias.
Pasirodo, kad paleidus kaip a.out programą arba Hello, nepriklausomai nuo
programa, kad rašėte,
vėl, tie nuliai ir tie yra pakraunami iš jūsų kietojo disko, kuris yra
ilgalaikis sandėliavimas, lieka ten, net jei jūs traukite už kištuko,
pakraunamos į RAM.
RAM greičiau nei kietieji diskai.
Mažesnis nei kietieji diskai.
Bet tai, kur programos gyventi, o jūs naudojate juos.
>> Taigi dukart spustelėkite ant Mac ar PC programa - tai pakraunami iš
kietąjį diską į RAM.
Iš karto, kai jis pakrautas į RAM, nuliai ir tie, eiti į tai, kaip viršuje,
taip vadinamas teksto segmentas.
Bet tada kuo greičiau jūsų programa iš tikrųjų prasideda, pagrindinis
funkcija vadinama.
Ir pagrindinis, kaip mes matėme, dažnai yra vietos kintamieji.
Ir ji turi Ints ir styginiams ir simbolių ir pan.
Taigi, jei jūsų programa, kad jūs turite raštu arba programa, kad jūs turite
du kartus paspausti naudoti keletą kintamųjų, viduje pagrindinis, jie galų gale ne
apačios, Jūsų žetonų atminties, taip sakant.
Dabar konkrečiau, ką tai iš tikrųjų reiškia?
Tai tiesiog reiškia, kad, jei mes ketiname NUMERIS dalykus -
jei mes ketiname skaičius baitų RAM savo kompiuteryje, pastebėti, kad
tai gali būti baitų skaičius nulis.
Tai gali būti baitų numeris vienas, du, trys, keturi, penki, šeši, visi
kelią iki patinka -
2 mlrd. Būtų visą kelią iki ten viršuje.
Taigi, kitaip tariant, kai mes kalbame apie RAM arba atminties baitų, tai
tiesiog reiškia, kad kažkas nusprendė, ką skaičių kiekvienai
tie atminties gabaliukus.
>> Taigi, kai jūs turite 32 bitų int, ar jums reikia 8 bitai char, jei
jie galų gale atmintį?
Na konceptualiai, jie tiesiog galų gale į šį dugną
dalykas, vadinamas kamino.
Bet kas įdomu, dabar, kai pagrindinis ragina funkcija.
Tarkime, kad funkcija vadinama foo tiesiog savavališkai vardas.
Kas atsitinka, yra pagrindinis šios atminties kamino apačioje.
Foo dabar yra ant Maino atmintyje.
Taigi, vietinius kintamuosius, kad foo baigti rūšiuoti konceptualiai aukščiau
, pagrindinis.
Jei foo ragina kitą funkciją, vadinamą baras, šie kintamieji galų gale čia.
Jei juosta ragina ką nors kita, čia, čia, čia.
Taigi, kas įdomu paleista programa yra ta, kad, kaip jūs vadinate funkcijas,
ir kaip šios funkcijos Skambinimo funkcijos, ir kaip šios funkcijos Skambinimo funkcijos,
jums sukurti šią atminties funkcijų krūvą.
Ir tik kartą per funkcija grąžina jums pradėti gauti, kad atminties atgal.
Taigi, vienas iš paprasčiausių būdų, kaip paleisti iš atminties į kompiuterinę programą
rašyti funkcijas, kad niekada grįžti.
>> Taigi, pavyzdžiui, galime parodyti, kiek su
tyčia Buggy programa.
Leiskite man eiti į priekį ir padaryti # include , int main (void).
Ir aš ruošiuosi daryti, o (2> 1), kuris tikriausiai nebus kada
pakeisti į mus.
Ir leiskite man eiti į priekį, dabar ir daryti printf.
Tiesą sakant, tai bus mažiau vizualiai įdomus.
Darykime tai.
Už int (i = 0; i> 0).
Padarykime šią klaidą, i + +.
Ir tegul ne printf čia.
Tegul praktiškai tai, ką aš pamokslavo.
Tegul turi metodą.
Void choras, mes pasakyti, int i.
Ir tada aš ruošiuosi pasakyti, printf -
oh, padarykime tai įdomiau.
Leiskite tikrai ne spausdinti ką nors ne visi.
Tegul tik tai padaryti.
Choras (i).
>> Gerai.
Taigi tai yra Buggy nes kodėl?
Aš tai kaip aš eiti, nes programa nėra iš tikrųjų nieko daryti
interesų.
Bet tai nėra tikslas.
Tikslas yra rašyti programą, kurios pagrindinė funkcija ką daro, matyt?
Pati.
Ir iš tikrųjų, mes nereikia kilpą.
Leiskite netgi supaprastinti, tai tik taip, kad nebūtų pamiršti tikrai
pagrindinė klaida.
Pagrindiniai ragina choras dainuoti kai choras.
Tada aš ką nors kvailas, ir aš turėjo chorus skambučių choras, nes aš manyti,
kažkas buvo gal ją įgyvendinti.
Ir dabar tai nesiruošia sudaryti dar.
Man reikia daryti tai, ką?
Man reikia prototipą, prisiminti.
Taigi man reikia, kad čia void choras (int i);
>> Taigi dabar, jei aš einu žemyn čia
iš tikrųjų, galime naudoti didesnį lange.
Eikime į priekį ir padaryti choras.
Iš nenustatyto deklarantam i.
O, kad buvo kvaila.
Mums nereikia argumento.
Tegul tik tai padaryti.
Pageidavimų mes pradėjo šį kelią.
Būtų buvę daug lengviau programa rašyti.
Taigi.
Dabar galime pereiti prie mano terminalo lange, iš naujo paleiskite Apsukite metalinis garsas.
Ir čia mes einame.
Tai buvo iš tiesų greitai.
Kas iš tikrųjų tiesiog atsitiko, nors?
Na, dabar aš įdėti spausdinimo liniją, todėl mes galime pamatyti.
Taigi, leiskite man pasakyti, printf, tarkim, aš čia.
Gerai, jokių kintamųjų, mes palikti jį panašaus.
Leiskite man iš naujo paleisti.
Leiskite man iš naujo paleisti choras.
Ir ateiti.
Nesustoti.
Kaip panaikinti, kodėl tai nėra sudužo dar?
Segmentavimo kaltės įvyko prieš super greitai.
[Nesigirdi]
David J. Malan: Būtent.
Todėl užtrunka laiko spausdinti.
Jis tiesiog reikia daugiau kompiuterio darbą.
Ir ten yra.
Segmentavimas kaltė.
>> Taigi pastebėsite, kaip greitai programas paleisti.
Jei jūs nieko nespausdina, super greitai.
Bet mes vis dar turime šį segmentavimo kaltės, nes tai, kas vyksta?
Na, jei jūs manote apie, kaip jūsų kompiuterio atminties yra išdėstyti,
atsitinka būti pagrindinis.
Bet čia -
tegul tik skambinti šiuo choras, ir tegul vadiname šį priedainį.
Ir dabar, jei aš tai padaryti savo estetiką, teisę, tai tiesiog vyksta pasakyti, choras,
choras, choras, choras, choras, choras, choras, skelbimą nauseum.
Ir galiausiai, tai, kas nutiks?
Jei vaizdą tiesiog yra tai, kas atsitinka konceptualiai?
Kamino viršijimus krūvos.
Arba dar blogiau, jūs tiesiog viršijo viską, įskaitant teksto segmente, kuris yra
nuliai ir tie, kurie atstovauja savo programą.
Trumpai tariant, tai yra tiesiog super, super blogai.
Tiesa?
Jūsų programa spiralled iš kontrolės.
Jūs naudojate būdas daugiau atminties nei manėte visi, nes kvailas
klaida, šiuo atveju.
Ar šiuo atveju, labai sąmoningai padaryta funkcija pasivadino.
Dabar tai yra ne visi blogi.
Funkcijos, vadinančios save iš tikrųjų turi didelę galią
kai jūs jį naudoti teisingai.
Aš ne naudoti jį teisingai čia.
>> Taigi tai yra ne visi blogi.
Bet tai, kad aš niekada iš tikrųjų sustabdyti skambinate save yra vienas iš pagrindinių
silpnumas, čia šios programos.
Taigi, kur mes einame su visa tai?
Na, kas iš tikrųjų vyksta?
Kai aš vadinu prieaugio funkciją, kaip mes darome šių pavyzdžių,
Turiu kaip 1 i kirsti.
Galiu perduoti numeris vienas kopiją.
Taigi taip atsitinka.
Taigi eikime į prieaugio pavyzdys.
Ir ši teisė čia vaikinas.
Taigi čia yra kas iš tikrųjų vyksta.
Kai aš vadinamas prieaugį, ir galiu perduoti x, pictorially kas
vyksta čia tai -
jei aš turiu čia saugomi vertė yra lygi 1, ir aš iš tikrųjų skambinti prieaugį, kuris
dabar vadinama choras -
Taip, tai mesti mane čia.
Taigi, tegul vadina Šis padidėjimas.
Ir mes nežinome, kas tai kitą funkciją bus.
Taigi, kas iš tikrųjų vyksta kažkur čia pagrindinis, turiu riekė
atmintis, kuri saugojimo skaitmeniu "1".
Kai aš vadinu prieaugį, aš naudoti kitą atminties riekė, bet dabar aš
Sausio 1 kopiją.
Kai aš prieaugio tą vertę, tai tampa 2 - siaubingai parašytas ant
ekranas čia.
Bet tada, kas atsitinka, kuo greičiau prieaugio grįžta?
Ši atmintis tik bus grąžintas į operacinę sistemą, o tai reiškia,
baigsite, yra ne kas kita naudinga.
Tas, kuris iš pradžių buvo pateikta pagrindinio vis dar iš tikrųjų egzistuoja.
>> Taigi, kur mes einame su tuo?
Na, tai paaiškėja, kad atminties jūs turite tai atgal atgal seką
baitų, kad jūs galite įdėti stuff.
Ir paaiškėja, kad mes jau matėme kažką, kuris apima išleidimą
dalykų, atgal atgal atgal atgal.
Kas yra eilutę, savaitę, o dabar savaitę du?
Taigi, tai tik ženklų kolekcija.
Taigi, it turns out, tiesiog, kaip jūs galite pateikti skaičiai atmintyje, panašiai kaip jūs galite
įdėti atminties simbolių.
Ir kai mes pradėti naudoti simbolių atmintyje atgal atgal atgal
atgal, paaiškėja, kad, naudojant paprasčiausių dalykų, pavyzdžiui, už linijos arba
while cikle, mes galime pakartoti -
iš kairės į dešinę per eilutę simbolių
ir pradėkite masažuoti juos į skirtingų charakterių, iš viso.
Gali tapti B. B galėtų tapti C. Taigi, galiausiai, mes galime imtis
Anglų sakinys, kad iš tikrųjų turi prasmę ir konvertuoti kiekvienas iš jų
raidės vienu metu vaikščioti per mūsų kompiuterio atmintyje paliko
teisę faktiškai užšifruoti.
>> Todėl galime imtis mūsų penkių minučių pertrauką, ir kai mes einame atgal, mes
pradėti šį procesą kodavimo informaciją.
>> Gerai.
Taigi, kol mes pasinerti į tam tikru kriptografijos ir šie dalykai vadinami matricos, leiskite man
pristabdyti visus klausimus, nes aš jaučiuosi kaip aš tikrai rūšies painiojamos kai kurie
šiomis temomis.
Todėl galime išspręsti dabar, jei mes galime.
Taigi mes tiesiog kalbėjomės apie grąžinti reikšmes.
Mes kalbėjome apie argumentų.
Ir mes kalbėjome apie šią sąvoką, kuriuos mes grįžti į Per savaitę
ateiti, peržiūrėti atminties, visa krūva šių krūveles
padėklai, taip sakant.
Iš apačios On Up, pavyzdžiui, kad kiekvienas, kad gauna įdėti kamino dėklas atstovauja
funkcija, kuri šiuo metu vadinama.
Turite klausimų?
Taigi, kaip apie - leiskite man pabandyti užduoti klausimą.
Aš nuolat gadinti, bet dabar it's - you've visi matė berniuko veidą.
Taigi, mes grįžti prie to.
>> Taigi, leiskite man užduoti klausimą čia.
Leiskite man supaprastinti šį atgal, kas buvo prieš kai kurie iš mūsų anksčiau Q & A
Ir faktas, kad prieaugis turi atvirą skliaustų, int numeris, uždarytas
skliausteliuose.
Ką int numeris?
[Nesigirdi]
David J. Malan: argumentas.
Gerai, bet koks argumentas?
[Nesigirdi]
David J. Malan: Atsiprašau, kas tai?
SPEAKER 3: Kažkas jums perduoti.
David J. Malan: Gerai.
Kad kažkas, kad jums perduoti.
Ir apskritai, tai tik įėjimo.
Jei rašote funkciją ir šią funkciją tikslą gyvenime yra padaryti
kažką šiek tiek skiriasi kiekvieną kartą, kai jį naudoti, tada vienintelis būdas
, kad taip atsitiktų iš tikrųjų atrodytų, kad suteikti jai įvesties taip, kad ji
gali daryti kažką kitą, kad įvesties kiekvieną kartą.
>> Taigi, jums reikia nurodyti du dalykus, kai funkcija trunka įėjimai.
Jums reikia nurodyti vardą, kurį norite suteikti šiam pirkimo, vien tik
savo patogumui, kad jūs galite kreiptis į jį į funkciją, kad jūs
patys rašote, kaip aš čia 32 eilutėje.
Bet jūs taip pat reikia nurodyti jo tipą, nes C yra programavimo kalba
, kad tiesiog reikia
kad jei norite kintamąjį, turite pasakyti kompiuterio
duomenų tipas, tai yra,
didele dalimi taip, kad jis žino, kiek bitų
skirti tą kintamąjį.
Nes tai galėtų būti šešių
Atsiprašome, jis nebus šešių.
Tai gali būti 16.
Jis gali būti 8.
Tai gali būti 32, net 64.
Bet kompiuteris turi žinoti.
Dabar kairėje pusėje int yra kas, priešingai?
[Nesigirdi]
David J. Malan: Kas tai?
[Nesigirdi]
David J. Malan: funkcijos ir, konkrečiau,
savo produkcijos rūšis.
Į dešinę.
Taigi, o skliausteliuose dalykas atstovauja jo indėlis, jei tokių yra,
dalykas, į kairę savo produkciją.
Ir šiuo atveju, prieaugio, matyt, grąžina int.
Ir taip Žiniasklaida yra grįžimo tipo šios funkcijos.
>> Ką tai reiškia grįžti?
Pažodžiui, galite naudoti raktažodžių grąžą.
Ir tada, jei tai, ką esate grįžta į raktažodį dešinėje
sveikasis skaičius, tai yra iš tikrųjų atitinka su tuo, kas buvo žadėta.
Tu negali padaryti kažką panašaus į tai -
Sveikas, pasauli -
, nes tai yra eilutė.
Akivaizdu, kad tai yra ne sveikasis skaičius.
Taigi trumpai tariant, ši našta yra tikrai mums, programuotojas, tiksliau kaip
ką mes grįžti ir tada iš tikrųjų eiti apie grįžimą.
Ir paskui tad aišku, kontekstas -
štai jis vėl.
Kontekstas -
didelis siurprizas ateina vos akimirką.
Kontekstas čia dabar, dar kartą, kad jūsų kompiuterio atminties
Gigabyte du gigabaitai, nesvarbu.
Gal tai daugiau.
Gal tai mažiau.
Bet kompiuteris tai mato kaip skirtingus skirsnius.
Kažkas ten.
Kažkas, eina ten.
Įvairūs stuff eina per vidurį.
Ir šiandien mes tiesiog pradėti pasakoti šią istoriją.
>> Bet mes grįžti į šios laikui bėgant.
Nes dabar, mes tikrai rūpi tik atminties gabalas teksto segmentas
nes, kad tik nuliais ir tuos,
kad Apsukite metalinis garsas išvedamas.
Taigi, kai jūs paleisti komandą kaip a.out klaviatūra, ar jums dvigubai
spustelėkite piktogramą, Mac OS ar Windows, jūsų programa pakrautas nuo jūsų kietajame
vairuoti į RAM.
Ir tai plopped kompiuterio RAM viršuje, taip sakant.
Dabar Tuo tarpu, kaip jūsų programa pradeda veikti ir pagrindinis iškviečiamas
programa, kurią parašė arba programa Microsoft ar Apple rašė, bet kuri jos
vietos kintamieji galų gale ten jūsų kompiuterio atmintyje apačioje.
Tačiau, jei pagrindinis ragina kitą funkciją, kad pati kintamuosius arba
argumentai, jie galų gale virš jo.
Ir jei, kad funkcija ragina kažką, jie galų gale virš jo,
virš jo, virš jo.
Ir tik vieną kartą funkcija atliekama vykdant veikia padėklai krūvą, todėl
kalbėti, pradeda gauti mažesnes.
Ir tai, ką tada trumpai tariant, paaiškina, kodėl, kai skambinate kubas -
ar jūs vadinate prieaugis -
jūs einančios vertės kopiją.
Ir ką tai reiškia pictorially yra, kad jūs tiesiog raštu
kitą atminties dalis numeris 1, keičiant, kad 1 iki 2, tuo atveju,
prieaugis -
arba iki 8 Kubo atveju -
ir tada mesti, kad atmintis ne kuo greičiau prieaugio ar kubelių
funkcija grąžina.
>> Klausimas.
[Nesigirdi]
David J. Malan: Kur - visuotiniai kintamieji yra saugomi, kas
dabar vadinamas inicializuoti duomenų ar niezainicjowanymi duomenų.
Skirtumas yra, jei turite pasaulinį kintamąjį ir priskirti ją
nedelsiant lygybės simboliu vertė, baigiasi viršuje.
Ir jei jūs tiesiog pasakyti int x kabliataškį be vertės, ji galų gale šiek tiek
mažesnis RAM tiesiog pagal susitarimą.
Kiti klausimai.
Gerai.
>> Taigi šį paveiksliuką grįš, kaip mes gauti daugiau galingas, su tuo, ką mes galime padaryti
su kompiuteriu.
Bet dabar, galime turėti trumpą intro kriptografija, tam tikros rūšies
kriptografija, tai nepadeda išspręsti visų pasaulio problemų, tačiau spręsti
kai kurie iš jų.
Šiuo atveju čia, mes turime kažką vadinama paslaptis rakto kriptografija.
Ir slapto rakto kriptografija, kaip rodo pavadinimas, kilęs jos saugumą
nuo paslaptis.
Taigi, pavyzdžiui, jei esate pradinėje mokykloje ir jūs artimųjų
maža paslaptis meilės laišką esate smulkinimo berniukas ar mergaitė - jei
norėjo praeiti, kad per auditoriją, jūs tikriausiai ne rašyti
tokia pastaba anglų kalba, arba kokia jūsų gimtoji kalba, o, jūs
gali užšifruoti ją.
Arba galite tiesiog nusiųsti jiems tekstinį pranešimą šių dienų.
, Bet jūs iš tiesų gali perduoti jiems pastabą visoje klasėje.
Ir tai padaryti saugiai, taip, kad jūsų draugai ir mokytojų
nežinau, ką rašote, jums gali sugalvoti gana paprasta
Algoritmas -
jauna, nors jums gali būti
tiesiog peštynės žodžius.
Taigi vietoj raštu, jums gali rašyti B. Vietoj to, B, jums gali rašyti
C. Vietoj C, jums gali rašyti D, ir tt.
Ar galima sugalvoti sudėtingesnį raidžių vertimo
skirtingomis raidėmis.
Bet laimikis berniukas ar mergaitė, kam jūs siunčiate šią pastabą reikia
kažką sužinoti.
O tai, ką, be abejo?
Pavyzdžiui, kas jūsų slaptas.
, Pavyzdžiui, kas yra tai, kad tarp AS ir pusryčių ir Cs ir DS žemėlapių?
Tai tiesiog pridedant vieną, taip sakant, kiekvienas iš raidžių pereiti nuo
A į B, B C?
Tai yra sudėtingesnis nei tas?
Kad jūs ir jūsų traiškyti reikia turėti šį slaptą informaciją.
Bet ten rūšies Catch-22 čia.
Jei tai yra pirmą kartą, jūs siunčiate šią meilės laišką per
klasė, kaip tai, kad berniukas ar mergaitė žinoti, kas paslaptis net?
Taigi paslaptis rakto kriptografija neišsprendžia visų pasaulio problemas.
Ir yra iš tikrųjų santykiai, kad mes grįžti į link
semestro pabaiga.
>> Be to, nė vienas iš mūsų tikriausiai kada nors išsiuntė -
panašiai, daugelis iš mūsų nežino, ką nors, kad dirba, pavyzdžiui,
Amazon.com.
Ir dar, daugelis iš mūsų tikriausiai nusipirko stuff Amazon.com.
Ir mes buvo mokomi daryti prielaidą, kad šių e-komercija
sandoriai yra saugūs.
Tiesa?
URL tikriausiai sako https.
Yra gal kvailas mažai spynos piktograma kažkur.
Kriptografijos rūšis yra keletas apsaugoti savo kredito kortelės informaciją
tarp jūsų ir "Amazon.com".
Ir dar, jei kriptografija apima žinant kažkokią paslaptį, ir dar aš ne
žinote kas nors, "Amazon", ir aš tikrai nesudėti bet kokio pobūdžio
paslaptis su kuo nors "Amazon", kaip mano kompiuteryje ar mano naršyklė tai darote?
Na, paaiškėja, kad kitų rūšių kriptografija iš viso, kad išspręsti
kita problema.
Tačiau šiandien, mes sutelkti dėmesį į paprasta, kur jūs galite pasirūpinti,
iš anksto žino kažkokią paslaptį, kaip plius 1 ar kai tarp AS ir pusryčių žemėlapių.
>> Ir kriptografijos procesas paprastai apima.
Turite kokių nors paprasto teksto, pavaizduotas čia ne į kairę.
Jį paleisti per kažkokį algoritmą ar procedūros
šifravimo.
Gal tai tiesiog tampa B, B tampa C. Ir tada jūs galų gale su
Šifro tekstą.
Tuo tarpu, kai Jūsų sutraiškyti gauna slaptą dėmesį, jis ar ji turi tada
iššifruoti ją visuotinai atbulinės eigos kad algoritmas, siekiant gauti
grąžina paprastą tekstą.
Dabar yra fiziniai įsikūnijimai.
Pavyzdžiui, tai yra šiek tiek paslaptis dekoderis žiedas.
Ir tai yra ta prasme, kad dviejų surenka čia žiedas.
Į lauko periferijoje šis dalykas, ten raidės nuo a iki z,
nors jie atsitiktine tvarka.
Ir į vidų, yra iš tikrųjų kai kuriuos skaičius, pavyzdžiui, kad su šiuo
žiedas, galite natūra ruožtu ne, bet ne viduje, kad į liniją iki
numeriai su raidėmis.
Ir klipo esate apie norėdami pamatyti - kai kurie iš jų, tu gali matyti 24/7
aplink Kalėdų sezoną iš filmo vadinamas Kalėdų istorija.
Jūs pamatysite, kad mažai Ralphie buvo taip nori išsiaiškinti, kas šiek tiek nenustatytų autorių teisių
Annie slaptą žinutę, kuri buvo perduota, manau, jam buvo
skaitinių pranešimų formos serijos lauką.
Ir jums teko sukaupti visus mažai korteles, kad atėjo
grūdų lauke.
Jūs turėjote paštu.
Jūs turėjo grįžti slaptą dekoderis žiedą, kad jūs galite pagaliau išsiaiškinti
, kas kartografavimo tarp raidžių ir skaičių,
arba raidėmis ir raidžių.
Taigi aš jums šį trumpą įrašą iš Kalėdų istorija motyvuoti pset 2 ir
mūsų diskusija, vienu metu, masyvų.
Taigi čia mes turime Ralphie.
>> [VIDEO PLAYBACK]
Būk žinoma, kad visi kartu ir kiekvienas,, kad Robertas Parkeris skiriamas
Little Orphan Annie Secret Circle narys ir turi teisę į visas
juo pagyrimu ir nauda, ​​atsiradę.
Pasirašyta Mažasis Retųjų Annie.
Parašu, Pierre Andre!
Rašalu!
Pagyrimu ir nauda, ​​jau po devynių metų.
Nagi, patekti į ją.
Man nereikia, kad informacija apie kontrabandininkus ir piratai džiazą.
Klausyti rytoj vakare baigiamajame nuotykius Juodosios
Pirate Ship.
Dabar atėjo laikas Annie slaptą žinutę, jums prisijungę
Slaptojo rato.
Atminkite, kad vaikai, tik nariai Annie Secret Circle gali dekoduoti
Annie paslaptis pranešimą.
Atminkite, Annie priklausomai nuo jūsų.
Nustatykite savo smeigtukai B2.
Čia yra pranešimas.
12, 11 -
-Aš esu mano pirmasis slapto susitikimo metu.
-14, 11, 18, 16 -
-Pierre buvo puikia garso vakarą.
Galėčiau pasakyti, kad vakaro žinia buvo tikrai svarbu.
-3, 25.
Štai žinutė iš Annie pati.
Atminkite, kad nereikia niekam.
-90 Sekundės vėliau, aš tik kambario namas, kur berniukas iš devynių
gali sėdėti privatumo ir iššifruoti.
Aha, B. nuėjau į kitą.
E. Pirmasis žodis yra.
S. Tai buvo dar lengviau.
U.
-Oh, come on, Ralphie.
Aš turiu eiti.
-I'll būti, nustatančio teisę, ma.
-Gee nusišvilpti.
-T, O. Būtinai.
Būtinai į tai, ką?
Koks buvo Mažasis Retųjų Annie bando pasakyti?
Būtinai į tai, ką?
Ralphie!
Randy gavo eiti.
Ar jūs, prašome išeiti?
-Viskas gerai, ma.
Aš būsiu tiesiai iš.
-Man buvo vis arčiau.
Įtampa buvo baisi.
Kokia ji buvo?
Planetos likimas gali pakabinti ant plauko.
Ralphie!
Randy turiu eiti.
-I'll būti tiesiai iš verkti garsiai.
Gee, beveik nėra.
Mano pirštai skraidyti.
Mano protas buvo plieno spąstai.
Kiekvienas porų vibravo.
Tai buvo beveik skaidrus.
Taip, taip, taip, taip.
Būtinai gerti Ovaltine.
Ovaltine?
Prastas komercinis?
Kalės vaike.
[END VIDEO PLAYBACK]
>> David J. Malan: Taigi mes turime kriptografija.
Taigi, kaip į kompiuterį, mes galime eiti apie įgyvendinimo ar
atstovaujanti dalykų kaip šis?
Na, mes turime būdas išreikšti save šiek tiek lanksčiau nei
mūsų kintamieji, iki šiol leido.
Mes turėjome int.
Mes turėjome simbolių.
Mes turėjome float ir double, ir keletas kitų.
Bet tie, kurie individualūs atminties vienetų, kurie nėra tikrai leidžia mums
išreikšti dalykų, pavyzdžiui, žodžių ir sakinių ir frazių.
Iš tiesų, mes tokių dalykų eilutes.
Bet mes pažadėjome, kad tai tikrai tik į CS50 supaprastinimas
biblioteka, kad mes, ketinantys žievelės atgal.
>> Ir todėl pradėkime tai padaryti čia.
Leiskite man eiti į priekį ir atverti failą -
visi iš šių failų yra kaip įprasta internete
vadinamas array.c išspręsti problemą, nesusijusių su stygos, bet kad dažai
vaizdas čia, kaip mes galime naudoti kažką vadinama masyvą.
Masyvas yra duomenų tipas.
Tai tipo kintama, rūšių, kad turi daug mažesnių duomenų tipai
viduje ji atgal atgal atgal atgal.
Taigi, pavyzdžiui, jei norime rašyti maža programa, kuri suteikia jums jūsų
viktorina vidutiniškai kaip 50 metu, tai turi dvi viktorinos, galima labai lengvai
rašyti šią programą - net kai praėjusią savaitę medžiagos
, naudojant GetInt ir kintamųjų pora.
Žiniasklaida quiz1, int quiz2, ir tai gana paprasta.
Tai galbūt 10, 20 eilučių kodo, max, siekiant įgyvendinti programą, kuri prašo
vartotojo dvi viktorinų balai, ir tada apskaičiuoja vidurkį įtraukdami juos
, dalijant iš dviejų, ir tada spausdinti rezultatus.
Mes turbūt galėtų padaryti, kad gana lengvai, dabar, po
keletas minučių skaičius.
>> Tačiau problema yra ta, kad tarkime, kad 50 turėjo tris viktorinos ar keturių.
Tarkime, kad jūs norite naudoti tą pačią programą klasėje, kuris turėjo
per savaitę viktorinos.
Galvoti apie tai grupei, kuri buvo per savaitę viktorinos.
Jei yra, pavyzdžiui, 16 ar savaites per semestrą, dabar jūs turite 16 kintamųjų -
int quiz1, int quiz2, int quiz3, int quiz4.
Kaip tik jūs pradėsite matyti šį atleidimo iš darbo, tai kopijuoti ir įklijuoti
kodo, ji turėtų pradėti, kad norite, kad buvo geresnis būdas.
Ir laimei, nes masyvų, yra.
Todėl galime tai padaryti.
Pirma, leiskite man pristatyti labai paprastas dalykas, kad mes iki šiol nėra naudojamas,
bet pamatysite jį retkarčiais kodą.
Tai yra tai, kas paprastai vadinama konstanta.
Taigi, tai ta prasme, kad ši vertė niekada keičia konstanta.
Žmogaus konvencija kuriant konstanta yra naudoti visą sumą
raidės, tik todėl, kad ji tikrai išsiskiria iš savo kodą.
Ir konkrečių raktinių žodžių, kad jūs naudojate, C # define.
Taigi, jei tu sakai # define, tada tarpą, tada žodį, kurį norite naudoti
The Constant pavadinimą, o tada konstantos reikšmę.
Taigi pranešimo, tai skiriasi nuo priskiriant kažką kintamojo.
Nėra jokios lygybės ženklo.
Nėra jokios kabliataškis.
Tai yra tai, kas paprastai žinomas kaip Preprocessor direktyvos, tačiau daugiau apie
kad kitą kartą.
>> Nes dabar, tai sukuria nekintanti vertė vadinama viktorinos kurios faktinės
skaitinė vertė yra 2.
Visur, kur matyti viktorinomis, viktorinos, viktorinos per šį failą, kad
tik numeris 2.
Dabar, jeigu aš pažvelgti pagrindinis dabar pažiūrėkime, kaip tai veikia.
Iš pradžių, atrodo, šiek tiek paslaptingas.
Bet visa tai pirmąją savaitę stuff.
Užduoti vartotojo klasėms.
Kaip mes tai darome?
Na, 22 eilutė -
tai tikrai sultingas dalis -
Aš pareiškiu, apyvartinės lėšos, bet ne tik vienas float.
Aš skelbiantis, veikiau slankaus kablelio reikšmių masyvą.
Šis kintamasis bus vadinamas klasių, kaip teigiama čia.
Bet tik naujos sintaksės gabalas, tada šie laužtiniuose skliaustuose, tai
, kad aš sakė, plūdės, rangai ir skliaustai atidaromi ir tada numeris.
Pranešimas, jei tai yra pastovus, tai kaip mes tai padarė.
Tai reiškia, hey kompiuteris, duok man dvi plūdės, ir tegul kartu skambinti
jų rūšys.
Tai priešingai yra daug labiau varginantis procesas kaip.
Plūdės Grade1, plūduriuoti Grade2 ir kt.
Taigi pasirinkimas leidžia mums įgyvendinti šią idėją, bet daug mažiau messily,
toks būdas, kad mes galime parašyti vieną eilutę kodo, o ne, tarkim, už 16 16
savaičių semestras.
Taigi, aš nenorėjau sunkiai kodas 2, nes jei jūs manote apie tai dabar
logiškai - tarkime, kitais metais vietoj CS50 pokyčiai 3 viktorinos.
Ir aš turėjo skaitmeniu "2".
Aš turėjau skaitmeniu "2".
Jis tampa labai nuobodus ir labai lengvai susukti ir netyčia pakeisti
viena vertė 3 ir praleisti šiek tiek kitą vertę 2.
Todėl aš, o ne abstraktus šį toli ir naudoti ši konstanta, kad, kaip savo
pavadinimas rodo, kad niekada nekeičia.
Ir dabar, nesvarbu, ar mes turime skirtingas viktorinos šių metų pabaigoje arba kitą,
tereikia jį pakeisti vienoje vietoje, čia viršuje.
>> Taigi, kad visi konstanta.
Tuo tarpu naujas konceptualus bruožas yra tai, kad masyvo.
Taigi laužtiniuose skliaustuose duoti man tai daug plūdės ir leidžia man kartu
skambinti jiems pažymiai čia.
Taigi, dabar galime pamatyti, ką aš ruošiuosi daryti.
Čia 24 eilutėje yra už linijos pradžia.
Tai tikrai nieko išgalvotas.
Tai tiesiog naudojant viktorinos vietoj sunkiai užkoduotų skaičių.
Bet ten nieko intelektualiai skiriasi iš praeitą savaitę.
Tai tik printf.
Taigi printf ("viktorina skaičius% d iš% d"), nes aš tiesiog norite spausdinti, duok man viktorina
vienas iš dviejų ir tada du dviejų.
Taigi tai yra tik estetinis dalykas.
Bet įdomiausia dalis dabar yra 27 eilutėje.
Siekiant užpildyti vieną iš dviejų vietos rezervavimo ženklai su slankaus kablelio
vertė, galite vėl naudoti skliaustus.
Šiuo atveju, aš naudoju, nes tai už linijos pradėjo su i lygus
kas vertė, matyt?
0.
>> Pirmajam iteracijos procesui šio ciklo, tai kaip nors, aš
tai parašiau kodą.
, Bet antrajame iteracijos šio ciklo, tai yra taip, tarsi aš
tai parašiau, mano kodas.
Bet faktas, kad aš naudoju kintamąjį yra puikus, nes, kaip ir pavadinimas
rodo, kad keičiant savo vertę ant kiekvieno iteracijos.
Taigi, aš užpildyti šio masyvo vienoje vietoje vienu metu.
Ką šis masyvas atrodo?
Na, priežastis, kodėl aš čia patraukė šį super paprastą stačiakampį ekrane
anksčiau buvo dėl šios priežasties.
Masyvas tik atminties riekė po kitos atminties riekė,
kitos atminties riekė, ir kt.
Taigi, jei mano masyvas yra 2 dydžio, šiuo atveju čia viskas, ką aš būtų padaryti
rašyti mano viktorinų balai, kaip čia.
Aš turiu 100 dėl šio vieno.
Ir tada aš gavau 99 dėl šio vieno.
Tada ši atmintis gali net būti naudojamas, nes aš tik paprašė
kompiuteris masyvo dydis 2.
Šios kvadratų yra vis dar ten.
Tiesa?
Jūs vis dar turite 2 GB RAM, net jei jūs tik
dvi plūdės yra pakibusios prašo.
Taigi už masyvų idėja, kad kompiuteris tik mano atminties riekė
ir tada paskirsto mažesnius gabalus atgal atgal atgal atgal.
Ir taip, kad visas masyvas.
Tai przyległa atminties riekė, kurio viduje galima įdėti daiktus.
>> Dabar tai atsitinka tada padaryti tik šiek tiek nuobodu aritmetiką.
Jei aš slinkti žemyn čia, tai kur aš tada pakartoti per masyvo.
Aš sugalvoti visų masyvo reikšmių apibendrinimo.
Ir tada aš naudoti apvalios funkciją Čia iš tikrųjų
Apibendrinant galima suskirstyti pagal viktorinos.
Bet leiskite man pamojuoti savo jėgas, kad pakankamai aritmetinis nes dabar kaip rūšiuoti.
Bet visa tai daro už mane galiausiai apskaičiuojant vidurkį.
Taigi, pirmiausia viktorina plius antros viktorina padalinti iš 2, ir tada spausdinimas
ji iš int.
>> Bet tegul dabar perėjimas į kitą, pavyzdžiui, vadinamas String1
dažai panašų vaizdą, bet naudojant styginiams.
Leiskite man eiti į priekį ir supaprastinti tai vos akimirką.
Ir atleisk dabar įdubimas.
Šiame pavyzdyje 19 eilutėje skelbimą, man nuo vartotojo eilutę.
, Bet pastebėsite, ką aš kitą daro linijų 22 pirmyn.
Aš tikrai iteravimu nuo i iki ir tai yra naujas triukas -
strlen, eilutės ilgis.
Tai funkcija, kuri ateina su C, kad, jei pereisite eilutę, jis pasakoja
, kiek simbolių yra toje eilutėje.
Štai ir viskas.
Tai, kad ji strlen vietoj eilutės ilgis yra tik todėl, kad
daugiau glausta.
Prieš 30 metų, žmonės mėgo rašyti dalykus trumpai, kaip įmanoma.
Taigi, mes čia laikyti šią konvenciją.
i + + tiesiog reiškia prieaugio i kiekvienos iteracijos.
Ir dabar pastebėti, kuris yra tikrai įdomus.
Taigi, 24 eilutėje, sakau kompiuterį, duok man ženklą, 8
bitai, ir vadina jį c.
Bet kas tai yra dešinėje pusėje, sakydamas?
Anglų kalba, ką tai?
[Nesigirdi]
David J. Malan: Būtent.
Duok man pirmąją raidę masyvo.
Arba apskritai, duok man i-ojo požymio masyvo.
Ir suvokti, labai svarbu, kad dabar, kaip kompiuterių specialistų, mes iš tikrųjų
skaičiuoti nuo 0.
Jūs neturite savo nuožiūra dabar pradėti tai daryti.
Dabar jūs turite elgtis pagal kompiuterio lūkesčius ir
skaičiuojami nuo nulio, nes [0] bus pirmas
veikėjas eilutę.
[1] bus antras.
[2] bus trečią ir tt.
Taigi šios programos, jei aš kompiliuoti - tai yra, dar kartą, String1.
>> Todėl įsitikinkite, String1.
Ir dabar aš paleisti String1 mano terminalo lange.
Jis laukia įvedimo, todėl aš ruošiuosi rašyti, tarkim, Dovydo.
Įveskite.
Ir dabar jis spausdina Dovydui visa skirtingomis linijomis, nes
pastebėti, ką aš darau.
Aš spausdinti vieną simbolį vienu metu.
Dabar mes ne eiti į smulkmenas šiandien apie tai.
Bet aš ištrinti akimirką prieš šio patikrinimo čia.
It turns out, kad jei vartotojas yra netinkamas elgesys, rungimosi, arba tiesiog
supainioti, jūs iš tikrųjų galite nepateikia kai kurių ilgio eilutę.
Jei paspausite neteisingą mygtuką ant klaviatūros, jūs galite suteikti
ne eilutė ne visi.
Arba jei esate kenksminga, galite bandyti įterpti Gigabyte vertės
esė užpildyti šią eilutę.
Ir jei kompiuteris veikia iš atminties, paaiškėja, kad mes ketiname
grįžti šią ypatingą vertę, vadinama null.
Taigi dabar, tiesiog žinau, kad ten tai ypatingą vertę, vadinama null, kad
leis mums patikrinti, kai mes iš atminties, be kitų dalykų.
>> Bet jei aš atverti dabar String2, pastebėti vienas skirtumas čia.
Pranešimas vienas skirtumas čia String2
Su String2, for ciklas yra šiek tiek kitoks.
Leiskite man ištrinti nulls, kad galėtume kalbėti apie tuos, kitą kartą.
Bet kas skiriasi apie už linijos šį kartą?
Ir aš galiu grįžti į ankstesniame pavyzdyje.
Taigi, kad 2 versija.
Tai yra versija 1.
Vienas, du, vienas du.
Taigi strlen skambutis yra kur?
Tai pirmosios dalies už linijos.
Bet mintis, kodėl aš darau tai?
Taip.
[Nesigirdi]
David J. Malan: Taigi mes neturime skambinti funkcija kiekvieną kartą.
Tiksliai.
Atšaukti iš kilpos, kad jie super paprasta, kai jūs tarsi
suprasti, kad tai yra iniciacijos
sąlyga, ir atnaujintame variante.
Problema yra tai, kad sąlyga vyksta kas
pasikartojančių kilpą.
Ir taip, šiame pavyzdyje čia, kas yra blogai, apie tai,
, kad tai yra mano būklė?
Jūs skambinate strlen vėl ir vėl ir vėl.
Bet kai aš įvedėte Dovydu, tos eilutės ilgis yra penki.
Ir jis nesiruošia keisti iteracijos kiekvieną kilpą, nes
eilutė yra dar D-V I-D. Taigi tai, kas taps užuomina
vis svarbesnė idėja žinomas kaip dizaino sprendimą, kur - tik ne
kad kompiuteris nereikalingą darbą.
>> Dabar tik, kaip nukniaukti Peržiūrėti pset 2, pset 2 standartinis leidimas
iššūkis jums, kad iš tikrųjų įgyvendinti kai šifrai skaičių, kai kurie
šifravimo algoritmų, todėl, kad jūs galite ir užšifruoti ir iššifruoti
slaptas žinutes, panašiai kaip viena Ralphie iššifruoti.
Hacker leidimas pset 2, mes ketiname eiti šiek tiek toliau.
Mes ketiname perduoti failą iš faktinė kompiuterių sistema, kuri yra
visa krūva vardus ir faktiškai saugiame slaptažodžius, ir mūsų uždavinys
hacker leidimas bus nulaužti tuos slaptažodžius ir skaičius
, kas kriptografijos arba kas paslaptis buvo naudojamas iš tikrųjų
sukurti šiuos slaptažodžius.
Ir mes ketiname tai padaryti naudojant naują funkciją, C, kad aš duosiu
jūs tiesiog demo, žinomas kaip komandinės eilutės argumentai.
>> Taigi, it turns out, kaip kai kurie iš jūsų gali matyti skirsnyje ar vadovėlių,
pagrindinis ne visada turi negaliojančiu skliausteliuose.
Pasirodo, kad pagrindinis taip pat gali būti parašyta, kaip tai, su dviem argumentais,
argc ir argv, kur argc žodžių skaičius, kad įvedate po
programos pavadinimas komandinę eilutę.
Ir argv yra tikrasis žodžiai.
Ir kaip laužtiniuose skliaustuose ten rodo, argv, matyt, masyvas.
Tai bus po po atminties eilutę eilutę eilutę.
Taigi, ką mes ketiname, kad būtų galima tai padaryti, pradedant pset 2,
kažką panašaus į tai.
Jei aš darau argv1, kuri yra pavyzdys, mes grįžti į pirmadienį, ir paleisti
tai, pastebėsite, kad ji neatrodo, kad daryti ką nors dar.
Jis tiesiog spausdina savo pavadinimą.
Bet jei aš pasakysiu sudie klasė, pastaboje (įspėjime), kad ši programa akivaizdžiai kartojasi
per kiekvieną iš žodžių, kurie buvo įvesti komandinėje eilutėje.
Ir būdas, kuriuo mes prieiti prie tariant, kad vartotojas turi
įvedėte komandinėje eilutėje keičiant pagrindinė, prasideda šį savaitgalį, nuo int
main (void) int main (argc, argv).
Ir tokiu būdu gims komandinės eilutės argumentai.
Ir kai jūs gaunate tikrai sudėtingas, jums bus suteikta galimybė rašyti
tikrai trippy programas, pavyzdžiui, šį vieną čia, kuris eina virš ir už
kai funkcionalumo mes padarėme iki šiol, bet gana galingas.
>> Taigi, mes palikti tai ekrane.
Ir mes matome, pirmadienį.