>> SPEAKER 1: Hi kulħadd.
Aħna ser tibda.
I think nies għadhom għaddejjin li jkun filtrar.
Iżda fl-interess ta 'żmien, sabiex inkunu nistgħu nikseb inti guys minn hawn fil-ħin,
aħna qed tmur biex tibda.
Allura merħba għall-CS50 Quiz 0 reviżjoni.
Għal dawk minnkom li ma induna għadhom, għandek xi mistoqsija nhar l-Erbgħa.
Woo-hoo.
>> Jekk int ma bdew jistudjaw jew għadhom ma induna li dan s'issa ma teżisti,
kwizzijiet passat u l-informazzjoni kollha dwar kwizz tiegħek huma fuq cs50.net/quizzes.
Hemm xi għalf pretty tajba fuq hemmhekk, kwizzijiet passat mill-aħħar 10
snin kif ukoll informazzjoni dwar dan il-kwizz u suġġetti
li se jkun kopert.
Mela ejja tibda.
>> Allura inti guys tista 'tiftakar, l-ewwel jum ta 'klassi David kellhom dawk lampi fuq.
Allura essenzjalment, dak kollu li jmur fuq taħt il-barnuża ta 'kompjuter hija
isir fil binarja.
Binarju ifisser dak li ħsejjes simili, 0 u 1 tal-.
Din għandha żewġ valuri li jistgħu jkunu rappreżentati.
>> Hekk biss bħal fl-ewwel jum tat-taqsima meta David mixgħula dawl
bozza jirrappreżentaw fuq, jew 1, kompjuter tagħna jifhem binarju bħala 0 u
1, il-fuq jew barra.
Għeruq ta 'Binarju.
Kull post huwa rappreżentat fil-bażi tnejn.
Allura inti żid 2 għall-0 għat- 1 għall-2-triq kollha up.
>> Biex jiġi kkalkulat dak binarja tiegħek huwa li informazzjoni, inti biss issegwi din l-ekwazzjoni
Ħaġa tip.
Jekk għandek 1 fi kwalunkwe ta 'dawk il-postijiet, inti immoltiplika lilha bi kwalunkwe
jibbażaw huwa fil, żid it up, u ikollok l-deċimali.
Allura dan huwa kif inti għadd sa 5 fil-binarju.
Eżatt bħal dak li aħna kienu qed jagħmlu fuq il- aħħar slide, dan huwa kif inti
jirrappreżentaw 1 sa 5.
>> Bl-istess mod, bħad inti tista 'żżid u naqqas fir deċimali jew bażi 10, jew
verament xi bażi, fuq jistgħu jżidu u naqqas fil binarja.
Eżattament dak li għandek tistenna meta inti żid it-tnejn up, jekk ikun ugwali akbar
minn 1, qed iġġorr 1, jagħmilha 0, u jagħmlu ż-żieda li mod, biss
bħal inti tistenna b'informazzjoni regolari informazzjoni jew kwalunkwe bażi oħra.
Kessaħ.
>> So bħal I said qabel, dak kollu li tmur fuq taħt il-barnuża tal-kompjuter tagħna
isir 0 u 1 ta, jew binarja.
Allura kif nistgħu jesprimu, per eżempju, ittri, jew numri, jew karattri?
U r-risposta għal din hija ASCII.
>> ASCII huwa mapping bejn karattri li aħna normalment tara fil-
Lingwa Ingliża bħal A, il B, Ċ, jtennu, daxxijiet, u
xi ħaġa bħal dik.
U mapep li għal valur ASCII.
Valur ASCII huwa biss numru li tista 'tinftiehem mill-kompjuter tiegħek.
U bħad inti tista 'tagħmel żieda u tnaqqis bin-numri, inti tista 'tagħmel
minnhom mal-valuri ASCII.
>> Allura f'dan l-eżempju, dak dan se jistampa?
Yeah, hekk biss A ispazju B ispazju ispazju C D. Fejn ma ġurdien tiegħi tmur?
Avviż inti tista tiddefinixxi int f'65.
U meta inti print li bl-użu mija C, dan ser tinterpreta dan bħala
karattru u se jistampa A.
>> Bl-istess mod, inti tista 'tiddikjara bħala char.
U meta inti ipprintjaha użu mija C, dan ser tinterpreta li bħala
mija D. U bħad inti tista 'żżid numru, inti tista 'żżid karattri huma
Valuri ASCII, f'dan il-każ.
>> Allura pointer ftit għal kulħadd.
5, bħala string, ma attwalment ekwivalenti għal 5.
Allura kif tista aħna jikkonvertu l- string 5 għall-eqreb numru sħiħ 5?
Xi ideat?
Yeah.
>> Mela jekk ikollna 5 bħala string, nistgħu naqqas 0.
U li ser tagħtina 5.
U bl-istess mod, jekk ikollna 5 bħala numru sħiħ, żid li biex l-sekwenza 0.
U li jagħtina l-string 5.
Kessaħ.
>> Issa, recall lura biex jagħti konferenza wieħed fejn tkellimna dwar algoritmi.
Allura kif nistgħu fil-fatt tixtieq kompjuter li tagħmel affarijiet interessanti?
You know, sempliċement tiżdied u bit-tnaqqis numri u l-istampar affarijiet out mhix
dik eċċitanti.
Normalment, irridu kompjuter tagħna li iwettaq xi tip ta 'algoritmu.
Xi ħaġa ftit aktar kumpless milli sempliċiment aritmetika sempliċi.
>> An algoritmu huwa biss pass sett pass ta 'istruzzjonijiet għall kif iwettqu
a task-- ċerta
bħad riċetta.
Inti tista 'tiftakar l-ewwel jum ta' klassi meta David kien us għadd kamra
ta 'nies u kif ħafna nies kienu fil-kamra.
Inti tista 'tintuża biex għadd wieħed wieħed.
1, 2, 3, 4.
F'dak il-każ, algoritmu żmien lineari.
>> Iżda David introduċiet algoritmu għall inti jgħoddu l-poplu fil-kamra
fejn kulħadd stands up, inti tgħidli tiegħek numru lil persuna oħra, inżid li
numru up, u persuna waħda tiltaqa stabbiliti.
U inti jirrepetu dak.
C'est tip wieħed ta 'algoritmu.
Nistgħu tanalizza l kif effiċjenti algoriżmu tkun ibbażata fuq huwa run time.
Iżda aħna ser nitkellmu ftit aktar dwar dan aktar tard.
>> Allura algoritmi kollha jistgħu wkoll tkun miktuba bl pseudocode.
Pseudocode huwa biss bl-Ingliż bħal sintassi użat biex jirrappreżentaw
lingwa ta 'programmar.
Per eżempju, jekk ridna li jitolbu lill-utent raden numru favorit tiegħi, aħna
jista 'jkollhom pseudocode bħala tali.
>> Get utenti raden.
Jekk il-raden hija korretta, jgħidulhom dawn qed korretta, inkella jgħidulhom
dawn mhux qed korretta.
U pseudocode huwa mod ta 'faċilment jirrappreżenta idea jew algoritmu.
Allura issa aħna tista 'tixtieq li attwalment jiktbu dan fil-lingwa li l-kompjuter
jista fehim.
Allura aħna tista 'tikteb pseudocode tagħna u jinterpretaw dan in-kodiċi sors.
>> S'issa, il-kodiċi sors għandhom jaderixxu għal ċertu sintassi ta
lingwa ta 'programmar.
U s'issa, fil CS50, konna kienu jużaw l-aktar c.
Allura dan jista 'jkun source code għall c.
Aktar tard fil-kors, inti lejl come f'kuntatt mal-programmazzjoni oħra
lingwi bħal PHP.
Jew jekk inti anki tieħu klassijiet oħra, inti tista 'tagħmel Java, Python, jew saħansitra OCML.
Iżda fil-lingwa program c tagħna, dan huwa kif nistgħu jikteb il-kodiċi sors għall
l-algoritmu pseudocode li I biss deskritt qabel.
>> Allura kif ma kompjuter tiegħek attwalment jifhmu li?
Like I said qabel, huwa biss verament jifhem żerijiet u dawk.
Allura kif ma jiksbu mis-sors kodiċi għal xi ħaġa li jista 'jkun
mifhum?
Well, aħna għandna xi ħaġa imsejħa kompilatur.
>> Jekk inti recall lura fil-maġġoranza tal tiegħek psets, kellek xi tip ta 'programm
miktuba fil-fajl dot c.
U allura inti tip make.
Allura dak li qed tagħmel tagħmel?
>> Tista 'tip make biex jikkompilaw tiegħek programm minħabba someone--
min kiteb sett p tiegħek; probabbilment David--
ħolqot make fajl.
U li tg jagħmlu tkun taf biex imexxu tiegħek kompilatur, imsejħa clang, li se
imbagħad jikkompilaw kodiċi sors tiegħek biex joġġezzjonaw kodiċi, li hija żerijiet u dawk
li l-kompjuter tiegħek jifhem.
Iżda ftit aktar tard, aħna se jmorru aktar fil-fond dwar kompilaturi.
>> Allura tfakkar pset 0, where-- iva, Għandek xi mistoqsija?
>> UDJENZA: [inaudible]?
>> SPEAKER 1: Iva.
Jien naħseb li attwalment għandhom ikunu online.
Yeah.
>> UDJENZA: Huwa simili [inaudible]?
>> SPEAKER 1: Mhuwiex.
Il huma fuq cs50.net/quizzes.
>> UDJENZA: kwizzijiet Slash, mmejla 2013, mmejla 0, u biss ikklikkja permezz
kwizzijiet 2013 u kwizz 0, tirrevedi slides taqsima.
>> SPEAKER 1: Yeah, hekk jekk inti guys tixtieq li pull it up u tħares lejn din fuq tiegħek
kompjuter stess, li l-multa wisq.
Jgħidu li għal darb'oħra.
>> UDJENZA: [inaudible].
>> SPEAKER 1: Yeah, [inaudible] hija l-varjabbli finta.
Oh, iva?
>> UDJENZA: [inaudible]?
>> SPEAKER 1: Ebda, strajks mhumiex fuq l-eżami.
Jiddispjacini, mistoqsija tagħha kien, kien strajkijiet dwar l-eżami.
U mhuwiex.
Allura pset 0, inti guys għandek kollha implimentati xi ħaġa jużaw scratch.
U aħna tgħallimna xi programmazzjoni bażika blokki tal-bini li jużaw scratch.
>> Mela ejja tagħti ħarsa lejn uħud ta 'dawn il-blokok tal-bini
li jiffurmaw program.
L-ewwel huwa espressjoni Boolean.
Espressjonijiet Boolean huma dawk u 0 tal-jew xi ħaġa li għandha
żewġ valuri possibbli.
F'dan il-każ, vera jew falza, fuq jew barra, u iva jew le.
Eżempju ta 'sempliċi, sempliċi ħafna, programm li juża Boolean
espressjoni up here.
>> Allura sabiex espressjonijiet Boolean għall jkun utli, għandna operaturi Boolean.
Dawn huma l-operaturi li jistgħu jintużaw li jqabblu ċerti valuri.
Allura aħna għandna u jew le ugwali għal, inqas minn jew ugwali għal, jew akbar minn
ugwali għal, u inqas minn jew akbar minn.
Iżda dawn l-operaturi mhumiex utli ħafna sakemm nistgħu jgħaqqdu minnhom fil
kondizzjonijiet.
>> Allura inti guys tista 'tiftakar mill-bidu u mill-p tiegħek settijiet li aħna
kellhom kundizzjonijiet.
Dawn huma, essenzjalment, bħall-frieket fil il-loġika tal-programm tiegħek li
tesegwixxi skond jekk kundizzjoni hija sodisfatta.
Allura wieħed mill-kundizzjonijiet li kellna użat ħafna drabi f'dan il-kors huwa l-
jekk, inkella, jekk, u kundizzjonijiet oħra.
>> Hawn eżempju ta 'kif inti tista 'tuża dik.
Ħadd ma jaf id-differenza bejn biss bl-użu jekk id-dikjarazzjonijiet kollha
il-mod stabbiliti versi jekk, inkella, jekk, u inkella flimkien?
Iva?
>> UDJENZA: [inaudible].
>> SPEAKER 1: Eżattament.
Mela jekk kelli jekk it-triq kollha din mod, anki jekk din il-kundizzjoni prospetti
vera, hija xorta se tkompli ittestjar it-tnejn li jmiss.
Billi, bi inkella 'jekk, l ħaġ'oħra dikjarazzjoni, jekk il-wieħed prospetti vera,
l-oħrajn mhumiex ittestjati.
Kwalunkwe mistoqsijiet dwar dan?
Kessaħ.
>> Allura inti tuża jekk-ieħor ta 'ħaddieħor dikjarazzjoni jekk inti taf li tista 'biss
tkun waħda ta 'dawn il-każijiet.
Allura aħna nafu jekk x huwa inqas minn 0, huwa żgur li mhux se tkun
akbar minn 0.
>> Sussegwentement, blokk ieħor bini li aħna tgħallimna huma loops.
Għandna tliet tipi ta 'loops.
Għal loops, filwaqt loops, u tagħmel waqt loops.
U ġeneralment, meta inti tiltaqa biex jiktbu xi ħaġa, inti għandek tiddeċiedi
liema mit-tliet inti tixtieq li tuża.
Allura kif nistgħu jiddeċiedi liema waħda?
>> Aħna ġeneralment jużaw għall loop jekk nafu kif ħafna drabi aħna rridu li jtenni
permezz xi ħaġa jew kif ħafna drabi irridu biex twettaq xogħol.
Aħna nużaw filwaqt loops jekk għandna bżonn xi kundizzjoni li jkun veru li jżomm running.
U nużaw tagħmel waqt simili ħafna għal filwaqt li, imma irridu kodiċi tagħna li jimxu fuq
inqas darba waħda.
>> So do filwaqt, dak kollu li huwa fil-do se dejjem jimxu mill-inqas darba.
Billi, bil-waqt, dan ma tista 'tmexxi fil-livelli kollha jekk il-
kundizzjoni mhijiex sodisfatta.
Kwalunkwe mistoqsijiet ma 'dak?
>> Allura struttura ta 'għall-loop.
You guys kollha raw dan.
You initialize dan.
Inti għandek xi tip ta 'kundizzjoni.
Għalhekk, per eżempju, nistgħu initialize bħala għall i egwali għal 0.
i huwa inqas minn 10.
U i ++.
Sempliċi ħafna wieħed li aħna ghamilt.
>> Għal loop waqt, bl-istess mod, inti għandek li jkollhom xi tip ta 'inizjalizzazzjoni,
xi tip ta 'kundizzjoni, u xi tip ta 'aġġornament.
Allura nistgħu jimplimentaw tagħna għall loop wkoll bħala loop waqt li jużaw dan.
U bl-istess mod ma 'do waqt loop, aħna jista 'jkollha xi inizjalizzazzjoni,
tesegwixxi xi ħaġa, taġġornah, u mbagħad tiċċekkja l-kundizzjoni.
>> Allura issa funzjonijiet.
Aħna tpoġġi kollox flimkien.
Aħna tista 'tixtieq li tikteb xi tip ta 'funzjoni.
Funzjoni Komuni li inti tista kienu diġà raw hija prinċipali.
Main hija funzjoni.
Hija għandha tip ritorn, int.
Hija għandha isem funzjoni, prinċipali.
U għandu argumenti, argc u ARGV.
Allura prinċipali huwa biss funzjoni.
>> Funzjonijiet oħra inti jista 'jkollok użati, printf printf-- huwa function--
GetInt, toupper.
Iżda dawn jiġri li kienu implimentati għalina minn
xi tip ta 'librerija.
Jekk inti guys tiftakar inkluż din il-librerija CS50.h jew il-
I standard / librerija O.
Iva, mistoqsija?
>> UDJENZA: Huwa prinċipali biss inerenti fl ċ?
Ma hija biss tip ta '[inaudible]?
>> SPEAKER 1: Il-kwistjoni hija jekk prinċipali hija inerenti fil-c.
U iva, funzjonijiet kollha għandhom funzjoni ewlenija.
Huwa tip ta neċessarju għall-kompjuter li tkun taf fejn tibda
tmexxija tal-kodiċi.
>> UDJENZA: Allura inti ma tkunx [inaudible]?
>> SPEAKER 1: No
Kwalunkwe mistoqsijiet oħra?
Kessaħ.
Hekk biss bħal inti tista 'tuża l-funzjoni thats miktub għalik, inti tista 'wkoll
jiktbu funzjoni tiegħek stess.
Din hija funzjoni li xi ħadd jista ' kitbu biex tikkalkula l-volum
ta 'Q, per eżempju.
Hemm tip ta 'ritorn hawn, f'dan il-każ int, tagħna isem funzjoni q u tagħna
lista tal-parametri.
>> U jinnota li inti għandek tikteb id-data tip tal-parametru inti tixtieq li
jużaw jew inkella l-funzjoni ma taf x'tip ta '
parametru għandi jiġu taċċetta.
Allura, f'dan il-każ, irridu integer bħala input tagħna.
Allura għaliex tista irridu li jużaw funzjonijiet?
>> L-ewwelnett, kbir għall-organizzazzjoni.
Huma jgħinu ikissru kodiċi tiegħek fis biċċiet aktar organizzati u jagħmlu
aktar faċli biex jinqara.
Simplifikazzjoni.
Dan huwa tajjeb għad-disinn.
Meta inti qed taqra biċċa tal-kodiċi u l-funzjoni ewlenija hija verament,
verament twila, jista 'jkun aktar diffiċli biex raġuni dwar x'inhu għaddej.
Mela jekk inti din tinqasam funzjonijiet, jista 'jkun aktar faċli biex jinqara.
And-użu mill-ġdid kapaċità.
Jekk għandek blokki ta 'kodiċi thats qed imsejħa jew run drabi multipli,
minflok riskrittura dan il-kodiċi 10 darbiet fil-funzjoni prinċipali tiegħek, inti tista '
tixtieq li użu mill-ġdid.
U mbagħad kull darba li inti għandek bżonn tuża dik biċċa tal-kodiċi, sejħa tal-funzjoni.
>> Allura issa jekk irridu niftakru lura li tobrox, aħna wkoll tkellem dwar kunċetti ftit,
waħda minnhom hija kamini.
Thread huwa l-kunċett ta 'multipli sekwenzi ta 'kodiċi
eżekuzzjoni fl-istess ħin.
Allura taħseb lura għal jum wieħed fejn David kellhom inti guys għadd off-numru ta '
nies fil-kamra.
>> Essenzjalment, dak li kien għaddej fuq hija kollha inti guys kienu
running ħjut separati.
U dawk ħjut kienu ġejjin flimkien biex nikseb xi tip ta 'tweġiba.
Bl-istess mod, fil Scratch, meta jkollok sprites multipli, inti tista
jkollhom qattus u kelb.
U huma jkunu simultanjament running skripts tagħhom stess.
Dan huwa eżempju ta 'kamini.
>> U l-kunċett ieħor li kien introdott fl scratch kien avvenimenti.
U avvenimenti huma partijiet meta multipli ta ' kodiċi tiegħek jikkomunikaw ma 'xulxin.
Fil Scratch, dan kien meta inti użati l- kontroll tax-xandir u l-Meta I
Irċievi blokki.
>> U wkoll, fil Problema Set 4, rajna xi ftit ta 'avvenimenti kif ukoll.
You guys jista użaw il-librerija Gevent.
U kien hemm funzjoni waitForClick fejn inti kienu qed jistennew
għall-utent biex ikklikkja.
U kklikkja tiegħek, f'dan il-każ, ikun l-avveniment u stenna għal click huwa tiegħek
handler avveniment.
>> U wkoll, matul running psets tiegħek u jaħdmu fuq psets tiegħek, inti
jista 'jkollhom jiġu f'kuntatt ma' xi wħud minn dawn il-kmandijiet.
Dan huwa dak li inti ittajpjat fil tiegħek tieqa terminal jew kwalunkwe tieqa
li juri fuq g jeditjaw tiegħek biex, essenzjalment, jinnaviga-kompjuter tiegħek.
>> Hekk per eżempju, LS jelenka l- kontenut ta 'direttorju.
Agħmel direttorju joħloq folder ġdid.
CD, direttorju bidla.
RM, neħħi, tħassar fajl jew xi direttorju.
U mbagħad neħħi direttorju tneħħi direttorju.
>> UDJENZA: [inaudible]?
>> SPEAKER 1: Yeah, żgur.
Jiddispjacini, il-kwistjoni kienet jekk inti jissuġġerixxi tqegħid dan
fuq il-folja iqarrqu.
Hija tista 'tgħin.
Jekk għandek spazju, inti tista 'poġġih fuq.
Huwa wkoll biss ġeneralment tajba biżżejjed li tiftakar għaliex meta inti tużaha
inti tista 'tixtieq li biss għandhom dan memorizzati.
Li ser jagħmlu l-ħajja tiegħek ħafna aktar faċli.
Did I iwieġeb il-mistoqsija tiegħek?
>> Allura issa, tkellimna ftit fil-qosor dwar libreriji.
Iżda l-żewġ dawk prinċipali li aħna kont qed użu s'issa fil-kors huma
I standard / O u CS50.
Liema tip ta 'affarijiet huma inklużi fil-I / O librerija standard?
>> Yeah, s'issa konna użati printf.
Fl CS50, konna użati GetInt u GetString.
U l-string tip ta 'data jiġri wkoll li jiġu ddikjarati f'din librerija CS50.
Aħna ser nitkellmu ftit aktar fil-fond dwar kif libreriji jaħdmu u kif dawn
jinteraġixxu mal-bqija tal-kodiċi tiegħek.
Iżda dawn huma l-żewġ dawk prinċipali li aħna waslu f'kuntatt ma s'issa fl
il-kors.
>> Tipi.
Dawn huma tajbin biex tiftakar kemm kull tip hija rappreżentata minn jew kif
ħafna bytes kull wieħed tip requires--
int, 4 bytes; char, 1 byte.
Float huwa 4 bytes.
X'inhu doppja?
>> UDJENZA: [inaudible].
>> SPEAKER 1: Yeah, so a float iżda doppju tad-daqs.
What about twil?
>> UDJENZA: [inaudible].
>> SPEAKER 1: OK.
X'inhu twil?
>> UDJENZA: [inaudible].
>> SPEAKER 1: Yeah, irduppjar ta int.
Iva.
>> UDJENZA: [inaudible].
>> SPEAKER 1: Long [inaudible].
U allura twil twil huwa d-doppju dak.
>> UDJENZA: No, no.
A twil huwa biss int.
Hija tiddependi fuq l-arkitettura qabel il-[inaudible]
u int jkollhom l-istess daqs.
[Inaudible].
>> SPEAKER 1: Allura twil u l int huma l-istess.
U allura twil twil huwa d-doppju l-int.
Kessaħ.
U allura, dak li huwa l-aħħar tip?
>> UDJENZA: Pointer.
>> SPEAKER 1: Yeah, hekk aħna tgħallimna ftit dwar pointers.
U irrispettivament ta 'dak pointer huwa tipponta to-- din tista 'tkun stilla char
jew int star--
huwa dejjem 4 bytes għal pointer.
Mistoqsijiet dwar dan?
Iva?
>> UDJENZA: [inaudible]?
>> SPEAKER 1: Allura twil u int huma l-istess f'dan appliance CS50.
>> UDJENZA: L-apparat huma kompletament interkambjabbli.
>> SPEAKER 1: Yeah.
Mela allura twil twil huwa doppju ta int.
>> UDJENZA: Dan huwa l-32 bit?
>> SPEAKER 1: 32 bit, yeah.
>> UDJENZA: Allura [inaudible]?
>> SPEAKER 1: Iva, jekk dan ma jkunx espliċitament jgħidu, inti
għandhom jassumu 32 bit.
>> UDJENZA: Huwa ngħid xi ħaġa bħal jekk wieħed jassumi
arkitettura bħall-appliance.
Għal 64 bit, l-uniċi affarijiet li bidla huma twal u pointers.
Huma t-tnejn [inaudible].
>> SPEAKER 1: Iva?
>> UDJENZA: Mistoqsija.
Allura fuq waħda mill-kwizzijiet prattika, hija tistaqsi madwar int mhux iffirmat.
Allura kif kieku jiġi determinat minn int [inaudible]?
>> SPEAKER 1: An mhux iffirmat fil hija wkoll 4 bytes.
Imma dak li hu differenti madwar iffirmat int u int mhux iffirmat?
>> UDJENZA: [inaudible].
>> SPEAKER 1: Dritt.
Wieħed jista 'jirrappreżenta valuri negattivi.
Imma kif ma tagħmel dan?
>> UDJENZA: [inaudible].
>> SPEAKER 1: Yeah, li jiffranka 1 ftit biex jirrappreżentaw il-sinjal.
Il ffirmat għandha waħda daqsxejn li jirrappreżenta l-sinjal.
U mhux iffirmat biss huwa pożittivi kollha.
>> UDJENZA: OK.
Allura inti jgħidu li doppja hija darbtejn id-daqs ta 'flowt?
>> SPEAKER 1: Double huwa darbtejn -daqs ta 'float, iva.
>> UDJENZA: Kif ma 'pointer għal twil twil [inaudible]?
>> SPEAKER 1: Għalhekk il-kwistjoni hija dwar kif ma il-pointer lejn long-- twil
Kif huwa li biss erba bytes meta twil twil 8 bytes tagħha.
Mela ftakar dak huwa pointer, essenzjalment, għall-valur ħafna bażi.
>> UDJENZA: [inaudible].
>> SPEAKER 1: Yeah, so a pointer huwa biss post memorja.
Allura ma jimpurtax kemm l-ispazju li pointer hija li tipponta lejn.
Hija teħtieġ biss 4 bytes li jżommu rekord ta 'dik lokazzjoni memorja.
Kwalunkwe mistoqsijiet oħra?
Kessaħ.
>> Allura l-aħħar ħaġa I jkollhom huwa output standard.
Għandek jużawhom spiss biżżejjed li inti tista tiftakar.
Imma dan huwa meta nużaw printf, per eżempju.
U għandna dawn placeholders li kienu jissejħu kodiċijiet format.
>> Allura fil-mija c char, mija i għall int, u nistgħu wkoll tuża mija d.
Hu l-istess ħaġa.
Iżda, ġeneralment, fil CS50 aħna jippruvaw jużaw mija i.
Perċentwali f għall float.
Ld-mija għal żmien twil twil u mija s għal string.
>> Bl-istess mod, aħna kont qed tuża ftit ta 'dawn is-sekwenzi ħarba.
Per eżempju, backslash n għal linja ġdida.
Dan huwa biss għal meta inti qed ifformattjar kodiċi tiegħek għall-istampar f.
Iva?
>> UDJENZA: X'inhu mija d għall?
>> SPEAKER 1: Għalhekk il-kwistjoni huwa dak li huwa fil-mija d għall?
Perċentwali d huwa għall ints.
Perċentwali d u mija i huma l-istess.
>> UDJENZA: X'hemm differenza bejn backslash n u backslash r?
>> SPEAKER 1: Għalhekk il-kwistjoni hija x'inhu l- differenza bejn backlash n u
r backlash?
I think backslash r is--
>> UDJENZA: Allura backslash r biss jimplika ritorni lejn il-bidu tal-linja
mingħajr ma attwalment għaddejjin għal linja ġdida.
Mela jekk inti print backslash r u int mur lura għall-bidu tal-linja
allura inti print aktar Jittieħed, inti jissostitwixxu l-għalf li li diġà fuq
[Inaudible].
Billi, n fatt tmur lil ġdida line u tmur lil [inaudible].
>> SPEAKER 1: Well, xi mistoqsijiet oħra?
Kull dritt.
Jien ser jagħtih off biex Dan li se jkomplu.
>> [Applause]
>> DAN: righty All.
So I ser tkun jitkellem dwar wiesgħa ieħor firxa ta 'ideat mill-klassi li huma
bejn wieħed u ieħor rappreżentattiv ta 'żewġ ġimgħa u il-bidu ta 'tliet ġimgħat jibda off
mal ikkastjar, li huwa biss mod ta ' trattament ta 'valur ta' ċertu tip bħala
valur ta 'tip differenti.
Allura nistgħu nagħmlu dan bl Chars għall ints, sufruni li ints, u
twal twal għad-doppju.
>> Kollha ta 'dawn l-affarijiet jistgħu jintużaw bħala modi ta 'trattament xi valur numeriku
char minus bħala xi oħra valur numeriku.
Allura hemm xi kwistjonijiet ma 'dan, ta' Naturalment, li ġejja meta inti mitfugħa
affarijiet simili float li ints.
Allura dan huwa ftit stramb.
Għandna float li huwa 1.31.
Aħna immoltiplika lilha mill 10,000.
U allura aħna jistampaw bħala int.
X'jagħmel din output?
10,000 darba 1.31.
Allura 13,000, hija li l-raden?
>> UDJENZA: Naħseb li huwa 10,000.
>> DAN: So jien mmultiplikat bil 10,000 qabel jien ikkastjar.
>> UDJENZA: Oh.
Would ma jkun hemm wieħed 9 u xi 0 numri?
>> DAN: Inti jista 'jkollok xi numri stramb.
Għalhekk id-dritt, huwa 1.3 darbiet 10,000.
Allura dak 13,000.
U dan weird-- żejda
>> UDJENZA: 13,100.
>> DAN: 13,100.
Grazzi, Rob.
U dan weirdness-- żejda
dan 9,9--
hija sempliċement minħabba din ikkastjar ended up arrotondament 'l isfel fejn
ma għandhiex ikollha.
Yeah.
>> UDJENZA: Il ikkastjar jiġri wara xi ħaġa oħra?
>> DAN: So minħabba I jkollhom din fil-istampar, dan ma dan multiplikazzjoni quddiemu
ma dan ikkastjar.
>> UDJENZA: [inaudible].
>> DAN: Naħseb li jitfa ewwel, yeah, li jkun 10,000.
Xi ħaġa oħra?
Kessaħ.
Allura dan huwa 13,099.
Għaliex ma dan jiġri?
Impreċiżjoni.
>> Sufruni mhumiex perfetti.
Huma jistgħu jirrappreżentaw biss numri għal Ċertu numru ta 'ċifri sinifikanti.
Allura jekk aħna jistampa 8 tin sig fuq dan float, irridu jiksbu tip ta '
ikrah numru tfittex.
U dan għaliex 1.31 ma tistax b'mod preċiż ikunu rappreżentati minn sempliċi
poteri ta 'tnejn fil-magna.
Allura dan jispiċċa tieħu l-eqreb raden, li jispiċċa
tkun ftit baxxa.
Jagħmel sens?
OK.
>> Issa, mixgħula huma mod differenti ta ' tagħmel dikjarazzjonijiet kondizzjonali fejn kollha
we care about hija varjabbli waħda.
Allura f'dan l-eżempju partikolari, aħna qed jkollna integer mill-utent.
U allura aħna qed tħares lejn dak li integer huwa.
Preżumibbilment, huwa numru bejn wieħed u erbgħa.
Dak hu li aħna qed jitolbu għal.
>> Allura inti tagħmel bidla ta ' l-isem varjabbli.
Imbagħad inti twaqqaf każijiet ta 'possibbli Valuri jista 'jkun.
Allura f'każ wieħed, jgħidu huwa baxx.
U allura inti break li toħroġ tal-kundizzjoni swiċċ hekk
inti ma żżomm għaddej.
>> Fil-case-- jmiss
hekk każ tnejn u każ three--
jekk huwa każ żewġ hija biss qtar stabbiliti biex l-ewwel linja tal-kodiċi li hija tqis bħala ma
'każijiet tlieta sakemm jara pawża.
Allura r-raġuni ikollok każ wieħed li biss baxxa print huwa għaliex I
jkollhom din break hawn.
Jekk I, ngħidu aħna, injorat dan break-- jekk I threw din breakaway--
ikun jistampaw baxxa, u allura jistampaw nofs, u allura break.
>> Allura pawżi huma parti importanti ta 'switch kundizzjonijiet u
dawn għandhom ikunu hemm.
Kwalunkwe każijiet li mhumiex iddikjarati b'mod espliċitu li huma ttrattati mill-inadempjenza
każ fil-bidla u għandhom jiġu mitfugħa.
>> UDJENZA: Allura 1, 2, 3, u 4 jkunu n?
>> DAN: Valuri li n jistgħu jkunu.
Iva.
Yeah?
>> UDJENZA: Allura meta jkollok li [inaudible]?
>> DAN: Int tkun tipprintja baxx, u mbagħad ikun jistampaw nofs, u
allura break.
>> UDJENZA: Għaliex kieku dan jistampaw nofs jekk [inaudible]?
>> DAN: Allura kollox taħt każ qabel pawża taqa 'taħt.
Allura każ print wieħed huwa każ taħt wieħed kif dan l-istampar ta 'wara.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Allura dan in-numru huwa biss partikolari valur li dan il-varjabbli
jista 'jieħu, right?
Does li jagħmel sens?
Yeah.
>> UDJENZA: [inaudible]?
>> DAN: Iva, każ tnejn se print nofs u mbagħad break.
>> UDJENZA: [inaudible]?
>> DAN: I think kwalunkwe?
Liema tipi ta 'data oħra inti tista 'taqleb fuq?
>> UDJENZA: Tista 'taqleb fuq kwalunkwe tipi ta 'data.
Iżda dan ifisser xejn fuq Chars biss u ints u għalf bħal dik, minħabba
jekk int jaqilbu fuq pointer li ma verament jagħmel sens,
jaqilbu fuq tagħbijiet, anke jekk dan ejja inti tagħmel dan, minħabba l-punt floating
fil-preċiżjoni, inti ma tkunx verament tixtieq li tagħmel dan xorta waħda.
So pretty ħafna, biss ints u Chars u għalf bħal dik.
>> DAN: Yeah, huwa meta jkollok espliċita valuri li inti taf, I think, jista 'jkun
li bidla huwa attwalment utli.
Tajba?
OK.
>> Ambitu huwa l-firxa li ddikjarat varjabbli testendi.
Allura f'dan il-blokki ftit tal-kodiċi I jkollhom, ikun sħiħa ta 'żbalji.
U r-raġuni hija I dikjarata dan int i fl-ambitu ta 'dan għall loop.
U mbagħad jien jippruvaw biex referenza li i barra minn dak għat-ambitu loop.
>> Allura bażikament, inti tista 'taħseb dwar ambitu bħala xi ħaġa li inti tiddikjara
ma ħdan sett ta 'ċingi kaboċċi biss teżisti fi ħdan dawk braces kaboċċi.
U jekk inti tipprova u l-użu dak il-varjabbli barra minn dawk ċingi kaboċċi, inti ser
tikseb żball mill-kompilatur.
Yeah?
>> UDJENZA: Allura dan wieħed ma taħdimx?
>> DAN: Dan ma taħdimx, iva.
Strings.
String char *.
Huma qed eżattament l-istess.
Huma biss pointers għall-karattri.
U kull kordi li għandek għandha tintemm ma backslash żero, li huwa biss
konvenzjoni c.
>> Huwa sejjaħ il-terminatur NULL.
U NULL--
kapital N, kapital U, kapital L, kapital L--
mhuwiex l-istess bħall- Terminatur NULL.
Dan huwa pointer.
Dan huwa karattru.
Huma distinti ħafna.
Ftakar dan.
Din se tkun fuq l-kwizz, probabbilment.
I ma bbenefikawx l-kwizz.
Yeah?
>> UDJENZA: Allura NULL huwa, ngħidu aħna, il-pointer?
>> DAN: Iva.
>> UDJENZA: X'tagħmel [inaudible]?
>> DAN: Jekk, ngħidu, malloc tissejjaħ meta inti ma jkollhom memorja biżżejjed biex jiksbu
irrispettivament mid-daqs inti qed tistaqsi għal, malloc se terġa 'lura NULL.
Huwa, bażikament, kull meta il-funzjoni huwa suppost jirritornaw pointer, inti
bżonn li jiċċekkja kontra NULL għaliex NULL huwa good-- pretty
huwa, tip ta ', il-valur żibel.
Huwa żero safejn pointers go.
>> Kull meta inti sejħa funzjoni, li jirritorna pointer.
Int ser jridu jiċċekkjaw li jkunu ċert li din pointer mhux NULL
minħabba NULL huwa komuni ħafna.
Huwa tip ta 'ritorn żibel.
Mela jekk xi ħaġa ma tmurx dritt, biss jirritorna NULL minflok.
>> UDJENZA: [inaudible]?
>> DAN: Iva, u li din.
>> UDJENZA: [inaudible]?
>> DAN: Jifformulaw bħala dan.
Hu l-terminatur NULL.
Huwa zghar N-U-L-L jekk int ortografija dan.
>> UDJENZA: U I biss marru lura u ttestjati.
U jekk inti tipprova tpoġġi punt floating valur fis-swiċċ, dan ser Yell fi inti
qal, stqarrija teħtieġ espressjoni tat-tip numru sħiħ.
>> DAN: Hemm inti tmur.
Imma yeah, dak li kien il-kwistjoni mill-ġdid?
>> UDJENZA: [inaudible]?
>> DAN: Allura kapital N, kapital U, kapital L, kapital L hija ħaġa attwali c.
Huwa l-pointer NULL u se biss ikunu ittrattati bħala tali.
Inti mhux se qatt tipprova u jespliċitaw il- Karattru NULL u tara l-ebda
mod ieħor minn dan.
Yeah?
>> UDJENZA: Allura jirritornaw lejn char max jew xi ħaġa fin-noti, ikun jidher
jinkorporaw l-istess funzjoni bħala [inaudible]?
>> UDJENZA: Allura huma inti jirreferu għal jirritornaw max char minn getchar, jew
kwalunkwe huwa?
>> UDJENZA: Yeah.
>> UDJENZA: Yeah, hekk l-ġenerali tul għal dawk kollha affarijiet
huma valuri sentinella.
Allura bħal jirritornaw max int minn GetInt u max char minn getchar, huwa
mistennija li jkunu simili, id-dritt, jekk dawn l-affarijiet huma jirritornaw lilna,
xi ħaġa li marret ħażin.
>> Għal pointers, aħna biss jiġri li jkollhom dan il-valur sentinella li kulħadd
jaqbel fuq.
U dan huwa l-ħaġa inti tirritorna meta l-affarijiet imorru ħażin.
Allura max char huwa dak li aħna qed jużaw biex jirrappreżentaw xi ħaġa
bħal NULL jew getchar.
>> UDJENZA: Mela jekk int ittestjar getchar, inti tista 'biss jitqiegħed NULL?
Would li tagħmel differenza?
>> DAN: Inti ma tista 'biss tivverifika NULL.
Youd għandek tiċċekkja max char minħabba li l- valur tar-ritorn mill-funzjoni huwa
karattru mhux pointer.
Yeah?
>> UDJENZA: Din il-kwistjoni titlob għat-tul string.
Does that jinkludu l-karattru NULL?
>> DAN: No
U li attwalment kif tul string jaf li tieqaf għaliex tmur permezz
firxa tiegħek ta 'karattri sakemm jara karattru NULL.
U allura huwa simili, kollha dritt, jien jsir.
>> UDJENZA: [inaudible] ħamsa?
>> DAN: Hello tkun ħamsa.
Yep.
Allura arrays huma kontinwi blokki ta 'memorja.
Huma għandhom aċċess immedjat billi qal l- isem tal-firxa u mbagħad, fl kaboċċi
ċingi, tkun xi indiċi inti tixtieq li tmur biex, dawn qed indiċjati minn żero permezz
it-tul tal-firxa minus 1.
>> U dawn qed iddikjarati mill-tip ta 'l- ħaġa li int ħażna fil-
array, l-isem tal-firxa, u mbagħad x'ikun id-daqs huwa ta 'dik array.
Allura dan huwa firxa char ta 'tul sitta li għandha dawn il-valuri.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Yeah.
>> UDJENZA: [inaudible]?
>> DAN: Jekk ikollok dak li qed jiġri fil-firxa li diġà saru.
Allura inti tista 'tispeċifika dan minflok bħala, jiġifieri, char, ikun x'ikun l-isem ta 'tiegħek
array huwa, parentesi vojta ugwali kaboċċi Brace H comma E comma L comma L comma
O comma karattru NULL u kaboċċi Brace.
Li tkun taħdem ukoll bħala dikjarazzjoni.
>> UDJENZA: [inaudible]?
>> DAN: Imbagħad għandek bżonn li jkollhom id-daqs diġà saru.
>> UDJENZA: [inaudible]?
>> DAN: Iva.
Kollha righty.
Argumenti linja Kmand huma mod ta ' jkollna input mill-utent bħala
argumenti prinċipali.
Main jieħu żewġ argumenti.
In-numru ta 'argumenti li qed mgħoddija flimkien kmand tal-linja u
vector string jew firxa string kollha ta 'l-argumenti.
>> Mela jekk jien, ngħidu aħna, imsejħa funzjoni bħal dot out 1 ispazju, 2 ispazju, tlieta,
argc tkun 4.
U l-ARGV 0 tkun dot out.
Argv1 tkun 1.
argv2 ikun 2. argv3 tkun 3, f'dak il-każ partikolari.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: L-aħħar element fil-firxa minħabba l-firxa hija tul argc plus
wieħed mill argb, l-aħħar element hija l-pointer NULL.
Huwa argc plus 1.
Allura fil-każ li I biss qal, huwa tkun ARGV 0 hija dot out.
ARGV 1 hija l-1 argv2 huwa 2. ARGV 3 huwa 3.
ARGV 4, li hija waħda akbar milli argc tkun NULL.
>> U dak l-pointer NULL.
Iva.
U dan għaliex string huwa stilla char huwa pointer.
Għalhekk għandu jkun l-istess tip.
Yeah?
>> UDJENZA: Żewġ mistoqsijiet.
Allura wieħed, x'inhu l-differenza bejn dan u GetString għajr tip wieħed
fil-magna utent?
U tnejn, huwa dan maħżun fi ħdan memorja riċenti tiegħek?
Allura simili, GetString kieku jkun [inaudible]?
>> DAN: Fejn huwa maħżun?
I do not know fejn huwa maħżun.
>> UDJENZA: Allura, fil-fatt, inti taf kif xi funzjoni inti sejħa huwa l-argumenti
huma maħżuna fil-ċmieni?
Allura argc u ARGV huma argumenti għal main u huma fuq il-munzell, jew verament
eżatt fuq X'taħseb bħala il-bidu tal-munzell.
Liema kienet il-parti l-oħra mill-kwistjoni?
>> UDJENZA: Allura x'inhu l-[inaudible]?
>> DAN: Yeah, huwa biss b'mod differenti ta 'jkollna input mill-utent.
Dan wieħed ftit aktar effiċjenti u huwa handier għal skripts għaliex inti
tista 'biss jgħaddu argumenti biex prinċipali tiegħek funzjoni aktar milli jkollhom għalfejn jistennew
għall-utenti jekk inti ma għandekx xi utenti.
>> UDJENZA: U yeah, nikseb kordi Ikun [inaudible].
Ikun taħżen l-għalf li għandek bżonn.
>> DAN: Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Iva, ARGV 0 dejjem tinkludi l- dot mmejla tas-sejħa funzjoni.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Iva, kull wieħed mill-argumenti huma ntemmet fil-karattru NULL għaliex
huma kordi.
>> UDJENZA: [inaudible]?
>> DAN: Iva, argc ARGV huwa pointer NULL.
>> UDJENZA: [inaudible]?
>> DAN: Oh yeah.
Yeah, sorry.
>> UDJENZA: Allura [inaudible]?
>> DAN: Għalhekk il-kwistjoni hija jekk kellek l- linja ta 'kmand dot mmejla dot out 1, 2,
kieku l-għadd ta 'kmand tal-linja argumenti tkun tnejn jew ma jkun tliet?
>> UDJENZA: Naħseb li ma verament kwistjoni.
I-tendenza li jgħidu, oh, inti ma jgħaddu kwalunkwe argument kmand linja meta,
ovvjament, inti imsejjaħ il-funzjoni.
So I-tendenza li vocally jeskludu l- funzjoni mil-linja tal-kmand
argumenti Anki jekk huwa inklużi fil ARGV.
>> DAN: Iżda jekk kien fuq il-test--
yeah-- u wkoll jekk inti tgħidli xi ħaġa bħal argc ugwali 3,
int fil-reputazzjoni sikur.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Naħseb jekk minflok ta 'sejħa dan fil argc u spag parentesi ARGV
imma żamm l-istess tipi u biss imsejħa xi ħaġa differenti bħal
u b, kieku xorta taħdem?
U xorta tkun taħdem, inti just--
minflok jużaw argc-- youd tuża u b.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Għalhekk il-kwistjoni hija GetString huwa ser taħżen memorja fil-borġ
minħabba GetString huwa char *.
Taħżen memorja fil-borġ għaliex jitlob issa malloc fi ħdan l-attwali
implimentazzjoni ta 'GetString.
OK, miexja fuq.
>> Sigurtà.
Allura biex tkun verament sigura, inti tistrieħ fuq l-ebda wieħed u inti jippermettu l-ebda aċċess wieħed għal kull
ta 'informazzjoni tiegħek, u huwa għalhekk li kulħadd jibni magni tagħhom stess,
sistemi operattivi tagħhom stess, kollha tagħhom programmi mill-bidunett, u ovvjament
ma qabbad lil xi magni oħra permezz tal-internet.
Allura kompjuters huma prekarji.
Huma verament huma.
Irridu fiduċja nies oħra.
>> U l-idea ta 'sigurtà hija li int jippruvaw jillimitaw l-ammont ta '
fiduċja li għandek bżonn.
U wieħed mill-mezzi li inti tagħmel dan huwa permezz kriptografija.
Kriptografija hija, essenzjalment, għandna sigrieti.
>> Kultant aħna għandna biex jgħaddu sigrieti tagħna flimkien permezz, ngħidu aħna, l-internet jew
affarijiet oħra.
U ma rridux nies li tkun taf dawn sigrieti.
Allura aħna kriptaġġ sigrieti tagħna fis-mod li nittamaw ebda wieħed jista figura.
>> Allura aħna used--
permezz tal-kors ta 'din class--
affarijiet simili cipher Caesar u [Inaudible], li huma t-tnejn ħafna, ħafna
modi prekarji ta 'encrypting affarijiet.
Huma qed faċli biex insemmu dak li huma u liema sigrieti tiegħek huma.
Id-dinja reali juża ħafna aktar skemi encryption kkumplikata.
U aħna mhux se jsibu rwieħhom ħafna aktar minn dak.
>> Debugging.
GDB huwa l-aħjar.
Jien ser biex tenfasizza dan mill-ġdid.
Uża GDB il-ħin kollu kull darba li inti għandek problema.
Kmandijiet li huma utli fil GDB huma break, li inti tgħaddi jew linja
numru, isem funzjoni, essenzjalment fejn fil-kodiċi tiegħek inti tixtieq li twaqqaf,
u tkun tista 'tieħu l-kontroll.
>> Stampa tieħu varjabbli u prints out x'ikun dak il-varjabbli huwa fil dak
punt fl-eżekuzzjoni tiegħek.
Li jmiss jiċċaqlaq eżekuzzjoni tiegħek flimkien pass wieħed.
U pass passi ġewwa funzjoni fl-eżekuzzjoni tiegħek.
>> Affarijiet oħra huma mmexxija, li hija kif inti tmexxi effettivament kodiċi tiegħek.
Kompli jieħu l-passi kollha meħtieġa biex jasal sal-punt tal-qasma li jmiss.
U hemm ħafna, ħafna oħrajn.
Ħares minnhom up.
Huma qed kbira.
Yeah?
>> UDJENZA: [inaudible]?
>> DAN: Iva, li huwa debugger.
Allura debugger huwa programm li ihallik debug program tiegħek.
Mhuwiex programm li ssib bugs għall inti, għalkemm li tkun kbira.
>> U l-aħħar għalija hija search.
Allura l-tipi ta 'tfittxija li tkellimna dwar f'din il-klassi huma tfittxija lineari,
li huwa biss li inti tfittex permezz ta 'kull element ta 'l-ispazju tfittxija, wieħed
element fi żmien, sakemm issib dak li inti qed tfittex jew sakemm inti tilħaq
l-aħħar tal-ispazju tfittxija tiegħek li fih punt inti jgħidu li inti ma setgħetx issib
l-element li inti kienu qed ifittxu.
U dan jieħu ż-żmien fl-aħjar kostanti, li huwa ta '0 mill-1 u fl-agħar lineari
time, li huwa ta '0 tas n.
>> Tfittxija Binarju, li jeħtieġ Elementi sordid.
Inti tmur għall-nofs ta 'elementi tiegħek, ara jekk l-element li qed tfittex
hija akbar jew iżgħar mill-element li int fil-nofs.
Huwa huwa akbar, inti tgħidli li l-qiegħ tat-tfittxija tiegħek ispazju huwa tiegħek
lokazzjoni attwali, l-nofs, u terġa 'tibda l-proċess.
Jekk huwa iżgħar, inti tfittex say li the-- yeah, x'hemm up?
>> UDJENZA: [inaudible]?
>> DAN: Iva.
Kwalunkwe tip ta 'tip li kien mgħallma fl- il-klassi hija logħba ġust għat-test.
>> [Rires]
>> DAN: U l-fatt li inti ma kellhomx biex tagħmel dan għal sett problema, huwa ġust
logħba għat-test.
>> UDJENZA: Jista immorru fuqha kif to--
>> DAN: Huwa se tkun marret fuq.
>> SPEAKER 2: Il-kodiċi attwali għall [Inaudible] huwa fuq study.cs50.net.
Mela jekk inti tħares lejn il-problema prattika fil-paġna tip inkorporazzjoni ta
study.cs50.net, hemm huwa l-kodiċi għall-implimentazzjoni jingħaqdu sort.
Allura inti ma għandekx biex jimplimentaw it yourself tonight.
Iżda aċċerta ruħek li tifhem dan pjuttost milli sempliċiment memorizing lilha.
>> UDJENZA: [inaudible]?
>> SPEAKER 2: Il-paġna sort jingħaqdu fuq study.cs50.net, hemm prattika
problema li, jekk inti ikklikkja permezz tal- problema, fl-aħħar nett hemm
soluzzjoni, li hija l-inkorporazzjoni implimentazzjoni sort.
Iżda aċċerta ruħek li tifhem li aktar milli biss memorizing lilha
jew ikkupjar l-isfel.
>> UDJENZA: U perfettament valida problema għall-eżami għandu jkun
xi ħaġa bħal hawn lista.
X'jagħmel din il-lista look like wara pass wieħed ta 'selezzjonijiet tip jew
sort inserzjoni jew ikun x'ikun.
Wieħed iterazzjoni sħiħa tal-lista.
Għalhekk anki jekk inti ma tispiċċa jeħtieġu li kodiċi għal dan, inti jeħtieġ li jifhmu
biżżejjed biex tkun taf kif li għaddej li għandha timmodifika din array.
>> DAN: Li għalija.
>> [Applause]
>> LUCAS: Hey kulħadd.
Jisimni Lucas.
Jien ser jitkellmu dwar recursion, kollha t-tipi li aħna tgħallimna, u
Ftit ftit ta 'pointers kollha.
OK?
Allura l-ewwel nett, recursion.
Xi jfisser li jgħidu li funzjoni huwa jirrikorri?
>> UDJENZA: Sejħiet innifsu.
>> LUCAS: OK, jitlob huwa stess, yeah.
Allura bħal din l-istampa, per eżempju.
Huwa bħall-istampa ġewwa ta 'stampa u l-bqija.
Hekk per eżempju, inti tista have-- bħala Dan li kien jitkellem dwar search binarja.
Mod wieħed li bih tfittxija binarja huwa rikursivi huwa l-fatt li int
jippruvaw isibu numru.
Allura inti tmur għall-nofs.
U allura inti tiċċekkja jekk in-numri hemmhekk fil-xellug u fid-dritt.
>> U mbagħad jekk issib out in-numru huwa se tkun fuq ix-xellug, huwa l-istess
ħaġa bħala tagħmel l-tfittxija darb'oħra iżda biss fuq ix-xellug tal-lista.
Allura li kif ħsejjes simili huwa rikursivi.
Allura hu għalhekk li inti guys jkollhom rikursivi soluzzjoni għall sort jingħaqdu.
>> OK, so Hawn eżempju.
Mela ejja ngħidu li nixtieq li jagħżlu il-numri minn 1 sa n.
I tista tirrealizza li s-somma ta 'l-n numru huwa n plus n minus 1 sa 1.
Iżda mbagħad, jekk I tħares lejn n minus 1 plus n minus 2 flimkien ma '1, dak l-istess
Ħaġa bħala numri jingħaddu sa n minus 1.
So I tista 'tgħid is-somma ta' somma ugwali ugwali n flimkien mat-total tal-n minus 1.
Does li jagħmel sens?
>> U jien ukoll se jkollhom xi ħaġa oħra imsejjaħ il-każ bażi, li huwa li
is-somma tal-numri up għal żero tkun żero.
Hekk malli nasal biex in-numru żero, I stop għadd.
Does li jagħmel sens?
>> Allura hawnhekk eżempju ta 'kif I tista 'timplimenta dak.
So I jkollhom din il-funzjoni f'xi.
Li jieħu n integer.
So here I ewwel jiċċekkja jekk n hija inqas jew ugwali għal żero.
Mela jekk huwa inqas jew ugwali għal żero, I ritorn żero, li huwa każ bażi tagħna.
Inkella, I tista 'biss jirritorna n plus is-somma tal-numri minn
wieħed għal wieħed nieqes n.
Jagħmel sens?
OK.
>> Allura hawnhekk huwa dak li jidher qisu.
Inti għandek somma ta '2 partijiet ugwali 2 flimkien mat-total tal-1.
U xi wħud 1 huwa 1 flimkien mal- somma ta '0, li huwa ta' 0.
Jagħmel sens?
Mela jekk inħarsu lejn il-munzell ta 'tiegħek programm, dan huwa dak li jidher qisu.
>> L-ewwel, aħna għandna l-funzjoni prinċipali.
U allura l-funzjoni ewlenija imsejħa somma 2.
U mbagħad somma 2 huwa se ngħid, oh, somma 2 ugwali 2 flimkien mat-total ta 'wieħed.
So I żid somma ta '1 għall-munzell.
U s-somma ta '1 huwa ser sejħa somma ta' 0, li huwa wkoll se tkun miżjuda
għall-munzell.
U mbagħad kull wieħed minn dawn dawk li huma fuq quċċata ta 'ieħor jkollu jagħti lura
qabel l-oħrajn jistgħu jibqgħu għaddejjin.
>> Hekk per eżempju, hawn, total ta '0, ewwel, huwa se jirritorna 0.
U mbagħad jagħżlu somma ta '1.
Imbagħad somma ta '1 se ritorn 1 sa somma ta '2.
U fl-aħħarnett, is-somma ta '2 huwa għaddej li jirritornaw 3 sa prinċipali.
Does li jagħmel sens?
>> Huwa tassew importanti li wieħed jifhem kif il-munzell qed taħdem u tipprova
ara jekk jagħmel sens.
OK, hekk issortjar.
Allura għaliex huwa issortjar importanti, ewwel nett?
Għaliex aħna kura?
Kulħadd?
Agħti me eżempju?
Yeah?
>> UDJENZA: [inaudible].
>> LUCAS: Yeah, OK.
Allura inti tista 'tfittex aktar effiċjenti.
C'est mod tajjeb.
Għalhekk, per eżempju, għandna ħafna ta ' affarijiet, attwalment, fil-ħajja tagħna li
huma magħżula.
Per eżempju, dizzjunarji.
>> Huwa importanti ħafna li jkollhom l- kliem fil xi tip ta 'ordni li aħna
tista 'aċċess faċilment.
Allura dan huwa dak li kien qal.
Tista 'tfittex aktar effiċjenti.
Aħseb ta 'kif iebes ikun li jkollha dizzjunarju li fih il-kliem huma fil-
sabiex każwali.
Int ser ikollok tħares lejn, pretty ħafna, kull kelma waħda sakemm issib il-
kelma li inti qed tfittex.
>> Jekk inti qed tuża Facebook wkoll, meta qed tfittex fi ħbieb tiegħek, int
ser tara li Facebook tpoġġi tiegħek ħabib eqreb i fuq quċċata ta 'dawk
li inti ma tkellem lit-li ħafna.
Jekk inti tmur-triq kollha lejn il-qiegħ tal- lista ħabib tiegħek, int ser tara
nies li inti probabilment ma anki ftakar li int ħbieb ma.
U dan għaliex xorta Facebook ħbieb tiegħek bbażati fuq kif
qrib inti lilhom.
>> Allura organizzazzjoni data.
Ukoll Pokémon.
Allura inti tara li Pokemons kollha jkollhom in-numri.
U li bħal faċli mod ta 'aċċess tad-data.
>> UDJENZA: Aċċess Pokémon.
>> LUCAS: Yeah.
>> UDJENZA: [inaudible].
>> LUCAS: Yep.
OK, hekk sort għażla.
Sort Għażla se tagħżel l- iżgħar valur mhux magħżul ta 'lista kull
time f'kull iterazzjoni.
Huwa tip ta 'bħall-tip li inti tagħmel fir-ras tiegħek meta inti qed tipprova
sort lista fuq naħa.
>> Bażikament, kull ma għandek tagħmel hu li inti tħares għall-iżgħar numru.
You poġġih fil-lista Issortjati.
U allura inti tfittex għall- jmiss iżgħar numru.
U allura inti żżomm tagħmel li u l-bqija.
>> Allura sort għażla hija bażikament inti tagħżel kull darba li l-iżgħar
valur mhux magħżul.
Poġġi fl-aħħar ta 'l-magħżula parti tal-lista.
U iżommu tagħmel dan.
Mela ejja malajr tara dak dan qisu.
Allura hawnhekk-magħżula u l-lista mhux magħżul.
>> Allura għall-magħżula tal-lista, huwa inizjalment vojta.
U mbagħad jien ser tagħżel l- iżgħar numru hawnhekk, li huwa 2.
So I nikseb in-numru 2 u nressaq fil-faċċata tal-lista.
U mbagħad I tfittex għall-iżgħar li jmiss element, li huwa 3.
So I poġġih fl-aħħar tal-lista magħżula.
U mbagħad I iżommu tagħmel dan.
I isibu 4 u poġġih fl-aħħar.
Sib 5 u poġġih fl-aħħar.
>> U tħares lejn kif kollha ta 'dawk il-ħinijiet li Jien qal poġġih fl-aħħar huwa,
bażikament, jagħmlu skambju żewġ valuri.
OK?
U allura l-aħħar wieħed, inti biss jkollhom waħda element aktar.
Allura huwa diġà magħżula.
>> OK, hekk sort inserzjoni.
Sort Inserzjoni int ser jkollhom ukoll li ħaġa li jkollhom magħżula u
lista mhux magħżul.
L-unika ħaġa hija li kull darba li int żżid element li l-magħżula
lista, inti biss pick-element li hija fuq quddiem tal-lista mhux magħżul.
U allura int ser issib dak pożizzjoni li għandha tkun fil-Issortjati
parti tal-lista.
>> Ejja naraw dak li dan huwa hekk dan jagħmel aktar sens.
Allura inizjalment, per eżempju, jien jippruvaw li daħħal in-numru tlieta fil-
parti Issortjati tal-lista.
Allura l-lista ma jkollhom xejn.
So I tista 'biss jitqiegħed il-numru 3.
>> Issa, nixtieq li żżid in-numru 5 sa il-parti Issortjati tal-lista.
So I tħares lejn in-numru 5.
I Avviż li huwa akbar minn 3.
So I jafu li għandu jkun wara 3.
So I tpoġġi 3 u 5.
>> Imbagħad I tixtieq li daħħal in-numru 2.
I Avviż li n-numru 2 huwa attwalment aħħar imbagħad kemm 3 u 5.
So I attwalment ikollhom qiegħdu kollu l- mod fil-bidu tal-lista.
So I għandhom, tip ta ', bidla l- elementi fil-lista magħżula so I tista '
tagħmel spazju għall-numru 2.
>> Imbagħad I tara n-numru 6.
Nara li għandu jkun wara l-5.
So I poġġih hemmhekk.
U fl-aħħarnett, I tħares lejn in-numru 4.
U I Avviż suppost jkun bejn 3 u 5.
U mbagħad I poġġih hemmhekk u shift l-elementi kollha l-oħra.
Jagħmel sens?
>> Sort Bubble.
Allura sort bużżieqa huwa bażikament dak li int ser do-- nagħmlu sejħa hija bużżieqa
sort għaliex inti tmur permezz tal-list-- huwa attwalment aħjar jekk I biss juru
inti tixtieq this--
u int ser iqabblu numri li jmissu.
U int ser tpartit tagħhom pożizzjonijiet jekk dawn mhux qed
fl-ordni dritt.
>> Allura bażikament, dak li qed jiġri li jiġri huwa hawnhekk, per eżempju,
għandek 8 u 6.
Inti taf li l-ordni Issortjati se fil-fatt tkun 6 u 5, id-dritt?
Allura inti qed tmur biex tpartit l-ordnijiet.
Imbagħad I tara 8 u 4 hawn.
U jien jagħmlu l-istess ħaġa.
I tpartit darb'oħra.
U fl-aħħarnett, 2 u 8.
I wkoll swap lilhom.
>> Huwa sejjaħ Bubble Sort għaliex wara kull wieħed minn dawn iterazzjonijiet, fil-fatt,
l-akbar numru fil-lista gets kollha il-mod sa l-aħħar tal-lista.
Does li jagħmel sens?
Minħabba li żżomm iskambji it u jmexxuh lejn il-lemin.
>> OK, għalhekk dan huwa t-tieni iterazzjoni.
Ikun l-istess ħaġa.
I ser tagħmel swap wieħed u allura l-aħħar wieħed.
I li m'hemm l-ebda tpartit u l-lista hija magħżula.
Għalhekk fl Sort Bubble, aħna bażikament iżommu għaddejja l-lista u iskambji
affarijiet sal I Avviż li jien ma tagħmel xi tpartit tagħmel dak iterazzjoni, li
ifisser dik il-lista hija diġà riżolta.
Jagħmel sens?
>> Ejja nitkellmu ftit dwar running time.
Allura Do you guys tiftakar Big O, Omega, u Theta?
Yeah?
OK, dak li huwa O Big, l-ewwel nett?
>> UDJENZA: [inaudible].
>> LUCAS: Yeah, huwa msejjaħ agħar każ runtime, li ifisser biss li huwa
kemm inti tistenna l-programm li jieħdu jiddekorri.
Bħal, f'termini of--
f'dan case-- n.
In-numru ta 'elementi fil- lista fl-agħar każ.
Bħal, fl-agħar każ possibbli.
>> Allura għal Sort Bubble, per eżempju, għandna O Big ta n kwadru.
Għalfejn għandna li?
Għaliex hija Bubble Sort Big kwadru O n?
>> UDJENZA: [inaudible].
>> LUCAS: Yeah, hekk l-agħar każ se jkun li I ser ikollok tagħmel iterazzjonijiet n.
Allura kull wieħed mill-iterazzjonijiet se iġibu l-akbar element sa l-aħħar
tal-lista.
Allura l-agħar każ hija li għandi biex tagħmel dan ħaġa n żminijiet.
U għal kull waħda minn dawk il-ħinijiet, I għandhom do Swaps n minħabba I jkollu jqabbel
kull żewġ elementi.
Allura hu għalhekk li huwa n kwadra għaliex dan huwa n żminijiet n.
>> Imbagħad, sort għażla hija wkoll n kwadru minħabba li, għal kull iterazzjoni, ikolli
tħares lejn kull element uniku fil-lista.
U mbagħad isibu l-iżgħar, li jfisser li għandi
tfittex permezz ta 'elementi n.
U nagħmel li n drabi minħabba I għandhom jagħżlu l-elementi kollha n.
>> An sort inserzjoni huwa wkoll n kwadru minħabba li l-agħar każ se
jkun, wieħed, għandi li daħħal n-numri, id-dritt?
So I diġà jafu li jien ser li jkollhom iterazzjonijiet n.
Iżda għal kull waħda minn dawn in-numri, jekk kelli li tħares lejn kollha tal-numri fil-
il-lista magħżula u qiegħdu kollu il-mod fl-quddiem, li se jkun n kwadri
minħabba li se jkun n żminijiet n-ġdid.
Jagħmel sens?
Xi ngħidu dwar omega?
>> UDJENZA: [inaudible].
>> LUCAS: Huwa l-aħjar xenarju każ.
Allura huwa simili, fil-lott ta 'drabi biex issortjar, ix-xenarju każ-aħjar huwa
meta l-lista hija diġà riżolta.
Allura inti ma verament ikollhom li tagħmel xejn.
Sort Bubble għandu l-aħjar xenarju ta 'n.
Do you guys taf għaliex?
>> UDJENZA: [inaudible].
>> LUCAS: Yeah, jekk inti żżomm rekord ta ' jekk razzjon data kellha xi tpartit jew
le, jekk għandek xi ħaġa simili stabbiliti biex minnu jekk kien hemm iterazzjoni, jekk il-
lista hija diġà magħżula, bażikament, x'inhu jiġri huwa jien ser
jippruvaw li tpartit kull tnejn elementi ħdejn xulxin.
Jien ser tara li m'hemm l-ebda tpartit.
U jien biss jirritorna dritt bogħod.
>> Allura dan ifisser li jien biss kellhom jgħaddu l-lista ta 'darba.
Allura huwa n għaliex nħares fil n elementi.
Għaliex għażla sort n kwadru?
>> Yeah, anki jekk l-lista hija magħżula, għall- kull iterazzjoni ta 'tip ta' għażla, I
għandhom jagħżlu l-element minimu.
Allura dan ifisser li għandi biex tfittex lejn l-elementi fil-mhux magħżul
lista u jsibu l-minimu għal kull iterazzjoni.
Does li jagħmel sens?
>> U xabla inserzjoni huwa n għaliex fil- każ li jien jippruvaw li daħħal il-
numri u kollha tal-numri, meta I jippruvaw daħħal lilhom, nara li dawn
huma fil-pożizzjoni dritt.
I ma jkollhom imorru jiċċekkjaw kollha l-oħra numri fil-lista mhux magħżul.
Allura hu għalhekk li se jkun n.
Jagħmel sens?
U dak li huwa theta?
>> UDJENZA: [inaudible].
>> LUCAS: Liema, sorry?
Ngħid mill-ġdid.
>> UDJENZA: [inaudible].
>> LUCAS: Eżattament.
Allura tista 'tara li biss selezzjoni maħżuna fil Merge sort jkollhom thetas.
U dan għaliex inti biss għandek theta jekk kemm Big O u Omega huma l-istess.
OK.
U fl-aħħarnett, jingħaqdu sort jiġifieri fil log n.
>> U mbagħad, kif Dan kien qal, Jingħaqdu sort huwa tip ta bħall-istess mod li
inti tagħmel tfittxija binarja.
Allura inti tikseb il-lista.
U int ser maqtugħa f'nofsijiet.
U allura inti maqtugħin minnhom f'nofsijiet iżgħar.
U allura inti jingħaqdu.
Inti guys ftakar li, id-dritt?
OK, kif kien qal.
>> OK, pointers.
Allura dak li huwa pointer?
>> UDJENZA: [inaudible].
>> LUCAS: An indirizz.
OK.
Naf li David juri mazz ta ' videos ta Binky u affarijiet tipponta
xulxin.
Imma I simili biex jaħsbu ta 'pointers bħala sempliċi indirizz.
Allura huwa varjabbli li huwa għaddej biex jaħżnu indirizz.
>> Allura huwa biss dan il-varjabbli speċjali li huwa erba bytes twil.
Ftakar, li pointer li xejn huwa dejjem erbgħa bytes twil għall 32-bit tagħna
magna sabiex il-każ ma ' l-appliance.
U hija biss għandha l-post ta 'varjabbli ġewwa ta' dan.
>> OK, hekk hemm din il-memorja, bażikament.
Allura kull blokk ta 'memorja attwalment għandha tikketta, li hija l-indirizz tal-
memorja slotty.
Allura dan ifisser li nista 'jkollhom tipponta pointer biex
kwalunkwe minn dawn l-indirizzi.
Allura r-raġuni għaliex aħna ser tuża pointers huwa jekk ikolli biex tiftakar l-post
li varjabbli speċifiku huwa memorja.
>> U inti guys ftakar li wieħed minn dawk każijiet kien jekk ikolli funzjoni
jekk ikolli fil-fatt tixtieq li inti tpartit għall reals, I attwalment
għandek tibgħat pointer.
Mhux l-varjabbli.
Do you guys ftakar li?
Il between-- differenza
dak huwa l-isem?
Sejħat mill-valur u ssejjaħ b'referenza, id-dritt?
>> OK, yeah.
Allura sejħa mill-valur.
Meta inti biss tibgħat varjabbli li jiffunzjonaw int biss tibgħat valur.
Allura int fil-fatt tibgħat kopja tal-varjabbli.
U l-programm tiegħek ma setgħux kura inqas dwar jekk l-istess varjabbli attwalment
jagħmel kopja.
>> U ssejjaħ b'referenza ifisser li Jien fil-fatt tibgħat kopja ta 'l-
pointer li dak il-varjabbli.
Allura dan ifisser li jien jibgħat il- post ta 'dak il-varjabbli.
So sens Għandi l-post ta 'l- varjabbli, meta I-sejħa l-funzjoni
ma pointers, jien kapaċi biex effettivament jibdlu l-data li kien fil prinċipali.
Jagħmel sens?
>> Għalkemm, il-pointer hija kopja, il- pointer għad għandu l-indirizz reali ta '
il-varjabbli li I trid tibdel.
Jagħmel sens?
>> Allura ħolqien pointers.
Ftakar, il-pointer dejjem ikollhom it-tip li huwa tipponta
biex u mbagħad stilla.
U allura inti tpoġġi l-isem.
Mela ftakar li kull meta inti għandek kwalunkwe star, huwa simili pointer biex
li kwalunkwe varjabbli tip li kellek.
>> Allura hawn fil star, per eżempju, huwa pointer u integer.
U allura star char huwa pointer star char u ibqa 'sejjer hekk.
Yeah?
>> UDJENZA: X'jiġri jekk għandna pointer li n-istilla x.
Naf li toħloq pointer li x.
Ma tiddikjara wkoll x integer?
>> LUCAS: OK, hekk meta inti tgħidli n star x, int ma toħloq pointer għal
x varjabbli.
Inti toħloq pointer jismu x.
>> UDJENZA: [inaudible].
>> LUCAS: Allura meta I say n star x, jien qal, ħej, fil-memorja, jien ser
tikseb wieħed minn dawn it-tliet kaxxi.
U jien se ngħid li dan se tkun x, li hija
ser tkun pointer.
U xi ħaġa interessanti dwar pointers hija li aħna ngħidu li dawn ikollhom
4 bytes għal magna 32-bit.
U r-raġuni għal dan hija għaliex 4 bytes huma 32-bits.
>> U magni li huma 64 bits attwalment jkollhom indirizzi pointers
li huma 64 bits tul.
Allura dan ifisser biss li d-daqs tal- indirizzi fil-magna hija differenti.
>> Allura Referenzar u Dereferencing.
Hemm żewġ operaturi li inti guys għandhom jiftakru.
L-ewwel hija ampersand.
It-tieni huwa star.
Ma jsibux konfuż minn dak star u dan STAR minħabba ftakar li, fil-
F'dan il-każ, inti għandek n star.
>> Huwa simili ħaġa sħiħa flimkien.
M'hemm l-ebda stilla ispazju n.
Allura dan ifisser li huwa t-tip.
Ftakar, li meta jkollok l-istilla varjabbli, int
jitkellem dwar it-tip.
>> Meta inti għandek biss star u allura l- isem tal-varjabbli, dan ifisser li
int dereferencing l pointer, li ifisser li inti qed tfittex fil-
pointer, konstatazzjoni-indirizz huwa tipponta lejn, tmur f'dak l-indirizz,
u tħares lejn kull meta għandek hemmhekk.
So I tell istudenti tiegħi li meta jkollok star, inti għandek taħseb li huwa
l-abbrevjazzjoni tal-kontenut ta '.
>> Mela jekk għandek pointer u int do pointer star, huwa l-
kontenut tal-pointer.
Allura inti tmur għal dak kollu huwa li tipponta lejn u ħarsa lejn il-kontenut kostanti.
U l-ampersand huwa l-istess Ħaġa bħala indirizz tal.
>> Mela jekk ikolli varjabbli a-- simili, ejja ngħid li għamilt int a ugwali 3--
jekk irrid biex isibu l-indirizz ta 'dik varjabbli memorja, I tista 'biss tagħmel
ampersand a.
Allura huwa indirizz ta '.
Jagħmel sens?
>> Allura hawnhekk eżempju.
Dan hija nieqsa int b u int c.
Allura int a ugwali 3 mezz li Jien se jmorru għall-memorja.
U jien ser isibu slot u tpoġġi l-numru 3 hawn.
>> U mbagħad int b ugwali 4.
Jien ser jagħmlu l-istess ħaġa.
Mur memorja u tpoġġi numru 4 f'wieħed mill-kaxxi.
U int ugwali 5.
Sib ieħor kaxxa u mqiegħda numru 5.
>> Allura x'inhi din il-linja tagħmel out? pa n star ugwali ampersand a.
Allura l-ewwel nett, n pa star.
X'inhu tagħmel?
>> UDJENZA: [inaudible].
>> LUCAS: Yeah, hekk n pa star, l-ewwel, tiddikjara pointer imsejjaħ pa.
U allura huwa assenjata l-valur ta ' li pointer li jkun l-indirizz ta '.
Allura ampersand a.
Imbagħad, jekk I do pb star, dak huwa pb star?
>> Oh, sorry.
Dan huwa wkoll nieqsa. n pb star.
I jfisser star pc.
Jien hekk sorry.
Hu l-istess ħaġa.
Imma issa jien tajba ar-ħolqien ta 'pointer biex b u mbagħad pointer sa c.
Yeah?
>> UDJENZA: [inaudible]?
>> LUCAS: Iva.
Mela jekk inti tmur għall-memorja u inti tmur biex l-kaxxa li hija designator għall pa,
int fil-fatt se tara l-indirizz ta '.
OK?
Yeah?
>> UDJENZA: [inaudible]?
>> LUCAS: Yeah, pointer huwa indirizz.
Qatt tinsa li.
Huwa simili l-aktar importanti parti dwar pointers.
Hemm ħażna u l-indirizz għal xi varjabbli.
Xi ħaġa oħra?
Kwalunkwe mistoqsijiet oħra?
OK.
>> Allura Pointers u Arrays.
Ftakar li meta I do int firxa 3, bażikament, dak li qed nagħmel huwa jien, it-tip
ta ', li tiddikjara fil-pointer.
Allura firxa hija tip simili ta 'pointer għal post speċifiku fil-memorja li fiha I
allokati tliet slots għal kulħadd interi.
Does li jagħmel sens?
>> Allura meta I do firxa int 3, dak jien tagħmel, bażikament, qed toħloq tlieta
slots fil-memorja.
So I biss issib tliet slots fil-memorja.
Mela jekk jien do, imbagħad, firxa star, huwa bażikament ifisser il-kontenut ta 'firxa,
li jfisser I tħassar il-pointer, I go għal dak il-post li huwa tipponta lejn,
u I tpoġġi l-numru wieħed.
>> U mbagħad, jekk nagħmel star firxa plus 1, dak l-istess ħaġa bħat tagħmel firxa
ħin, l waħda, li ifisser biss mmur il-post li huwa tipponta lejn.
U allura l-għamliet plus 1 me shift pożizzjoni waħda.
So I mur din il-pożizzjoni, fil-fatt, u tpoġġi l-numru tnejn.
>> U mbagħad, finalment, meta I do array plus 2, I jmorru fejn
tipponta firxa fiż.
U mbagħad I jimxu għal blokki memorja.
U mbagħad I tpoġġi l-numru tlieta hawnhekk.
Yeah?
>> UDJENZA: array Allura star huwa sempliċement qal l-ewwel punt.
U inti tista 'żżid 1, sempliċement minħabba aħna qed biss verament
referenzar li l-ewwel indirizz.
>> LUCAS: Yeah.
Għalfejn nagħmlu, per eżempju, jgħidu array 0, array 1, u array 2?
Jien qal, għaliex do you do 0, 1, 2, 3 minflok 1, 2, 3?
Waħda mir-raġunijiet hija, waħda, kompjuter programmaturi jippreferu li jibdew
li jibda jgħodd mill 0.
Żewġ huwa għaliex meta inti tagħmel firxa 0, huwa l-istess ħaġa bħat tagħmel firxa
plus 0, li jfisser mmur dik il-pożizzjoni, u jien ma
skip xi blokki memorja.
So I ma jiċċaqalqux xi blokki memorja.
Yeah?
>> UDJENZA: [inaudible]?
>> LUCAS: Hekk hi s tistaqsi liema huwa id-differenza bejn li jagħmlu
dan jew tagħmel malloc.
Waħda mid-differenzi hija li array int 3 huwa ħolqien ta '
array fuq il-munzell.
U meta I do malloc, dan joħloq fuq il-borġ.
Does li jagħmel sens?
>> Allura kif ma malloc attwalment jaħdmu?
Allura għaliex għandna anke bżonn l-użu malloc?
Kompilatur tip ta 'figuri Your out kollha l-varjabbli li inti ddikjarati.
U hu joħloq spazju għal kulħadd minnhom fil-ċmieni.
Allura kollha ta 'varjabbli tiegħek ser li tkun x'imkien fil-ċmieni.
Allura hawnhekk huwa l-varjabbli ambjent.
>> Allura bażikament, spazju għall-dawk il-varjabbli fil-memorja huwa allokat fuq
jikkompilaw ħin.
Allura dan ifisser li l-kompjuter tiegħek għandha tkun taf kollha ta 'dawk il-varjabbli
qabel.
Dan ma jeħtieġx li jkunu jafu liema valur int ser tpoġġi fihom.
Iżda jeħtieġ li tkun taf kif ħafna memorja għandek bżonn.
>> Imma issa ejja ngħidu li, per eżempju, int ħolqien firxa jew tieħu
string li inti qed tieħu mill-utent.
Inti ma nafx kemm-sekwenza se tkun, per eżempju.
Allura inti ma tafx eżattament kemm blokki memorja inti jallokaw, id-dritt?
>> Allura ma verament jagħmel sens għall inti ngħid tpoġġi 100 karattru.
U mbagħad jekk dak l-utent jikteb 150?
Int ser tkun invitat.
>> Allura bażikament, inti ma tistax tkun ċert ta 'kif ħafna memorja għandek bżonn biex jallokaw
meta inti tiġbor l-programm.
Inti biss taf li fil-ħin run.
Allura hu għalhekk li inti għandek il-borġ.
Allura l-borġ huwa se jkollu memorja li int allokazzjoni matul il-
tul tal-programm running.
>> Allura bażikament, meta inti tagħmel malloc, liema qed tagħmel qed jalloka memorja fi
runtime, li jfisser li int jiddeċiedu dritt f'dak il-mument li inti
għandu jkollhom li l-memorja.
Allura dak meta int allokazzjoni tiegħu.
Does li jagħmel sens?
>> Mela ftakar, il-munzell għandu varjabbli li huma maħluqa fil-ħin jikkompilaw.
U allura l-borġ ikollu varjabbli li huma maħluqa kif tmur
ma malloc, per eżempju.
>> UDJENZA: [inaudible]?
>> LUCAS: Allura GetString huwa ser sejħa malloc.
Let me jitkellmu dwar malloc, u I ser jispjegaw GetString.
Allura malloc huwa l-istess ħaġa bħala allokazzjoni memorja.
Allura li għaddej biex jallokaw memorja fuq il-borġ.
U li għaddej biex jirritornaw pointer biex fejn dak memorja kienet allokata fil.
>> Allura meta inti do--
hawn għal example--
n pointer star.
U mbagħad pointer ugwali malloc daqs ta 'drabi pulzier 10.
Jien ħolqien ta 'pointer.
U mbagħad jien assenjazzjoni li pointer biex il-valur tal-pointer li malloc
qed tagħti me.
>> So jien tistaqsi malloc tista talloka spazju għal 10 interi.
Dak hu li huwa qal.
U malloc tagħti me lura pointer li dak il-post.
Jagħmel sens?
OK.
I U GetString huwa, bażikament, tagħmel sejħa biex malloc sabiex inti tista 'talloka
memorja matul runtime.
>> Dejjem ftakar biex jiċċekkja għal null minħabba malloc se jirritorna null
jekk ma jistax jalloka memorja.
Ejja ngħidu li inti titlob għal redikoli ammont tal-memorja.
Kompjuter tiegħek mhux se tkun kapaċi jallokaw li ħafna.
>> Allura malloc huwa biss se li jirritornaw null.
Allura dejjem ftakar biex jiċċekkjaw jekk il- pointer li inti ltqajna minn malloc huwa
null jew mhux minħabba, jekk huwa, inti tista ' jiġu dereferencing pointer u
jikkawżaw difetti sekondarji.
U fl-aħħarnett, ma ninsewx memorja liberu tiegħek.
>> Malloc qed toħloq memorja fil-borġ.
U inti għandek biex tilliberalizza l-memorja qabel jintemm il-programm.
OK, li kollox għalija.
Jiddispjacini, Rob.
Grazzi.
>> [Applause]
>> LUCAS: Kwalunkwe mistoqsijiet aħħar qabel Rob taqa?
Nru?
Yeah?
>> UDJENZA: I ma tara dan online wieħed.
Have you uploaded encore?
>> LUCAS: I think Dave hija uploading malajr.
>> DAVE: Hija ser jiġu impustati.
>> LUCAS: Hija ser ikunu online.
>> UDJENZA: Huwa up.
>> LUCAS: Huwa up?
OK.
Yeah?
>> UDJENZA: [inaudible]?
>> LUCAS: Iva, inti għandek ħielsa kollha l- memorja li jitqiegħed fil-borġ.
>> UDJENZA: [inaudible]?
>> LUCAS: Iva.
Kwalunkwe ħin li inti għandek malloc kultura, inti għandu jkollhom kultura ħielsa
wara li inti tieqaf tuża dak il-varjabbli.
Allura malloc u ħielsa huma dejjem flimkien.
Aħjar ħbieb tagħhom.
Yeah.
Rob?
>> ROB: I ser imorru malajr.
U wkoll il-video se jitpoġġew up.
Għandi l-mic fuq.
>> OK, hekk ġimgħa ta 'ħamest Jittieħed.
L-ewwel ħaġa li għandna huwa l-munzell.
Mela ftakar li hemm biss munzell wieħed frejm kull sejħa funzjoni attiva.
Aħna ser tara li fit-tieni.
U tiftakar ukoll x'inhu dak li attwalment tmur f'kull frame munzell ser ikunu
il-varjabbli lokali ta 'funzjonijiet tagħna, l-argumenti li huma mgħoddija fis tagħna
funzjonijiet, flimkien ma 'koppja affarijiet oħra li inti ma verament
bżonn ninkwetaw dwar.
>> Allura hawnhekk programm eżempju fejn, avviż, prinċipali huwa printfing-ritorn
valur ta 'foo 4.
foo huwa biss se jirritorna l- valur ta 'bar 4 comma 6.
U bar se jistabbilixxu xi lokali n varjabbli ugwali għal 4 darbiet 6.
U mbagħad jirritornaw n.
>> Mela ejja nħarsu lejn il-munzell kollu l-iterazzjoni attwali ta 'dan il-programm.
Allura hemm il-qiegħ tal munzell tagħna.
Ftakar li l-munzell tikber up.
Allura fil-qiegħ tal-munzell tagħna, aħna jkollhom qafas munzell għall prinċipali.
Meta l-programm jibda, prinċipali huwa dejjem se tkun fil-
qiegħ tal munzell tagħna.
>> U dak li hu ġewwa ta 'tagħna munzell frame għall ewlenija?
Allura anke jekk kien hemm l-ebda lokali Varjabbli li prinċipali, bħal I said qabel,
għandna argc u RGV jieħu spazju ġewwa ta 'qafas munzell prinċipali.
Allura ewlenija issa se sejħa tal-foo funzjoni.
U dan ifisser foo se tikseb frejm munzell tagħha stess.
>> Allura issa aħna qed ġewwa tal l-foo funzjoni.
U dak li jeħtieġ li tmur fil- frame munzell foo tal?
Well, foo għandu argument n.
U n huwa ugwali għal 4 peress li dan huwa dak prinċipali hija tgħaddi bħala argument foo tal.
>> Allura issa foo huwa ser sejħa bar.
X'inhu bar se jkollhom ġewwa ta 'qafas munzell tagħha?
Hija għandha x ugwali għal 4 y ugwali għal sitta.
Li mhux kollha li aħna qed tmur biex ikollhom fil-qafas munzell għaliex bar
għandha wkoll varjabbli n lokali.
U n aħna qed tmur biex jistabbilixxu ugwali għal 24.
>> Allura issa bar se jirritorna n.
Allura bar huwa jirritorna 24 sa l-foo qafas munzell.
U minħabba bar issa huwa jirritorna, li ifisser li aħna qed popping l-qafas munzell
għall bar off tal-munzell.
Allura l-memorja li bar kien użu issa huwa off-munzell.
>> Issa, foo huwa wkoll se li jirritornaw 24 sa prinċipali.
Allura issa li foo huwa jirritorna, il-memorja li foo kienet qed tuża fil-"tagħha
frame munzell hu wkoll marret.
U issa, prinċipali huwa ser sejħa printf.
Allura printf huwa biss funzjoni oħra.
Meta nagħmlu sejħa printf, li għaddej biex tkun frame ieħor munzell għall-printf
sejħa funzjoni.
>> Liema huma aħna tgħaddi printf?
Dak hu għaddej biex tmur fuq qafas munzell tagħha.
Għall-inqas, aħna qed tgħaddi li fil-mija i backslash n u
l-argument 24.
Hija jista 'jkollhom aktar fl huwa frame stack jekk printf jiġri li tkun qed tuża xi
varjabbli lokali.
Ma nafux.
>> Imma dak kollu li jmur fil-proċess tat printf munzell frame.
Huwa ser tesegwixxi l-printf.
Imbagħad printf isir.
Huwa ser jerġa.
Fl-aħħarnett, isir prinċipali.
Main se terġa 'lura.
U allura programm tagħna isir.
Yeah?
>> UDJENZA: Inti tara [inaudible]
argumenti [inaudible]
parametri?
>> ROB: Allura hemm differenza sottili bejn argumenti u parametri.
U tassew, fil jitkellmu komuni, in-nies għandhom tendenza għal ftit taħlita minnhom up il-ħin kollu.
Iżda parametri huma l-formali Isem ta 'l-affarijiet.
>> Allura argc u ARGV huma l- Parametri għal main.
Argumenti huma dak li inti fil-fatt jgħaddu dawn il-parametri.
Allura hemm meta I call foo ta '4, 4 huwa l-argument jien tgħaddi fil.
U l-n parametru, ġewwa ta ' foo, jieħu fuq il-valur 4
peress 4 kien l-argument.
>> UDJENZA: [inaudible]?
>> ROB: n huwa varjabbli lokali biex bar.
n għadu lokali li foo, iżda huwa parametru li foo.
Mhuwiex varjabbli lokali.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: foo huwa biss ssejjaħ bar u jirritornaw kwalunkwe prospetti bar.
>> UDJENZA: [inaudible]?
>> ROB: Yeah, biss biex tara multipli munzell frames.
Yeah?
>> UDJENZA: Għaliex kien foo imsejħa qabel printf?
>> ROB: Għaliex kien foo tissejjaħ qabel printf?
So I jista 'jkollhom, minflok, għamlu xi ħaġa bħal int x ugwali foo tal-4
u mbagħad stampat x.
Iżda minflok, I flimkien il-funzjoni titfa 'l-argument printf.
>> Iżda avviż li ma nistgħux attwalment tesegwixxi l-sejħa biex printf sakemm aħna
ċifra barra dak foo tal-4 hu.
Allura aħna qed tmur biex tevalwa din.
U biss ladarba li isir huma għaddejjin li jiġu lura u tevalwa dan.
Yeah?
>> UDJENZA: Billi kemm bar [inaudible]
valur, għaliex aħna ma jkollhom [inaudible]?
>> ROB: Huma totalment għandhom ikunu int.
Li ma nqabadtx fuq passes multipli.
Għalhekk għandu jkun bar int u int foo peress li kemm dawk
huma jirritornaw interi.
Null huwa biss jekk dawn mhux qed tmur li jirritornaw valuri attwali.
Yeah?
>> UDJENZA: Jekk kellek linja hawn fuq ir-ritorn, [inaudible]?
>> ROB: A Linja fuq ir-ritorn?
>> UDJENZA: Yeah.
Bħal jekk inti ma printf u [inaudible], ikun jidher print darbtejn?
>> ROB: Allura ġewwa tal foo?
Jekk kellna printf dritt hawn?
>> UDJENZA: Yeah.
>> ROB: Mela jekk kellna dritt printf hawn, ikun jistampaw darba.
Peress li aħna qed jitolbu foo darba dritt hawn, allura aħna ser laqat il-printf.
Imbagħad aħna ser sejħa bar.
U mbagħad foo se terġa 'lura.
U li huwa.
Aħna biss qatt jiltaqgħu l printf darba.
Yeah?
>> UDJENZA: [inaudible]
printf ssejjaħ foo għaliex aħna qed l-ewwel ssejjaħ printf u allura aħna qed tgħaddi
l-argumenti.
>> ROB: Allura fit-teorija, mhuwiex printf ssejjaħ foo?
Allura l-ebda.
Just l-ordni li ċ se tesegwixxi dawn l-affarijiet huwa, qabel nistgħu
sejħa funzjoni, l-argumenti kollha għall-funzjoni jkollhom
jiġu evalwati kompletament.
Allura dan huwa evalwat kompletament?
Iva, huwa biss string.
Huwa biss valur.
>> Imbagħad għandna biex kompletament tevalwa din.
Ladarba dan isir, issa kollha ta ' argumenti tagħha huma evalwati.
U issa nistgħu nagħmlu l- sejħa biex printf.
Yeah?
>> UDJENZA: Mistoqsija waħda.
Jekk għandek funzjoni null, għandhom għandek virgola ritorn?
>> ROB: Inti ma punto virgola ritorn jekk għandek funzjoni null.
OK.
Allura issa xi għalf borġ.
Allura borġ huwa kif aħna qed tmur biex jittrattaw mal-ġestjoni tal-memorja dinamika.
U dan jikkuntrasta direttament mal- munzell li aħna kieku ssejjaħ awtomatika
ġestjoni tal-memorja.
>> Allura fuq il-munzell, int qatt ma verament ikollhom biex jittrattaw kif il-varjabbli lokali
qed jiġu imbuttati u popped off kollha dawn il-frejms munzell u dak kollu li Jittieħed.
Inti ma għandekx għalfejn tinkwieta dwar dan.
Huwa awtomatiku.
Allura l-borġ huwa manwali.
U l-[inaudible]
ġej minn dawn il-funzjonijiet malloc u ħielsa.
>> Allura hawnhekk programm ieħor.
Kollha għandna qed tagħmel huwa mallocing integer.
Aħna qed maħżuna fil star x.
Of course, aħna għandna biex jiċċekkjaw biex tara jekk x huwa null.
Imbagħad aħna qed tmur biex biss sett liema x hija li tipponta lejn 50.
Stampa dak x hija li tipponta lejn, print x, u mbagħad ħielsa x.
>> Allura kif dan huwa attwalment għaddejjin biex tfittex jekk inħarsu lejn munzell tagħna u borġ?
Allura aħna ser jerġa 'jibda.
Il-qiegħ tal munzell tagħna bħal qabel.
Ftakar li thee borġ direttament jopponi l-munzell?
Allura aħna qed tmur biex ikollhom l- quċċata tal-borġ tagħna up hemm.
>> Allura l-qiegħ tal munzell tagħna, aħna għandna qafas munzell tagħna għall prinċipali.
Hija għandha l-ispazju għall argc, ARGV, u aħna issa għandhom varjabbli x lokali, li
huwa star int.
Allura aħna qed tmur biex jtenni permezz ta 'dan il-programm.
L-ewwel ħaġa li għandna huwa sejħa għall malloc.
>> Allura aħna qed jagħmlu sejħa lill malloc.
Malloc hija funzjoni.
Huwa ser tikseb frame munzell.
Liema huma aħna tgħaddi lill malloc?
Li għaddej biex tmur ġewwa tal-qafas munzell.
Aħna qed tgħaddi daqs tal n, li huwa ta '4.
Allura li huwa mgħoddi lill malloc.
>> X'jagħmel malloc do?
Hija grabs us xi spazju fuq il-borġ.
Allura aħna qed tmur biex tmur fil-borġ.
U aħna qed tmur biex grab 4 bytes mill-borġ.
Mela ejja biss jagħtu dik indirizz arbitrarja.
0x123 Just nippretendu li huwa indirizz li huwa fuq il-borġ.
>> Allura dak li huwa effettivament ġewwa ta 'dik reġjun ta 'memorja fl-indirizz Ox123?
Żibel.
Allura aħna ma maħżuna xejn fiha.
Hekk safejn nafu, dan jista 'jkun xejn.
Inti ma għandha tassumi huwa żero.
Huwa aktar probabbli mhux żero.
>> Prospetti Allura issa malloc.
U dak li nagħmlu meta jerġa 'jibda malloc?
Waqqafna dak dan jirritorna.
Waqqafna x ugwali għal dak huwa jirritorna.
Allura x'inhu jirritornaw?
Huwa jirritornaw 0x123 peress li hija l- indirizz tal-blokka tal-memorja li
biss allokati fil-borġ.
>> Allura ritorn 0x123 x issa se jiġu stabbiliti ugwali għal 0x123 li, pictorially,
aħna ta 'spiss jiġbdu bħala x jkollhom attwali vleġġa li tipponta lejn li jimblukkaw.
Iżda x huwa biss ħażna dak l-indirizz.
Allura issa għandna biex jiċċekkjaw jekk x huwa null.
Mhuwiex null.
Aħna nippretendu li dan malloc irnexxielu.
>> Allura issa star x ugwali 50.
Allura star jiftakar dan ifisser tmur f'dak indirizz.
Allura 0x123 Aħna ser tmur f'dak indirizz.
Allura li twassalna up hemm.
Dak li qed nagħmlu f'dak l-indirizz?
Aħna qed ħażna 50.
>> Allura wara din il-linja, dan huwa dak li l-affarijiet se look like.
Allura issa huwa m'għadux żibel up hemm.
Issa nafu li 50 huwa f'dak partikolari indirizz minħabba
aħna stabbilit li dik.
OK?
Allura issa aħna qed tmur biex jistampaw f.
>> Allura l-ewwel aħna qed tmur biex jistampaw star x.
Allura dak li huwa star x?
Għal darb'oħra, star x ifisser mur l- ħaġa li x hija li tipponta lejn.
Allura x hija ħażna 0x123 Mur għal dak.
Nikbru 50.
Allura print f dik.
U dan ifisser li għaddej biex jistampaw 50.
U allura dik jirritorna.
>> U allura għandna t-tieni printf.
Aħna issa fil-mija p.
Jekk inti ma bbenefikawx, li l- kemm tistampa pointer.
Allura aħna għandna fil-mija i, mija f, u kollha ta 'dawk diġà.
Allura fil-mija p, stampar ta 'pointer.
>> Allura x hija pointer.
Allura jekk aħna qed tmur biex jistampaw x innifsu, aħna qed istampar dak li huwa effettivament ġewwa
x, li huwa 0x123 Allura l-ewwel print f se jistampaw 50.
It-tieni print f huwa għaddej li jistampaw 0x123 Yeah?
>> UDJENZA: Do inti tuża fil-mija x li jistampaw pointer?
>> ROB: Allura tuza mija x li jistampaw pointer?
Allura inti tista 'iżda fil-mija x hija biss, ġeneralment, simili għal jekk ikollok xi
integer u inti tixtieq li jistampaw bħala hexadecimal.
Li jinsab biss kif inti tagħmel dan.
>> Billi, fil-mija d kieku tipprintja deċimali.
Li kienu nikbru fil-mija d. i huwa biss numru sħiħ.
mija p huwa speċifikament għal pointers.
>> Allura x hija pointer.
Aħna rridu li jużaw mija p.
Iżda fil-mija x jistgħu jaħdmu.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Yeah.
Mill-inqas għal din call-- so I ma kienx jinkludi dan fil hawn.
Imma dawn iż-żewġ argumenti huma neċessarjament ġewwa ta 'dan il-qafas munzell
flimkien ma 'kwalunkwe varjabbli lokali printf jiġri li tkun qed tuża.
U allura l-sejħa li jmiss biex printf issa ġewwa tal printf qafas munzell hu
mija backslash p n u tkun xi tkun l- valur ta 'x hija, li hija 0x123.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Hija ser jistampaw xi ħaġa li tidher bħal dan.
>> UDJENZA: [inaudible].
>> ROB: Allura huwa prints f'forma indirizz.
Jidher qisu indirizz.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Għaliex huwa dak?
>> UDJENZA: [inaudible]?
>> ROB: Għaliex huwa dan il-werrej 4 bytes?
Allura hemm mazz sħiħ ta '0 fil-faċċata ta' dan.
Allura huwa verament 0x0000000123.
Fuq sistema 64-bit, se jkun hemm mazz sħiħ ta 'aktar żerijiet.
Yeah?
>> UDJENZA: [inaudible].
>> ROB: Allura l-ewwel printf se print--
>> UDJENZA: [inaudible].
>> ROB: Iva, li għaddej biex jistampaw dak x hija li tipponta lejn.
Star jgħid dak li huwa dan ħaġa li tipponta lejn.
Grab dan.
Allura x'inhu li tipponta lejn?
50.
Grab dan.
Dak hu li aħna qed tmur biex jistampaw.
Billi, il-wieħed li jmiss, aħna qed biss istampar x innifsu.
X'inhu ġewwa ta 'f?
0x123.
OK.
>> U mbagħad, finalment, aħna għandna l-ħielsa.
Liema huma aħna tgħaddi biex ħielsa?
Aħna qed tgħaddi x.
Dak iż-żmien I attwalment murija fil-qafas munzell.
>> Allura aħna qed tgħaddi l-valur 0x123 biex ħielsa.
Allura issa ħielsa jaf, id-dritt, I ikollhom imorru sa l-borġ
u ħielsa li l-memorja.
Huwa m'għadekx jużaw dak huwa fl-indirizz 0x123.
>> Allura ħielsa se rilaxx li mill-borġ.
Issa borġ tagħna hija vojta darb'oħra.
Għandna l-ebda tnixxijiet memorja.
Issa ħielsa se terġa 'lura.
Avviż li x għadu 0x123.
Imma li issa mhuwiex memorja validu.
Aħna m'għandhiex tibqa dereference x.
Yeah?
>> UDJENZA: Huwa jirritorna 0 żejda?
>> ROB: Huwa returen 0 żejda?
Iva.
Aħna biss jitqiegħed li hemm għaliex aħna għandna ritorn wieħed għall-arja.
Allura huwa simili, yeah, tikri jinkludu r-ritorn 0.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Allura wara ħielsa x, x'jiġri jekk nippruvaw li dereference l-pointer?
Huwa possibbli li xejn tmur ħażin.
Huwa possibbli li aħna ser xorta jiksbu 50.
>> Huwa possibbli, wkoll, li din tal-memorja huwa issa qed jintużaw għal xi ħaġa oħra.
Allura huwa imġieba mhux definiti.
U undefined ifisser xejn jista 'jiġri.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Nru, hekk jekk inti tassenja x għal xi ħaġa oħra.
Mela jekk dritt hawn għidna x ugwali xi ħaġa malloc else--
daqs malloc event--
allura dak blokk oriġinali ta 'memorja mhux meħlus.
U aħna għandna uffiċjalment mitlufa.
Din hija nixxija memorja.
Imxejna mitlufa ir-referenzi kollha għal dak blokk ta 'memorja.
Allura hemm ebda mod nistgħu qatt ħielsa it.
OK, hekk mbagħad jirritornaw 0 mezzi jsir.
>> Kull dritt, overflow hekk munzell.
X'hemm l-idea hawnhekk?
Mela ftakar, borġ hija ser tistabbilixxi.
Munzell qed jogħla.
Allura dan kien l-eżempju minn lecture, I think, fejn prinċipali huwa biss se
sejħa dan foo funzjoni, li se li sejħa nnifisha recursively aktar u
aktar mill-ġdid.
>> Allura munzell frames huma ser xogħol eżattament l-istess.
Allura aħna qed tmur biex tibda bil prinċipali bħala l-qafas munzell qiegħ.
Imbagħad prinċipali hija ser sejħa foo, li hija se tikseb qafas munzell.
>> Imbagħad foo huwa ser sejħa foo għal darb'oħra, li hija se tikseb
frame ieħor munzell.
U mbagħad għal darb'oħra, u għal darb'oħra, u għal darb'oħra, u għal darb'oħra sakemm, eventwalment, we run
fil-borġ.
Allura dan huwa kif nikbru a overflow munzell.
U f'dan il-punt, inti SEG tort.
Jew youd verament seg tort qabel dan il-punt iżda yeah.
>> UDJENZA: Huwa qalba dump l- istess bħal tort seg?
>> ROB: Allura inti taf tara segmentazzjoni qalba tort iddampjati.
Ikollok dump qalba meta inti SEG tort.
U huwa simili dump kollha tal- kontenut tal-memorja attwali tiegħek sabiex
li inti tista 'tipprova u jidentifikaw għaliex inti SEG akkużati.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Allura mezz tort segmentazzjoni hemm overflow munzell.
Allura mhux bilfors.
A tort segmentazzjoni ifisser li int memorja jmissu b'mod
inti m'għandekx tkun.
Allura mod wieħed ta 'dan jiġri huwa, meta inti munzell overflow, nibdew jmissu
memorja b'mod li aħna ma għandhom ikunu.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Allura ġewwa ta 'loop infinita.
Bħal, dan huwa bħal infinita rikursivi loop u hekk aħna nikseb ieħor
munzell jinkwadra kull darba.
Iżda biss ġewwa ta 'regolari infinita filwaqt one--
ukoll, ejja ma anki print f--
tagħmel xi ħaġa.
Tkun xi tkun.
>> Aħna mhux qed tmur biex tkun jkollna frame ieħor munzell.
Aħna biss tmur biex iżommu looping matul dan struzzjoni waħda.
Il-munzell hu mhux qed jikber.
Hu l-fatt li kull rikursivi sejħa qed tagħti us qafas munzell.
C'est pourquoi irridu jiksbu overflow munzell.
Yeah?
>> UDJENZA: Mela jekk inti qal li tikseb l- filwaqt loop u mbagħad [inaudible]?
>> ROB: Mela jekk ġewwa tal-linja waqt kien hemm printf, inti xorta
tort mhux seg.
I biss ma riedx li jħawdu affarijiet.
Ikun loop.
Youd tikseb munzell wieħed qafas għall-printf.
>> Imbagħad printf se jerġa 'lura.
Imbagħad youd loop darb'oħra.
Youd tikseb munzell wieħed qafas għall-printf.
Hija se jerġa 'lura.
Frame munzell Uniku.
Allura int ma jkollna dan infinita piling up frames munzell.
>> UDJENZA: [inaudible]?
>> ROB: Iva.
Allura dan overflow munzell jiġri għaliex ħadd minn dawn
sejħiet għall-foo huma jirritornaw.
Mela jekk nerġgħu lura, allura aħna kieku jibdew jitilfu frames munzell.
U allura aħna mhux se munzell overflow.
U hu għalhekk li għandek bżonn każ bażi għall-funzjonijiet personali tiegħek.
Yeah?
>> UDJENZA: Huwa d-daqs potenzjali u l- munzell għall-borġ l-istess għal
programmi kollha?
>> ROB: Bejn wieħed u ieħor.
Huwa d-daqs potenzjali tal-munzell u l-borġ l-istess għall-programmi kollha?
Bejn wieħed u ieħor.
Hemm xi randomized sa fejn jibda munzell u
fejn il-borġ jibda.
Jekk jiġri li jkollhom lott kollu ta ' varjabbli globali u affarijiet, inti tista
jieħdu l bogħod minn xi spazju għall borġ tiegħek.
>> Fuq sistema 64-bit, inti prattikament jkollhom memorja infinita.
Hemm biss tant.
Bejn 32 bits u 64 bits, li differenza sinifikanti.
>> Inti qed tmur biex tikseb aktar lott kollu munzell u spazju borġ fuq 64-bit
sistema għaliex hemm biss aktar jindirizza li jistgħu jużaw.
Iżda fuq sistema individwali, li se tkun bejn wieħed u ieħor l-istess ammont ta 'stack
u l-ispazju borġ.
Kull dritt.
>> Allura aħħar ħaġa hija kumpilazzjoni.
Allura inti għandek tkun taf dan il-proċess.
Hemm erba 'passi kbar.
Allura l-ewwel wieħed għandu jkun faċli biex tiftakar.
Pre-ipproċessar.
Hija għandha l-prefiss pre fiha.
Għalhekk tiġi qabel kollox.
>> Il-ħaġa li tiftakar huwa l-hash.
Allura hash jiddefinixxi u hash jinkludi fil kollha ta 'dawk.
Dawk huma kollha pre-proċessur direttivi.
Dawn huma l-affarijiet li l- pre-proċessur jieħu kura ta '.
>> Allura dak li ma a-proċessur pre do?
Hija ħaġa tassew dumb.
Kollha huwa kapaċi huma kollha ta 'dawn kopja, u maqtugħa, u pejst operazzjonijiet.
>> Allura hash jinkludi standard i0 dot h.
X'inhu li tagħmel?
Huwa ħtif l-istandard i0 dot h fajl u pasta hija fil-quċċata
kulfejn jgħid hash jinkludi standard i0 dot h.
>> U kull hash jiddefinixxu li konna raw, dak li huwa li tagħmel?
Ikkupjar tagħha l-valur li l-hash definita hija definita bħala u pasta li
fejn inti qed tuża l-valur.
Allura l-Preprocessor biss ma verament operazzjonijiet ibbażati test sempliċi.
Hija ma xejn intelliġenti.
Allura kull ħaġa oħra huwa aktar ikkumplikat.
>> Allura issa li Preprocessor hija isir, aħna fil-fatt jikkompilaw.
Allura dak li ma kumpilazzjoni jfisser?
Aħna qed issa jmorru minn kodiċi c għall-kodiċi assemblaġġ.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Yeah, aħna maqbud li.
Allura kumpilazzjoni.
Aħna ser mit c għall-assemblaġġ.
Allura dan huwa bidla lingwa attwali.
Kumpilazzjoni innifsu jfisser li jmorru minn lingwa livell ogħla li
lingwa livell aktar baxx.
>> U c hija lingwa livell għoli meta mqabbla ma 'assemblaġġ.
X'inhu assemblaġġ?
Istruzzjonijiet tiegħu li huma, pretty ħafna, magħmula għall CPU tiegħek.
Iżda kompjuter tiegħek xorta ma ma jifhmux assemblaġġ.
Hija biss jifhem dawk żerijiet.
Allura l-pass li jmiss huwa assemblaġġ, li iwassalna minn dawn l-istruzzjonijiet li
CPU tiegħek jifhem u fil-fatt jittraduċi minnhom, li
dawk żerijiet.
>> Allura C assemblea biex binarju.
Imma jien ma jkollhom eżekutibbli għadhom.
Allura taħseb tal-librerija CS50.
Aħna sakemm inti ma 'binarju għal din il-librerija CS50, li għandha GetString
u GetInt u dak kollu li.
>> Iżda l-CS50 library--
fi u ta itself-- mhix eżekutibbli.
Huwa ma jkollu funzjoni ewlenija.
Huwa biss mazz ta 'binarju li tista 'tuża.
Allura tgħaqqad huwa kif aħna iġibu flimkien kollha ta 'dawn il-fajls binarji differenti
fi eżekutibbli attwali.
Wieħed li inti tista tip dot mmejla dot out.
>> Allura dan huwa bħall-fajl li inti kiteb, - ikun x'ikun program tiegħek is--
Ceaser dot c.
Imma issa huwa kien kompilat sa binarju.
Allura Ceaser dot o.
U dan huwa CS50 tagħna Libreriji binarja.
U dawn qed jiġu kombinati fi eżekutibbli wieħed.
Yeah?
>> UDJENZA: [inaudible]?
>> ROB: Allura l-ewwel jinkludu, ftakar, l-hash jinkludu huwa attwalment
pass pre-proċessur.
Imma dak li separat.
Jekk ma tkunx qed tużah funzjonijiet li huma barra ta 'fajl waħdieni tiegħek imbagħad,
ebda, inti m'għandekx bżonn biex tagħmel link xejn peress li inti għandek kollox.
>> Cela dit, printf qed marbuta fil.
Jekk inti qatt tuża printf, li xi ħaġa li jeħtieġ li jkun marbut fil-
għaliex inti ma jiktbu dik.
U, fil-fatt, printf huwa awtomatikament marbuta.
Inti taf kif fil-linja tal-kmand jew meta inti tip tagħmel, inti tara dan għandek
CS50 l sing, li għandu rabta fil-librerija CS50?
Printf, u għalf bħal dik, huwa għaddej li jkunu marbuta fil awtomatikament.
Kwalunkwe mistoqsijiet oħra fuq xejn?
>> UDJENZA: [inaudible]?
>> ROB: Linking?
Għandna mazz sħiħ ta ' fajls binarji differenti.
Dan huwa l-eżempju canonical li nużaw hija librerija CS50.
Aħna miġbura u mogħtija lilek l- binarju għal din il-librerija CS50.
>> Inti tixtieq li tuża GetString fil-programm tiegħek.
Allura inti tmur u l-użu GetString.
Iżda mingħajr kodiċi binarju tiegħi għall GetString, meta inti tiġbor kodiċi tiegħek
isfel, inti ma tistax tmexxi effettivament tiegħek programm minħabba GetString String huwa
li għadha ma ġietx iddefinita kompletament.
>> Huwa biss meta inti link fil binarja tiegħi li fih GetString li issa, kollha
dritt, I tista 'attwalment tesegwixxi GetString.
Fajl tiegħi hija kompluta.
U nista run dan.
Yeah?
>> UDJENZA: Does Linking jikkonvertu l binarja li egwibbli?
Għalhekk anki jekk inti ma għandekx ieħor libreriji, ma kienx ikun xorta jkun
meħtieġ biex tittraduċi l-[inaudible]?
>> ROB: Allura eżekutibbli għadu fil binarja.
Huwa biss jgħaqqad kollu mazz ta 'binaries.
>> UDJENZA: Grazzi tant.
>> ROB: L-ebda problema.
Kwalunkwe mistoqsijiet oħra?
Inkella, aħna qed kollha stabbiliti.
Kull dritt.
Grazzi.
>> [Applause]
>> UDJENZA: Grazzi.
>> ROB: Yeah.