[Powered by Google Translate] [Walkthrough] [Tatizo Set 3]
[Zamyla Chan] [Chuo Kikuu cha Harvard]
[Hii ni CS50.] [CS50.TV]
Haki wote, welcome kila mtu walkthrough 3.
Pset 3 ni moja kweli fun.
Ni mwezi mmoja kwa CS50 kuitwa kinyang'anyiro,
hivyo kama wewe ve milele kucheza kinyang'anyiro au sawa bodi Boggle mchezo
kimsingi ni mchezo ambapo una gridi ya barua,
na katika wakati kura unahitaji kupata kama wengi
2-barua au maneno tena ambazo zipo kwenye bodi,
na hivyo kuna sheria fulani kama vile unaweza kutumia tu barua moja
katika gridi ya taifa, moja block katika gridi ya taifa mara moja, na huwezi kwenda nyuma yake.
Unaweza tu kujenga barua kwa kuunganisha pamoja barua karibu,
hivyo hii ni kwenda kuwa pset kweli fun, hivyo hebu angalia toolbox yetu.
>> Tena, appliance bado ni kuwa updated, ili kuhakikisha
kila wakati wewe kuingia appliance na haki kufungua terminal yako dirisha
na katika vituo kufanya Sudo amri yum-y update.
Hii ni muhimu pia kama unataka kuwa na uwezo wa
kukimbia ufumbuzi wafanyakazi, ambayo sisi dhahiri kupendekeza.
Wakati mwingine ni vizuri mara tu ya kumaliza ya code yako
mtihani ni dhidi ya ufumbuzi wafanyakazi, kuhakikisha kuwa kila kitu
wewe kuingia katika ufumbuzi wafanyakazi, chochote kinachotoka huko,
kitu kimoja kinachotokea kwa kificho yako.
Haki wote, ili kuhakikisha ya update appliance yako.
Sasa, pia, tangu sisi ni kushughulika na gridi ya taifa katika kesi hii
sisi ni kweli kwenda kuwa delving katika arrays 2-dimensional.
Tumekuwa kushughulikiwa na arrays 1-dimensional,
lakini sasa tunakwenda kupanua yao ili waweze kuwa na
nyingi safu kama vile nguzo nyingi.
Kisha tunakwenda dhahiri kuwa kutumia utendaji katika pset hii,
kimsingi wito kazi, kutuma vigezo baadhi ya nje
na kisha kupata thamani ya kurudi nyuma.
Na katika kinyang'anyiro sisi siyo kuuliza wewe kweli kufanya jambo zima kutoka mwanzo,
lakini badala yake, sisi ni kweli kutoa kitu kinachoitwa usambazaji kificho,
hivyo code kazi ambayo tumekuwa tayari imeandikwa kwamba aina ya inaweka
mifupa ya pset kama vile kutekeleza baadhi ya mambo magumu
kwamba wewe utakuwa dhahiri kuwa na uwezo wa kusoma na kuelewa juu ya
lakini hawana haja ya kufanya hivyo bado kabisa.
>> Kwa haraka juu ya rehash arrays 1-dimensional.
Arrays ni data miundo kwamba kushikilia maadili mbalimbali ya aina moja,
na kama ukumbusho, hizi arrays ni sifuri-indexed,
hivyo zaidi ya wewe pengine ni ukoo na safu kama huu.
Kama sisi alitaka safu int na urefu 3,
basi tunaweza initialize ni kwa kuwa na maadili int
na kisha mabano mraba kuonyesha urefu wake,
na kisha tunataka hawawajui maadili kwa vipengele maalum ndani ya safu hiyo.
Hapa tuna safu int na index kwanza katika index 0, 2,
index 1 ni 4, index 2 ni 6.
Sema tulitaka safu kubwa na kushikilia maadili mbalimbali.
Kisha sisi inaweza kuwa na safu 2D.
Sasa, hii ni sawa na safu yetu 1-dimensional.
Ni 0 indexed, hivyo hiyo ina maana kwamba safu ya kwanza
ni indexed ifikapo 0.
moja ijayo ni saa 1, kisha mmoja ijayo ni saa 2,
na kisha vile vile tuna safu, na hivyo unaweza kuona kwamba wakati sisi
kutangaza safu yetu sisi pia-kama tu kabla-sisi unahitajika ukubwa wa safu.
Sisi pia vile vile zinaonyesha kawaida ambapo bracket kwanza
inaonyesha jinsi wengi safu una, na ya pili inaonyesha
wangapi nguzo.
>> Haki zote, katika pset hii utasikia wanataka kuwa na uwezo wa
iterate juu ya safu 2D, kuweza kupata kila kipengele
katika safu hii 2D, hivyo kimsingi unataka kufikia
wote michanganyiko ya uwezekano wa safu na maadili ya safu.
Tunataka kufikia mstari 0 katika safu ya 1, 2, na 3.
Tunataka kufikia safu ya 1 katika safu 0, 1 na 2.
Tuna kuwa na aina fulani ya muundo kwamba inaruhusu sisi
iterate juu ya yote ya mistari na wote wa mchanganyiko
ya nguzo ndani ya kwamba.
Hapa nina 2D int safu.
Ina mistari 3 na nguzo 3,
na hivyo hii ni njia ya haraka ya
kupata zima 2D safu.
Mimi kusema safu ya kwanza ni kwenda na 2, 4, na 6,
aina ya sawa na mfano wa awali katika slide hii.
Kisha mimi naenda kuwa mstari 2 kuwa 3, 6, 9,
na kisha mstari 3 ni 4, 8, 12.
Tuna safu yetu 2D,
na tunajua kwamba inaonekana kama hii.
Tuna 2, 4, 6,
3, 6, 9,
4, 8, 12.
Sasa kama sisi kuongeza katika fahirisi,
hii itakuwa mstari 0.
Hii itakuwa mstari 1.
Hii itakuwa mstari 2.
Vile vile tuna safu 0,
safu 1, na safu 2.
Ndiyo.
[Kiume] gani tatu ni safu, na ambayo moja ni mstari?
nguzo ni haya ndio,
hivyo nguzo yako ni haya ndio.
Hii ni safu 0, na hii ni safu ya 1.
Hii ni safu ya 2.
[Kiume] ngapi katika tamko la int kwa meza [3] [3]?
Wakati wewe ni kutangaza safu 2D kisha namba ya kwanza katika mabano mraba
ni kwenda kuwa jinsi wengi safu una,
na kisha moja ya pili ni kwenda kuwa jinsi wengi nguzo.
>> Kubwa, hivyo tunataka baadhi ya aina ya muundo,
baadhi ya aina ya kitanzi ambacho kinaenda kutupa kila mchanganyiko iwezekanavyo.
Sema sisi kuanza kwa kusema-sawa, kupata kitu chochote katika mstari huu-
hebu tu kuangalia safu hii kwa sasa.
Hizi ni safu hapa.
Tunajua kwamba safu yetu index ni kwenda kuwa 0,
lakini kwa kupata hii kipengele ni katika mstari 0 na safu 0,
hivyo basi tunataka kupata hiyo na index ya [0] [0].
Kisha mmoja hii, vile vile, bado ni juu ya safu ya kwanza,
lakini ni juu ya safu ya pili, hivyo sisi kupata kwamba kwa [0] [1].
Kisha mmoja wa mwisho itakuwa [0] [2].
Kila mara tuko katika mstari maalum tunakwenda wanataka
iterate juu ya yote ya maadili iwezekanavyo safu.
Hebu kuanza na kwa kitanzi
kwamba kuanza saa 0, na huenda na urefu wa ngapi safu tuna.
Hii ni njia ya baiskeli kila mstari.
Kisha nini tunataka kufanya ni ndani ya kwamba,
wakati sisi ni saa safu maalum tunataka mzunguko kwa njia zote za nguzo inapatikana,
hivyo basi tutaweza kuwa na mwingine kitanzi.
Hebu simu yake j.
Mimi, j na k ni ya kawaida sana mstari Indexing kitanzi vigezo,
hivyo unaweza kutumia hizi kama wewe kama.
Pia jaribu kuepuka basi-kama vigezo hizi ni kawaida kutumika katika matanzi
kujaribu kuzuia kutumia yao kama majina kama variable kwa mambo mengine katika code yako
sababu tu ya mkataba ni kawaida kutumia i, j, k na ndani ya kitanzi au fahirisi.
Okay, basi hapa tuna kwa kitanzi kwamba iterates juu ya yote ya safu.
Ndipo kila wakati kwamba ni katika mstari tofauti
tutaweza iterate juu ya yote ya nguzo tofauti.
Njia hii tunaweza kweli kupata mchanganyiko kila iwezekanavyo
ya 0, 1, 2 na kwa 0, 1, na 2.
Hiyo mantiki?
Kwa njia hii sisi ni uwezo wa kupata zaidi ya kila thamani.
Sasa, sisi inaweza kuwa amechaguliwa kufanya nguzo ya kwanza pia.
Ni kweli si jambo muda mrefu kama wewe iterate kupitia
wote wa nguzo na wote wa safu.
>> Sasa hebu kufanya kitu kwa maadili haya.
Hebu sema magazeti.
Sasa hebu magazeti integers yao
na kisha variable katika eneo ambalo ni-itakavyo kuwa thamani n meza.
Sasa maalum mstari index itakuwa i kwa sababu sisi kutumika kwamba kwa iterate kupitia safu yetu,
na kisha j kwa iterate kupitia nguzo yetu.
Sasa wacha kufanya 2D.
Sasa wakati sisi kukimbia 2D ni Prints nje wote wa maadili
ili kwamba sisi maalum hapo juu,
hivyo unaweza kuona kwamba huenda kwa njia ya safu yote ya kwanza,
hivyo ni katika mstari 0, na kisha Prints wote wa maadili ndani ya safu ya kwamba
na kisha inaendelea.
Hiyo ni mfano wa njia ya kuwa bila iterate juu ya
na kufanya vitendo juu ya maadili ndani ya safu 2D.
Mkuu, sasa, nini tutaweza kuona katika kanuni ya usambazaji ni wengi, kazi
na hivyo baadhi ya kazi hizi itakuwa bulin kazi
ambapo wao kurudi bulin na wewe.
>> Baadhi itakuwa integers, kwa mfano, na hivyo kimsingi kwa
mapitio utendaji kidogo kimsingi kazi na
thamani ya kurudi, jina, na ambayo unaweza kutumia simu ya mpango,
na kisha wao wanaweza kuwa na idadi yoyote ya vigezo.
Kimsingi wakati wewe piga kazi ndani ya kazi ya pili,
kimsingi kama wewe ni kusema sasa mimi nataka wewe nitafanya kazi hii,
una kupita katika maadili fulani, hivyo katika kesi hii kazi yetu foo
ingekuwa kuchukua integers 2, na ndani ya kazi ambayo kisha
itakuwa na uwezo wa kuzipata, rejea yao kama x na y.
mfano sawa ni chini majukumu
kwamba unaweza kuwa kutumika katika mpango wako crypto,
na hivyo kimsingi kazi hizo walikuwa tayari imeandikwa kwa ajili yenu,
lakini kwa kutegemea kurudi aina yao unaweza kuzitumia ndani ya kazi.
Sema wewe kuwa na kazi ya bulin kuitwa foo.
Basi unaweza kutumia kwa sababu unajua kwamba itakuwa kuwakilisha bulin.
Kimsingi wakati simu yake, itakuwa kurejea nyuma bulin,
hivyo unaweza kutibu kwamba kama hii kuwakilisha bulin.
Ndani ya hali yako unaweza tu kusema
ikiwa foo, na kisha kupita katika vigezo wake required,
5 na 9 kwa mfano, integers 2,
basi, unajua kwamba atarudi ama kweli au uongo,
na hivyo basi unaweza kutumia kama hali yako yenyewe.
Vile vile pia unaweza kusema foo (5, 9) == kweli
au == uongo au kitu kama hicho,
lakini kwamba ni kidogo unnecessary kama kazi yenyewe
tayari inathamini ama kweli au uongo.
Sisi ni kwenda kuweka hii katika akili wakati tunaona baadhi ya mifano katika code usambazaji.
>> Okay, kwa nyuma baada ya kinyang'anyiro tuna arrays 2D
na kuelewa kazi chini ya mikanda yetu.
Katika kinyang'anyiro kimsingi wewe utaenda kuwa na gridi ya barua,
na kisha utaenda kusaidia kutekeleza mpango
ambapo mtumiaji unaweza pembejeo barua tofauti kwamba wao kuona kwenye gridi ya taifa,
ili pia ina maana kwamba wewe ni pia kwenda na kuteka bodi mchezo.
Kisha user itakuwa inputting maneno fulani,
lakini wewe na kuangalia, iwapo maneno hayo ni halali katika kamusi,
au B, kama kweli zipo katika bodi, inaweza kupatikana katika bodi.
Kisha katika code usambazaji tutaweza kwenda juu ya kwamba katika pili.
Utaona nini tayari kwa ajili yenu,
na kisha ndani ya muundo aliyopewa ya maadili ya usambazaji kuongeza utendaji.
Kuna baadhi ya kazi ambazo ni kushoto tupu.
Kuna baadhi ya kazi ambayo wewe tu na kuongeza.
kazi fulani kwamba wewe ni kwenda kufanya kazi na ni sare,
hivyo kuwa na kutekeleza kazi ya sare,
kweli kuchora wote wa barua ubaoni.
Wewe utaenda kuwa na kutekeleza kazi lookup ambapo wewe na kuangalia
kama kamba kwamba mtumiaji inputted ni neno halali,
na hivyo basi kama nilivyoeleza hapo awali, kwamba ni pamoja na kama hiyo ni katika kamusi au si
kama vile kama ni halali mchezo hoja.
Kisha utaenda kutekeleza kinyang'anyiro
ambapo katika mchezo kama mtumiaji ni, kwa mfano, kuwa na shida ya kupata yoyote neno
basi wakiwa aina katika "kinyang'anyiro" ndani ya haraka
kisha bodi mchezo kweli rotates 90 °,
kutunza barua hiyo lakini tu kupokezana ° 90 clockwise.
Na kisha hatimaye tunakwenda kushughulikia kesi na unyeti,
kimsingi wakati wote wa maneno katika kamusi ni pamoja na katika code usambazaji
wote ni kuhifadhiwa kama uppercase, lakini tunataka kuruhusu mtumiaji, kwa mfano,
kama wao kuingia katika mchanganyiko wa herufi ndogo na uppercase
Herufi za chini au tu barua basi kama neno kwamba ni halali
basi wanapaswa kuwa na uwezo wa kupata pointi kwa kuwa vilevile.
>> Sawa, hivyo code usambazaji, inaweza kuwa kidogo mgumu wa kupata njia wakati wa kwanza.
Unaweza kutaka kusoma yote na kupata tu moja kwa moja kwa
kuandika mpango wako, lakini tafadhali kusoma mara moja,
kusoma mara mbili, kusoma mara tatu, kusoma tena na tena
ili kuwa na hisia nzuri na unaweza kuhisi kweli starehe
kwa kificho, hata kama wewe hatukuandika kazi hizi mwenyewe,
kwamba aina ya kujua nini wao ni kufanya na unaweza kutarajia
njia ili wapate kuingiliana na majukumu ya kuwa wewe kutekeleza.
Bila wasiwasi zaidi, hebu kweli kupata katika kanuni hii ya usambazaji,
na mimi itakusaidia guys kufanya maana yake.
Nimekuwa tayari kupakuliwa code usambazaji.
Unaweza kufanya hivyo.
Kuna maelekezo katika spec ambapo una kufanya saraka yako mwenyewe kwa pset 3,
na kisha kama nitafanya amri hiyo hupatikana katika spec
basi utakuwa na uwezo wa shusha faili maneno,
ambayo ina kimsingi faili kamusi, kama sisi tu kuangalia kwamba haraka.
Hii kimsingi ina orodha yote ya maneno ambayo itakuwa ni ya kamusi yetu.
>> Okay, hebu kuanza kwa juu.
Pia hapa utasikia taarifa kwamba mtindo mzuri wa kanuni hii ya usambazaji
ni kwa faida yetu kwa sababu tunaweza kuona comments
kwamba kueleza jinsi code ni kuwa kutumika.
Sisi tuna hii, ikiwa ni pamoja na maktaba yetu.
Ona kwamba hapa sisi ni pamoja # ,
na hivyo maktaba ambayo inaruhusu sisi kuweka wimbo wa muda kwa sababu
katika kinyang'anyiro una kimsingi kuingia katika maneno kama wengi iwezekanavyo
ndani ya frame kupewa muda.
Hapa tuna baadhi ya vigezo.
muda wa mchezo tumekuwa kuweka kwa kuwa sekunde 30.
Sisi tunasema kwamba mwelekeo wa gridi-ni mraba gridi-
ni kwenda kuwa 4 x 4.
Sisi tunasema kwamba kuna maneno, idadi ya maneno katika kamusi,
kwamba mahali popote unaweza tu kuwa na upeo wa barua 29.
Basi hapa kuna faili inayoitwa logi.
Kimsingi sisi mtaenda automating baadhi ya matokeo kutoka code yako,
hivyo si kujaribu kubadilisha kitu cha kufanya na logi sababu tutaweza kuwa kukabiliana na kwamba.
Huna kwa kuelewa kabisa kwamba bado,
lakini tu jaribu kubadilisha kitu cha kufanya na gogo.
Ona kwamba hapa hii gridi variable, ambayo ni safu 2D ya wahusika,
ni alitangaza nje ya kazi yetu kuu,
hivyo hii ni kile tunachokiita variable kimataifa.
Kwa sababu sisi ni kushughulika na mchezo hapa,
kama unakumbuka njia yote nyuma scratch
wakati sisi alikuwa na kitu kama alama, kwa mfano,
tulipokuwa kushughulika na mchezo, kwamba alikuwa na kuwa kupatikana kwa
mengi ya scripts mbalimbali, hivyo vile vile, tuna hii variable
kwamba mahitaji ya kuwa kupatikana kwa mengi ya utendaji katika mpango wetu,
hivyo gridi hapa ni safu 2-dimensional kwamba mapenzi kuhifadhi
barua katika mchezo kinyang'anyiro.
Baadaye tutaweza kuona matumizi ya hii baadaye,
lakini basi sisi pia safu ya 2D booleans kuitwa alama,
na hivyo kimsingi wakati sisi kwenda katika kuangalia kama neno
ni halali au si tunahitaji kujua kama tumekuwa alitembelea block fulani,
alitembelea barua fulani, na hivyo basi alama kimsingi ni kwenda
vyenye ama kweli au uongo katika index aliyopewa,
hivyo itakuwa hebu kujua kama sisi tumekuwa huko mbele,
kama tumekuwa alitembelea kwamba barua wakati hundi yetu fulani,
na hivyo alama, kama utaona baadaye,
kimsingi hasa kioo gridi ya taifa.
>> Hapa sisi aliamua kwamba tulitaka wetu data wenyewe aina.
Sisi hatukuwa na furaha na kamba tu.
Sisi kwa kweli alitaka kitu kinachoitwa neno,
hivyo tuna hii struct typedef hapa,
na kisha ndani yake ina bulin kuitwa kupatikana,
hivyo kama neno hili imekuwa kupatikana au la.
Basi ina safu ya wahusika,
kimsingi neno halisi kwamba ni.
Sasa basi, neno ni halisi data mpya aina ya kwamba tumekuwa kufanywa,
ili tuweze kuwa na safu ya maneno, kwa mfano,
au tunaweza kufanya neno mpya na kuwa na matukio mbalimbali ya kwao.
Lakini sisi tu moja kamusi, na hivyo ndiyo sababu sisi tu
struct kuwaita kamusi kinyume na struct typedef.
struct ina integer na ukubwa wa kamusi
kama vile array ya maneno, na tena,
sisi kutumia maneno kimataifa variable, ambayo ni yaliyoelezwa hapo juu,
kuwa idadi ya maneno kwamba ni kweli katika kamusi yetu.
Hapa tuna orodha nzima ya prototypes, kazi prototypes,
kimsingi akisema, sawa, sasa unaweza kutarajia kuwa na
yote ya kazi hizi baadaye katika mpango.
Mimi naenda kuwa kazi utupu kuitwa wazi,
kazi bulin kuitwa kutambaa kwamba inachukua katika
kamba na kisha integers 2, nakadhalika, hivyo unaweza kuona haya hapa.
Pia kipengele nice katika gedit ni kwamba pamoja upande hapa
kama wewe kuhakikisha kuwa wewe kuchaguliwa hii tab kazi hapa,
chanzo code tab, basi itakuwa kweli kuonyesha ninyi wote wa kazi
kwa kuwa katika programu yako.
Ni nitakuonyeshea mambo kadhaa ambayo unaweza kutumia.
Kwa mfano, hapa ina kwamba ve defined data aina mpya inayoitwa neno
na kisha baadhi ya kimataifa vigezo kwamba wewe.
Lakini hii ni kazi tab muhimu kabisa kwa sababu unaweza bonyeza na kurudi
na kuruka kwa maeneo maalum katika programu yako.
>> Haki zote, tuko katika hafla kuu sasa.
Wakati mtumiaji inaingia katika amri,
kimsingi wanaweza ama kusema. / kinyang'anyiro,
au wanaweza pia kuingia katika idadi baada ya kuwa na kimsingi zinaonyesha
ambayo bodi wanataka kucheza na.
Kawaida wakati wowote wewe tu kuingia katika hoja moja ya mstari amri
basi tu kwenda kukupa bodi random, lakini kusema kwa madhumuni debugging
wewe unataka kuhakikisha kwamba wewe tu angalia ubao huo tena na tena
basi nini unaweza kufanya ni kusema tu ./scramble1, kwa mfano,
na itakuwa daima kukupa bodi hiyo.
Hapa ni kuhakikisha matumizi sahihi,
hivyo kama mtumiaji inaingia katika zaidi ya 2 hoja mstari amri,
basi itakuwa kuwafundisha juu ya jinsi ya kutumia vizuri mpango
na kisha exit.
Hapa ikiwa argc ni 2, kwamba maana kama mtumiaji ina idadi inputted
ya neno maalum kwamba wanataka kutumia basi
kimsingi wakati mpango baadaye hufanya bodi random
kisha sisi kimsingi ni kutoa ni mbegu, aina ya kama kulazimisha
kutumia thamani fulani.
Ndipo hapa sisi mzigo maneno yetu faili.
Kimsingi kama hawezi kufungua kamusi, kama kitu fulani kitaenda vibaya,
basi atarudi 1.
Sisi initialize gridi ya taifa. Tutaweza kuangalia ndani ya kazi ambayo baadaye.
Sisi kuweka alama kwa 0.
Sisi hesabu wakati mchezo itakuwa mwisho,
hivyo ndiyo sekunde 30, kama sisi kuweka.
Ndipo hapa, tena, ni faili logi, ambayo huna haja ya kubadilisha.
>> Hapa ni nyama ya mpango ambapo tuna wakati (wa kweli) kitanzi,
hivyo taarifa kwamba kama wewe tu wakati (wa kweli) kitanzi na yenyewe
basi itakuwa tu kuendelea kutekeleza chochote ni katika mwili wake,
lakini kama utaona baadaye, sisi kweli kuwa mapumziko
hivyo sisi kweli kuruhusu-tuna baadhi ya njia ya ni kweli kuvunja nje
ya kazi na si utekelezaji milele.
Kwanza kile kinachotokea ni screen itakuwa wazi
ili uweze kuteka bodi mpya, na kisha itakuwa na kazi ya kuitwa kuteka.
Tena, itakuwa ni kuingia, hivyo kimsingi kila wakati kwamba huenda kwa njia ya kitanzi hii
itakuwa kuripoti score na wewe.
Angalia kama mchezo lazima mwisho,
kama wewe ni nje ya muda au la, na kisha kuripoti muda kiasi gani wameondoka
ikiwa ni mchezo bado katika kucheza.
Basi hapa tuna haraka kwa ajili ya neno,
na kisha sisi kuwa na kazi GetString,
hivyo ndiyo ambapo mtumiaji kweli pembejeo neno kwa ajili yenu.
Kisha kimsingi kama wameweza kweli aliingia neno, kama si null,
kisha mpango logi yake.
Kisha unataka kuangalia kama unahitaji kinyang'anyiro gridi ya taifa,
hivyo kimsingi kama wao kuingia katika kinyang'anyiro amri, kinyang'anyiro neno,
basi ni kwenda mzunguko 90 °.
Kisha vinginevyo kama si kinyang'anyiro neno
basi nini unataka kufanya ni wewe utakuwa unataka kuangalia kwa neno.
(Kupata (neno) ni kweli tutaweza kwenda katika kazi hiyo baadaye..
Na kisha utasikia wanataka kuangalia ni juu, hivyo kimsingi ni juu ya gridi ya taifa,
na ni katika kamusi?
Na kama ni kesi, basi itakuwa kuongeza alama zako kwa idadi ya herufi
kwamba neno kwamba ni.
Hiyo ni kazi yetu kuu huko.
>> Hii hapa ni kimsingi kama code kutoroka,
hivyo huna haja ya kuwa na wasiwasi juu ya kwamba kabisa sana,
lakini kimsingi kila wewe piga wazi itakuwa wazi terminal
na kuhamia nyuma mshale na aina ya kufuta chochote ameandika kabla.
Hebu si kwenda kutambaa kabisa bado tu.
Badala yake tutaweza kitabu chini na kuona kazi sare ya hapa,
ambayo ni kazi yako TODO.
Kimsingi una magazeti gridi katika hali yake ya sasa,
hivyo tumekuwa tayari kuchukuliwa huduma ya kweli initializing gridi ya taifa,
na hivyo hawana haja ya kuwa na wasiwasi kuhusu barua ambayo kuweka katika gridi ya taifa
au kitu kama hicho, lakini katika kazi sare ya wewe ni kwenda kutaka
magazeti nje viliomo katika gridi ya taifa.
Basi hapa tuna kazi ya bulin kuitwa kupata,
ambayo tuliona juu katika kazi kuu.
Kama neno alikutwa na pia alikuwa inaonekana up katika kamusi,
kama wote wawili wa alirudi kweli, basi ingekuwa kuongeza score.
Hapa ni kazi kupata ambapo inachukua katika neno kama kamba,
na ina kuwa 2 au zaidi wahusika,
na kisha nini hii haina ni ninayechunguza gridi kwa neno hilo.
Hapa tunaona mfano wa iterating juu ya kila kipengele katika gridi ya taifa
ambapo wao iterate juu ya safu na kisha ndani ya iterate kwamba zaidi ya nguzo.
Hapa kumbuka alama 2D safu kwamba kimsingi maduka ama kweli au uongo
kama sisi tumekuwa na barua kwamba tayari.
Kimsingi hii resets yote ya alama kwa sababu tuko tu kushughulika na alama
kila wakati kwamba sisi ni kuangalia neno maalum.
Ndipo hapa mara moja tumekuwa upya alama zote
ni kweli ninayechunguza kwa neno, na hivyo kutafuta neno
hiyo ambapo sisi kutumia kazi kutambaa, hivyo hebu kwenda nyuma hadi kutambaa
na kuangalia ni.
Nini kutambaa haina ni inachukua katika string kuitwa barua
kama vile kimsingi x na y, ambayo ni kuanzia index
ambapo mtumiaji wa amesema neno ni.
Kimsingi ni hundi ikiwa ni x <0 au> mwelekeo
kimsingi ina maana kwamba index kwamba kweli haipo katika mchezo wetu,
hivyo basi kuwa anarudi uongo.
Kama ve tayari alitembelea barua maalum
kisha ambayo inaenda kurudi uongo kama vile kwa sababu ya utawala katika kinyang'anyiro
ni kwamba wakati una
barua hapa, kwa mfano,
unaweza kujiunga barua kwa kwenda juu au kama Ulalo hii,
hivyo kimsingi barua yako ijayo inaweza kuwa wakati wowote wa vitalu haya adjoining,
lakini nini hawezi kufanya, kwa mfano, kwenda barua hii
na kwenda nyuma ya, hivyo unaweza kutumia tu kila barua mara moja.
Kisha kwamba inafanya hisia kwamba hapa ni alama kwamba kama sisi tumekuwa huko mbele,
kama alama ni kuweka kweli, basi si kwamba neno halali.
>> Ndipo kile yake ni hundi.
Ni anasema mimi nina kwenda kuangalia kama wakati huu mahali maalum
barua kwamba tunataka ni huko.
Kama siyo, ni anarudi uongo.
Tangu ni tayari checked kwamba kuzuia, basi ni kwenda kuweka alama
katika hatua hiyo maalum kama kweli.
Sasa ni hundi ya kwamba kimsingi kama sisi ni kuendelea
hiyo ina maana kwamba sisi ni kwenda kutafuta barua ya pili
katika neno kwamba mtumiaji ni kujaribu kuwasilisha.
Hapa kukumbuka nyuma na sheria.
Wewe ni kujaribu kuangalia maadili yote ya karibu,
ndio hapo juu, chini, kushoto na haki kama vile diagonals,
na hivyo vile vile wakati sisi mawazo ya iterating juu ya arrays 2D
ambapo tulitaka iterate juu ya kila iwezekanavyo na kuangalia
kila permutation iwezekanavyo kati ya mstari na fahirisi fahirisi safu
hapa tunataka kuangalia kila mchanganyiko inawezekana,
kama ni upande wa kushoto wa barua, moja kwa moja hapo juu, au kwa haki.
Hapa tunaona kuwa kitanzi hii hundi ya kushoto
wakati i ni -1.
Wakati ni saa 0 ni hundi katika safu sawa kwamba barua ni katika,
na kisha kama i ni 1, ambayo ni ya thamani yake ya mwisho, basi ni hundi ya haki,
na kisha hiyo haitoshi, haki?
Sisi haja ya kuangalia yote ya maadili wima,
hivyo basi hapa tuna kitanzi kwamba anapata checked kama unaendelea chini ya
katika ngazi moja au zaidi, hivyo basi macho ya kwamba
itakuwa kupata kila moja karibu block kwa A.
Hata hivyo, pia hundi block hapa,
hivyo basi tunataka kuhakikisha kwamba sisi si kuangalia kwamba moja.
Sasa basi, kwa kweli kuangalia kama maneno uliotangulia ni halali au si
kisha tunataka kufanya mchakato huo kwa ajili ya mapumziko ya neno
barring moja kwamba tumekuwa tayari kufanyika, hivyo basi hapa ni kazi mtangulizi.
Ni wito yenyewe, na tutaweza kupata katika kuwa kidogo baadaye,
lakini inafanya mchakato huo kwa masharti yote ya baadae.
Tumekuwa aliongea kuhusu kazi kupata.
Sisi kuelewa nini ni kufanya.
Ni kimsingi kuangalia kama hii neno kwamba mtumiaji alitoa
kweli lipo kwenye bodi na kama ni hoja thamani.
Hapa tuna kazi initialize.
Ona kwamba utupu ni, hivyo si kwenda kuwa kurudi kwetu kitu chochote,
lakini ni tu kwenda kufanya kitu kwa ajili yetu.
>> Hapa mbali ya Wikipedia kuna frequency
kwa kila herufi juu ya alfabeti ya msingi juu ya jinsi mara nyingi
ni kutumika katika lugha ya Kiingereza.
Unaweza kuona kwamba e ni, kwa mfano, moja ya barua maarufu kutumika.
Tunataka populate gridi ya taifa.
Nini kazi hii haina ni populate gridi na barua
aina ya jamaa na frequency yao katika safu hii.
Sasa, hii ni kwa kutumia lugha hii hapa
akisema ukubwa wa masafa,
Ni aina ya kesi tu maalum.
Tunaweza kweli matumizi ya kawaida ya masafa, hivyo wakati wewe kweli unataka
kupata urefu wa safu pengine si kwenda kuwa na kutumia ya kawaida ya
lakini badala tu kwa kutumia urefu safu.
Unaweza kuuliza TFS yako ya kuzungumza na wewe kidogo zaidi juu ya kwamba,
lakini tu kujua kwamba hii syntax hapa ni zaidi ya kesi maalum.
Sasa, kwa kila kipengele katika gridi ya taifa
tunataka kufanya barua, na hii ni kwenda kuwa pseudorandom,
hivyo random lakini kabisa.
Kimsingi nini hii haina ni sisi kuweka mbili mpya
na thamani ya kati ya random 0 na 1.
Kulingana na kwamba tunakwenda ramani kwamba,
hivyo kusema kwamba d ni kuweka 0.6, kwa mfano.
Kisha kama d ni 60% katika
basi sisi ni kwenda kuangalia yote ya barua na kupata
jamaa na jinsi mara nyingi wao ni kutumika
nini 60% in
Hii si tu 60% ya alfabeti lakini badala
inachukua hadi nafasi hii kubwa, na kisha b inachukua hadi kiasi hiki,
na kisha e, kwa mfano, itachukua kiasi hiki.
Kulingana na urefu jamaa au masafa
ya barua hizi tunakwenda ramani kwamba thamani random
kati ya 0 na 1 kwa barua maalum.
Hiyo ni nini code hii haina hapa,
na kisha hapa k ni kama mabadiliko ya pamoja ambapo
katika barua tunataka kuwa, na hivyo sisi kuweka tabia katika gridi ya taifa
kuwa k +.
>> Ona kwamba nyuma kufikiri kwa tamaa
tulikuwa na kutumia kazi pande zote ya kukabiliana na kutokuwa sahihi floating-kumweka hapa,
hivyo vile vile tulikuwa kuchukua katika akaunti ya kwamba wakati mwingine
ikifungwa si nini hasa sisi nia yao kuwa,
hivyo tunataka kufanya catch kwa ajili hiyo.
Ndipo hapa sisi kwenda katika faili I / O, kimsingi kusoma na kuandika kwa files,
ambayo utapata ndani ya baadaye lakini sio kabisa bado,
hivyo kimsingi hii kufungua faili kamusi, wasomaji nini katika hilo,
na kisha unaweka ndani ya safu.
Ona kwamba sisi kuweka katika struct kwamba tumekuwa alitangaza, struct kamusi,
na hivyo kamusi ina safu kuitwa maneno yanayohusiana na hayo,
hivyo kile ni kufanya ni kusema kamusi, maneno katika ripoti hii hasa
ni vile vile na thamani.
Kisha sisi ni karibu kumaliza code usambazaji.
Sisi hatimaye kuwa na kazi lookup ambapo una maoni
mwelekezaji juu ya nini kificho kwamba lazima kufanya.
Luke utaangalia juu neno katika kamusi
na kwa muda mrefu kama kama neno kwamba haijawahi kupatikana tayari
kisha bendera ni kama kupatikana hivyo user wanaweza kutumia tena
lakini pia anarudi kufikiri kweli nyuma kazi kuu tena,
anarudi kweli, hivyo anasema kuwa neno ambalo linaweza alifunga.
>> Na kisha hatimaye una kazi kinyang'anyiro,
ambayo ni kazi nyingine ya utupu sababu ni kufanya kitu
lakini si kurudi chochote, ili kile kinyang'anyiro kufanya kazi
ni mzunguko gridi 90 ° clockwise.
Najua kwamba anaweza kuwa kidogo mbaya, lakini ni muhimu kufanya.
Watch mimi kwenda kwa code usambazaji,
lakini pia, jaribu kwenda kwa njia hiyo mwenyewe.
Nini mimi kama kwa kufanya ni ramani ni nje ya kuelewa
nini mpango huu na wote wa kazi hizo kwa kweli kufanya?
Kama ningekuwa kupitia code usambazaji tena,
sasa kwamba mimi aina ya hisia ya nini kinaendelea basi napenda kusema
sisi kuanza na kazi yetu kuu,
na kisha Nadhani kitu cha kwanza ni gani ni wito mzigo,
hivyo kuu wito mzigo, lakini mzigo ni kazi bure,
hivyo basi kile mimi kufanya zinaonyesha kwamba ni kuweka tu arrow moja
akizungumzia mzigo kwa sababu kuu anaiita.
Jambo la pili ni initialize.
Wito Kuu initialize,
na kisha kama sisi kuangalia nyuma katika kazi yetu kuu
Nadhani hii Kilichofuata kwamba itakuwa hivyo,
haki hapa kuna tani ya mambo mbalimbali ambayo ni wito kuu,
lakini sasa hivi mimi tu kulenga ndio kubwa zaidi
husika kwa kificho, hivyo mimi si ikiwa ni pamoja na i au mambo kama hayo.
Kisha kilichofuata kwamba hana ni clears yake,
na wakati huo kuteka,
na hivyo najua kwamba kusogea ni kitu ambacho sisi ni kwenda kufanya.
Hiyo ni kazi sare.
Baadaye tunaona kwamba moja ijayo ni kidogo-
hivyo basi tuna kinyang'anyiro.
Na kisha sisi kupata, hivyo kupata ni kazi nyingine.
Tunaona kwamba kupata ni-kama unakumbuka nyuma ni kazi ya bulin,
hivyo kwamba ni kweli kwenda na kurudi kitu nyuma yetu.
Ndipo hapa mimi zinaonyesha kwamba kwa sisi kuwa na kupata,
na kisha sisi pia Luke.
Lakini basi kukumbuka kwamba pia kuna kazi hii kutambaa
kwamba haionekani wameitwa katika kuu,
hivyo hiyo ina maana kwamba baadhi ya kazi nyingine ni wito kutambaa,
na kama wewe tafuta nyuma kupitia code usambazaji
unaweza kuona kwamba kupata hapa ni moja kwamba anatumia kutambaa,
hivyo basi kupata basi pia Viungo kutambaa,
ambayo ni thamani ya bulin, ambayo anarudi kitu,
hivyo mimi nina akiongeza mwingine kitu, na kisha tangu kutambaa ni kujirudia
pia matanzi nyuma yenyewe.
>> Kisha kama unaweza kuona hapa Nimekuwa kuchora picha ya nini mpango wetu inaonekana kama,
hivyo kuelewa mahusiano kati ya baadhi ya kazi,
na kwenda nyuma na kwamba wewe pia kuona utaratibu wa mchezo
na mantiki ya jinsi gani mpango mchezo ni kwenda kuendelea.
Tumekuwa kusoma code usambazaji.
kazi ya kwanza kwamba wewe ni kwenda kutaka kutekeleza,
au moja ya kazi ya kwamba unataka kutekeleza ni kuteka,
na hivyo hapa kwa kweli kuwa na kidogo ya uhuru na hili.
Tukiangalia wafanyakazi ufumbuzi-
Mimi naenda kufungua dirisha terminal, kwa kweli,
pset3/scramble.
Scratch kwamba. Nadhani haja ya update appliance yangu.
Kama wewe kucheza na ufumbuzi wafanyakazi wa kinyang'anyiro-
maelekezo ni katika spec kwa kuwa-
basi unaweza kuona jinsi wameweza kuchapishwa bodi mchezo,
lakini kimsingi wanachokifanya ni wao kuweka mazingira kati ya tabia ya kila,
lakini una uhuru kidogo kwa hili, hivyo kama unataka magazeti mistari, kwa mfano,
baina yao basi unaweza kufanya hivyo.
Unataka kufikiri nyuma kwa jinsi sisi iterate juu ya mambo yote ya safu 2D,
na utasikia wanataka magazeti hayo, kuhakikisha kwamba una kitanzi yako
na kuwa na magazeti majukumu yako kama kwamba wewe ni uchapishaji ili haki.
Kama unataka iteration yako kitanzi kwa-wakati iterate juu yake
na wewe kutumia fahirisi kuhakikisha kuwa wewe ni katika uchapishaji ili haki.
>> Kushughulika na arrays 2D kwa mara ya kwanza inaweza kuwa utata kidogo,
hivyo hapa kwenye slide hii nimepata alifanya meza kwamba inaonyesha wewe
kwa kila doa kutolewa katika safu 2D nini fahirisi ni,
hivyo kama unataka kurejea katika hili kwa ajili ya kuangalia haraka
au kwa ajili ya kumbukumbu au kitu kama hicho basi unaweza kutumia hii.
nguzo ni katika rangi za bluu, na safu ni katika nyekundu.
kazi lookup ni namna mbili.
Luke-na ni bulin kazi-kutuambia
kweli au uongo kwamba neno user-in
unaweza kukubalika kama thamani halali,
na hivyo neno katika kinyang'anyiro ni halali tu
ikiwa ni kupatikana katika kamusi na kama ni kweli kupatikana katika bodi,
na hivyo kumbuka kwamba lookup una kutekeleza hili na wewe mwenyewe,
hivyo unataka kuangalia mambo mawili,
kama ni kweli neno katika kamusi na kama ni kuwa kupatikana tayari.
Kumbuka nyuma kamusi kimataifa variable,
ambayo ni struct kwamba tumekuwa alifanya kwamba kimsingi ina int kuitwa ukubwa
yanayohusiana na hayo kama vile array ya maneno,
ambapo neno ni mpya data aina.
Hivyo kupata, kwa mfano, na ukubwa wa kamusi au safu maneno,
basi nini unaweza kufanya ni kuandika tu 'dictionary.size,'
sawa na njia ambayo wewe ingekuwa tu kutumia yoyote variable nyingine.
Hivyo kama dictionary.size inawakilisha ukubwa wa kamusi,
vile vile, dictionary.words inawakilisha safu.
Hivyo kama alitaka kupata neno fulani ndani ya kamusi,
basi ingekuwa kuongeza index
kwa sababu wewe ingekuwa kusema 'dictionary.words katika index i'
na kisha kufanya kitu kwa kuzingatia kwamba.
Hivyo kujua kwamba kamusi ina ukubwa fulani yanayohusiana na hayo,
kama vile array ya maneno, kwa kuangalia kama kitu ni katika kamusi,
basi ingekuwa kwa interate juu ya kamusi
kuangalia kama neno kwamba ni kupatikana.
>> Sasa, kama unafikiri nyuma kwa hotuba, wakati sisi aliyesema kuhusu njia mbalimbali kutafuta mambo,
basi kumbuka kwamba tafuta linear pengine daima si njia bora ya kwenda.
Lakini ni dhahiri ni njia moja ya kutafuta kitu fulani.
Wakati mwingine unaweza kupata kwamba wewe kutekeleza kazi yako na kupata
linear tafuta kwa mara ya kwanza na kisha kupata mapumziko ya mpango wako kwenda.
Na kisha baadaye unaweza kurudi na kubadilisha njia kwamba wewe kutafuta njia kwa ajili ya neno.
Ili kukabiliana - kimsingi kujua kwamba - kujua jinsi ya kupata
maneno safu ya kamusi, kwamba kukabiliana kuangalia kuona
kama neno kwamba ni kweli katika kamusi au la.
Lakini basi sisi pia haja ya kukabiliana na kwamba neno kwamba ni juu ya bodi.
Na kama hiyo imekuwa kupatikana tayari.
Hivyo sisi tayari kupata kazi, kumbuka.
Inaonyesha su, lakini ni neno gani?
Hii si suala falsafa lakini, badala yake, kuangalia ufafanuzi aina.
Tuna bulin iitwayo 'kupatikana' kama vile array ya wahusika
kwamba inawakilisha kwamba neno.
Hivyo wakati wewe kurudi lookup, wewe unataka kuangalia kama neno kwamba imekuwa kupatikana au la.
Sasa, wakijua kwamba bulin kupatikana - kupatikana ni jina la bulin
hiyo ni kuhusishwa na kila neno - basi, jinsi gani unaweza kupata kwamba variable,
kufikiri nyuma jinsi sisi kupatikana vigezo ndani ya kamusi?
Hivyo hapa tulikuwa na kamusi, na kisha sisi alisema dot kawaida, sawa?
Vile vile, wakati tuna neno na, katika kesi hii, kuwa makini kwa sababu
neno ni tu nyingine yoyote data aina, kama tu int au kamba.
Hivyo unaweza si tu kusema 'neno' isipokuwa hiyo ni jina yake.
Mtakuja kuwa na kutofautiana kwa jina, na kisha mara moja tu na kwamba,
kusema kwamba ni wito foo, kwa mfano, basi unaweza kusema 'foo.found,'
na kwamba atarudi wewe thamani ya bulin ya kwamba neno kwamba imekuwa kupatikana au la.
>> Hivyo basi sehemu ya pili ya pset ni kutekeleza kinyang'anyiro,
ambapo wakati wowote pembejeo user kinyang'anyiro - na ambayo tayari yameshughulikiwa
hapa katika code usambazaji - wewe tu haja ya kutekeleza
kinyang'anyiro kazi ambayo tayari aliwaelekeza wewe kwa mzunguko wa bodi 90 ° clockwise.
Kama kwa spec, maelekezo kusema kwamba bodi rotates 90 ° clockwise
vile kwamba thamani katika gridi ya taifa [0] [0] kisha wahamie kwenye gridi ya Taifa [0] [mwelekeo -1.]
Katika kesi hiyo, kwa kinyang'anyiro, mwelekeo wetu ni 4, hivyo 0-0 ingekuwa basi ramani kwa 0-3.
Hebu kuteka hii nje kuona nini ili kuangalia kama.
Sitakuja kufanya 4 x 4 gridi lakini badala x 3 3 moja.
Hebu kusema hii ni inchi 2D safu.
Mimi tu anaenda tu - wote haki.
Hivyo kusema tunataka kinyang'anyiro hii; tunataka mzunguko ni 90 ° clockwise.
Tunajua kwamba, kama kianzio, thamani katika 0-0, ambayo katika kesi hii ni 0 idadi,
ni kwenda ramani kwa mstari 0, basi safu mwelekeo -1.
Na hivyo kwamba, katika kesi hii, mwelekeo ni 3.
Hivyo basi 0 ingekuwa hoja ya mstari 0, safu 2.
Hivyo tuna 0 idadi huko.
Kimsingi nini tuko kufanya ni sisi ni kuchukua hii,
kimwili kupokezana hivyo basi 2 wangeweza kwenda kona hii,
8 ingekuwa kisha kwenda kona hii, 6 na hii.
Na kisha wengine ni bila kuangalia kama -
Hivyo kwamba ni nini gridi inaonekana kama wakati una mafanikio scrambled yake.
Wakati wewe ni kutekeleza kazi kinyang'anyiro, nini utasikia wanataka kufanya
ni kuona, vizuri, jinsi gani naweza kuchukua nafasi ya maadili haya?
Je, kuna baadhi ya aina ya muundo au aina fulani ya formula kuamua
ambapo index fulani huenda?
Kwa mfano, mimi ili kuangalia kuona kwamba 3-4-5 hapa ni mfululizo.
Ambapo mwingine, ninaona 3-4-5?
Naam mimi kuona hapa.
Vile vile, naona kama 6-7-8 mstari, lakini basi ni kweli safu hapa.
Hiyo ni mfano kwamba mimi kuona sasa hivi, lakini kuna wachache ndio pengine nyingine.
Kulingana na kwamba, kufikiri ya baadhi ya aina ya muundo, baadhi ya aina ya njia.
Mara ve kutambuliwa moja, basi wewe ni kwenda kutaka upya maadili katika gridi ya taifa.
Hivyo gridi 0-0 itakuwa 6, gridi ya 0-1 itakuwa 3.
Lakini kumbuka kwamba you'll - kwa mfano, kama wewe upya hii haki mbali,
kusema kwamba gridi 0-2 inakuwa 0 sasa, basi kupoteza kile 2 alikuwa huko.
Hivyo kufikiri nyuma, ni haitoshi tu reassign haki mbali.
Pengine utasikia wanataka kufanya nakala ya muda ya kitu
kabla ya wewe kweli kuiweka katika mahali sahihi.
>> Jambo la mwisho ni kutekeleza kesi insensitivity.
Kama ukiangalia nyuma, tafuta na doa katika spec ambapo mtumiaji pembejeo kamba.
Kama unakumbuka nyuma, kufikiri nyuma - oh, mimi erased ramani.
Kama unafikiri nyuma kwa ramani ya mpango wako, ni ndani ya kazi kuu,
ili kuangalia kwa ambapo wewe ni kushughulika na kamba user-inputted,
na kisha ndani ya huko, nadhani ya zana kwamba kujifunza kutoka yako
crypto pset, pset 2, na kisha kufikiria njia ambayo unaweza kuwa na uwezo wa
kuruhusu kwa mtumiaji pembejeo kama kesi mchanganyiko.
Hivyo wangeweza kuwa na mchanganyiko wa uppercases na lowercases, lakini kwamba lazima bado kuwa halali.
Katika kamusi, wanakumbuka wakati sisi wazi juu ya kwamba faili, kila neno alikuwa kuhifadhiwa kama uppercase wote.
Lakini hatutaki mtumiaji kuwa na pembejeo uppercase wakati wote.
Je, mtu yeyote kufikiria njia ili tuweze kuwa na uwezo wa kuruhusu user,
ingawa wao inputted wote lowercase, kwa mfano? Yeah?
[Mwanafunzi] Unaweza kufanya hivyo kwa juu?
Yeah, kwa uhakika. Unaweza kufanya hivyo kwa juu.
Hivyo unaweza kubadilisha wote wa barua ya uppercase, na kisha
kwamba njia ya kuhakikisha kwamba kwamba ni kwenda kuwa nakala halisi
wa chochote kupatikana katika kamusi, ikiwa ni katika kamusi.
Mkuu. Tuna kidogo ya kushoto wakati.
>> Hivyo baadhi ya mambo ambayo unaweza kukutana katika pset hii ni haja ya kujua
nini vigezo yako ni katika hatua fulani katika muda.
Kwa sababu katika spec tuna kazi wazi kwamba kimsingi
clears chochote ve inayotolewa juu ya bodi, erases yote na kisha liandike tena juu ya kwamba,
unaweza, wakati wewe kuandika pset yako, si kweli unataka kuwa kutokea.
Kwa sababu utasikia wanataka kuona, sawa, mara moja mimi kuingia katika kinyang'anyiro hiki, kwa mfano,
mara moja mimi kuingia katika kinyang'anyiro, ni nini kufanya na nini ilikuwa ni kabla, tu kwa ajili ya kumbukumbu.
Hivyo basi nini unaweza kutaka kufanya ni kwenda nyuma kazi yako kuu
na maoni nje ya wazi, kwa mfano.
Hivyo basi wakati wewe kuendesha programu yako wakati ujao,
mpango wenu si wazi badala na mapenzi tu kuendelea kuchapa juu ya kwamba.
Kuna baadhi ya njia nyingine ya utatuaji pia.
Nini unaweza kufanya ni unaweza pamoja kauli f magazeti, nadhani.
Jambo moja kwamba nikaona katika psets kwamba mimi graded ilikuwa kwamba watu ni pamoja na kauli f magazeti
kuchapa nje vigezo katika hatua fulani katika muda wa kuweka wimbo.
Lakini tu kuhakikisha kwamba mwishoni, mara moja ya kumaliza kuandika magazeti yako kauli f wote
kwa wewe kuweka wimbo wa mambo, kwamba maoni yao nje, baadaye,
au kuzifuta mara moja ya kumaliza.
Hiyo ni njia nyingine kwamba unaweza kufanya kitu, ungeweza kuandika tu katika taarifa f magazeti
mahali fulani kwamba ni muhimu na kuona, kwa kuzingatia kile terminal Prints nje,
nini variable kwamba alikuwa.
>> Njia nyingine ya kufanya hivyo, kwamba tutaweza kuingia kwa undani zaidi wakati wa hotuba,
ni GDB, ambayo ni chombo debugging.
Kimsingi, wakati wewe kukimbia, hivyo itabidi kwenda katika mpango wako na unaweza kuwa ni mapema
hatua moja kwa wakati badala ya kutathmini kila kitu.
Hivyo basi unaweza kuvunja juu katika hatua kidogo, na kisha kwa kuzingatia njia -
na kisha njiani magazeti mambo na kuona nini maadili ni.
Na kwamba husaidia takwimu nje ambapo mdudu katika code yako inaweza kuwa.
Nini tunaweza kufanya hivi sasa ni kuandika kazi haraka na kisha
kuona jinsi sisi inaweza kuwa na uwezo wa kutumia GDB kuona nini kinaendelea.
Basi hebu na int kuu, na kisha nini sisi kama vigezo kwa kuu?
Tuna int ARG c, na ARG string v
Mimi naenda kuwaokoa hii katika walkthrough kama GDB.z. Wote haki.
Mimi naenda kuwa kurudi 0.
Hivyo jinsi kuhusu hebu kuwa na rahisi kwa kitanzi; hebu kuwa 12.
Hebu pia kuwa int aitwaye counter, na
tunaweza kuanza kwamba ifikapo 0. Sawa.
Hivyo katika kila hatua katika kwa kitanzi, hebu kusema kwamba tunataka kuongeza counter
au kuzidisha hivyo kwa chochote i ni.
Hii ni kazi pretty mfupi.
Hebu kufanya GDB. Oh! Na kisha - Clang ni smart.
Inaniambia kwamba sikuwa pamoja cs50.h.
Wote haki. Hivyo sasa tunataka -
Kweli, sorry guys. Mimi naenda rename faili tu kwa sababu ni kidogo utata.
>> Wote haki. Hivyo sasa ni nini tunataka kufanya ni, tunataka kuanza GDB.
Mimi alisema 'GDB debugging,' hivyo kimsingi ni kwenda kuwa na kuweka kulenga debugging hii,
faili debugging.
Mimi naenda kuweka breakpoint.
Kimsingi, mpango huo kwenda kukimbia mpaka hits saa breakpoint fulani.
Mimi nina kwenda kusema mapumziko katika hafla kuu.
Hivyo sasa mimi naenda kukimbia debugging; hivyo ndani ya GDB siwezi kukimbia code.
Ni mbio mpango, na hata ingawa kuu ilikuwa moja ya mambo ya kwanza kwamba sisi aliandika,
sisi pia kuwa ni pamoja na files; kuna mambo kinachoendelea tayari.
Ina breakpoint katika kuu.
Hebu sema 'ijayo,' ili tuweze kuendelea.
Ni anasema "int counter = 0."
Mimi naenda kusema 'magazeti counter.'
Hii ni ajabu. Hivyo kimsingi tunatarajia counters kuwa 0,
lakini GDB ni hatua moja nyuma, hivyo wakati wowote wewe kusema ijayo,
inasema int counter = 0. Hiyo ni jambo la pili kwamba ni kwenda kutekeleza.
Kisha bonyeza - unaweza kusema karibu tena, au unaweza kusema tu 'n'
na sasa kama wewe magazeti counter, counter ni 0, kama sisi kutarajia.
Kimsingi, ni inajenga aina yake mwenyewe ya vigezo kwa ajili yake, lakini chochote pale -
kama haki hapa; kwamba ni nini counter inawakilisha.
Hivyo nina kwenda kwa bonyeza ijayo, na Mimi nataka kujua nini i ni.
Wewe utakuwa magazeti i, i ni 0, kama sisi kutarajia.
Next tena, ni kuonyesha kwamba ni kwenda kupitia kwa kitanzi tena,
hivyo kama mimi i magazeti, kwa mfano, naona ya kuwa sisi ni juu - kuwa i ni 1 kwa sasa.
Basi hiyo ni njia, kwamba kama wewe kuweka breakpoint katika kazi fulani
na kisha kuendelea kwenda ijayo, na kisha kuangalia nini i ni,
kama una dhana kwamba labda mahali fulani kitu si kinachotokea kama ni lazima,
na mtuhumiwa kuwa labda ni katika index kwanza au index mwisho au kitu,
unaweza kutumia GDB, kuendelea kuchapa i, kuwa na uwezo wa kuangalia nini wale maadili ni.
Hivyo basi, katika GDB, kwa sababu magazeti na ijayo ni vile hoja ya kawaida,
kawaida amri, kama mimi abbreviated ijayo n,
Mimi pia naweza kusema tu p counter; kwamba bado 0.
Kisha mimi bonyeza ijayo. Nataka magazeti counter tena.
Naam, hivyo kwamba bado 0.
>> Na wewe ni aina ya wanashangaa - vizuri, nataka counter kuwa kazi factorial.
Kwa nini - tu katika mbinu ya debugging - kwa nini wapate kuwa kuwa?
Kwa nini ni counter si kuongeza thamani yake?
Kwa nini ni kukaa 0?
Naam, hapa nina - nyuma katika hapa nasema counter counter = x i.
Hivyo basi kama mimi kwenda nyuma mwanzo wa kazi yangu,
Mimi naona kwamba wakati mimi printed i, i ni 0, na nini 0 x chochote?
Ni 0, haki? Hivyo kwamba pengine sababu counter
ni kamwe kwenda kuwa namba nyingine yoyote.
Hivyo basi nini mimi kutaka kufanya ni kwenda nyuma fuction yangu,
kusema, sawa, vizuri kwa kweli, mimi nataka kuanza ni saa 1.
Ni kwamba kwenda kutatua mambo?
Si kabisa, kwa sababu counter bado 0 hapa.
Basi hebu kuweka kwamba kwa 1.
Tunataka kuweka upya debugging wetu chombo, hivyo hebu kujiondoa.
Na kisha nini tunaweza kufanya ni tunaweza GDB debugging tena,
kuweka mapumziko katika kuu, na kisha kukimbia debugging tena, pili, pili, pili.
Hebu hit ijayo mara chache, na kisha tutaweza magazeti counter, kuona kwamba -
hatukuwa usahihi kufanya faili tena.
Hata ingawa sisi iliyopita chanzo code, basi sisi kweli
hawakuwa update executable yetu.
Naamini kwamba unaweza kufanya - yeah.
Ndani ya GDB yenyewe, unaweza kweli kufanya faili.
Hivyo huna kuacha GDB tena.
Unaweza kwenda nyuma ya faili chanzo, ila ni, nyuma katika GDB, unaweza kufanya hivyo tena.
Mkuu. Basi hebu kukimbia debugging.
Tunataka kuanza yake tangu mwanzo kwa sababu tuna executable mpya.
Tunaweza kwenda kwa wanandoa wa nyakati, na kisha magazeti i, magazeti counter, kuendelea.
Wote haki. Hivyo sasa tunaona kwamba counter ni kweli kuongeza thamani yake kama sisi unataka kwa.
>> Hiyo tu kidogo kidogo bite ukubwa mfano wa jinsi unavyoweza kutumia GDB
kuingia code yako, magazeti maadili fulani, bonyeza ujao na kuendelea na mstari unaofuata,
na abbreviate hiyo na magazeti nje.
Ni wazi, code katika kinyang'anyiro ni kidogo ngumu zaidi kuliko kuwa, lakini nini unaweza kufanya
ni kuweka katika breakpoint - unaweza kuweka breakpoint katika kazi yako lookup, kitu kama hicho.
Hiyo wakati wowote itafikia mahali ambapo inahitaji kuangalia kitu juu,
kisha GDB kukimbia kila kitu hadi kufikia hatua ile na basi unaweza kuanza maadili uchapishaji nje.
Kama ni alama katika hatua hii ya uongo au ni kweli?
Kwamba pengine kitu ambacho wewe kutaka kutumia.
GDB, si mkazo sana kuhusu hilo,
kwa sababu sisi kuingia kwa undani zaidi katika hotuba,
lakini mimi tu alitaka basi wewe guys kujua jinsi unaweza kuwa na uwezo wa kutumia
kama wewe ni kupata ilianza na pset na unataka kuelewa
njia bora zaidi kuliko kuweka tu kauli f magazeti na kuchafua mazingira yao yote kwa njia ya code yako.
Kuwa GDB kwa kweli magazeti ni kwa ajili yenu na kuwa na uwezo wa kuweka breakpoints wale
hivyo kuwa mpango wako wanaweza kukimbia hadi hatua fulani
na kisha kuruhusu kweli hatua ndani yake na takwimu nje tatizo pale.
>> Haki. Hivyo basi kama sisi kuangalia nyuma katika kinyang'anyiro, tumekuwa kusoma code usambazaji.
Tumekuwa aliyesema kuhusu njia ya iterate juu ya arrays 2D, na wewe utakuwa dhahiri
kuwa kutaka iterate juu ya safu 2D wakati kuja kuchora mchezo wako gridi ya taifa.
Kuongelea kazi lookup, kuhusu jinsi tunataka kuhakikisha ya wanandoa wa mambo.
Tunataka kuhakikisha kwamba sisi si kwa neno kabla.
Sisi pia wanataka kuhakikisha kwamba ni kweli katika kamusi.
Kisha tuliongea kuhusu kinyang'anyiro, kuhusu jinsi tunataka mzunguko bodi.
Na kujua kwamba unaweza kutaka kufanya nakala ya kitu
kuwa na uwezo wa hoja hiyo.
Hatimaye, sisi aliyesema kuhusu kesi na unyeti, kuhusu jinsi wewe unataka kuhakikisha
kwamba licha ya kila mchanganyiko wa kesi kuwa pembejeo user,
kama ni neno halali katika kamusi,
basi ni kwenda kupatikana kwa usahihi.
Hivyo basi yote ya kwamba pamoja ni pset kinyang'anyiro, na kwamba ni walkthrough 3.
Shukrani kila mtu kwa ajili ya kuja, na bahati nzuri na kinyang'anyiro.
CS50.TV