[Powered by Google Translate] [Walkthrough] [Vandamál Set 3]
[Zamyla Chan] [Harvard University]
[Þetta er CS50.] [CS50.TV]
Allt í lagi, velkomin alla til walkthrough 3.
Pset 3 er mjög skemmtilegt.
Það er nýtt að CS50 heitir Scramble,
þannig að ef þú hefur einhvern tíma spilað Scramble eða svipuð borðspil Boggle
raun er það leikur þar sem þú hefur rist af bréfum,
og í tíma úthlutað sem þú þarft að finna eins mörg
2-bréf eða lengri orð sem eru í stjórn,
og þannig að það eru ákveðnar reglur eins og að þú getur aðeins notað einn staf
í rist, ein blokk í rist þegar, og þú getur ekki farið aftur í það.
Þú getur aðeins reisa bréf með því að tengja saman samliggjandi stafi,
þannig að þetta er að fara að vera mjög gaman pset, þannig að við skulum líta á verkfærakista okkar.
>> Again, the tæki er enn verið að uppfæra, svo tryggja
hvert skipti sem þú slærð inn tæki til hægri opna Terminal gluggann
og í skautanna gera sudo skipunina Yum-Y uppfærslu.
Þetta er einnig mikilvægt ef þú vilt vera fær um að
keyra starfsfólk lausnir, sem við mælum með ákveðið.
Stundum er það gott þegar þú hefur lokið kóðann þinn
að prófa það gegn starfsfólki lausn, ganga úr skugga um að allt
þú öðlast starfsfólk lausn, hvað kemur út þar,
sama sem gerist með kóðann þinn.
Allt í lagi, svo vertu viss um að uppfæra tæki þínu.
Nú, einnig, þar sem við erum að takast á við töflu í þessu tilfelli
við erum í raun að fara að vera delving 2-víddar fylki.
Við höfum brugðist við 1-víddar fylki,
en nú erum við að fara að lengja þær svo að þeir hafa
margar línur sem og marga dálka.
Þá ætlum við ákveðið að nota aðgerðir á þessari pset,
grundvallaratriðum að hringja í aðgerð, að senda nokkrar breytur úr
og þá fá aftur gildi aftur.
Og í Scramble að við erum ekki að biðja þig um að raunverulega gera the heild hlutur frá grunni,
heldur erum við í raun að gefa þér eitthvað sem kallast dreifingu kóða,
þannig virka kóðann sem við höfum nú þegar skrifað svona sett fram
beinagrind af pset og útfærir sum erfiðari hlutum
að þú munt örugglega vera fær um að lesa yfir og skilja
en þurfa ekki að alveg að gera það enn.
>> Til fljótt endurhakka gegnum 1-víddar fylki.
Fylki er gögn uppbygging sem halda mörg gildi af sama tagi,
og eins og áminning, eru þessi fylki núll lán,
svo mest af þú ert líklega kunnugt fylki eins og þessa.
Ef við vildum int array með lengd 3,
þá gátum við frumstilla hana með því að hafa int gildi
og þá hornklofum sem gefur til kynna lengd á það,
og þá myndum við úthluta gildi á tilteknum þætti innan þess fylki.
Hér höfum við int fylki með fyrstu vísitölu á vísitölu 0, 2,
Vísitala 1 er 4, vísitölu 2 er 6.
Segjum að við vildum stærri array og halda mörg gildi.
Þá gætum við haft 2D array.
Nú, þetta er mjög svipað og að 1-víddar array okkar.
Það er 0 verðtryggð, svo það þýðir að fyrsta dálk
er skráð á 0.
Næsta einn er á 1, og þá er næsta einn í 2,
og þá álíka höfum raðir, og svo þú sérð að þegar við
lýsa array okkar við einnig-bara eins og áður-við kynna stærð fylkisins.
Einnig erum við álíka benda á stærð þar sem fyrsta krappi
gefur til kynna hversu margar raðir þú hefur, og hitt sýnir
hversu marga dálka.
>> Allt í lagi, í þessu pset þú þarft að vera fær um að
iterate yfir 2D fylki, vera fær um að fá aðgang hvert frumefni
í þessu 2D array, þannig í raun að þú vilt ná
allar mögulegar samsetningar í röðinni og dálki gildi.
Við viljum til að ná línu 0 í dálki 1, 2 og 3.
Við viljum til að ná línu 1 í dálki 0, 1 og 2.
Við verðum að hafa einhvers konar skipulag sem gerir okkur kleift að
iterate yfir öllum línum og öllum samsetningum
dálka innan það.
Hér hef ég 2D int array.
Það hefur 3 raðir og 3 dálka,
og svo er þetta fljótleg leið til að
finna allt 2D fylki.
Ég er að segja fyrsta röð er að fara að 2, 4, og 6,
konar líkt og fyrra dæmi í þessari mynd.
Og ég ætla að hafa 2. röð að vera 3, 6, 9,
og þá er 3. röð 4, 8, 12.
Við höfum 2D array okkar,
og við vitum að það lítur út eins og þetta.
Við höfum 2, 4, 6,
3, 6, 9,
4, 8, 12.
Nú ef við bætum í vísitölum,
þetta væri róður 0.
Þetta væri línu 1.
Þetta væri Row 2.
Á sama hátt höfum við dálk 0,
dálki 1 og 2. dálki.
Já.
[Male] Hvaða þrír eru dálki, og hver einn er röð?
Súlurnar eru þessar sjálfur,
svo dálkarnir eru þetta sjálfur.
Þetta er dálkur 0, og þetta er í 1. dálki.
Þetta er dálkur 2.
[Male] Hversu margir í yfirlýsingu um INT við borðið [3] [3]?
Þegar þú ert að lýsa því yfir að 2D array þá fyrst tala í hornklofum
er að fara að vera hversu margir línur þú hefur,
og þá seinni er að fara að vera hversu margir dálkar.
>> Frábært, þannig að við viljum einhvers konar uppbyggingu,
einhvers konar lykkju sem er að fara að gefa okkur allar mögulegar samsetningar.
Segja að við byrja á því að segja-allt í lagi, til að fá aðgang neitt í þessari röð-
við skulum bara líta á þetta röð fyrir nú.
Þetta eru línur hér.
Við vitum að röð vísitölu okkar er að fara að vera 0,
en að opna þessa hluti það er á 0 röð og 0 dálk,
svo þá myndum við nálgast það með vísitölu [0] [0].
Þá er þetta einn, sömuleiðis er enn á fyrstu röðinni,
en það er á öðrum dálki, þannig að við aðgang að því [0] [1].
Þá sá síðasti væri [0] [2].
Alltaf þegar við erum í tilteknu röð við erum að fara að vilja
iterate yfir öll möguleg gildi dálki.
Við skulum byrja með for lykkju
sem byrjar á 0, og fer lengd hversu margir línur sem við höfum.
Þetta er hjóla í gegnum alla röð.
Þá er það sem við viljum gera í því,
þegar við erum á ákveðna röð sem við viljum að hjóla í gegnum allar fyrirliggjandi dálka,
svo þá munum við hafa aðra lykkju.
Við skulum kalla það j.
Ég, er J og K mjög algeng röð flokkun lykkja breytur,
svo þú getur notað þetta ef þú vilt.
Einnig að reyna að koma í veg fyrir þá, ef þessar breytur eru almennt notuð í lykkjur
reyna að forðast að nota þau eins og breytilegum nöfnum til annars í kóðanum þínum
bara vegna þess að algengt venju það er að nota I, J og K í lykkju eða vísitölur.
Jæja, þá er hér við höfum fyrir lykkju sem iterates yfir alla línur.
Þá í hvert skipti sem það er á mismunandi röð
við munum iterate yfir allar mismunandi dálkum.
Þannig getum við í raun fengið að sérhver mögulegar samsetningar
á 0, 1 og 2 með 0, 1 og 2.
Það skynsamleg?
Þannig að við erum fær um að fá aðgang yfir hvert gildi.
Nú gætum við valið að gera dálkum eins og heilbrigður.
Það raunverulega skiptir ekki máli svo lengi sem þú iterate gegnum
öllum dálkum og öllum línum.
>> Nú skulum gera eitthvað með þessum gildum.
Segjum prenta.
Nú skulum prenta heiltölur þeirra
og þá er breyta á þeim stað The-það er að fara til vera a gildi N borð.
Nú sérstakur röð vísitölu væri i því við notuðum það til iterate gegnum raðir okkar,
og svo J að iterate gegnum dálka okkar.
Nú skulum gera 2D.
Nú þegar við hlaupa 2D það prentar út allar gildi
í þeirri röð sem við að framan greinir,
svo þú sérð að það fer í gegnum allar línur fyrst,
þannig að það er í röðinni 0, og þá prenta það allt af þeim gildum í röðinni
og svo áfram.
Það er dæmi um þann hátt sem þú vilt iterate yfir
og framkvæma aðgerðir á gildum innan 2D fylki.
Great, nú, hvað við munum sjá í dreifingu kóða eru margar aðgerðir,
og svo einhverja af þessum aðgerðum verður Boolean aðgerðir
þar sem þeir skila Boolean til þín.
>> Sumir vilja vera heiltölur, til dæmis, og svo fyrst og fremst að
endurskoðun virka svolítið grundvallaratriðum aðgerðir hafa
a skilagildi, nafn, sem þú notar til að hringja í áætluninni,
og þá geta þeir hafa allir tala af breytum.
Meginatriðum þegar þú hringir virka á næstu aðgerð,
grundvallaratriðum eins og þú ert að segja er að ég vil að þú að framkvæma þessa aðgerð,
þú þarft að fara á ákveðnum gildum, þannig að í þessu tilfelli virka okkar foo
þyrfti að taka 2 heiltölur, og innan þess virka þá
það væri hægt að nálgast þær, vísa til þeirra eins og x og y.
Svipað dæmi er minni aðgerðir
sem þú gætir hafa notað í dulritunarstjórneiningunni program,
og svo í raun voru þær aðgerðir sem þegar skrifað fyrir þig,
en eftir gerð aftur þeirra sem þú getur notað þær í aðgerðir.
Segjum að þú ert með Boolean virka kallast foo.
Þá væri hægt að nota það vegna þess að þú veist að það mun tákna Boole.
Meginatriðum þegar þú kallar það, mun það koma aftur til baka í Boolean,
svo er hægt að meðhöndla það eins og þetta mun tákna Boole.
Innan ástandi þínu, getur þú einfaldlega að segja
ef foo, og þá fara í færibreytu sem þarf þess,
5 og 9 til dæmis, 2 heiltölur,
þá veistu að það muni skila annaðhvort satt eða ósatt,
og svo þá er hægt að nota það sem ástand þitt sjálf.
Á sama hátt getur þú líka sagt foo (5, 9) == satt
eða == falskur eða eitthvað svoleiðis,
en það er örlítið ástæðulaus sem virka sjálft
þegar gildi annaðhvort sönn eða ósönn.
Við ætlum að hafa þetta í huga þegar við sjáum nokkur dæmi í dreifingu kóða.
>> Jæja, aftur að Scramble eftir við höfum 2D fylki
og skilja aðgerðir undir belti okkar.
Í Scramble raun þú ert að fara að hafa rist af bréfum,
og þá þú ert að fara að hjálpa framkvæma áætlun
þar sem notandi getur inntak mismunandi bréf sem þeir sjá á rist,
þannig að þýðir líka að þú ert líka að fara að þurfa að draga leikinn borð.
Þá the notandi vilja vera inputting ákveðin orð,
en þú verður að athuga, A, hvort þessi orð eru í gildi í orðabókinni,
eða B, hvort sem þau eru í raun og veru í stjórn, er að finna í stjórn.
Þá í dreifingu kóða við munum fara yfir það í annað.
Þú munt sjá hvað er þegar gert fyrir þig,
og þá innan ákveðins uppbyggingu dreifingu kóða bæta virka.
Það eru ákveðnar aðgerðir sem eftir eru tóm.
Það eru ákveðnar aðgerðir sem þú þarft bara að bæta við.
A viss aðgerð sem þú ert að fara að vinna með er jafntefli,
þannig að þú þarft að framkvæma draga virka,
raun teikna alla stafina á borðinu.
Þú ert að fara að framkvæma útlit virka þar sem þú þarft að athuga
hvort band sem notandinn inputted er gild orð,
og svo þá sem ég nefndi áður, sem felur í sér hvort það er í orðabók eða ekki
og hvort það er í gildi leikur færa.
Síðan sem þú ert að fara að framkvæma Scramble
hvar í leiknum ef notandinn er, til dæmis, í vandræðum með að finna hvaða orð
þá ef þeir slá í "Scramble" í hvetja
þá snýst leikurinn borð í raun 90 °,
halda sömu bréf en bara snúa 90 ° réttsælis.
Og svo að lokum að við erum að fara að takast á við málið og næmi,
raun þegar öll orð í orðabókinni með í dreifingu kóða
eru allar vistaðar sem hástaf, en við viljum leyfa notanda, til dæmis,
Ef þeir slá í blöndu af lágstafir og hástafi
eða bara lágstöfum þá ef það orð er í gildi
þá ætti að vera fær um að fá stig fyrir það eins og heilbrigður.
>> Jæja, svo númerið dreifingu, gæti það verið svolítið erfitt að komast í gegnum í fyrstu.
Þú might ekki vilja til að lesa allt það og bara beint að
skrifa program, en vinsamlegast ekki lesa það einu sinni,
lesa hana tvisvar, lesa það þrisvar, lesið hana aftur og aftur
þannig að þú ert með góða tilfinningu og finn mjög þægilegt
með kóða, jafnvel þótt þú hafir ekki skrifað þessar aðgerðir sjálfur,
að þú veist svona hvað þeir eru að gera og þú getur búist við
á þann hátt að þeir gætu hafa samskipti við aðgerðir sem þú munt framkvæma.
Án frekari fjaðrafok, við skulum raunverulega fá inn í þessa dreifingu kóða,
og ég ætla að hjálpa ykkur að gera skilningarvit af því.
Ég hef þegar sótt dreifingu kóða.
Þú getur gert þetta.
Það er leiðbeiningar í sérstakur þar sem þú þarft að gera eigin möppu fyrir pset 3,
og svo ef þú framkvæma skipun sem er að finna í sérstakur
þá munt þú vera fær um að sækja orð skrá,
sem inniheldur í rauninni orðabók skrá, ef við lítum bara á það fljótt.
Þetta eru fyrst og fremst á alla lista af orðum sem eru að fara að vera orðabók okkar.
>> Jæja, við skulum byrja á toppnum.
Einnig hér þú munt taka eftir því að góður stíll þessa dreifingu kóða
er að njóta okkar þar sem við getum séð ummælin
að útskýra hvernig kóðinn er notaður.
Við höfum þetta, þar á meðal bókasöfn okkar.
Takið eftir því að hér höfum við ma # ,
og svo gerir að bókasafn okkur að halda utan um tíma vegna þess að
í Scramble þú þarft að í raun inn í eins mörg orð og hægt er
innan ákveðins tímaramma.
Hér höfum við nokkur breytur.
Lengd leiksins við höfum sett það til að vera 30 sekúndur.
Við segjum að vídd rist-það er ferningur rist-
er að fara að vera 4 x 4.
Við segjum að það eru orð, sem tala af orðum í orðabók,
að hvar sem geta aðeins að hámarki 29 stafi.
Þá er hér þar skrá sem heitir skráning.
Í meginatriðum erum við að fara að sjálfvirkur sum niðurstöður úr kóðanum þínum,
svo ekki reyna að breyta neitt til að gera við skrá þig inn því að við munum vera að takast á við það.
Þú þarft ekki að alveg að skilja það enn,
en bara ekki reyna að breyta neitt til að gera við skrá þig inn.
Takið eftir að hér í breytilegum rist, sem er 2D array af stöfum,
er lýst utan meginvirkni okkar,
þannig að þetta er það sem við köllum Global breyta.
Þar sem við erum að fást við leik hér,
Ef þú manst alla leið aftur að klóra
þegar við höfðum eitthvað eins og skora, til dæmis,
þegar við vorum að fást við leik, sem átti að vera aðgengileg
a einhver fjöldi af mismunandi forskriftir, svo álíka höfum við þessa breytu
sem þarf að vera aðgengileg til a einhver fjöldi af the virka í kerfi okkar,
svo rist er hér a 2-víddar array sem geyma
bréfin í Scramble leik.
Síðar munum við sjá um notkun síðar,
en þá höfum við einnig 2D array af booleans kallast merki,
og svo í raun þegar við förum í að athuga hvort orð
er í gildi eða ekki þurfum við að vita hvort við höfum verið heimsótt ákveðna blokk,
heimsótt ákveðið bréf, og svo þá merki í grundvallaratriðum er að fara að
innihalda annaðhvort satt eða ósatt í tilteknu vísitölu,
svo það verður að láta okkur vita hvort við höfum verið þar áður,
hvort sem við höfum heimsótt að bréf á ákveðnum stöðva okkar,
og svo merki, eins og þú munt sjá síðar,
mun fyrst og fremst nákvæmlega spegill rist.
>> Hér ákváðum við að við vildum eiga gögn tegund okkar.
Við vorum ekki ánægð með bara band.
Okkur langaði í raun eitthvað sem kallast orð
þannig að við höfum þetta typedef strúktúr hér,
og síðan í það að það er Boolean heitir fundið,
svo hvort þetta orð hefur verið fundið eða ekki.
Þá hefur það fjölda af stöfum,
meginatriðum í raun orð sem það er.
Nú þá, er orðið raunveruleg ný gögn gerð sem við höfum gert,
svo við getum að hafa fjölda af orðum, til dæmis,
eða við getum nýtt orð og hafa mörg dæmi af þeim.
En við höfum bara eina orðabók og svo er það þess vegna sem við höfum aðeins
strúktúr hringja orðabók öfugt við typedef strúktúr.
The struct hefur heiltölu með stærð orðabók
auk fjölda orða, og aftur,
við notum þetta Global breyta orð, sem er skilgreint hér að framan,
að fjölda af orðum sem er í raun í orðabók okkar.
Hér höfum við alla lista af frumgerð, virka frumútgáfur,
raun segja, allt í lagi, nú þú getur búist við að hafa
allar þessar aðgerðir síðar í áætluninni.
Ég ætla að hafa ógilt virka kallast skýr,
Boolean virka heitir skríða sem tekur á
band og síðan 2 heiltölur, et cetera, svo þú sérð þetta hér.
Einnig er ágætur eiginleiki í gedit að meðfram hlið hér
Ef þú vera viss um að þú valdir þessa virka flipann hér,
kóðann flipann, þá er það mun í raun sýna þér allar aðgerðir
að þú hafir í forritinu.
Það mun sýna þér nokkur atriði sem þú getur notað.
Fyrir dæmi, hér er það sem þú hefur skilgreint ný gögn tegund sem heitir orð
og þá ákveðin heimsvísu breytur sem þú hefur.
En þetta virka flipanum er alveg gagnlegt vegna þess að þú getur smellt aftur og fram
og hoppa á tilteknum stöðum í forritinu.
>> Allt í lagi, við erum á meginvirkni núna.
Þegar notandi slær inn í stjórn,
grundvallaratriðum þeir geta annaðhvort sagt. / Scramble,
eða þeir geta einnig slegið í fjölda eftir það í rauninni til kynna
hvaða borð sem þeir vilja til að spila með.
Venjulega þegar þú slærð inn aðeins í einni stjórn lína rifrildi
þá er það bara að fara að gefa þér handahófi borð, heldur segja fyrir kembiforrit tilgangi
þú vilt ganga úr skugga um að þú skoðar bara það sama borð aftur og aftur
þá hvað þú getur gert er bara að segja ./scramble1, til dæmis,
og það verður alltaf að gefa þér sama borð.
Hér það er að tryggja rétta notkun,
þannig að ef notandinn slær inn í meira en 2 stjórn lína rifrildi,
þá mun það leiðbeina þeim um hvernig til almennilega að nota forritið
og hætta síðan.
Hér ef argc er 2, sem þýðir að ef notandinn hefur inputted númer
til sérstakra orð sem þeir vilja nota þá
raun þegar forritið síðar gerir handahófi borð
þá erum við í raun gefa það fræ, góður af eins og þvingun
að nota ákveðin gildi.
Þá hér við hlaða orð skrá okkar.
Í grundvallaratriðum ef það getur ekki opnað orðabók, ef eitthvað fer úrskeiðis,
þá mun það skila 1.
Við frumstilla rist. Við munum líta inn í það virka seinna.
Við setjum skora á 0.
Við reiknum þegar leikurinn mun enda,
þannig að 30 sekúndur, eins og við setja.
Þá hérna, aftur, er annállinn, sem þú þarft ekki að breyta.
>> Hér er kjötið á dagskrá þar sem við höfum á meðan (satt) lykkju,
svo tekið eftir því að ef þú ert bara á meðan (satt) lykkja af sjálfu sér
þá er það bara að halda áfram að framkvæma hvað sem er í líkama hennar,
en eins og þú munt sjá síðar, höfum við í raun brot
þannig að við leyfa raun það-við höfum á einhvern hátt að það að brjóta í raun út
fallsins og ekki keyra að eilífu.
Fyrst það sem gerist er að skjár vilja hreinsa
þannig að þú getur teiknað nýja stjórn, og þá mun það hafa fallið kallast jafntefli.
Aftur, mun það tengja það, svo í raun í hvert skipti sem hún fer í gegnum þessa lykkju
það mun tilkynna stöðuna til þín.
Athugaðu hvort að leikurinn ætti að vera endir,
hvort sem þú ert út á tíma eða ekki, og þá skýrslu hversu mikinn tíma þú hefur til vinstri
ef leikurinn er enn í leik.
Þá hér höfum við hvetja að orði,
og þá höfum við GetString virka,
þannig að þar sem notandinn í raun inntak Word fyrir þig.
Þá aðallega ef þeir hafa í raun inn í orð, ef það er ekki null,
þá the program vilja tengja það.
Síðan sem þú vilt að athuga hvort þú þarft að Scramble rist,
Svo í rauninni ef þeir koma inn í stjórn Scramble, orðið Scramble,
þá er að fara að snúa 90 °.
Þá annars ef það er ekki orðið Scramble
þá er það sem þú vilt gera sem þú vilt að leita að orði.
The (finna (orð) er satt. Við munum fara í að virka seinna.
Og þá munt þú vilt að líta það upp, svo er í grundvallaratriðum það á rist,
og er það í orðabókinni?
Og ef það er raunin, þá er það mun auka stig með fjölda bréfa
að það er orðið.
Það er helsta hlutverk okkar þar.
>> Þetta hér er í raun eins og að flýja kóða,
svo þú þarft ekki að hafa áhyggjur af því alveg svo mikið,
en í raun þegar þú kalla ljóst að það mun hreinsa flugstöðinni
og færa bendilinn til baka og tegund Eyða hvað hún hafði skrifað áður.
Við skulum ekki fara að skríða alveg strax.
Þess í stað munum fletta niður og sjá draga virka hér,
sem er starf TODO þinn.
Í meginatriðum þú þarft að prenta rist í núverandi stöðu,
þannig að við höfum nú þegar séð í raun að Frumstilli rist,
og svo þú þarft ekki að hafa áhyggjur þar sem bréf til að setja á rist
eða eitthvað svoleiðis, en jafntefli virka sem þú ert að fara til að vilja
prenta út hvað er í rist.
Þá erum við með Boolean virka kallast finna,
sem við sáum ofan í meginvirkni.
Ef orðið fannst og einnig var litið upp í orðabók,
ef bæði af þeim aftur satt, þá myndi það auka skora.
Hér er að finna virka þar sem það tekur í orði sem band,
og það þarf að vera 2 eða fleiri stafir,
og þá hvað þetta gerir er að það leit rist fyrir þessi orð.
Hér sjáum við dæmi um iterating yfir hvert frumefni í rist
þar sem þeir iterate á línum og þá innan þess iterate yfir dálkana.
Hér muna markar 2D array sem í grundvallaratriðum geymir annaðhvort sannar eða ósannar
hvort við höfum verið að þessi bréf nú þegar.
Aðallega þetta breytir öll merki vegna þess að við erum bara að takast á við merki
í hvert skipti sem við erum að skoða ákveðna orð.
Þá hér þegar við höfum fært allar merki
það leit í raun fyrir orð, og svo að leita að orðinu
það er þar sem við notum skrið virka, þannig að við skulum fara aftur upp að skríða
og taka a líta á það.
Hvaða skríða gerir er að það tekur í streng sem heitir bréf
sem og í grundvallaratriðum x og y, sem er upphafið vísitölu
um þar sem notandinn hefur sagt orðið er.
Meginatriðum tékka það ef x er <0 eða> vídd
grundvallaratriðum sem þýðir að vísitalan í raun er ekki til í leiknum okkar,
svo þá skilar falskur.
Ef þú hefur þegar heimsótt tiltekna bréf
þá er að fara að skila falskur eins og heilbrigður því regla í Scramble
er að þegar þú hefur
bréf hér, til dæmis,
þú getur tekið þátt í bréf með því að fara upp eða á ská eins og þetta,
Svo í rauninni næsti stafur geta verið í einhverjum af þessum aðliggjandi blokkir,
en það sem þú getur ekki gert, til dæmis, er að fara í þessu bréfi
og fara aftur til A, þannig að þú getur aðeins notað hvert bréf einu sinni.
Þá vit að hér eru merki um að ef við höfum verið þar áður,
Ef merki er stillt á satt, þá er það ekki gilt orð.
>> Þá er það það gerir það eftirlit.
Það segir að ég ætla að athuga hvort að þetta tiltekna stað
bréfinu sem við viljum er það.
Ef það er ekki, skilar það rangt.
Þar sem það er nú þegar athugað að blokk, þá er að fara að setja merkið
á þeim tiltekna tímapunkti sem satt.
Nú stöðva það að í rauninni ef við erum að halda áfram
Það þýðir að við erum að fara að leita að næstu bréfi
í orði sem notandinn er að reyna að senda inn.
Hér muna aftur reglur.
Þú ert að reyna að stöðva allar samliggjandi gildi,
sjálfur ofan, neðan, til vinstri og hægri eins og heilbrigður eins og the Hornalínum,
og svo álíka þegar við héldum af iterating yfir 2D fylki
þar sem við vildum að iterate yfir allar mögulegar og athuga
hvert hægt permutation milli röðinni vísitölur og dálki vísitölur
hér við að athuga allar mögulegar samsetningu,
ef það er til vinstri af the bréf, beint fyrir ofan, eða til hægri.
Hér sjáum við að þessi lykkja ávísanir til vinstri
þegar ég er -1.
Þegar það er á 0 það eftirlit á sama dálki að bréf er á,
og svo ef ég er 1, sem er endanleg verðmæti hennar, þá tékka það til hægri,
og þá er það ekki nóg, ekki satt?
Við þurfum að stöðva alla lóðrétta gildi,
Svo hér erum við með lykkju sem fær athugað hvort það fer undir
á sama stigi eða fyrir ofan, svo þá er samsetning þess
mun opna hvert einasta aðliggjandi blokk í A.
En tékka það einnig blokk hér á A,
Svo viljum við að tryggja að við stöðva ekki þessi einn.
Nú þá, að í raun og veru hvort ofangreind orð eru gild eða ekki
þá viljum við gera sömu aðferð fyrir the hvíla af the orð
útilokar sá sem við höfum nú þegar gert, svo þá er hér undanfari virka.
Hún kallar sig, og við munum komast inn í það svolítið síðar,
en það fer með sömu aðferð fyrir alla síðari strengi.
Við höfum talað um finna fallið.
Við skiljum hvað það er að gera.
Það er í grundvallaratriðum athuga hvort þetta orð sem notandinn gaf
í raun er um borð og hvort sem það er metin færa.
Hér höfum við frumstilla virka.
Takið eftir að ógilt það, svo það er ekki að fara að koma aftur okkur neitt,
en það er bara að fara að vera að gera eitthvað fyrir okkur.
>> Hér burt af Wikipedia það er tíðni
fyrir hvern staf um stafrófið byggt á hversu oft
það er notað í ensku.
Þú sérð að e er, til dæmis, einn af the vinsæll bréf notuð.
Við viljum byggja á rist.
Hvað þessi aðgerð gerir er byggja á rist með bréfum
konar miðað við tíðni þeirra í þessu fylki.
Nú, þetta er að nota þetta tungumál hér
segja stærð á tíðnum,
Það er góður af aðeins sérstökum tilvikum.
Við getum í raun notað stærð tíðni, þannig að þegar þú vilt í raun og veru að
Finnið lengd fjölda sem þú sennilega ert ekki að fara að nota stærð
heldur bara að nota array lengd.
Þú getur beðið TFS til að tala við þig aðeins meira um það,
en bara veit að þetta setningafræði hér er meira sérstakt tilfelli.
Nú, fyrir hvert frumefni í rist
við viljum gera bréf, og það er að fara að vera pseudorandom,
svo handahófi en ekki alveg.
Í meginatriðum er það sem þetta er að við sett nýja tvöfaldur
með handahófi gildi milli 0 og 1.
Byggt á því að við erum að fara að kortleggja það,
svo að segja að D er stillt á 0,6 ma.
Þá ef d er 60% í
þá erum við að fara að líta á alla stafina og finna
miðað við hversu oft þeir eru notaðir
hvað er 60% inn
Þetta er ekki bara 60% af stafrófinu heldur
a tekur þetta mikið pláss, og þá B tekur upp þetta mikið,
og þá E, til dæmis, vilja taka upp þetta mikið.
Byggt á hlutfallslegt lengd eða tíðni
af þessum bréfum sem við erum að fara að kortleggja þessi hending
milli 0 og 1 á tiltekna bréf.
Það er það sem þetta númer er hér,
og svo hér er k eins og breyting á þar ásamt
í bréfi sem við viljum vera, og svo við setja staf í rist
að vera A + k.
>> Takið eftir að aftur að hugsa til gráðugur
við þurftum að nota umferð aðgerð að takast á við fljótandi punkta imprecision hér,
svo álíka að við þurftum að taka tillit til þess að stundum
flýtur eru ekki nákvæmlega það sem við ætlum þeim að vera,
þannig að við viljum að afla fyrir það.
Þá hér við fara í skrá I / O, í grundvallaratriðum að lesa og skrifa í skrár,
sem þú vilja fá inn seinna en ekki alveg enn,
svo í raun þetta opnar orðabók skrá, les það sem er í henni,
og þá setur það inn í fylki.
Takið eftir að við setjum það inn í strúktúr sem við höfum lýst orðabókin strúktúrinn,
og svo hefur orðabók fylki kallast orð í tengslum við það,
svo hvað það er að gera er að segja orðabók, orð á þessu tiltekna vísitölu
eru svo og svo gildi.
Þá erum við næstum búin með dreifingu kóða.
Við höfum að lokum útlit virka þar sem þú hefur athugasemdir
leiðbeina þér um hvað þessi kóði ætti að gera.
Leit mun líta upp orði í orðabók
og svo lengi sem þessi orð hafi ekki fundist þegar
þá fánar það fannst eins og þannig að notandi getur notað það aftur
en einnig skilar satt hugsa bak til the aðalæð virka aftur,
skilar satt, svo segir að þessi orð geta verið skorað.
>> Og loks hefur þú Scramble virka,
sem er annar ógilt virka vegna þess að það er að gera eitthvað
en ekki aftur neitt, svo hvað Scramble aðgerð mun gera
er snúa rist 90 ° réttsælis.
Ég veit að gæti hafa verið svolítið gróft, en það er mikilvægt að gera.
Horfa á mig að fara í gegnum dreifingu kóða,
en eins og vel, reyna að fara í gegnum það sjálfur.
Það sem ég vil gera er að kortleggja það út að skilja
hvað þýðir þetta forrit með allar þessar aðgerðir ekki í raun?
Ef ég væri að fara í gegnum dreifingu kóða aftur
Nú þegar ég hef svona tilfinningu um hvað er að gerast þá myndi ég segja
við byrjum með helstu hlutverk okkar,
og þá held ég að það fyrsta sem hún gerir er að hann kallar álag,
svo helstu símtöl álag, en álag er ógilt virka,
Svo hvað ég geri til að gefa til kynna að sé bara að setja eitt ör
bendir til að hlaða því helsta kallar það.
The næstur hlutur er að frumstilla.
Helstu símtöl frumstilla,
og þá ef við lítum til baka til meginvirkni okkar
Ég held að þetta næstur hlutur sem það gerir,
hérna eru tonn af mismunandi hlutum sem helsta er starf,
en núna er ég bara að einbeita sér að helstu sjálfur
viðeigandi kóða, þannig að ég er ekki þar á meðal að ég eða eitthvað svoleiðis.
Þá er næsta hlutur sem það gerir það hreinsar það,
og þá er að draga,
og svo veit ég að draga er eitthvað sem við erum að fara að gera.
Það er jafntefli virka.
Seinna sjáum við að næsta einn er a hluti-
Svo við höfum Scramble.
Og þá höfum við fundið, svo að finna er annað fall.
Við sjáum að finna er-ef þú manst aftur það er Boole aðgerð,
Svo það er í raun að fara að fara aftur eitthvað til baka til okkar.
Þá hér er ég kynna að með því að við höfum fundið,
og þá erum við líka að hafa útlit.
En svo muna að það er líka þetta skríða virka
sem virðist ekki hafa verið kallað í Main,
svo þýðir að einhver annar aðgerð er starf skrið
og ef þú leitar aftur í gegnum dreifingu kóða
þú sérð að finna hér er einn sem notar skrið
svo þá finna þá líka tenglar að skríða,
sem er Boolean gildi, sem skilar eitthvað,
þannig að ég ætla að bæta annar hlutur, og þá þar sem skrið er endurkvæma
það lykkjur líka aftur á sig.
>> Þá ef þú sérð hér að ég hef dregið upp mynd af því sem áætlun okkar lítur út,
svo að skilja tengsl milli tilteknum aðgerðum,
og fara aftur til að þú sérð líka röð af leiknum
og röksemdafærsla hvernig leikurinn program er að fara að halda áfram.
Við höfum lesið dreifingu kóða.
Fyrsta aðgerð sem þú ert að fara að vilja til að hrinda í framkvæmd,
eða einn af þeim aðgerðir sem þú vilt að framkvæma er að teikna,
og svo hér hafa í raun lítill hluti af frelsi með þetta.
Ef við lítum á starfsfólk lausn-
Ég ætla að opna Terminal glugga, í raun,
pset3/scramble.
Klóra það. Ég held að ég þarf að uppfæra tæki mína.
Ef þú spilar með starfsfólk lausn-Scramble
leiðbeiningar eru í sérstakur til að-
þá getur þú séð hvernig þeir eru búnir að prenta út leikinn borð,
en í raun það sem þeir gera er að þeir setja bil á milli stafanna,
en þú ert smá frelsi með þetta, þannig að ef þú vilt prenta línur, til dæmis,
milli þeirra þá getur þú gert það.
Þú vilja til að hugsa til baka hvernig við iterate yfir alla þætti 2D array
og þú þarft að prenta þá, ganga úr skugga um að þú hafir lykkja þinn
og hafa prenta aðgerðir þínar svo að þú ert að prenta í réttri röð.
Ef þú vilt endurtekning lykkja til-þegar þú iterate yfir það
og þú notar vísitölur að tryggja að þú ert að prenta í réttri röð.
>> Takast á við 2D fylki í fyrstu getur verið svolítið truflandi,
svo hér á þessari mynd sem ég hef gert töflu sem sýnir
fyrir hvert gefið blettur í 2D array hvaða vísitölur eru,
þannig að ef þú vilt vísa til baka þetta fyrir a fljótur stöðva
eða um tilvísun eða eitthvað svoleiðis þá er hægt að nota þetta.
Súlurnar eru í bláum og raðir eru í rauðu.
The útlit aðgerð er tvíþætt.
Athuga-og það er Boole aðgerð, mun segja okkur
satt eða ósatt hvort notandi-lögð orð
geta tekið sem gilt gildi,
og svo er orðið á Scramble aðeins gilt
ef það er að finna í orðabók og ef það er í raun að finna í stjórn,
og svo muna að útlit sem þú þarft að framkvæma þetta sjálfur,
svo þú vilt að athuga bæði hluti,
hvort orðið er í raun í orðabókinni og hvort það hefur fundist nú þegar.
Muna aftur til heimsins breyta orðabók,
sem er strúktúr sem við höfum gert sem í grundvallaratriðum hefur int kallast stærð
í tengslum við það og fylki af orðum,
þar orðið er ný gögn tegund.
Svo til að fá aðgang, til dæmis, the stærð af the orðabók eða orð array,
þá hvað þú getur gert er bara að skrifa 'dictionary.size,'
á sama hátt sem þú vilt bara nota aðra breytu.
Svo ef dictionary.size táknar stærð orðabók,
álíka, dictionary.words táknar array.
Svo ef þú vilja til að fá aðgang að ákveðnum orð innan orðabókina
þá þyrfti að bæta við vísitölu
vegna þess að þú þyrftir að segja 'dictionary.words á vísitölu i'
og þá gera eitthvað byggt á því.
Svo vita að orðabókin hafi ákveðna stærð í tengslum við það,
og fylki af orðum, til að athuga hvort eitthvað er í orðabókinni,
þá þyrfti að interate yfir orðabókina
til að athuga hvort að orð er að finna.
>> Nú, ef þú hugsa til baka til að halda fyrirlestra, þegar við ræddum um mismunandi leiðir til að leita að hlutum,
þá muna að línuleg leita sennilega er ekki alltaf besta leiðin til að fara.
En það er örugglega ein leiðin til að leita að einhverju.
Stundum þú might finna þessi þú framkvæma finna virka með
línuleg leita fyrst og þá fá the hvíla af þinn program fara.
Og svo seinna er hægt að fara til baka og breyta því hvernig að þú leitar í gegnum að orði.
Svo fjallar - í grundvallaratriðum að vita það - að vita hvernig á að fá aðgang að
orð array af orðabókinni, sem fjallar að leita að sjá
hvort sem orðið er reyndar í orðabók eða ekki.
En þá þurfum við líka að takast á um hvort það orð er á borð.
Og hvort sem er fundist nú þegar.
Þannig að við nú þegar höfum finna virka, man.
Það sýnir SU, en það er orð?
Þetta er ekki heimspekileg spurning heldur, heldur líta á tegund skilgreiningar.
Við höfum Boolean heitir "finna" og fylki af stöfum
sem sýnir þessi orð.
Svo þegar þú kemur aftur útlit, munt þú vilt að athuga hvort að orð hefur verið fundið eða ekki.
Nú, að vita að The Boolean fundið - fundið er nafn The Boolean
sem er í tengslum við hvert orð - svo hvernig getur þú nálgast þá breytu,
hugsa til baka hvernig við að nálgast breytur innan orðabók?
Svo hér við höfðum orðabók, og þá erum við að segja punktur stærð, ekki satt?
Á sama hátt, þegar við höfum orð og í þessu tilfelli, að vera varkár því
orðið er bara önnur gögn gerð, rétt eins og int eða streng.
Svo þú getur ekki bara sagt "orð" nema það er nafnið hennar.
Þú ert að fara að hafa breytu með nafni, og svo þegar þú ert að
segja að heitir foo, til dæmis, þá er hægt að segja "foo.found,
og það mun skila þér Boolean gildi hvort þessi orð hafi fundist eða ekki.
>> Svo er næsta hluti af pset er að innleiða Scramble,
þar þegar notandi inntak Scramble - og það er nú þegar verið brugðist við
hér í dreifingu kóða - þú þarft bara að framkvæma
virka Scramble sem hefur nú þegar sagt að snúa borð 90 ​​° réttsælis.
Eins og á the sérstakur, segja leiðbeiningar sem stjórnin snýst 90 ° réttsælis
svo að gildi á töflu [0] [0] þá færist rist [0] [vídd -1.]
Í þessu tilviki, að Scramble, vídd okkar er 4, svo 0-0 myndi þá landakort til 0-3.
Við skulum draga þetta út til að sjá hvað það getur litið út.
Ég ætla ekki að gera 4 x 4 rist heldur 3 x 3 ein.
Við skulum segja að þetta er tomma 2D fylki.
Ég ætla bara að fara að bara - allt í lagi.
Svo segja að við viljum Scramble þetta, viljum við snúa henni 90 ° réttsælis.
Við vitum það, sem útgangspunkt, gildi á 0-0, sem í þessu tilfelli er númer 0,
er að fara að kortleggja til röð 0, þá dálki vídd -1.
Og svo að í þessu tilfelli, stærð er 3.
Svo 0 myndi fara röðinni 0, 2. dálki.
Þannig að við höfum fjölda 0 Þar.
Í meginatriðum er það sem við erum að gera við erum að taka á þessu,
líkamlega snúa það svo þá 2 myndi fara á þetta horn,
8 myndi þá fara að þessu horni, að 6 á þessu.
Og þá hinir það myndi líta út eins og -
Svo það er það rist lítur út þegar þú hefur verið spæna það.
Þegar þú ert að innleiða Scramble virka, hvað þú þarft að gera
er að sjá, ja, hvernig get ég skipta þessum gildum?
Er einhvers konar mynstur eða einhver formúlu til að ákvarða
þar sem einkum vísitalan fer?
Til dæmis gæti ég leita að sjá að 3-4-5 hér er röð.
Hvar annars sé ég 3-4-5?
Jæja ég sé það hér.
Á sama hátt, ég sé 6-7-8 sem röð, en þá er í raun dálk hér.
Það er mynstur sem ég sé núna, en það eru sennilega fáir aðrir sjálfur.
Byggist á því, að hugsa um einhvers konar mynstri, einhvers konar hátt.
Þegar þú hefur bent einn, þá þú ert að fara að vilja til að endurstilla gildin í rist.
Svo rist 0-0 verða 6, rist 0-1 verða 3.
En mundu að you'll - til dæmis, ef þú endurstilla þetta strax,
segja að rist 0-2 verður 0 nú, þá missir það 2 var þar.
Svo að hugsa til baka, það er ekki nóg bara að endurúthluta strax.
Þú munt sennilega vilja til að gera tímabundið afrit af eitthvað
áður en þú setur í raun það á réttum stað.
>> Það síðasta er að innleiða ræða andrógenónæmi.
Ef þú lítur til baka, leita að staðnum í sérstakur þar sem notandi inntak streng.
Ef þú manst aftur, hugsa aftur - ó, eytt ég kortið.
Ef þú heldur aftur til kort af program, það er innan meginvirkni,
svo líta til þar sem þú ert að takast á við notandi-inputted band,
og þá í það, held að þau tæki sem þú lært af þinn
dulritunarstjórneiningunni pset, pset 2, og þá finna leiðir sem þú might vera fær til
leyfa notandi inntak sem blönduðu tilfelli.
Svo þeir gætu hafa blöndu af uppercases og lowercases, en það ætti samt að vera í gildi.
Í orðabók, muna þegar við opnað upp að skrá, var hvert orð geymt sem öllum hástafi.
En við viljum ekki að notandi að þurfa að inntak hástafi allan tímann.
Getur einhver hugsað á þann hátt sem við gætum vera fær um að leyfa notanda,
jafnvel þótt þeir inputted allt lágstafir, til dæmis? Já?
[Nemandi] Þú getur gert það í efri?
Já, nákvæmlega. Þú getur gert það til efri.
Svo þú gætir breyta öllum bréfum í hástafi, og þá
þannig að þú sjá að það er að fara að vera nákvæm eftirlíking
um hvað er að finna í orðabók, ef það er í orðabókinni.
Frábært. Við höfum smá vinstri tíma.
>> Svo nokkur atriði sem þú gætir fundur í pset er þörf á að vita
hvaða breytur eru á ákveðnum tímapunkti.
Þar í sérstakur að við höfum skýra aðgerð sem í grundvallaratriðum
hreinsar hvað þú hefur dregið á borð, þurrka það umritar allt og þá á toppur af þessi,
þú gætir, en þú ert að skrifa pset þína, ekki virkilega að gerast.
Þar sem þú þarft að sjá, allt í lagi, þegar ég inn í Scramble, til dæmis,
þegar ég inn í Scramble, hvað þýðir það að gera og það sem var það áður, bara til tilvísunar.
Svo það sem þú might vilja til að gera er að fara til baka á aðalsíðu virka
og athugasemd út skýr, til dæmis.
Svo þegar þú keyrir forritið í næsta tíma,
program vilja ekki hreinsa það í staðinn og mun bara halda á prentun á toppur af þessi.
Það eru nokkrar aðrar leiðir til að kemba eins og heilbrigður.
Það sem þú gætir gert er að þú getur falið prenta f yfirlýsingar, held ég.
Eitt sem ég sá í psets sem ég farið var að fólk með prenta f yfirlýsingar
að prenta út breytur á ákveðnum stað í tíma til að fylgjast með.
En bara vera viss um að í lok, þegar þú hefur lokið við að skrifa alla prenta f þínar yfirlýsingar
fyrir þér að halda utan um hluti, sem þú athugasemd þá út eftir,
eða eyða þeim þegar þú hefur lokið.
Það er önnur leið sem þú getur gert eitthvað, þú gætir bara skrifað í f prenta yfirlýsingu
einhvers staðar er það sem skiptir máli og sjá, miðað við það flugstöðinni prentar út,
Hvað það breytu var.
>> Önnur leið til að gera það, að við munum fara í fleiri smáatriði á fyrirlestur,
er GDB, sem er kembiforrit tól.
Í meginatriðum, þegar þú keyrir það, verður það að fara inn í forritið og þú getur haft það fyrirfram
eitt skref í einu í stað þess að meta allt.
Svo er hægt að brjóta það upp í litlum skrefum, og þá byggt á leiðinni -
og svo á leiðinni prenta það og sjá hvað gildi eru.
Og að hjálpa þér að reikna út þar sem galla í kóðanum þínum gæti verið.
Það sem við gætum gert núna er að skrifa fljótur aðgerð og þá
sjá hvernig við gætum vera fær til nota gdb til að sjá hvað er að gerast.
Svo skulum hafa int helstu, og þá hvað við höfum sem breytur í?
Við höfum int arg C og band arg v
Ég ætla að spara það í walkthrough sem GDB.z. Allt í lagi.
Ég ætla að hafa aftur 0.
Svo hvernig óður skulum bara hafa einfalt fyrir lykkju, við skulum hafa 12.
Við skulum hafa einnig int heitir gegn, og
við getum byrjað að í 0. Allt í lagi.
Svo á hverjum stað í for lykkju, segja skulum að við viljum auka gegn
eða margfalda það með hvað ég er.
Þetta er mjög stutt aðgerð.
Við skulum gera gdb. Oh! Og þá - Clang er klár.
Segir mér að ég gerði ekki fela cs50.h.
Allt í lagi. Svo nú viljum við að -
Í raun, því miður krakkar. Ég ætla að endurnefna skrána bara vegna þess að það er svolítið ruglingslegt.
>> Allt í lagi. Svo nú það sem við viljum gera er að við viljum byrja gdb.
Ég sagði 'gdb kembiforrit, svo í raun það er að fara að vera að einbeita sér á þessum kembiforrit,
á kembiforrit skrá.
Ég ætla að setja breakpoint.
Í meginatriðum, the program er að fara að keyra þangað til hann lendir á tilteknum breakpoint.
Ég ætla að segja brot á helstu virkni.
Svo núna er ég að fara að keyra kembiforrit, svo inni gdb ég get keyrt kóðann.
Það er að keyra forrit, og jafnvel þó að helstu var einn af the fyrstur hlutur sem við skrifaði
Við höfum einnig eru skrár, það er efni í gangi nú þegar.
Það hefur breakpoint á helstu.
Segjum "næst," svo að við getum haldið áfram á.
Það segir "int counter = 0."
Ég ætla að segja prenta gegn. "
Þetta er undarlegt. Svo í raun gerum við ráð gegn að vera 0,
en GDB er eitt skref til baka, þannig að þegar þú segir næst,
segir INT counter = 0. Það er næsta hlutur sem það er að fara að framkvæma.
Síðan sem þú smellir - þú getur sagt næst aftur, eða þú getur bara að segja 'n,'
og nú ef þú prentað gegn, gegn er 0, eins og við gerum ráð fyrir.
Grundvallaratriðum skapar það eigin sinnar tegundar á breytum fyrir það, en hvað er það -
eins og hér, það er það gegn táknar.
Þannig að ég ætla að smella á Next, og ég vil vita hvað ég er.
Þú munt prenta ég er i 0, eins og við gerum ráð fyrir.
Næsta aftur, það gefur til kynna að það er að fara í gegnum til hliðar aftur,
þannig að ef ég prenta ég, til dæmis, get ég séð að við erum á - sem ég er 1 nú.
Svo er það hátt, að ef þú stillir breakpoint á ákveðnu hlutverki
og þá halda áfram að fara næst, og þá stöðva það sem ég er,
Ef þú ert að giska á að kannski einhvers staðar eitthvað gerist ekki eins og það ætti,
og þig grunar að kannski er það í fyrsta vísitölu eða síðasta vísitölu eða eitthvað,
þú getur notað gdb, halda á prentun i, til að vera fær um að athuga hvað þessi gildi eru.
Svo, í GDB, því prenta og næsta eru svo algeng rök,
algengar skipanir, alveg eins og ég stytta við hliðina á n,
Ég get líka bara sagt p gegn, það er enn 0.
Og ég smellt á Next. Mig langar að prenta gegn aftur.
Jæja, svo það er enn 0.
>> Og þú ert svona að velta fyrir mér - ja, ég vil gegn að vera þáttatilraun virka.
Hvers vegna - bara aðferðir kembiforrit - hvers vegna gæti það verið?
Hvers vegna er gegn ekki að hækka verðmæti þess?
Hvers vegna er það að dvelja á 0?
Jæja, hér er ég - aftur hérna ég segi gegn = teljari x i.
Svo ef ég fer aftur til the byrjun af hlutverki mínu,
Ég sé að þegar ég prenta i, i er 0, og það er 0 x eitthvað?
Það er 0, ekki satt? Svo það er líklega ástæðan fyrir því að gegn
er aldrei að fara að vera einhver önnur tala.
Svo það sem ég gæti langað til að gera er að fara aftur til fuction minn,
segja, allt í lagi, og í raun, ég vil byrja það á 1.
Er að fara að leysa það?
Ekki alveg, því teljarinn enn 0 Hér.
Svo skulum setja það í 1.
Við viljum að endurstilla kembiforrit tól okkar, þannig að við skulum hætta.
Og svo það sem við getum gert er að við getum GDB kembiforrit aftur,
setja pásu á helstu, og þá hlaupa kembiforrit aftur, næst, næst, næst.
Skulum högg næst nokkrum sinnum, og þá munum við prenta gegn, sjá að -
við gerðum ekki rétt að gera skrána aftur.
Jafnvel þó að við breytt kóðann, þá erum við í raun og veru
ekki uppfæra executable okkar.
Ég held að þú getur gert - já.
Innan gdb sig, getur þú í raun að gera skrána.
Svo þú þarft ekki að hætta gdb aftur.
Þú getur farið aftur til the uppspretta skrá, vista það, aftur í GDB, getur þú gert það aftur.
Frábært. Svo skulum hlaupa kembiforrit.
Við viljum byrja það frá upphafi vegna þess að við höfum nýja executable.
Við getum farið í gegnum nokkrum sinnum, og svo prenta ég, prenta gegn, að halda áfram.
Allt í lagi. Svo nú sjáum við að gegn er í raun auka gildi þess sem við viljum það til.
>> Það er bara litla bit-stór dæmi um hvernig þú getur notað gdb
til að slá inn númerið þitt, prenta ákveðnar gildi, smelltu á Næsta til að halda áfram í næstu línu,
og skammstafa það og prenta það út.
Vitanlega, númerið í Scramble er aðeins flóknara en það, en það sem þú getur gert
er sett breakpoint á - þú getur stillt breakpoint á útlit störfum þínum, eitthvað svoleiðis.
Svo þegar það nær þeim stað þar sem það þarf að líta eitthvað upp,
þá GDB mun keyra allt upp að þessu og þá getur þú byrjað prentun gildi út.
Eins og er merki á þessum tímapunkti rangar eða er það satt?
Það er líklega eitthvað sem þú might vilja til nota.
GDB, gera streitu ekki of mikið um það,
þar sem við munum fara í fleiri smáatriði í fyrirlestri,
en ég vildi bara láta ykkur vita hvernig þú might vera fær til nota það
Ef þú ert að byrja með pset og vilja til að skilja
betri leið en bara að setja prenta f yfirlýsingar og littering þá alla í gegnum kóðann þinn.
Having gdb til raunverulega prenta það fyrir þig og að vera fær um að setja þær Rofstaðir
svo að forrit geta keyrt fram ákveðnum stað
og þá leyfa þér að raunverulega stíga inn í það og reikna út vandamálið þar.
>> Hægri. Svo ef við lítum til baka til Scramble, höfum við lesið dreifingu kóða.
Við höfum talað um leið til iterate yfir 2D fylki, og þú munt örugglega
vera ófullnægjandi til iterate yfir í 2D array þegar þú kemur til að teikna leikinn rist þinn.
Við ræddum um útlit virka, um hvernig við viljum ganga úr skugga um nokkra hluti.
Við viljum vera viss um að við höfum ekki verið að orði áður.
Við viljum líka að ganga úr skugga um að það er í raun að finna í orðabókinni.
Þá erum við að tala um Scramble, um hvernig við viljum að snúa borð.
Og vita að þú might vilja til að gera afrit af eitthvað
að vera fær um að færa það.
Að lokum ræddum við um málið og næmi, um hvernig þú vilt ganga úr skugga um
að þrátt fyrir allt sem samsetning ef að notandi inntak,
ef það er gilt orð í orðabókinni,
þá það er að fara að finna rétt.
Svo allt sem saman er Scramble pset, og það er walkthrough 3.
Takk allir fyrir að koma, og gangi þér vel með Scramble.
CS50.TV