>> JASON Hirschhorn: Welcome li A5, kulħadd.
Għandna ġimgħa eċċitanti li għandna quddiemna, aktar għaliex hemm tant ġodda
tiffaċċja f'din il-kamra.
Huwa wunderbare.
A lott ta 'inti hawn minn inċident, li huwa anki aħjar.
Allura nisperaw li int ser iżommu jingħaqdu magħna.
>> Din il-ġimgħa aħna qed tmur biex jonfqu biċċa l-kbira tat-taqsima
tħejjija għall-kwizz.
Allura kull aġenda tagħna, aħna qed tmur biex jitkellmu ftit dwar riżorsi għall-klassi,
iżda wkoll għall-kwizz, u mbagħad, għal darb'oħra, jonfqu l-biċċa l-kbira tal-klassi jitkellem
dwar mistoqsijiet.
Ladarba aħna qed isir jwieġeb tiegħek mistoqsijiet, jew jekk il-mistoqsijiet tiegħek
naturalment iwassalna għal xi kodifikazzjoni, I problemi kampjun minn midterms
passat li aħna se kodiċi live fit-taqsima flimkien li wkoll iġibu up xi oħra
suġġetti tajba biex ikopru.
>> Allura l-ewwel, kif konna marret permezz għall- aħħar ftit ġimgħat biex infakkarkom
guys, hemm ton ta 'riżorsi disponibbli għal dan il-kors.
Ħafna minnhom se jkun oerhört utli biex inti kif inti tkompli
jistudjaw għal kwizz 0, għaliex huwa Tlieta wara nofsinhar.
Allura kollha ġejt jistudjaw għal bit.
>> Hemm noti lecture u sors kodiċi li għandek
definittivament check out.
Watch l-shorts.
Iċċekkja study.cs50.net.
U mbagħad, elenkati hawn taħt, numru ta 'riżorsi oħra.
>> Għal darb'oħra, kwizz 0 hija għada fil 01:00.
Jekk inti ma jkunux għamlu hekk diġà, check l-About dokument Quiz 0 fuq l-
homepage kors biex insemmu fejn inti qed tieħu l-kwizz.
L-kwizz jibda fil 01:10 u jispiċċa 70 minuti wara.
Mela jekk inti juru up wara 01:10, int se tikseb li ħafna inqas minuti
minn 70 li jieħdu l-kwizz.
Sabiex tagħmel żgur li int hemm fil-ħin.
Jekk int student estensjoni jew ikollhom xi konsiderazzjonijiet ittestjar ieħor,
ma jista 'jkun fil 01:00 għada.
Iżda għal darb'oħra, tivverifika l-Quiz About 0 dokument biex tagħmel żgur li int taf meta
tkun qed tieħu l-kwizz.
I kiteb 75 minuta up here.
Naħseb li d-dritt, mhux 70.
>> Din tkopri l-materjal minn ġimgħa 0 biex lecture aħħar ġimgħa nhar l-Erbgħa.
U għal darb'oħra, għal dan il-kwizz, per li dokument, ikollok wieħed żewġ naħat u 8
1/2 bi 11 karta li ikollok għall-użu bħala noti matul il-kwizz.
Ħafna nies, jekk mhux ħafna nies, ikollhom sabet li l-aktar mod utli waħda
biex jistudjaw għal l-kwizz huwa li jagħmlu folja istudju,
one-sider, ta 'tagħhom stess.
Allura tħares lejn dawk tal-passat jekk inti stajt tidher dawk li għaddew.
Jilħqu lill-ħbieb biex tara dak dawn qed tqegħid fuq il-vot tagħhom.
>> Iżda idejn isfel, l-aħjar mod li tista ' istudju huwa li jmorru permezz kollox u
Whittle l-isfel għal liema għandux jiġi stabbilit jew ma jappartjenux fuq dak folja tal-
karta, għaliex dan huwa biss verament mod utli għalik li tagħmel ċert
int ser permezz kollox u jkollhom xi familjarità magħha.
Ħafna nies, insibu, anki jekk għandhom il-folja tal-karta seduta dritt
jmiss lilhom fuq l-kwizz, ma dawran għal dan, għaliex, għal darb'oħra, li ħafna
proċess ta 'għaddejja mill-informazzjoni għenhom jitgħallmu.
>> Ħadd ma jkollu xi mistoqsijiet dwar kwizz 0?
Has kulħadd -
Jien ma jmur biex tagħmel turija tal-idejn.
Qatt f'moħħu.
I kienet se titlob li bdejt nistudja.
Imma ma rridx li tagħmel inti kollha tqajjimx idejk.
So bħal I said - iva, Avi, imorru quddiem.
>> AVI: What tkun ħaġa utli li jitpoġġew fuq il-one-pager?
>> STUDENT: Li sa inti.
>> JASON Hirschhorn: Ikollok biex jużaw il-ġudizzju tiegħek.
Affarijiet utli li jitpoġġew fuq il-one-pager, jekk inti huma konfużi dwar il-O big
runtime ta 'tipi differenti ta' tiftix u xorta, li jitqiegħdu fuq hemmhekk fil-
chart dandy handy.
B'dan il-mod, jekk int mitlub li fuq il- kwizz, inti m'għandekx bżonn biex jippruvaw u figura
it out jew ir-raġuni permezz tal-runtime.
Tista 'biss kopja l-isfel.
Jekk inti tħares lejn kwizzijiet passat, ħafna drabi, hemm running mistoqsijiet time.
Allura li se jkunu eżempju ta 'oġġett ħaġa li jitpoġġew fuq one-pager tiegħek.
>> Affarijiet oħra tajba li jitpoġġew fuq, jekk int konfuż dwar kif tiddikjara
funzjoni jew dak li l-partijiet differenti ta ' id-dikjarazzjoni funzjoni huma, jiktbu
li hemm, verżjoni ġenerika u mbagħad forsi eżempju.
Jekk int konfuż dwar pointers, dijagramma ta 'kif pointers xogħol
probabbilment verament utli.
Jekk int konfuż dwar recursion, a kampjun funzjoni jirrikorri fuq hemmhekk
tista 'wkoll juru li huma verament utli.
Does li jagħtuk xi ideat?
>> AVI: Inti jeħtieġ li jifhmu l- proċess kompilazzjoni kollu, bħall-
kif li x-xogħlijiet kollha?
>> JASON Hirschhorn: Kollox li ġie kopert tista '
juru fuq il-kwizz.
Mistoqsijiet -
iżda għal darb'oħra, xi affarijiet se jkunu peżati bil-kbir minn oħrajn.
Xi affarijiet toħroġ mill-ġdid u għal darb'oħra fil-klassi, fl
lecture, u sezzjoni.
Affarijiet oħra ma jkunux toħroġ li spiss.
>> Imxejna tkellem ħafna dwar # Jinkludu u Xi ħaġa-lu x'inhuma dawn ifissru
il-proċess kumpilazzjoni.
Imxejna tkellem ħafna dwar GDB, riċiklaġġ, dawk bnadar differenti li nużaw meta
aħna jikkompilaw xi ħaġa, u liema make15, per eżempju, tassew
mezzi u ma verament.
Aħna ma nitkellmux kemm dwar kull pass wieħed fil-
il-proċess kumpilazzjoni.
Imxejna għadhom tkellmu dwar dan.
Allura huwa għadu xi ħaġa li inti għandhom ikunu familjari mal.
Iżda għal darb'oħra, aħna mhux se tkun -
affarijiet li toħroġ aktar spiss fil-klassi huma aktar probabbli li toħroġ aktar
spiss u jkun aktar qawwi imwieżna fuq il-kwizz.
>> Kessaħ.
Kwalunkwe mistoqsijiet oħra dwar kwizz 0?
>> OK, so I tpoġġi lista ta ' suġġetti fuq il-bord.
I marru permezz-sillabu.
I marru permezz-taqsima reviżjoni minn aħħar lejl u dawk slides biex toħroġ
ma 'lista mhux eżawrjenti ta' suġġetti li għandna koperti s'issa fl CS50
u affarijiet li jistgħu jidhru fuq il-kwizz.
Hekk jien mhux se jmorru permezz kull waħda waħda minn dawn.
Dan ikun meħtieġ ħafna iktar ħin milli għandna issa.
Imma Nressaq dan up hawn biex nisperaw jog memorja tiegħek dwar affarijiet li tista '
jew jistgħu ma jkunux daqshekk familjari miegħek.
>> And I imħabba li jqattgħu l-biċċa l-kbira ta ' taqsima jwieġeb mistoqsijiet tiegħek dwar
Dawn is-suġġetti, suġġetti li mhumiex koperti hawnhekk.
Nistgħu jikteb il-kodiċi psewdo.
Nistgħu jikteb il-kodiċi reali sabiex jiżguraw li inti -
I tista 'twieġeb il-mistoqsija tiegħek u jgħinu kulħadd fundamentalment jifhmu
ħafna ta 'dawn is-suġġetti sabiex tkun taf tħoss ippreparat u komdu nidħlu
l-għada kwizz.
Sabiex tinqara fuq il-lista.
Inti nisperaw waslu għal sezzjoni ma 'xi mistoqsijiet kif ukoll.
Meta int lest, jgħollu naħa tiegħek u aħna se tibda.
>> Wieħed iżomm f'moħħu, il-mistoqsijiet li għandek, m'hemm l-ebda mistoqsijiet stupidi.
Għadda minn għala widnejna li ħafna.
U l-mistoqsijiet li għandek, jiena lest li bet, ħafna nies oħra kemm
seduta hawn u jaraw online jkollhom ukoll.
Allura inti tista 'biss tgħin lin-nies billi tistaqsi mistoqsijiet.
Marcus.
>> MARCUS: Bejn il-munzell u l- munzell, hemm pre-allokati a
persentaġġ ta 'memorja thats definita bħala dan huwa għall-ċumnija jew għall-borġ?
Jew kif ma dak ix-xogħol, eżattament?
>> JASON Hirschhorn: mistoqsija Great.
Jien ser lura rintraċċat ftit.
Does kulħadd -
jekk jogħġbok ikunu onesti hawn.
Naf jien inti titlob sabiex jgħollu tiegħek naħa quddiem sħabhom.
Iżda hemm nies li jħossuhom skomdi bl-munzell u borġ
u tixtieq li jmorru fuq dak u x'inhuma dawn jfisser?
Għolli naħa tiegħek jekk -
OK.
Grazzi.
Allura aħna qed tmur biex jmorru fuq il-munzell u -borġ verament malajr u mbagħad
jersqu lejn jwieġeb mistoqsija tiegħek.
>> Allura jekk aħna jiġbed kaxxa biex jirrappreżentaw memorja fil-kompjuter tiegħek, liema huma wħud
affarijiet li jmorru f'din il-kaxxa?
Main.
A funzjoni prinċipali.
Fejn ma tmur prinċipali?
>> STUDENT: [inaudible].
>> JASON Hirschhorn: Allura aħna ser tpoġġi prinċipali stabbiliti hawn.
X'iktar tmur f'din il-kaxxa?
>> STUDENT: Il-funzjonijiet li inti sejħa.
>> JASON Hirschhorn: Il-funzjonijiet li nitolbu.
U fejn ma dawn imorru?
>> STUDENT: Fil-munzell.
>> JASON Hirschhorn: Huma jmorru fil-ċmieni.
Allura aħna qed tmur biex sejħa dan Ħaġa stabbiliti hawn il-munzell.
U top up, aħna għandna l-borġ.
Allura memorja mhix kaxxa biss bħal dan.
Iżda huwa attwalment pjuttost simili.
Huwa ser jkun hemm ħafna ta 'kaxxi fuq u aktar, jiddependi fuq kemm hu kbir tiegħek
kompjuter huwa jew kif big memorja tiegħek.
>> Fil-kwotazzjoni-unquote "qiegħ" huwa l-munzell.
U hemm affarijiet multipli li jmorru fuq il-munzell.
U dawk jiddependu fuq il-funzjonijiet għandek fil-kodiċi tiegħek.
Inti dejjem ikollhom funzjoni waħda fil tiegħek kodiċi imsejjaħ prinċipali, hekk dejjem hemm
taqsima stabbiliti hawn fil- munzell iddedikat għal main.
>> Dawn is-sezzjonijiet fil-munzell huma msejħa frames munzell.
Meta inti sejħa funzjoni oħra, jgħidu prinċipali jitlob funzjoni tfittxija binarju,
nitfgħu frame ieħor fuq il-munzell.
B'mod aktar speċifiku, aħna ser jiddonaw blokki ta 'memorja fuq tagħna
kompjuter li jaħżen binarju tfittxija Lokali varjabbli u biex imexxu l-binarju
kodiċi tfittxija.
>> Allura aħna sejħa tfittxija binarja.
F'dan blokki ta 'memorja, aħna qed tmur li jaħżen varjabbli lokali tagħha.
Aħna ser taħżen sejħiet printf tagħha.
Jiġri x'jiġri, din il-funzjoni hija ser jiġi maħżun hemm dritt.
Tfittxija binarja se tesegwixxi.
Huwa ser jitlesta eżekuzzjoni.
X'inhu l-kelma C li ifisser li funzjoni għandha
tlesti l-eżekuzzjoni tiegħu?
>> STUDENT: Ritorn.
>> JASON Hirschhorn: Ritorn.
Allura meta tara stqarrija ritorn, it-trufijiet tal-funzjoni
meta hits dak.
Tfittxija Allura binarja se tolqot ir-ritorn tiegħu.
Din il-parti tal-memorja essenzjalment se jiġi lliberat.
U prinċipali se jmorru lura għall-eżekuzzjoni.
Allura ewlenija se nieqaf kull fejn kien, sejħa tfittxija binarja, nikseb xi valur tar-ritorn,
u tkompli l-eżekuzzjoni.
Dan il-qafas munzell ser imorru.
>> Jekk nagħmlu sejħa funzjoni jirrikorri, li hija funzjoni li jitlob huwa stess fuq
u aktar, nistgħu jiksbu - jgħidu aħna għamlet tfittxija binarja recursively.
Aħna tista 'tikseb binarja tfittxija verżjoni waħda, tfittxija binarja tnejn, tfittxija binarja
tlieta, tfittxija binarja erba, tfittxija binarja ħamsa.
U allura dan tfittxija binarja finali ħamsa se tolqot il-każ bażi, u l-munzell
frames se jmorru lura u jżomm għeluq sakemm aħna terġa 'lura għall prinċipali.
Aħna tista 'tmur fuq recursion fil-daqsxejn.
Iżda dan kollu huwa li jgħidu, jekk int ssejjaħ funzjonijiet multipli fi żmien,
se jkun hemm xi stack multipli frames fuq il-munzell.
>> -Borġ, min-naħa l-oħra, sa hawnhekk, mhuwiex għall-funzjonijiet,
mhux għall varjabbli lokali.
Huwa għal dinamikament allokati varjabbli.
Allura dawn huma varjabbli li jistgħu jiġu initialized jew fil prinċipali jew
funzjoni li jitlob prinċipali.
Kullimkien fil-kodiċi tiegħek, dawn jistgħu jiġu initialized.
U biex initialize dinamikament varjabbli allokata.
Liema funzjoni C do nużaw?
>> STUDENT: malloc.
>> JASON Hirschhorn: malloc.
Inti sejħa malloc.
Ikollok spazju ta 'memorja.
U dak l-ispazju tal-memorja huwa fuq il-borġ.
U dak l-ispazju tal-memorja soġġorni hemm sakemm inti sejħa ħielsa.
>> Varjabbli Allura dinamikament allokati fl- borġ ser jeżistu sakemm inti
tixtieq li jeżistu, u dawn mhux se imorru sakemm inti espliċitament
jgħidulhom li jmorru lil hinn.
Tista 'toħloq lilhom fil-funzjoni waħda.
Munzell dik il-funzjoni tal- qafas ser imorru.
Iżda dak il-varjabbli xorta se jeżistu fil-borġ sakemm jiġi meħlus,
potenzjalment mill-funzjoni li tissejjaħ tfittxija binarja jew kwalunkwe.
>> Allura dawk il-varjabbli borġ jibqgħu hemm sakemm inti tixtieq
li jibqgħu hemm.
U huma jiksbu jitqiegħdu hawn.
U allura l-waħda li jmiss gets stabbiliti hemmhekk.
Huma jżommu jkollna mimlija, u dawn jibqgħu hemm sakemm inti sejħa ħielsa.
>> U essenzjalment, il-borġ u l-munzell, jkollna għall-mistoqsija Marcus, il-
jikbru lejn xulxin.
U jekk dawn run fis xulxin, inti stajt użati kollha tal-memorja fil tiegħek
kompjuter, u l-programm tiegħek se nieqaf għaliex inti ma għandekx xi memorja aktar
xellug għall-użu.
Bejniethom, hemm affarijiet potenzjalment oħra.
Iżda għall-iskop ta 'dan il-kors, inti ma bżonn ninkwetaw dwar dan.
>> Allura li kien ir-risposta għall-mistoqsija tiegħek.
Tinkwetax dwar dan.
Iżda dan kien ir-risposta twil.
Kulma għandek bżonn tkun taf l- borġ u l-munzell se -
wieħed jibda fil-qiegħ.
Il-munzell ma.
-Borġ huwa up hemm.
Huma se jikbru lejn xulxin.
>> U jekk huma jmissu, li l-problema.
Inti dam barra ta 'memorja.
Iżda wkoll, minbarra jafu fejn huma, dak li hija maħżuna kemm fil-
munzell u borġ.
Curtis.
>> CURTIS: Meta jikkonfliġġu, hija li overflow munzell?
>> JASON Hirschhorn: Meta jikkonfliġġu, li mhux overflow munzell.
A overflow munzell hija żona differenti li nistgħu jmorru fuq jekk inti tixtieq li.
OK, aħna ser terga 'lura għal dik fil-daqsxejn.
>> STUDENT: X'inhu l-kelma imsejjaħ meta hit xulxin, il-
munzell u l-borġ?
>> JASON Hirschhorn: Għal issa, ma joqogħdu jinkwetaw dwar.
Just know -
I se twieġeb din id-domanda wara klassi.
Jekk dawn run fis xulxin, inti spiċċaw tal-memorja, għaliex hemm aktar
ispazju hemmhekk.
>> STUDENT: Jiddispjacini, x'hemm tort seg?
>> JASON Hirschhorn: A segment tort jistgħu jissejħu għal -
dan jiddependi għaliex imsejjaħ il tort seg tal.
Kultant, overflow munzell tiegħek, inneħħu jgħidu seg tort bħala l-iżball.
>> STUDENT: What about dereferencing varjabbli null?
Huwa li tort seg?
>> JASON Hirschhorn: Dereferencing pointer null -
OK, hekk jekk ikollok pointer li inti daqs l null, pointers, recall,
indirizzi store memorja bħala valuri tagħhom.
U pointer null huwa essenzjalment ħażna 0, 0-th
indirizzati f'dik varjabbli.
Allura 0x, 0, 0, 0, 0, eċċetera.
Dan indirizz 0-th fil-memorja li mhux fl-istampa tagħna, dan huwa up hemm
x'imkien, thats riżervati għall-kompjuter.
Aħna ma jitħallew tmiss.
>> Allura meta program tiegħek ta 'eżekuzzjoni, jekk xi ħaġa hija tipprova tmur għall-memorja
indirizz 0, huwa jaf li li hu valur vojt.
Huwa jaf xejn m'għandu jkun hemm.
Mela jekk inti tipprova u l-użu xi ħaġa hemmhekk u jittrattaw xi ħaġa simili hemmhekk jew
tipprova tmur f'dak il-post, int se tikseb tort seg jew żball.
Does li iwieġeb il-mistoqsija tiegħek?
>> U issa aħna ser imorru lura munzell overflow.
Affarijiet fil-munzell, kif inti guys jkollhom rajna qabel, fil - ejja jiġbed qrib
twaqqif ta 'qafas munzell.
Jista kulħadd tara li?
Allura aħna għandna frame munzell tagħna.
Aħna qed iffrankar firxa fil bħala lokali varjabbli f'dan il-funzjoni.
Allura ngħid firxa tagħna għandha ħames spots.
Il-ħames dawk ser tkun maħżuna f'dak il-qafas munzell.
>> Jekk nibdew bil-miktub lil hinn mill- limiti ta 'din array -
hekk jekk nibdew bil-miktub fi, ejja ngħidu li għamilhom 0.
Dawk huma l-ħames indiċi ta 'firxa tagħna.
Jekk nibdew bil-miktub fis indiċi 5, li aħna ma jkollhomx meta għandna
firxa ta 'daqs 5, nibdew bil-miktub fi indiċi 6, 7, 8, 9, nistgħu jiksbu munzell
Żball overflow.
>> Ġeneralment mhuwiex -
inti probabilment se tikseb fis-problemi jekk inti tmur fuq waħda.
Iżda ġeneralment, inti se tikseb fis- inkwiet aktar jekk inti tmur fuq minn lott
u inti tmur s'issa fuq li tikteb fuq l-indirizz ta 'ritorn ta' dak
funzjoni, li jinsab fil- qiegħ tal-qafas munzell.
>> Minħabba, right?
You - fil-- sorry.
Mhux "għaliex id-dritt."
>> Fil-qafas munzell, inti għandek varjabbli lokali tiegħek.
Fil-qiegħ nett tal-munzell qafas huwa l-indirizz ta 'ritorn.
Li meta l-funzjoni tmur meta huwa fuq.
U jekk inti jissostitwixxu li r-ritorn indirizz, allura meta dan il-qafas munzell,
meta inti qed tmur permezz tal-munzell frejm u eżekuzzjoni ta 'kull linja, int
se jmorru lill-indirizz tiegħek ritorn ġdida thats miktub hemm minflok il-
wieħed attwali.
U li kif aħna stajt tidher xi ksur tas-sigurtà
jista 'jiġri ma' kompjuters.
>> Overflow hekk munzell, fil-qosor, huwa meta inti jissostitwixxu l-parti fil-ċmieni
int suppost għall-użu, il lokali varjabbli int suppost biex jintużaw, u
b'mod partikolari meta tibda kitba fuq affarijiet importanti bħall-
indirizz ritorn.
U li fejn int ser tingħata żball.
Jew forsi anke inti tista 'tibda anke bil-miktub fis -
jgħidu tfittxija binarja kien dritt fuq prinċipali.
Jekk inti overwrote ħafna, inti tista 'tikteb fi prinċipali.
Iżda ġeneralment, ikollok żball qabel imbagħad, minħabba li l-kompjuter jaf
int qed tagħmel xi ħaġa inti ma għandha tkun qiegħda tagħmel.
Yeah.
>> STUDENT: X'hemm differenza bejn overflow munzell
u overflow buffer?
>> JASON Hirschhorn: overflow buffer huwa tip aktar ġeneriku ta '
dak li stajt biss deskritti.
>> STUDENT: Allura overflow munzell hija Eżempju ta 'overflow buffer.
>> JASON Hirschhorn: Eżattament.
Dan huwa firxa nistgħu jaħsbu bħala buffer, spazju għall-affarijiet li jmorru pulzieri
Din hija overflow buffer munzell.
Jista 'jkollna overflow buffer borġ.
Jekk kien hemm buffer, li hemm ħafna drabi huwa firxa l-borġ, u aħna
overwrote dawk limiti, allura aħna kieku jkollhom overflow buffer borġ.
>> U lil hinn mill-ambitu ta 'dan il-kors, dawn qed skoperti daqsxejn differenti.
Il-kompilatur għandha speċjali modi ta 'sejbien kull.
Iżda overflow buffer huwa aktar ġeneriku tip ta 'dak I deskritt,
li kienet overflow buffer munzell.
Did li iwieġeb il-mistoqsija tiegħek?
Sweet.
>> Kien hemm xi mistoqsijiet oħra relatati għall-ċumnija jew il-munzell?
Yeah.
>> STUDENT: Naf li inti għandek kordi ħielsa għaliex qed fil-borġ
u inti ma tridx tnixxija memorja.
Imma għandek biex ħielsa varjabbli globali u għalf bħal dik?
Jew huma meħlusa awtomatikament?
>> JASON Hirschhorn: Good kwistjoni.
Għalhekk fl CS50.H, noħolqu dan il-ħaġa għalik imsejħa string.
A string huwa verament dak?
>> STUDENT: Char star.
>> JASON Hirschhorn: A star char, a pointer għal karattru, a pointer biex
firxa ta 'karattri.
Dak hu l-sekwenza huwa.
Għalhekk għandna bżonn biex ħielsa, għax getstring, li aħna użati ħafna -
isem string ugwali getstring -
li mallocs għalina xi memorja fuq il- borġ u mbagħad jirritorna pointer għall-
ewwel karattru ta 'dak spag, stilla char.
>> Allura apparentement, jekk inti ma ġewx miktub ħielsa fuq kwalunkwe kordi tiegħek
li ħadthom imsejħa s'issa, ikollok ġie jnixxu xi memorja.
Of course aħna ma tkellem dwar dan, sabiex ħadd gotten
inkwiet biex isir dan.
Imma jmorru quddiem, iva.
Meta inti sejħa getstring, int mallocing xi spazju fuq il-borġ.
U jekk inti ma sejħa ħielsa aktar tard li spag, inti għandek nixxija memorja.
Li iwieġeb il-mistoqsija tiegħek?
>> Yeah
>> STUDENT: Allura biex tagħmel dan, do nużaw dritt b'xejn qabel ir-ritorn?
Bħal, fl-ambitu ta ', I raden jekk ngħidu, bħal, int prinċipali, fil-
ambitu tal-kodiċi li huwa fi ħdan dawk braces kaboċċi, dritt qabel -
inti taf fejn youd ġeneralment jitpoġġa ritorn.
Do inti tpoġġi ħielsa qabel dik?
>> JASON Hirschhorn: Allura inti tista 'tpoġġi b'xejn fejn inti tixtieq li tqiegħed ħielsa.
Minħabba li dawn huma dinamikament allokati varjabbli, għaliex dawn jistgħu
jgħixu lil hinn mill-ambitu ta 'partikolari funzjoni, jekk inti sejħa malloc fil-
funzjoni separata ta ', per eżempju, getstring, inti tista 'sejħa ħielsa prinċipali.
Inti ma għandekx bżonn li hija sejħa fil-funzjoni speċifika
fejn malloc huwa msejjaħ.
Imma inti jeħtieġ li hija sejħa qabel prospetti prinċipali.
>> U huwa verament jiddependi.
Hija tiddependi fuq għaliex inti malloced li ispazju fl-ewwel post.
Xi nies se sejħa ħielsa pretty malajr.
Xi nies mhux se sejħa ħielsa sakemm l-aħħar tal-programm tagħhom.
U dawn ser jgħaddu u kollox ħielsa.
Hija tiddependi fuq għaliex inti imsejħa malloc.
>> STUDENT: U tghid jekk inti imsejħa użu getstring?
You jgħidu ħielsa liema?
>> JASON Hirschhorn: Allura l-sintassi b'xejn hija sempliċement ħielsa, paren miftuħa, qrib
paren, u l-isem tal-pointer.
Mela jekk inti tikteb ugwali isem string getstring, inti tpoġġi l-isem fil hawn.
Dik hija l-isem tal-pointer.
U taf li hija ħielsa li l-memorja.
>> STUDENT: Allura meta jillibera li l-memorja, il-pointer għadu punti li dak il-post
fil-memorja?
Jew huwa l-pointer żvojtati wkoll l-indirizz li hija tirreferi għall.
>> JASON Hirschhorn: Aħna għandhom jippruvaw li.
Għandna kodiċi li.
Ejja terga 'lura meta nikbru biex kodifikazzjoni, u ejja kodiċi li.
U jekk inti tixtieq li insemmu l-risposta għal dan, inti tista 'wkoll kodiċi li
fil-frattemp.
Iżda li l-kwistjoni kbira.
>> STUDENT: Huwa possibbli li xi ħaġa b'xejn wisq malajr?
Allura inti xorta bżonnha għall-programm tiegħek, u inti meħlusa dak l-ispazju memorja?
>> JASON Hirschhorn: Iva.
Huwa possibbli, jekk inti xi ħaġa b'xejn u mbagħad tuża mill-ġdid, inti se
run fis żball.
Imma dak li fuqek, għaliex inti meħlusa xi ħaġa u mbagħad sejjaħ aktar tard.
Allura li kien żball ta 'programmer.
Imma iva.
Inti tista 'tikteb dak.
>> Kwalunkwe mistoqsijiet aktar fuq -
iva.
>> STUDENT: Mela jekk inti suppost biss ħielsa fil ġenerali qabel l-
programm jintemm, ma jfissirx li jekk l- programm jintemm u inti ma ħielsa it-
li l-memorja għadu allokat?
>> JASON Hirschhorn: Jekk programm tiegħek truf u tinsa biex ħielsa xi ħaġa, allura
li l-memorja ġie allokat matul il-ħajja tal-programm tiegħek.
Meta program tiegħek jagħlaq kompletament, li l-memorja mhux se
li jibqa 'hemm għal dejjem.
Il-kompjuter huwa intelliġenti biżżejjed biex tkun taf li meta l-programm jagħlaq, huwa
għandu jeħles kollha tal-memorja li kienet assoċjata ma 'dak il-programm.
>> Madankollu, hemm għodda inti tista 'taħdem fuq programm biex tiskopri jekk, meta l-
programm lest, inti nesa biex ħielsa xi memorja.
U għall-problema li jmiss tiegħek stabbilit fejn inti ser tkun qed tuża malloc u l-użu
pointers, inti ser tkun qed taħdem din programm dwar il-programm tiegħek biex tara jekk,
meta jerġa prinċipali, kellek xi affarijiet li tħallew unfreed.
>> Allura dawn mhux qed tmur toqgħod malloced dejjem fil-kompjuter tiegħek.
Dan ikun ħela, minħabba malajr ħafna, kompjuters
jaħarbux mill-memorja.
Iżda jekk dawn jimxu sa l-aħħar ta 'tiegħek programm u dawn mhux qed lliberat u tiegħek
programm ħruġ, li għadha problema li din l-għodda se jgħinek tindirizza.
>> STUDENT: Huwa li Valgrind?
>> JASON Hirschhorn: Huwa imsejħa Valgrind.
U tkun taf tkun -
>> STUDENT: Iżda aħna ma għandekx tkun taf li għall-kwizz, għalkemm?
I mean, kien tkellem dwar ftit fil-lecture.
>> JASON Hirschhorn: So Valgrind huwa l-isem ta 'dik l-għodda.
Jafu dak li ma huwa biżżejjed għall-kwizz.
Imma int ma użati encore fuq tiegħek problema stabbiliti għaliex aħna ma kellhomx
sett problema li tkun ittrattati b'mod espliċitu ma malloc jew inti tuża malloc.
Allura int ma użati Valgrind s'issa.
Iżda inti se tuża dan qabel milli iktar tard.
>> STUDENT: Tista jirrepetu dak Valgrind hu?
>> JASON Hirschhorn: Jiddispjacini?
>> STUDENT: Tista jirrepetu dak l-għan ta 'Valgring hu?
>> JASON Hirschhorn: Valgrind huwa l-isem -
bħal GDB jgħinek debug program tiegħek, Valgrind jgħinek insemmu jekk
affarijiet ma jkunux ġew meħlusa meta program tiegħek jagħlaq.
Allura inti ser run fuq program tiegħek.
U l-programm tiegħek ħruġ, u inneħħu jgħidu program tiegħek imsejħa malloc dan ħafna
darbiet għal dan ħafna bytes, u inti biss imsejħa free dan ħafna drabi.
U għalhekk inti xellug dawn ħafna bytes mingħajr ma jkunu meħlusa.
Jew ser jgħidu li inti stajt meħlusa kollox.
Tajba tax-xogħol.
>> STUDENT: OK.
U huwa msejjaħ Valgring?
>> JASON Hirschhorn: V-A-L-G-R-I-N-D.
>> STUDENT: A mistoqsija dwar pointers.
Allura ngħid għandek n istilla x ugwali xi ħaġa.
Li jkun daqs, tkun xi tkun int tqegħid hemm, li dak li qed jitpoġġew ġewwa
dak x hija li tipponta lejn, jew il-pointer ta 'x?
>> JASON Hirschhorn: Can You irrepeti l-kwistjoni?
Nistgħu niġbdu waqt li inti jgħidu li?
>> STUDENT: Fil-kwizz, fil-fatt, il- waħda inti mibgħut lilna, kien simili, char
verità star ugwali blat CS50, right?
Allura dan ifisser li li blat CS50 huwa dak li l-verità hija li tipponta lejn?
>> JASON Hirschhorn: Allura inti qed jitkellem dwar stilla char fil string, kif
li x-xogħlijiet?
Yeah.
OK.
Ejja tiġbed hawn fuq.
>> [Konverżazzjoni SIDE]
>> JASON Hirschhorn: Allura dan il-varjabbli se tkun ta 'star char tip.
Kif big hija varjabbli ta 'star char tip?
Kemm bytes?
>> STUDENTI: erba.
>> JASON Hirschhorn: Huwa erba 'bytes.
Kif id-drittijiet ħafna hija varjabbli ta 'star int tip?
>> STUDENTI: erba.
>> JASON Hirschhorn: Erba bytes.
Jekk huwa pointer, allura huwa dejjem erba 'bytes, għaliex pointers, tagħhom
valur huwa indirizz memorja.
U l-indirizzi tal-memorja fuq il-CS50 appliance huma erba 'bytes twil.
Allura meta aħna sejħa getstring, jew meta aħna jiġifieri, stringname ugwali, u mbagħad
kwotazzjonijiet doppja tpoġġi string, aħna tqegħid -
Ukoll, li ftit differenti.
Aħna ser do getstring bħala eżempju.
Jew xi ħaġa star char huwa daqs il-sekwenza.
Jiddispjacini, agħtini l-eżempju li taqra?
>> STUDENT: char verità star ugwali "blat cs50" fil-kwotazzjonijiet doppja.
>> JASON Hirschhorn: Allura dan il stilla, din aħna ser sejħa dan varjabbli x għall tagħna
għanijiet ġeneriċi.
Imxejna ħolqot varjabbli msejħa x.
Huwa star char tip.
Huwa pointer għal serje ta 'karattri.
Allura down hawn -
>> Allura dan huwa kif dan seta ' jaħdmu fil-memorja.
Dan taħżen l-indirizz tal-memorja.
Ikun jaħżnu l-indirizz tal-memorja ta ' l-ewwel karattru fil-firxa.
U allura meta inti segwita il-pointer, inti
jiksbu l-ewwel karattru.
>> U jekk inti qed taqra dan ħaġa simili string, il-kompjuter tiegħek huwa intelliġenti
biżżejjed biex tkun taf, taqra dan ħaġa sħiħa sakemm jiġrilha għal backlash 0.
Imma jekk inti qed taqra dan karattru fi żmien, hekk int mtennija permezz
din is-sekwenza, allura inti se biss taqra karattru fi żmien sakemm ikollok biex
backslash 0.
Dan jista 'ma twieġeb tiegħek kwistjoni, għalkemm.
>> STUDENT: Yeah, iżda inti għandek mhux malloced dak l-ispazju
għadu għal dak pointer.
>> JASON Hirschhorn: Hekk jien ma pjuttost ċert eżattament dak li qed tfittex fi,
minħabba I ma tagħmel dik kwizz.
Li suppost kellha tkun utli riżorsi minn TF ieħor.
Jekk inti qed joħolqu string fuq il- munzell jew bħala varjabbli lokali, inneħħu
jkun biss firxa ta 'piżijiet minflok ġeneralment stilla char tipponta lejn
string ieħor.
Imma jien ma nafx.
Dan jista 'jkun pointer għall-ieħor string fuq il-munzell kif ukoll.
Yeah.
>> STUDENT: Naf li inti jeħtieġ li talloka memorja jekk l-pointer huwa
jkollna ddikjarat ġewwa ta 'funzjoni oħra.
Għandek bżonn biex tagħmel l-istess ħaġa jekk huwa jiġu dikjarati ġewwa ta ewlenija,
inti qed tużaha ġewwa tal ewlieni?
>> JASON Hirschhorn: Allura iva.
Tista 'tiddikjara pointer għal kwalunkwe indirizz tal-memorja fil-memorja.
Hija tista 'tkun l-indirizz memorja ta' lokali varjabbli, għalkemm oftentimes,
nies ma jiddikjarawx l-indirizzi tal-memorja varjabbli lokali għaliex huma jmorru
bogħod darba li funzjoni lura, li huwa għaliex aħna ġeneralment malloc affarijiet.
Imma iva, inti tista 'tiddikjara pointer għal varjabbli oħra lokali.
Huwa biss ġeneralment ma jsirx.
Imma I tista 'tagħti ħarsa lejn dak Ħaġa speċifiku wara klassi.
Yeah.
>> STUDENT: Naħseb li dan huwa tip ta 'dak li qed jiġi mitlub.
Dan ma jidhirx stramba li jiġu initializing pointer mhux bħala
indirizz, iżda bħala dak tidher qisha valur.
Jidher bħall-CS50 huwa x'hemm ġewwa il-ħaġa li għandu jiġi osservat għal u
mhux-indirizz attwali, id-dritt?
>> JASON Hirschhorn: Allura dak mhuwiex il-każ, għalkemm.
Li mhux dak li qed jiġri.
Meta inti tiddikjara stilla char, huwa l-indirizz tal-memorja.
Pointers huma indirizzi kollha tal-memorja tipponta lejn xi ħaġa oħra.
Li xi ħaġa oħra jista 'jkun fuq il- munzell, iżda kważi dejjem fuq il-
borġ fil-mod aħna se jarawha użat.
Iżda stringname ugwali double-kwotazzjoni "Getstring," nistgħu naraw li u aħna
tista 'tfittex permezz ta' dak u kodiċi li.
getstring string mhux qed ffrankat dak il-varjabbli, jew kull string
isem huwa mhux qed salvati f'dak varjabbli, għaliex li mhux kif
pointers jaħdmu.
Does li jagħmel sens?
>> STUDENT: Yeah.
>> JASON Hirschhorn: OK.
Nisperaw, dan ma kienx konfuża lil xi ħadd.
Iżda jekk kien, nistgħu nħarsu lejn din darb'oħra fil-daqsxejn, għax aħna qed attwalment għaddejjin
għall-kodiċi xi ħaġa li wieħed jittama li jaħdmu ma 'kordi u jgħinek tħossok
aktar komdi magħhom.
>> Xi kwistjonijiet oħra relatati ma 'dawn suġġetti jew suġġetti oħra li
I ser jitqiegħdu back up?
U -
dritt issa.
Iva, Alden.
>> ALDEN: Allura dan huwa kompletament mhux relatati, imma nistgħu biss jmorru fuq
verament malajr dak li għandna bżonn inkunu nafu dwar id-differenza bejn 32 u
64-bit magna?
>> JASON Hirschhorn: Iva.
Allura 32 bits huwa kemm bytes?
>> ALDEN: Huwa erba 'bytes.
>> JASON Hirschhorn: Huwa erba 'bytes.
U 64 bits huwa kemm bytes?
>> STUDENT: Tmienja.
>> JASON Hirschhorn: Tmien bytes.
Għalhekk għal darb'oħra, tmien bits hija byte wieħed.
CS50 appliance tiegħek magna 32-bit.
Allura indirizzi memorja huma erba 'bytes twal.
Hemm 2 għall-32 indirizzi memorja.
0-2 għall-32 minus 1.
And I am not pożittiv, iżda li probabbilment l-ambitu ta 'dak li għandek bżonn
jaf għal magna 32-bit, li l-memorja indirizzi huma, għal darb'oħra, erba 'bytes twil,
u dak l-ammont massimu ta 'indirizzi memorja.
>> Ukoll, tipi ta 'data -
dan jista 'jkun xi ħaġa bħal ukoll li ta 'min jinnota.
Id-daqs ta 'tip ta' dejta jiddependi fuq il-magna qed taħdem magħhom.
Allura char, karattru wieħed, huwa kif ħafna bytes fuq appliance CS50 tagħna?
Waħda byte.
U huwa attwalment byte wieħed bħala ukoll fuq magna 64-bit.
>> U tipi ta 'data l-aktar huma l-istess numru ta 'bytes fuq iż-żewġ magni.
Iżda xi tipi ta 'data se jkun differenti fuq iż-żewġ magni.
Allura li jkunu potenzjalment l- unika ħaġa li għandek bżonn tkun taf.
>> Iżda anke li, I think, huwa lil hinn mill-limiti -
Jien kważi pożittiv, jekk inti tħares lura fi kwizzijiet qodma, huwa jgħid, tassumi għal
kodifikazzjoni problemi li inti qed tuża magna 32-bit.
Iżda hemm, li jmorru flimkien ma 'dik fil- każ int interessat, hemm
tipi ta 'data li huma l-istess daqs fuq il-magni kollha.
>> Jekk inti stajt tidher xi ħaġa bħal uint32_t, inti tista 'jew tista'
ma raw dan.
Li l-tip ta 'data.
Li huwa qal, ikunu ta '32 bits irrelevanti liema magna dan huwa fuq.
Allura meta n-nies qed tikteb portabbli kodiċi, huma probabbilment mhux se jużaw ints.
Huma ser minflok jużaw din id-data l-oħra tipi li huma jafu se jkun l-istess
daqs fuq kull magna waħda.
Madhu.
>> Madhu: Kelli mistoqsija dwar il-proċess kumpilazzjoni.
Mela jekk int bil-miktub programm li juża librerija bħal CS50 jew xi ħaġa
bħal dik, naf li din librerija għandha, f'xi punt, tkun
miġbura u marbuta pulzieri
Imma kemm ta 'dak li jiġri matul il-kompilazzjoni tal-programm tiegħek?
Liema parti ta 'dak il-proċess librerija sseħħ meta int
kumpilazzjoni program tiegħek stess?
>> JASON Hirschhorn: Mela ejja jmorru fuq ġeneralment l-passi ta 'dan il-proċess.
Tikteb. Fajl tiegħek c.
In. Fajl tiegħek c, inti # Jinkludu tiegħek libreriji header, per eżempju, cs50.h.
Xi jfisser li jinkludu sharp line tagħmel biex program tiegħek?
Akchar.
>> AKCHAR: Hija żżid l-prototipi ta ' il-funzjonijiet mill-header
fajls fil-libreriji.
>> JASON Hirschhorn: Eżattament.
Hija żżid dawk prototipi funzjoni għall-kodiċi tiegħek.
Hekk meta kodiċi tiegħek qed kompilata l-istadji bikrija, il-kompilatur jaf
li dawn il-funzjonijiet tassew jeżistu, u li x'imkien ikunu ġew definiti.
Il-fajls. H ma jinkludux il- definizzjonijiet għal dawn il-funzjonijiet jew kif
huma attwalment jaħdmu.
Cs50.h biss jinkludi xi ħaġa li tgħid getstring hija ħaġa reali li
jista 'jiġri.
U standardio.h jgħid printf huwa ħaġa reali li jista 'jiġri.
>> Allura lingwa c tiegħek ma 'dan. Header file gets mdawwar fis xi
kodiċi tinqara mill-magni, li eventwalment gets inbidel fi binarju
kodiċi, 0 u 1 ta.
U dak l-kodiċi li finalment gets esegwiti.
L-l cs50 line - per eżempju, meta int bil-miktub Clang -
u allura inti jinkludu l cs50, inti tip li pulzieri
U inti tara li.
Meta tikteb tagħmel, inti ser tara li linja up here.
U aħna ser tara li fit-tieni meta aħna kodiċi jew aktar tard meta aħna kodiċi.
>> Iżda dan-l-linja cs50 ma xi ħaġa daqsxejn differenti minn
il # Jinkludu cs50.h.
X'jagħmel line cs50 li-l jagħmlu?
Avi?
>> AVI: Irrid ngħid li torbot il-librerija għall-funzjoni
sejħa, bħall-. o files.
>> JASON Hirschhorn: Allura ħafna qrib, jekk mhux spot-on.
Cs50 l-l jieħu l-fajl binarju u tgħaqqad ma 'fajl binarju tiegħek.
Allura cs50.h, hemm ebda punt fl-tidwir cs50.h minn lingwa C sa binarju kull
wieħed ħin huwa qed jintuża.
Dan ikun iblah, minħabba li jaħlux ħafna ħin.
Allura diġà ġie kkompilat u mibdula eżekutibbli.
U issa huwa se jingħaqdu mal-fajl tiegħek fl-aħħar.
Allura dawk tal-1 u 0 huma għaddejjin biex jingħaqdu ma 'dawk tiegħek
u 0 fi tmiem.
Allura issa inti ser fil-fatt ikollhom l-attwali 1 u 0 li jiddefinixxi kif getstring,
per eżempju, xogħlijiet, jew kif printf, per eżempju, xogħlijiet.
>> U għal aktar informazzjoni, hemm kompilaturi qosra li Nate jagħti li
għandek tivverifika li tmur permezz ta 'dawn il-passi.
Iżda -
iva.
>> STUDENT: Huma dejjem fil-o files. meta jkunu qed fil-forma librerija,
lesti biex jiġu amalgamati, marbuta - bħal dawn qed fil-kodiċi binarju?
>> JASON Hirschhorn: OK.
What -
>> STUDENT: Huwa li dejjem il-każ għall- il-libreriji meta inti jorbtuhom?
>> JASON Hirschhorn: Iva.
Allura hemm files, li ser ikunu s. S kodiċi tal-magna, li se jkun ukoll
cryptic lilek.
Inti ma għandekx bżonn ninkwetaw dwar dawk.
Iżda ġeneralment, yeah, dawn ser jkun. o fajls lesta li tmur.
>> STUDENT: Allura meta inti vapur li librerija, inti biss vapur
l. h u l-. o?
Inti ma vapur li l-. C jew l. S.
>> JASON Hirschhorn: So -
u dan huwa f'dan qasir kif ukoll, jekk din l-informazzjoni tidher li ġejja
ftit malajr.
Iżda l-qasir fuq kompilaturi taħdidiet dwar dan ukoll.
Meta inti vapur librerija, jekk inti vapur l. h, il-fajl tal-header, dawk
prototipi funzjoni, u l-l-1 u 0, dak kollu li għandek bżonn biex tagħti.
Inti ma għandekx bżonn li jagħtu kif il- funzjoni xogħlijiet, il-fajl c..
Minħabba li l-punt ta 'estrazzjoni, jew il- punt APIs, il-punt li dan SPL,
il-librerija portabbli Stanford, huwa għalik biex ma joqogħdu jinkwetaw dwar kif il-ġdid
GRect xogħlijiet, jew kif jimxu xogħlijiet, jew kif żid xogħlijiet.
Kulma għandek bżonn tkun taf hija li add hija funzjoni li tista '
użu, u dan tagħmlu.
Allura int verament ma bżonn ikunu jafu kif Huwa bil-miktub fil C. Inti biss ħtieġa li
taf, hawn huma l-funzjonijiet, dak li tagħmel, u hawn huma l-tal-1 u 0
meta int verament tixtieq li jużawhom.
>> Kessaħ.
Kwalunkwe mistoqsijiet aktar fuq kompilaturi jew suġġetti oħra fuq il-bord?
>> STUDENT: Għandi mistoqsija ta ' implimentazzjoni funzjonijiet jirrikorri.
A mistoqsija dwar recursion.
I kellhom tħossok li se toħroġ.
Mela ejja malajr jgħaddu recursion bi speċifiku
eż., funzjoni fattorjali.
Minħabba li dan huwa eżempju li sikwit jiġi up u huwa użat
biex juru recursion.
>> Allura "4!" tinqara bħala 4 fattorjali.
U dak ma 4 fattorjali jfisser?
Dak li ma tagħmel?
Kif inti tikkalkula 4 fattorjali?
4 darbiet 3 darbiet 2 darbiet 1.
>> Allura mod ieħor biex jiktbu 4 fattorjali huwa li tikteb din.
4 darbiet 3 fattorjali.
Minħabba 3 fatturi hija 3 darbiet 2 darbiet 1.
Allura 4 darbiet 3 fattorjali huwa 4 drabi 3 darbiet 2 darbiet 1.
Dan huwa għaliex fattoriku huwa kbir kandidat għall recursion, għaliex dan huwa
ċar li hemm xi ħaġa li jiġri aktar u aktar u aktar fuq
numru iżgħar ta 'affarijiet sakemm inti jilħqu t-tmiem.
Meta inti tilħaq 1, 1 fattoriku huwa 1.
Inti ma tistax tmur ħafna aktar.
0 fatturi huwa wkoll definit bħala 1.
Allura meta ikollok 1 jew 0, int fl-aħħar, u inti tista '
tibda tmur lura up.
Hekk jekk ridna li jiktbu rikursivi funzjoni biex tikkalkola fatturi,
aħna qed tmur biex jiktbu xi pseudocode għal dak issa.
Qabel aħna tikteb li pseudocode -
I ser jagħtuk guys ftit minuti biex jikteb il-kodiċi psewdo jew biss jaħsbu
dwar dan - hemm żewġ affarijiet kull funzjoni jirrikorri bżonnijiet.
Liema huma dawn iż-żewġ affarijiet?
>> JACK: Għandu sejħa nnifisha.
>> JASON Hirschhorn: Noah?
Oh, Jack.
Jimxi 'l quddiem.
>> JACK: Għandu sejħa nnifisha.
>> JASON Hirschhorn: Allura rikursivi funzjoni teħtieġ sejħa jirrikorri, a
sejħa biex innifsu.
Din kienet waħda.
U x'inhu l-ħaġa oħra?
>> JACK: A każ bażi.
>> JASON Hirschhorn: A każ bażi.
A każ bażi huwa, hawn meta aħna stop.
Allura funzjoni tiegħek gets imsejħa.
Il-każ bażiku jiġi l-ewwel.
Inti trid tkun taf jekk int fl-aħħar.
U jekk int ma fl-aħħar, inti jagħmlu sejħa jirrikorri tiegħek.
U inti tmur permezz din il-funzjoni mill-ġdid, iċċekkja każ bażi tiegħek mill-ġdid.
Jekk int mhux l-aħħar, inti tagħmel sejħa oħra rikursivi,
eċċetera, eċċetera.
>> C'est pourquoi funzjonijiet jirrikorri dejjem bżonn dawk il-każijiet bażi u dawk
sejħiet rikursivi.
Jekk inti ma għandekx sejħa rikursivi, huwa ma tkunx funzjoni jirrikorri.
Jekk inti ma jkollhom każ bażi, inti tmur dejjem u
ma jkun hemm l-ebda tmiem.
U l-każ bażi dejjem jiġi l-ewwel, għaliex inti dejjem se tkun trid tivverifika
jekk int fl-aħħar ewwel.
Għalhekk qabel ma nagħmlu xi pseudocode, għaliex ma inti tieħu minuta biex jaħsbu dwar
kif funzjoni fattorjali jirrikorri tkun miktuba?
>> Ukoll, kemm inti qiegħed tagħmel, bil-miktub it out fuq folja tal-karta hija
dak li int se jkollhom tagħmel fuq l-kwizz għada.
Prattika hekk probabbilment tajba biex jagħmlu żgur il-kodiċi int bil-miktub
isfel fuq folja tal-karta -
jew inti tista 'tagħmel dan.
Inti taf fejn il-semicolons huma.
Tiftakar l-sintassi.
Minħabba li int ma tkun kapaċi li jkollhom kompilatur jgħidlek għamel żball.
>> Ukoll, f'dan is-sens, għada, meta għandek kodifikazzjoni problemi, jekk inti
huma ġrew għal żmien, jew jekk int ħafna konfuż dwar kif int suppost
tikteb il-ħaġa partikolari c, huwa kieku behoove inti tikteb psewdo-kodiċi
jew ikteb kummenti fil ukoll.
Għaliex hemm kreditu parzjali għal Ħafna mill-mistoqsijiet dwar l-kwizz.
Allura inti jista 'jkun ġrew, jew inti jistgħu biss jiġu konfużi.
Miktub kummenti jew psewdo-kodiċi spiss huma modi li inti
jistgħu jiksbu kreditu parzjali.
>> Allura ma jħallux xi ħaġa vojta fuq il-kwizz.
M'hemm l-ebda penali għall- tqegħid affarijiet pulzieri
Fil-fatt, it-tqegħid fis-psewdo-kodiċi jew kummenti se tgħin lill-grader
insemmu jekk inti fil-fatt jafu liema qed jitkellem dwar, u forsi għoti
inti xi kreditu parzjali għal dak.
>> Wkoll f'dan is-sens, ikteb ċar.
Jekk ma nistgħux verament dak li qed tikteb, aħna qed mhux se sejħa inti
fil għada nofsillejl figura barra dak li kiteb.
Aħna biss ser jieħdu off punti.
Ikteb b'mod ċar hekk nistgħu jisma ', jew minflok, nistgħu taqra dak li kiteb.
>> U jekk din tgħid żewġ sentenzi, ma jiktbu paragrafu.
Segwi l-istruzzjonijiet.
Ikteb b'mod ċar.
U jiktbu dawk il-kummenti jew pseudocode għal mistoqsijiet li jista '
għoti ta 'kreditu parzjali.
>> OK, ejja mur fattorjali.
Allura aħna għandna fattorjali funzjoni.
Jekk I kienu biex effettivament tikteb dan fis-C, dak li għandi bżonn li tressaq quddiem l-isem
tal-funzjoni?
It-tip ta 'ritorn, li, f'dan il- każ, aħna ser tagħtiha int.
U mbagħad ġewwa l-braces kaboċċi, huwa dak li tmur ġewwa l-braces kaboċċi għall
funzjoni?
>> STUDENTI: tip Argument.
>> JASON Hirschhorn: L-argumenti tagħha.
Allura fatturi probabbilment se jieħdu argument.
Hija ser probabbilment jieħu biss argument wieħed.
U aħna ser ngħidu li ser tieħu integer imsejħa x.
U għal darb'oħra, meta tikteb il-prototip ta ' funzjoni jew bil-miktub il-funzjoni
fil-kodiċi tiegħek qabel ma jiddefinixxu dan, inti jikteb dejta tat-tip u l-isem ta '
dak il-varjabbli għal dik il-funzjoni biss.
Allura inti tista 'tgħaddi xi numru fis dan funzjoni, li ser jissejjaħ x
internament.
>> Għandna funzjoni fattorjali tagħna.
Għandna bżonn żewġ affarijiet, każ bażiku u sejħa jirrikorri.
X'inhu l-każ ta 'bażi ​​għall-fatturi?
Xi ħadd li kiteb dan jitwettaq u li ma jkunx mitkellma għadhom, dak li huwa l-bażi
każ għall-fatturi?
>> STUDENT: Jekk n hija anqas minn 2, ritorn 1.
>> JASON Hirschhorn: Jekk n hija inqas minn 2, ritorn 1.
I simili li, minħabba li jieħu ħsieb ta '0 u 1.
Allura aħna ser nagħmlu x <2, ritorn 1.
Jekk irridu jiksbu għadda 0, jekk irridu jiksbu għadda 1, din il-funzjoni se
immedjatament ritorn 1.
Jekk aħna jiksbu għadda xi numru akbar minn jew daqs 2, aħna qed tmur biex
jkollhom sejħa jirrikorri tagħna.
>> U hekk kif huwa li sejjer jaħdem?
Jista xi ħadd ieħor li ħadem fuq din li ma tkunx mitkellma għadha agħtini l-
sejħa jirrikorri għal din il-funzjoni fil pseudocode?
Jekk aħna jiksbu għadda fl-għadd ta 'x u huwa ikbar minn 2, liema
do rridu nagħmlu?
Għandna wkoll eżempju bil-miktub dwar il- ġenb li jistgħu jagħtuk ħjiel.
>> STUDENT: Sejħa x darbiet il- fattorjali ta x minus 1?
>> JASON Hirschhorn: Eżattament dritt.
Aħna ser jirritorna x drabi l fattorjali ta x minus 1.
U li, anki jekk I kiteb up, bażikament, dak li qal fl-Ingliż,
din il-funzjoni fatturi se tikseb imsejħa mill-ġdid.
Hija ser teżegwixxi fuq x minus 1.
Hija ser jirritorna ma 'xi numru sħiħ, u allura dan ser timmultiplika dawn iż-żewġ
flimkien, u li l-valur se jkun lura għal dak kollu li sejjaħ din
, funzjoni fatturi li jistgħu jkun eżempju ieħor ta '
din il-funzjoni fattorjali.
>> Allura dan huwa eżempju ta 'rikursivi funzjoni, ħafna
funzjoni jirrikorri sempliċi.
Iżda ħafna minnhom se jkun bħal dan.
Jekk inti tixtieq a rikursivi tajba isfida għall-kwizz, ipprova kodifikazzjoni
tfittxija binarja recursively.
Għaliex jekk inti ma tfittxija binarju għal problema sett tlieta, inti probabilment ma kien
iteratively fil-linja waqt.
>> Iżda tista 'wkoll tkun bil-miktub recursively.
Int ser bżonn jiktbu tiegħek funzjoni separata li jieħu xi
argumenti differenti kmand tal-linja - jew mhux argumenti kmand tal-linja, li wħud
argumenti biss regolari differenti.
Iżda int tista 'tikteb tfittxija binarja recursively ukoll.
>> STUDENT: Allura inti tista 'ukoll bil-miktub, minflok x minus 1, inti
seta 'wkoll miktuba x minus minus, jew inti jista 'jkollhom
miktub minus minus x.
Tista 'biss tispjega verament malajr għaliex dawk tkun l-affarijiet differenti,
bħall x'inhi d-differenza bejn x minus minus u minus minus x?
>> JASON Hirschhorn: Le, jien ma se jmorru f'dak.
Imma jien ser jitkellem miegħek dwar dan wara klassi. x minus minus, minus minus x
decrement x minn 1.
Iżda dawn ma hija daqsxejn differenti.
Imma jien ma jridu jmorru f'dak.
Mistoqsijiet oħra dwar recursion jew din il-funzjoni?
Li mhux verament anki pseudocode.
Dik hija bażikament l-kodiċi fil- C inti se jikteb għal dan.
>> OK, kwalunkwe mistoqsijiet oħra dwar suġġetti up hawn?
Yeah.
>> STUDENT: I ​​jkollhom telqa malajr ta ' floating point u preċiżjoni.
>> JASON Hirschhorn: Floating punt u preċiżjoni.
Jista xi ħadd verament malajr tagħti me telqa ta '
floating point u preċiżjoni?
Inti kollha kellhom jagħmlu dan għall tiegħek problema stabbiliti, hekk int kollha
familjari magħha.
Jew forsi mhux kollha inti.
Kulħadd?
Agħti me post beda.
Floating punt u preċiżjoni.
X'hemm l-problema?
Iva.
Victoria?
>> Vanessa: Vanessa.
>> JASON Hirschhorn: Vanessa.
Jiddispjacini.
>> Vanessa: Hemm biss numru finit ta 'numri li jistgħu jkunu rrappreżentati
għaliex int fuq, fil tagħna każ, sistema 32-bit.
Allura inti tip ta 'għandek jagħmlu up xi numri.
>> JASON Hirschhorn: Allura dak eżattament id-dritt.
Hemm biss ċertu ammont ta ' numri li jistgħu jkunu rrappreżentati.
Jekk inti immoltiplika żewġ numri kbar ħafna, jista jfur l-ammont
ta 'spazji għandek biex jirrappreżentaw integer.
C'est pourquoi kultant nużaw twil twil minflok int.
Li għandha aktar spazji.
Li tista 'żżomm numru akbar.
>> Floating point preċiżjoni għandha x'taqsam ma ' li, iżda għandha wkoll tagħmel il-
fatt li n-numri deċimali jkunu mhux dejjem irrappreżentata.
Jiddispjacini.
Let me tpoġġi dan back up.
In-numru ta 'informazzjoni 1.0 mhuwiex dejjem irrappreżentata bħal inti tistenna,
1.000000000.
Huwa xi kultant rappreżentati kif 1.000000001 jew 0.999999999.
Jista 'jkun saħansitra 89 jintefgħu fil hemm x'imkien.
Allura dawn in-numri deċimali mhumiex irrappreżentata eżattament bħall inti
tistenna li tkun rappreżentata.
>> Allura fil-problema stabbilita -
kien it tnejn? -
problema stabbiliti tnejn, fejn aħna ttrattati b'punt li jvarja numri, meta ridna
minnhom jirrappreżentaw eżattament dak li ridna minnhom jirrappreżentaw, in-numru
ta 'pennies, jew in-numru ta' ċenteżmi, aħna timmultiplika dawn bil 100.
We tond lilhom.
U allura aħna maqtugħa kollox wara l-punt deċimali.
Li kien li jiġi żgurat li dawn attwalment ugwali eżattament dak li ridna
lill ugwali.
>> Għaliex meta inti tieħu xi ħaġa li a float u jibdluh int, int
cut off kollox lejn il-lemin tal-punt deċimali.
Minħabba li hemm xi b'punt li jvarja impreċiżjoni, 100.000 jista 'jkun
rappreżentati kif 99.999999999.
U jekk inti biss cut off kollox biex id-dritt dritt bogħod, int ser
jiksbu n-numru żbaljat.
Yeah.
>> STUDENT: Kelli mistoqsija dwar ikkastjar.
F'liema ordni ma jseħħu?
Jekk tixtieq tagħmel float, brazzi, 1 maqsuma b'10, ma tagħmel 1 maqsum f'10,
imbagħad nikseb 0.1, imbagħad ixgħel hija fis-float?
>> JASON Hirschhorn: Jekk inti tagħmel float 1 maqsum f'10 -
>> STUDENT: Yeah, u mbagħad ugwali -
ukoll, huwa normalment għandna hija ugwali fil -
Yeah.
Inti tixtieq li tagħmel dan float, right?
>> JASON Hirschhorn: OK, hekk aħna qed tmur biex użu li segue fis jidhru
it-tweġibiet għal dawn il-mistoqsijiet permezz kodifikazzjoni.
Għaliex inti probabilment jkollhom ħafna ta ' dawn il-mistoqsijiet minuta, u mod tajjeb
biex isolvuhom huwa permezz kodifikazzjoni.
Allura aħna qed tmur għall-kodiċi dan id-dritt issa, u allura aħna qed tmur biex tmur lura u
kodiċi l-kwistjoni kellek.
>> Allura l-ewwel linja -
I m'għandhomx ktibt dan - dak li huwa l-ewwel ħaġa li rridu nagħmlu meta aħna
tiftaħ fajl ġdid fl gedit?
>> STUDENT: Inkludi.
>> JASON Hirschhorn: Inkludi liema?
>> STUDENT: librerija CS50.
>> JASON Hirschhorn: OK.
X'iktar għandna jinkludu?
Aħna biss ser jiċċekkja dak li jiġri meta inti mitfugħa xi ħaġa li float.
Imma dak li għandna bżonn li jinkludu jekk aħna qed ser jikteb programm C?
>> STUDENT: Standard I / O.
>> JASON Hirschhorn: stdio.h.
Aħna attwalment m'għandhomx bżonn, għal dan programm, cs50.h, anki jekk huwa
dejjem utli li jinkludiha.
Iżda aħna dejjem bżonn stdio.h.
>> STUDENT: Meta kodifikazzjoni C?
>> JASON Hirschhorn: Meta kodifikazzjoni C.
>> So I ħlief bħala dan. Fajl c.
I nikseb xi sintassi enfasizzat sbieħ.
I kiteb null ġewwa prinċipali.
X'tagħmel null jfisser?
>> STUDENT: Ma tieħu kwalunkwe argumenti kmand tal-linja.
>> JASON Hirschhorn: mezzi Null, f'dan il- każ, prinċipali ma tieħu kwalunkwe
argumenti kmand tal-linja.
F'każijiet oħra, dan ifisser il-funzjoni ma tieħu argumenti kmand tal-linja.
Jew il-funzjoni, jekk I kellhom jiktbu nulli prinċipali (vojt), li jgħidu li ewlenin
ma jirritornaw xejn.
Allura vojt ifisser biss xejn.
X'għandu I jiktbu jekk I kellhom tieħu argumenti kmand tal-linja?
>> STUDENT: int ark c ark string v
>> JASON Hirschhorn: int argc ARGV string.
Huwa dan id-dritt?
>> STUDENT: Huwa parentesi ARGV star char.
>> JASON Hirschhorn: Allura inti tista 'tikteb parentesi ARGV string jew ARGV star char
parentesi, iżda inti għandek bżonn l-parentesi.
Minħabba ARGV huwa array ta 'spag, ftakar.
Huwa mhux biss wieħed string.
Allura ARGV string hija, hawn string wieħed imsejjaħ ARGV.
Parentesi ARGV String hija, hawn firxa ta 'kordi.
Parentesi ARGV string argc hekk int tkun xi ħaġa li jien
probabbilment jiktbu.
>> Allura inti riedu ħlief integer?
>> STUDENT: Yeah, numru sħiħ.
Jew float.
>> JASON Hirschhorn: Fi float?
Bħal, float x daqs 1 maqsum f'10.
>> JASON Hirschhorn: OK.
Kif nista jistampa float fl printf?
What?
>> STUDENT:% f.
>> JASON Hirschhorn:% f.
X'hemm integer?
d jew i.
X'hemm a string?
>> STUDENT: s.
>> JASON Hirschhorn: s.
Kif nista 'nikseb linja ġdida?
>> STUDENT: Backslash n.
>> JASON Hirschhorn: What do I ritorn jekk runs ewlenin b'mod korrett?
>> STUDENT: 0.
Do I bżonn jiktbu dik il-linja, għalkemm?
>> STUDENT: Le
OK, aħna mhux se jiktbu, imbagħad.
Jista kulħadd taqra li?
Huwa jistenna ftit żgħira.
Jista 'kulħadd jaraw, jew jekk I jagħmilha akbar?
Naħseb għall-kamera, aħna ser tagħmel hija daqsxejn akbar, għalkemm.
>> JASON Hirschhorn: Jekk irrid inbiddlu din . Ċ fajl fis eżekutibbli, liema
do I jiktbu?
>> STUDENT: Agħmel test.
>> JASON Hirschhorn: Jiddispjacini?
>> STUDENT: Agħmel test.
>> JASON Hirschhorn: Agħmel test.
Konna nitkellmu dwar din il-linja qabel.
Clang.
X'hemm clang?
L-isem tal-kompilatur.
X'hemm din il-linja?
>> STUDENT: Settijiet it up għall-użu ta 'GDB.
>> JASON Hirschhorn: Settijiet it up għall-użu ta 'GDB.
Din il-linja, dak li?
>> STUDENT: Kodiċi tas-sors.
>> JASON Hirschhorn: Dik hija l- sors fajl, il-fajl c..
What do dawn iż-żewġ linji do?
Jew dawn iż-żewġ le linji.
>> STUDENT: Huwa ismijiet li jittestjaw.
>> JASON Hirschhorn: Allura l-sing o jgħid, isem li bih xi ħaġa differenti.
U hawn int ssejjaħ dan it-test.
Jekk jien ma jkollhom li, dak li huwa isem dan?
>> STUDENT: A.out.
>> JASON Hirschhorn: A.out.
X'jagħmel din do?
>> STUDENT: Links il-librerija matematika.
>> JASON Hirschhorn: Huwa links fil-librerija matematika.
Aħna ma kinux jinkludu l-librerija matematika, iżda peress li hekk komuni, li ħadthom
make miktub li dejjem tinkludi il-librerija matematika.
U bl-istess mod, dan jinkludi il-librerija CS50.
>> OK, hekk jekk aħna lista, issa għandna eżekutibbli imsejħa test.
Li jiġi esegwit, nikteb test.
Nara li b'punt li jvarja tiegħi, kif mistenni, ikun egwali għal 0.
Does li -
hekk -
>> STUDENT: Imbagħad jekk inti tpoġġi float issa, bħal inti mitfugħa bħala float -
>> JASON Hirschhorn: Cast l-1 għal float?
>> STUDENT: Le, mitfugħa l-ħaġa sħiħa -
yeah.
Jekk inti biss ma li, kieku li jagħmilha 0.1?
>> JASON Hirschhorn: OK, sabiex verament malajr, 1 maqsum f'10, dawn huma
interi qed tiġi diviża.
Allura meta inti jaqsmu interi, dawn qed 0, u int iffrankar li 0 fil-
float, minħabba li l-mmejla hi biss diviżjoni numru sħiħ.
Allura issa aħna qed iduru xi ħaġa fi float.
>> Ejja naraw x'jiġri.
Aħna ser tagħmel test.
Allura issa naraw li dan slash ma kienx diviżjoni integer, kien f'wiċċ l-ilma
punt diviżjoni.
Għaliex wieħed mill-argumenti tagħha kienu mitfugħa għal float.
Allura issa huwa kien qal, jittratta din diviżjoni simili aħna qed jittrattaw ma
punti f'wiċċ l-ilma, mhux ma interi.
U hekk irridu jiksbu l-risposta nistennew.
>> Ejja naraw dak li jiġri -
oops.
Jekk jien ridt li jistampaw aktar informazzjoni spots, kif jista I do dan?
>> STUDENT: Point dot f, jew kemm postijiet deċimali kif tixtieq.
>> JASON Hirschhorn: So I jistampaw 10 spots deċimali.
U aħna issa tara aħna jkollna xi għalf stramb.
U li tmur lura għall-mistoqsija tiegħek dwar floating punt impreċiżjoni.
Hemm Jittieħed stramb maħżuna fil hawn.
>> OK, ma li iwieġeb il-mistoqsija tiegħek?
X'iktar ma trid għall-kodiċi malajr?
>> STUDENT: I ​​biss riedu biex tara jekk jew le, jekk inti lliberat xi pointer,
jekk dik pointer xorta kienu maħżuna it-indirizz ta 'dak li kien
tipponta lejn qabel.
>> JASON Hirschhorn: OK, hekk ejja tagħmel dan.
Char PTR star, dan joħloq varjabbli imsejħa PTR tat star char tip.
Kif nikteb malloc?
Alden?
>> ALDEN: Just malloc.
Iżda mbagħad għandu jkun id-daqs ta ', u f'dan il-każ, I raden youd
tkun tipponta lejn char.
Għalhekk d jkun char.
>> JASON Hirschhorn: OK, hekk aktar ġenerikament, Ġewwa -
ejja jeditjaw.
Ġewwa malloc, inti tixtieq in-numru ta 'bytes fuq il-borġ.
Ġeneralment, dak li aħna stajt tidher li aħna qed tagħmel hu li aħna qed tmur biex malloc
kordi, per eżempju, jew arrays tan-numri interi.
Mela jekk irridu 10 interi, jew 10 Chars, 10 se tagħtina 10.
U mbagħad daqs tal Chars tagħti us li d-daqs ta 'Chars, li
F'dan il-każ huwa 1 byte.
Nikbru 10 bytes.
Jekk konna li tikteb daqs ta 'int, li tagħtina 40 bytes.
>> Allura aktar ġeneriku, ġewwa ta malloc huwa n-numru ta 'bytes li trid.
F'dan il-każ, aħna jkollna 1 byte.
Li tidher qisha użu stramb ta malloc, iżda għal tagħna
skopijiet jagħmel sens.
Allura hemm dak.
>> Aħna ser sejħa ħielsa.
Aħna jeħles minnu u nużaw PTR ġdid.
U dak li ma inti tixtieq li jiċċekkjaw?
>> STUDENT: I ​​biss riedu biex tivverifika jekk jew ma kienx hemm xejn
ġewwa ta 'dan.
>> JASON Hirschhorn: Allura jekk hija enfasizzat li xejn?
>> STUDENT: Yeah, eżattament, kemm jekk kien għad għandu l-indirizz tal-memorja.
>> JASON Hirschhorn: Allura inti tixtieq biex jiċċekkja l-valur tal-PTR?
>> STUDENT: Yeah, eżattament.
>> JASON Hirschhorn: What do I jiktbu hawn jekk irrid li jivverifika l-valur tal-
punt - x'inhu, il-Ġordan qal, il-valur?
Jew dak li huwa maħżun ġewwa ta PTR?
>> STUDENT: A indirizz tal-memorja.
>> JASON Hirschhorn: A indirizz tal-memorja.
Mela jekk nikteb biss dan, dan ser agħtini l-valur tal-PTR.
U kif nista jistampa l-indirizz tal-memorja?
X'hemm-format string għal indirizz memorja?
>> STUDENT:% p.
>> JASON Hirschhorn:% p.
% S huwa string.
% P għall pointer.
Huwa dan id-dritt?
Dan huwa dritt.
Allura PTR ugwali -
xorta għandu xi ħaġa fiha.
Din hija probabbilment aktar mistoqsija interessanti.
X'jagħmel din il-linja tagħmel?
>> STUDENT: difetti seg.
>> JASON Hirschhorn: What?
>> STUDENT: Naħseb li SEG ħsarat.
>> JASON Hirschhorn: Hm?
>> STUDENT: Naħseb li ser seg tort.
>> JASON Hirschhorn: Allura din il-linja ta PTR kodiċi, star, liema
ma l-istilla jfisser?
>> STUDENT: Kontenut ta '.
>> JASON Hirschhorn: Yeah.
Mur jiksbu l-kontenut ta '.
Allura dan se jmorru għall-memorja jindirizzaw hemm u tagħti me dak.
I użati% c dritt hawn għaliex hemm huma karattri maħżuna hemmhekk.
Allura aħna qed tmur biex tmur f'dak indirizz aħna biss raw - jew inneħħu probabbilment tkun
ftit dan differenti żmien we run-programm.
Iżda aħna ser imorru f'dak l-indirizz li nafu għadu jeżisti
u tara x'hemm hemmhekk.
>> Għalhekk hija ma seg tort.
Hija biss ma tagħtina xejn.
Jista 'jkunu attwalment tawna xi ħaġa, aħna biss ma tistax tara dan.
U li tmur lura għal din l-idea -
u aħna qed mhux se tikseb wisq fis dan, minħabba li l hinn mill-
ambitu ta 'dan il-kors.
Iżda tkellimna dwar dritt hawn, jekk aħna marru lil hinn mill-limiti ta 'l-array
1, aħna ma tista 'tikseb fl-inkwiet.
>> Xi kultant, meta inti biss jmorru off b'1, int tagħmel xi ħaġa ħażina, u inti
setgħux jiksbu fl-inkwiet.
Imma inti ma dejjem jiksbu fl-inkwiet.
Hija tiddependi kemm ta 'ħaġa ħażina inti do, int ser tikseb fl-inkwiet.
Liema hija ma jfissirx, tkun sloppy bil-kodiċi tiegħek.
Iżda huwa jiġifieri, il-programm mhux se dejjem nieqaf, anki jekk inti tmur x'imkien
int mhux suppost li jmorru.
>> Eżempju tajjeb ta 'dan huwa, lott ta' nies fil-problema tagħhom stabbiliti 3, li
kien 15, ma eżaminawx il- limiti tal-bord.
Allura inti ħares lejn ix-xellug, ħarsu l- dritt, ħares lejn il-wiċċ, ħares
mal-qiegħ.
Imma inti ma tikkontrolla biex tara jekk il-quċċata kien fil-fatt se tkun fuq il-bord.
U ħafna nies li għamlu dan u daru li, programm tagħhom ħadmu
perfettament, minħabba fejn dak il-bord kien maħżuna fil-memorja, jekk inti marru wieħed
hawn fuq jew ikun iċċekkjat li l-memorja indirizz, ma kien hemm xejn
partikolarment horrible dwar dan, hekk program tiegħek ma kienx
se Yell fi inti.
>> Iżda aħna xorta se tieħu off punti jekk inti ma tivverifika li, minħabba li inti
kienu qed jagħmlu xi ħaġa inti ma kinux suppost tagħmel, u inti jista 'jkollhom
gotten fl-inkwiet.
Odds huma, għalkemm, inti probabilment ma.
Allura dan huwa li turi li, iva, aħna xorta tista 'tmur għaliha.
U aħna mhux qed jkollna fil- trouble f'dan il-każ.
Jekk aħna ppruvaw jagħmlu taqra l- 100 karattri li jmiss, aħna'd
probabbilment nikseb fl-inkwiet.
U inti tista kodiċi qari tal-100 li jmiss karattri jekk inti tixtieq billi tagħmel xi
tip ta 'għal loop.
Yeah.
>> STUDENT: Minħabba li aħna ġew assenjati li ispazju ta 'valur attwali, aħna mhux se
attwalment tkun tista 'tara xejn.
Jekk nippruvaw bl-istabbiliment li daqs simili c jew xi ħaġa?
>> JASON Hirschhorn: mistoqsija Great.
Kif nista 'valur -
liema linja tal-kodiċi nista jiktbu fuq il-linja seba 'tagħmel dak li qal?
>> STUDENT: Star PTR ugwali wieħed quote ċ jispiċċaw kwotazzjoni waħda.
>> JASON Hirschhorn: Allura thats tqegħid karattru, c, f'dak il-post,
għaliex għal darb'oħra, li star ifisser mur hemm.
U meta jintużaw fuq in-naħa tax-xellug tal- operatur assenjazzjoni, li jkun daqs
tiffirma, aħna mhux se tikseb dak valur tant kif stabbilit dak il-valur.
Issa ejja naraw x'jiġri.
>> Npoġġux xi ħaġa hemmhekk u kien hemm.
Aħna imsejħa ħielsa.
Xi għalf probabbilment ġara fuq il-borġ.
Dan mhuwiex hemm aktar.
Iżda għal darb'oħra, aħna mhux qed jkollna fl-inkwiet biex imur hemmhekk.
>> Jien tagħmel dan fil-kodiċi li juru li ħafna ta 'dawn
mistoqsijiet li għandek, dawn qed tassew interessanti
tweġibiet ħafna ħin.
U dawn qed mistoqsijiet verament tajba.
U inti tista 'figura out fuq stess jekk tiegħek, per eżempju,
aħna mhux qed f'sezzjoni.
Yeah.
>> STUDENT: Minħabba int ma tibgħat il- pointer kullimkien, do għandek bżonn
użu malloc?
>> JASON Hirschhorn: Allura dan imur lura għall-mistoqsija inizjali tiegħek.
[? ?]
Hija biss varjabbli lokali?
Malloc hawnhekk mhuwiex dak konvinċenti.
L-użu ta malloc hawnhekk mhix li konvinċenti għaliex dan huwa
biss varjabbli lokali.
>> STUDENT: Allura inti tista 'tagħmel char PTR star ugwali bonjour?
>> JASON Hirschhorn: Oh.
Allura aħna qed tmur biex issa jiksbu lura għall-mistoqsija inizjali tiegħek.
I think inti ma kinux sodisfatti bit-tweġiba tiegħi.
OK?
Bħal dik?
>> STUDENT: Yeah.
Stenna.
>> JASON Hirschhorn: U fejn tridu li jistampa?
Allura aħna ser jistampa string bħal dik?
>> STUDENT: Interessanti.
>> JASON Hirschhorn: Allura dan jgħid dan argument għandu l-tip ta 'karattru.
Għalhekk dan għandu jkun karattru.
>> STUDENT: Just tieħu l-ewwel waħda.
>> JASON Hirschhorn: Allura dan huwa dak li għidt qabel.
Like I said, mhuwiex ħażna tal- string ġewwa pointer varjabbli.
Huwa ħażna -
>> STUDENT: L-ewwel valur tas-sekwenza.
>> JASON Hirschhorn: L-indirizz ta ' l-ewwel valur tas-sekwenza.
Jekk konna li jistampa dan, aħna qed jkollna l-valur ġewwa pointer.
U aħna ser tara huwa, tabilħaqq, l-indirizz tal-memorja.
>> Does li jagħmel sens?
Jiddispjacini.
Stenna, ma li twieġeb tiegħek kwistjoni, għalkemm?
>> STUDENT: Yeah.
>> JASON Hirschhorn: Din il-linja tal-kodiċi ħolqien ta 'spag u mbagħad ieħor
pointer varjabbli thats tipponta għal dak string, li array.
Yeah.
>> STUDENT: Mela jekk aħna marru memorja wieħed tkompli tindirizza, kieku aħna jiksbu l-h?
Ma kienu maħżuna bħala string?
>> JASON Hirschhorn: Bħal, għamilna -
għalhekk dan huwa importanti li tagħmel.
Dan huwa punt aritmetika, li inti guys raw qabel u għandhom ikunu
relattivament komdi.
Dan huwa simili għall-kitba -
jekk konna li tikteb din il-linja ta 'kodiċi, Rajna notazzjoni array qabel.
Dan għandu tagħtina t-tieni valur f'dan il-firxa, h.
>> Jekk aħna ma dan, dan għandu wkoll jagħti us-tieni valur f'dak array.
Minħabba li huwa għaddej ma 'l-memorja indirizz ta 'l-ewwel ħaġa, iżda l-
indirizz tal-memorja tal-ħaġa waħda fuq.
U allura l-dereferences operatur star li pointer.
U għal darb'oħra, ejja ara.
Nikbru h ġdid.
>> STUDENT: X'inhuma eżattament ma dereference jfisser?
>> JASON Hirschhorn: Dereference hija kelma fancy għall tmur.
Mur dan u tikseb x'hemm hemmhekk huwa li dereference pointer.
Huwa biss kelma fancy għal dan.
>> STUDENT: Jekk ridna li jistampaw l-sekwenza sħiħa, nistgħu
do pointer ampersand?
>> JASON Hirschhorn: OK, aħna se nieqaf hawn.
Aħna ser jieqafx hawn.
Ampersand jagħtik l-indirizz ta ' post, hekk meta inti tagħmel ampersand ta '
varjabbli, li tagħtik l-indirizz fejn dak il-varjabbli huwa maħżun.
Pointer ampersand se jagħtik l- indirizz tal-PTR fejn ptr huwa fil-memorja.
>> Aħna mhux se jmorru fuq ma 'dan l-eżempju.
Inti tista figura out dawn affarijiet fuq tiegħek.
Iżda għal darb'oħra, dan jista 'anke jkun verging a bit hinn minn dak li għandek bżonn tkun taf għal
l-ambitu ta 'dan nofs it-terminu -
jew dan il-kwizz, pjuttost.
Jiddispjacini.
>> Aħna ser jimxu fuq, minħabba I kieku tixtieq tagħmel problema waħda kodifikazzjoni
qabel il-ħin huwa up.
U aħna ser kodiċi dak li naħseb hija l-aktar konvinċenti ta 'dawn
eżempji, atoi.
Għalhekk din kienet mistoqsija dwar kwizz sentejn ilu.
U I jkollhom fuq il-bord hawn.
>> In-nies kienu mitluba fuq l-kwizz -
dawn ingħataw ftit aktar tesxt fl il-kwistjoni, iżda I eliminati l-
test għaliex ma kienx meħtieġ għall-għanijiet tagħna issa.
Kien biss xi isfond fuq dak atoi għamlet.
Imma you know kollha u huma ħafna familjari ma atoi.
>> Nissuġġerixxi inti kodiċi dan fuq folja tal-karta.
I jissuġġerixxu wkoll li tuża l-istrateġija li konna marret fuq
ħafna fis-sezzjoni tagħna.
L-ewwel, aċċerta ruħek li tifhem ta dak atoi tagħmel.
Pinġi stampa jew toħroġ b'xi immaġni ta 'dan fir-ras.
Sussegwentement, jiktbu pseudocode għal dan.
Fuq l-kwizz, jekk kollha ikollok huwa pseudocode, mill-inqas int
xi ħaġa down.
U mbagħad mappa li pseudocode fuq C. Jekk għandek check-in tiegħek
pseudocode, bħal jiċċekkjaw jekk xi ħaġa huwa 1, li l-mapep fuq IF
kondizzjoni u ibqa 'sejjer hekk.
U fl-aħħarnett, il-kodiċi tal-programm C.
>> Allura jmorru lura għall atoi u tieħu ħames minuti għall-kodiċi dan fuq folja tal-
karta, li probabbilment hija dwar l- ammont ta 'ħin li inti se tieħu fuq
kwizz biex atoi kodiċi.
Ta 'ħames sa 15 minuta, ħames sa 12, ħames sa 10 minuta, huwa dwar l-ammont ta '
ħin youd jonfqu fuq dan kwistjoni fil-kwizz.
Sabiex jieħdu ħames minuti issa, jekk jogħġbok.
U jekk għandek xi mistoqsijiet, iqajmu idejn tiegħek u jien ser jidħlu madwar.
>> [konversazzjonijiet SEKONDARJI]
>> JASON Hirschhorn: OK, so li kien ta 'ħames minuti.
Dan kien probabbilment dwar l-ammont ta ' ħin youd jonfqu fuq dik fuq kwizz,
forsi l-aħħar baxxa ta 'dak iż-żmien.
Aħna ser terġa fi ftit.
Let us tibda kodifikazzjoni dan.
U jekk aħna ma jsibux it-triq kollha permezz, it-tweġibiet għal dan u din
mistoqsija kwizz huma disponibbli, għal darb'oħra, Fall 2011 meta din il-mistoqsija
deher fuq il-kwizz.
>> U kien jiswa tmien punti fuq il-kwizz imbagħad.
Tmien punti huwa fuq il-tarf għoli tal- ammont ta 'punti xi ħaġa min.
Mistoqsijiet l-aktar huma fil-medda ta '1-6 punti.
Allura dan huwa aktar ta 'sfida kwistjoni, għall-żgur.
Jista 'xi ħadd nikseb me bdiet?
>> Ġeneralment, liema huma aħna se trid tagħmel ma 'dan
jiffunzjonaw atoi, loġikament?
What do rridu nagħmlu?
Allura aħna qed tmur biex jiktbu xi pseudocode.
>> STUDENT: Ikkonverti karattri fis interi.
>> JASON Hirschhorn: Ikkonverti karattri fis interi.
OK.
Allura kif ħafna karattri aħna ser jeħtieġ li jmorru permezz?
>> STUDENT: Kollha kemm huma.
>> STUDENT: Il-karattri fis-sekwenza.
>> JASON Hirschhorn: Kollha tal- karattri fit-sekwenza.
Hekk jekk ridna li jmorru permezz ta 'kull karattru string, liema hija ħaġa
fl C Rajna li ppermettiet us li jmorru permezz ta 'kull
karattru string?
>> STUDENTI: A għall-loop.
>> JASON Hirschhorn: A għall-loop.
Allura aħna qed tmur biex loop permezz kull karattru fl-i.
>> Imbagħad dak li aħna ser trid tagħmel meta nikbru karattru speċifiku?
Say aħna qed jkollna għadda 90.
Irridu jiksbu l-9.
Huwa karattru.
What do rridu nagħmlu ma ' li l-karattru 9?
>> STUDENT: Naqqas minn karattru 0?
>> STUDENT: Żid 0?
>> JASON Hirschhorn: Naqqas minn karattru 0?
>> STUDENT: Yeah.
>> JASON Hirschhorn: Why do inti trid tagħmel dan?
>> STUDENT: [inaudible]
valur.
Valur int tagħha.
>> JASON Hirschhorn: OK, hekk aħna jieħdu l- karattru 9, naqqas minn
karattru 0 biex tikseb integer attwali 9.
Sweet.
U kif tkun taf li l-karattru 9 nieqes 0 karattru huwa 9?
What chart ma inti tħares lejn?
>> STUDENT: Hemm loġikament disa postijiet bejn 9 u 0.
Jew inti tista 'tħares lejn il-mejda ASCII.
>> JASON Hirschhorn: tabella ASCII.
Imma iva, int korretta ukoll.
Allura aħna naqqas 0.
Allura issa għandna l-eqreb numru sħiħ 9.
U dak li rridu nagħmlu ma 'dak?
Jekk aħna għandna 90, huwa l-ewwel numru sħiħ aħna, dak li rridu nagħmlu?
>> STUDENT: I ​​d tpoġġi fil integer temporanju array, imbagħad jagħmlu matematika lilha
aktar tard biex jagħmluha fis tmiem.
>> JASON Hirschhorn: OK.
>> STUDENT: Tista 'tibda fi tmiem l- il-firxa u mbagħad jimxu 'l quddiem sabiex
li kull darba li inti timxi 'l quddiem, inti immoltiplika lilha mill 10.
>> JASON Hirschhorn: OK.
Li tinstema 'bħala pretty idea konvinċenti.
Nistgħu jibda fl-aħħar ta 'firxa tagħna, u nistgħu nużaw strleng.
Nistgħu nużaw strleng fil hawn.
Aħna ser jiksbu l-tul ta 'sekwenza tagħna.
Nibdew fl-aħħar.
U + l-ewwel waħda, aħna biss jieħdu dik numru sħiħ, u forsi noħolqu bħal
varjabbli ġdid integer top up fejn aħna qed ħażna kollox.
Allura aħna loop permezz ta 'kull char fl-i minn wara quddiem, aħna naqqas 0, u
allura aħna teħodha, u jiddependi fuq fejn hi, aħna immoltiplika lilha
minn qawwa ta '10.
Minħabba li l-ewwel waħda, liema do we immoltiplika l-karattru lemini minn?
>> STUDENT: 10 sa 0.
>> JASON Hirschhorn: 10 sa 0.
What do we immoltiplika t-tieni karattru lemini minn?
>> STUDENT: [inaudible].
>> JASON Hirschhorn: What?
>> STUDENT: 10 sa l-1.
>> JASON Hirschhorn: 10 sa l-1.
Il-karattru lemini terz?
>> STUDENT: 10 għall-2.
>> JASON Hirschhorn: 10 għall-2.
>> STUDENT: Skużani jien ma nifhimx dak li aħna qed tagħmel hawn.
>> JASON Hirschhorn: OK, ejja mmorru lura, imbagħad.
Allura aħna qed tmur biex tikseb għadda fi string.
Għaliex aħna qed miktub atoi.
Allura aħna nikseb għadda fi string.
Say aħna qed jkollna għadda fis-sekwenza 90.
>> L-ewwel ħaġa aħna qed tmur biex tagħmel huwa stabbilit varjabbli integer ġdid li aħna qed
biss se toħloq bħala numru sħiħ ġdida tagħna.
Dak hu li aħna qed tmur li jirritornaw fl-aħħar.
Għandna bżonn li jmorru permezz ta 'kull karattru l-sekwenza għaliex konna determinati
li għandna bżonn biex imissu kull wieħed u imbagħad żid lill integer ġdida tagħna.
>> Iżda aħna ma tistax żid ftit bħala numru.
Ma nistgħux sempliċement jieħu 9 u żid 9 sa numru sħiħ tagħna.
Hija tiddependi fuq liema post huwa fl-sekwenza.
Aħna ser jeħtieġ li jimmultiplikaw lilha minn qawwa ta '10.
Minħabba li kif 10 xogħlijiet bażi.
>> Allura aħna qed tmur biex tikseb l-attwali karattru, jew id-integer attwali
numru, billi jitnaqqas karattru 0 minn karattru 9 bħal għamilna mal-
jitnaqqas karattru kapital A minn kwalunkwe karattru kellna f'waħda
dawk il-problemi.
Allura aħna ser fil-fatt tikseb numru minn 0 sa 9 ffrankati bħala numru reali, u aħna ser
immoltiplika lilha mill qawwa ta '10ħ jiddependi fuq fejn ninsabu fis-sekwenza.
U allura aħna qed tmur biex iżżid lura fil-varjabbli tagħna integer ġdid.
>> Allura dak li dan look like kieku jkun - aħna ser tiġbed aktar hawn.
Jekk aħna jiksbu għadda fis-sekwenza 90 -
>> STUDENT: [inaudible].
>> JASON Hirschhorn: Imma atoi tieħu string.
Allura aħna qed tmur biex jgħaddu l-azjenda.
Aħna ser jiksbu għadda fil-90.
Immorru mill-dahar għall-quddiem.
Nieħdu l-0.
>> STUDENT: Jien sorry.
Forsi dan huwa stupid.
Jekk aħna qed jkollna għadda fi string, għaliex huwa 90 dak li aħna qed
jkollna għadda fil-?
Minħabba 90 huwa integer.
>> JASON Hirschhorn: Minħabba atoi tieħu spag u jibdel din in l-eqreb numru sħiħ
rappreżentanza ta 'dak string.
Iżda l-sekwenza 90 mhuwiex il-integer 90 jew in-numru 90.
L-sekwenza 90 firxa ta 'tnejn, jew tliet karattri, pjuttost, l-9
karattru, il-karattru 0, u l-backslash 0 karattru.
>> U aħna qed miktub atoi minħabba li, għal eżempju, meta tieħu l-kmand
argument linja, u huwa salvati ARGV, huwa ffrankati bħala sekwenza.
Iżda jekk inti tixtieq li titratta dan bħala numru, għandek bżonn biex jaqilbu għal
integer attwali.
Li għamilna wieħed ta 'settijiet problema tagħna.
Li għamilna f'numru ta 'settijiet problema tagħna.
Kulħadd li ħa integer bħala argument linja tal-kmand.
B'tali mod li għalhekk il-funzjoni atoi tagħna tieħu string.
>> Għalhekk għal darb'oħra, fl-eżempju tagħna hawn, aħna qed se tieħu l-aħħar wieħed.
Aħna ser inaqqas il-karattru 0 minnha, minħabba l-karattri 0
mnaqqas mill-karattru 0 jagħtik numru attwali 0, skond
l-matematika ASCII li nagħmlu.
>> Minħabba karattri rappreżentati kif differenti minn attwali tagħhom - il-
karattru ta ', per eżempju, lowercase a huwa 97.
Mhuwiex - oops!
Mhuwiex kwalunkwe inti tistenna li tkun, 0, per eżempju.
Allura inti għandek naqqas il- karattru li tikseb 0.
>> Allura aħna qed tmur biex tagħmel dan hawn li jiksbu n-numru attwali.
U allura aħna ser immoltiplika lilha mill qawwa ta '10ħ jiddependi fuq fejn
hija fis-sekwenza, u mbagħad ħu li u iżżidhiex mal detentur post tagħna
varjabbli hekk nistgħu toħroġ bi integer ġdida finali tagħna.
Does li jagħmel sens għal kulħadd?
>> Allura aħna ma tkunx qed tmur għall-kodiċi dan dritt issa, għaliex aħna qed
jkollna fuq żmien qasir.
I ruhna ghall-ħin ta 'dak.
Imma dan huwa dak, wieħed jittama, inti ikunu jistgħu jagħmlu fuq il-kwizz - fil-
ħafna inqas, tikseb dan pseudocode miktub.
>> U mbagħad, jekk konna li tikteb il- pseudocode, fil-fatt, nistgħu nagħmlu dan
pretty malajr.
Kull linja ta 'kummenti li aħna kiteb hawn jittraduċi għal madwar
linja waħda tal-kodiċi C.
Tiddikjara varjabbli ġdid, bil-miktub a loop, xi tnaqqis, uħud
multiplikazzjoni, u xi assenjazzjoni.
Aħna'd probabbilment wkoll jridu jiktbu linja tar-ritorn.
Aħna tista 'ukoll tixtieq li tqiegħed xi kontrolli hawn.
Yeah.
>> STUDENT: Allura nistgħu jikkura i bħall-sekwenza attwali?
Għaliex naf huwa biss l-indirizz.
Bħal, kif tista 'tikseb it-tul ta' il string qed jingħadda?
>> JASON Hirschhorn: Allura kif għamlet it-tul ta 'string?
Strlen.
>> STUDENT: strlen, yeah.
Iżda int tista 'tpoġġi s bħala l- argument għal dan?
>> JASON Hirschhorn: So strlen jieħu stilla char.
U jirriżulta li star char, u iżomm jingħaddu sakemm jiġrilha għal
backslash 0. strlen kien effettivament wieħed mill-programmi l-oħra we
kienu ser kodiċi.
Din kienet waħda oħra tajba għall-kodiċi.
Li wieħed daqsxejn aktar faċli, għaliex jekk int ser biex jaħsbu dwar dak
kunċettwalment -
I biss qal out loud - strlen ġej a pointer u jżomm għaddejjin u
għadd u issorveljar sakemm inti tilħaq backslash 0.
>> STUDENT: OK, ltqajna.
>> JASON Hirschhorn: Allura aħjar ta ' Xorti fuq kwizz 0 għada.
Jekk għandek xi mistoqsijiet, I ser jkun barra wara dan.
Ħossok liberu li email me.
Jilħqu lill-TF tiegħek jekk int mhux fis-sezzjoni tiegħi, jew tikseb tiegħi
email jekk inti tixtieq dan.
>> Jekk inti tixtieq li skerz u biss tibgħat email, email freakout, I ser
inti tibgħat lura, bħal, wiċċ smiley, jew, bħal, ċajta jew xi ħaġa.
Hekk li tħossok liberu li tagħmel dan ukoll.
Xorti tajba għal darb'oħra, u jien ser tara inti kollha ġimgħa d-dieħla.