JASON HIRSCHHORN: Karibu kwa wiki tatu, kila mtu. Tuna busy lakini kusisimua sehemu mbele yetu. Hivyo kwanza, kwa sababu tumefanya baadhi mafanikio na bila shaka lakini sisi bado kuwa mengi ya kujifunza kushoto kufanya, mimi nina kwenda kuonyesha guys baadhi ya rasilimali kwamba lazima kuthibitisha kuwa incredibly manufaa kama wewe si tu mbinu yako tatizo seti, lakini pia kufungua yote ya vifaa sisi kukupa guys katika mihadhara na kaptula na sehemu. Kisha tunakwenda kutumia kwanza 20 kwa muda wa dakika 25 ya sehemu ya kwenda juu GDB, ambayo unaweza au anaweza kuwa na kutumika katika hatua hii, lakini ni incredibly kusaidia chombo kwamba mapenzi kukusaidia Debug programu yako. mengi ya unaweza kutumika printf katika katikati ya mpango wako kufikiri nini variable ililingana. GDB ni bora hata kuliko printf na haina screw up code yako kwa sababu wewe kuendesha kwenye faili la kutekelezwa. Hivyo tutaweza kwenda zaidi ya 10 na manufaa zaidi amri unahitaji kwa ajili ya GDB, na sisi ni kwenda juu ya zoezi la pamoja ili katika kuweka tatizo tatu na zaidi, unaweza unaweza kutumia GDB kusaidia utatuzi programu yako. Na hatimaye, sisi ni kwenda juu ya baadhi ya kuchagua na kutafuta algorithms kwamba aliona katika hotuba, na sisi ni kwenda kwa kweli code, si tu pseudocode, lakini code binary search, Bubble aina, na uteuzi aina. Hivyo kwanza, nataka kwenda juu ya rasilimali. Hii ni orodha ya kina, na ni ndogo font kwa sababu nilikuwa na mengi ya fit hapa. Lakini haya si tu kukusaidia, tena, kwa seti tatizo na digesting habari kujifunza, lakini dhahiri, kuja jaribio wakati, hizi kuwa incredibly kusaidia. Hivyo kwanza, hotuba anabainisha. Kama wewe kwenda cs50.net/lectures na kitabu kwa wiki maalum na siku, utaona kwamba kuna maelezo kwa kila hotuba, ambayo si tu nakala, lakini toleo lililohaririwa la nini mara ya kufunikwa katika hotuba na kanuni snippets na tidbits wengine kusaidia. Mimi sana kupendekeza kwenda juu ya wale. Na kisha kama vizuri, kuna chanzo code inapatikana kutoka kila hotuba. Na tena, slides hizi pia kuwa inapatikana online saa cs50.net/sections jioni hii. Hivyo pili ni kaptula kila wiki kwamba cover mada, kwa kawaida 5 hadi 15 dakika katika urefu. Na wale hopefully nitakupa primer kubwa juu ya mada mbalimbali. Tatu - na hii ni brand mwezi huu mwaka - ni study.cs50.net. Kama si checked nje, mimi sana kupendekeza kwamba kufanya hivyo. Unaweza kupata ili kubaini mada. Tuna kadhaa ya mada huko. Hivyo kwa mfano, unaweza kuchukua Kazi. Ni inatoa baadhi ya slides na maelezo ya kazi. Wale ni kweli slides kwamba TFS wanahimizwa kutumia wakati wetu maonyesho katika sehemu. Kuna pia tips na tricks kwa ajili ya kushughulika na kazi, na kuna matatizo mazoezi ili kusaidia kazi na kazi. Sisi pia kukupa viungo short juu ya kazi na mara kwamba kazi wamekuja katika hotuba. Hivyo study.cs50.net, bidhaa mpya hii mwaka, rasilimali ya ajabu. Next, mimi na mtu, ambayo ni mwongozo amri kwamba unaweza kuendesha katika mstari amri. Hivyo kama una maswali yoyote kuhusu amri, kwa mfano, rand, ambayo sisi yaliyojitokeza wiki iliyopita wakati wa sehemu ya na una uwezekano yaliyojitokeza katika tatizo lako kuweka wakati anapita kuzalisha kificho, lakini kama aina mtu rand, utapata ukurasa kwamba anaelezea wote kuhusu rand. Ni anakupa nini inachukua, vigezo inachukua, pamoja na kurudi aina na maelezo mafupi ya kazi hiyo. Ili kuangalia nje rand. Ni inaweza kuwa ni kidogo wordy na utata, hivyo wakati mwingine mimi kujua kwamba tu googling nini nataka kujua ni njia bora ya kupata jibu. Hivyo mazoezi na Google. Kupata mema Google. Itakuwa rafiki yako bora. Kama vile Google, kama huwezi kupata juu ya Google, cs50.net/discuss, ni majadiliano jukwaa. Nafasi ni kama una swali, moja yako 700 + wenzao pia ina kuwa swali na inaweza wameomba tayari katika kujadili vikao na kuwa ni akajibu. Hivyo kama una swali la kawaida au una swali kwamba unafikiri labda watu wengine wanaweza kuwa na kukimbia ndani, kuangalia nje cs50.net/discuss. Hatimaye, mawili ya mwisho, kama unataka kuzungumza na halisi ya binadamu, ofisi masaa Jumatatu hadi Ijumaa. Kuna pia masaa online ofisi kwa ajili ya ugani wanafunzi. Na mwisho lakini kwa hakika si uchache, mimi, Moderators uhakika. Nyinyi wote mna wasiliana wangu habari. Kama unahitaji kitu chochote, tafadhali kamwe Usisite kuwasiliana na mimi. Daima kujisikia huru kufanya hivyo. Chache sana wewe aliongeza kuwa mimi juu ya Gchat, ili imekuwa tamaa, lakini hopefully kwamba utakuwa kubadili kati ya hii na sehemu inayofuata. Maswali yoyote hadi sasa juu ya rasilimali? Kubwa. Hatimaye, mwingine kuziba kwa maoni, sayat.me/cs50. Unaweza kunipa maoni bila majina juu ya jinsi ya mimi kufanya. Hiyo ilikuwa ni kweli kusaidia wiki iliyopita. I got baadhi ya maoni kutoka kwenu guys haki baada ya sehemu, pamoja na kutoka wanafunzi wengine ambao watched wakati wa wiki, na mara incredibly kusaidia. Mimi kwenda kujaribu na kupunguza matumizi yangu ya neno "tamu", lakini mimi kuonyesha yangu shauku na msisimko kwa njia nyingine. Lakini kulikuwa na wengine ziada marejesho makubwa, wote pluses na delta. Hivyo tafadhali, mimi kukupa guys maoni seti tatizo lako. Jisikie huru nipe maoni juu ya mafundisho yangu. Mimi niko hapa kwa nyie. Kubwa. Hayo ni yote nina kwa sehemu ya kwanza. Je, mtu yeyote yoyote maswali mbali? Na mimi kuwa na kumbuka kwa kituo cha udhibiti. Ugani wanafunzi kuwa messaged mimi kusema kwamba siyo kupata audio yoyote, lakini kwamba ni nje ya uwezo wangu kurekebisha. Hivyo hopefully, kwamba anapata kutatuliwa hivi karibuni. Kama wewe ni kuangalia online, hi, lakini huwezi kusikia mimi. Hivyo kwanza, sisi ni kwenda kwenda kwa njia ya GDB. GDB, kama mimi aligusia saa awali, ni debugging chombo bora zaidi kuliko printf. Hivyo kuanza kwa GDB, you guys, kama unataka kufungua appliance yako na kuchukua faili kwamba mimi Emailed na wewe mapema - faili hili pia kuwa inapatikana online katika bit - na kukimbia GDB. / jina la faili. Kwanza, bila shaka, una kukusanya faili kwa sababu GDB kazi tu juu ya kutekelezwa files. Lakini kama wewe milele unataka kuanza GDB, jambo la kwanza kufanya, kukimbia GDB. / Caesar. Hivyo kwamba ni jina la mpango tuko kwenda nayo hivi sasa. Hivyo nina kwenda kuandika kufanya Kaisari, ambayo atanipa faili la kutekelezwa hapa yalionyesha katika kijani. Na kisha mimi nina kwenda kukimbia GDB. / Cesar. Na kuna kwenda. Unaweza kuona tuna baadhi ya maandishi akiniambia kuhusu toleo la GDB, kunipa baadhi ya taarifa udhamini, na kisha sisi na Pato la Taifa haraka, ambayo inaonekana aina ya kama amri yetu line haraka, lakini unaweza kuona ni wazi paren, GDB, karibu paren. Kabla ya sisi kuendelea na utatuzi faili hili kwamba mimi alimtuma kwenu wote, hebu tuangalie baadhi ya amri muhimu hivyo tuna akili ya nini sisi ni kwenda cover. Amri haya yameorodheshwa hapa katika utaratibu ambao mimi kwa ujumla matumizi yao. Hivyo mimi kuanza mpango wangu kwa kuendesha GBD. / Jina la mpango, katika kesi hii, Caesar. Na kisha Jambo la kwanza mimi kufanya 99.9% ya muda ni aina ya mapumziko maana. Kwamba anaweka hatua ya mapumziko katika kuu. Kimsingi, nini unafanya huko ni mpango wa ni kwenda kuacha katika kuu hivyo unaweza kuanza kuchunguza ni line na line, badala ya mbio wote njia. Unaweza kuvunja katika maeneo mbalimbali katika code yako, lakini kuu ni kwa ujumla sehemu nzuri ya kuanza. amri ya pili mimi kukimbia ni kukimbia. Kwamba kuanza mpango wa mbio, na kama unahitaji kuingia amri line hoja, wewe kukimbia amri hiyo. Kukimbia kwa hoja. Hivyo tangu sisi ni kwenda juu ya toleo la ya C, ambayo ni mpango guys aliandika kwa ajili ya pset mbili - hii moja, bila shaka, ina baadhi ya mende katika kwamba hopefully tutaweza kupata - tunakwenda kukimbia kukimbia na baadhi amri line hoja kwa sababu Kaisari, kama nyie kujua kwa tatizo kuweka spec, inachukua baadhi ya hoja mstari amri. michache ijayo amri, karibu moja ni kweli kuitwa ijayo. Moja kwamba inachukua wewe mstari kwa mstari kupitia programu yako. Hivyo kupiga n kisha kuingia inachukua wewe kwa mstari wa pili, utekelezaji line uliopita. Hatua si tu inachukua wewe mstari wa pili, lakini inachukua wewe kazi ndani. Hivyo kama umeandika kazi katika code yako au kama unataka kuchunguza kwa i, kwa mfano, unaweza hit s, na badala ya kwenda kwa line ya pili ya file kwamba wewe ni kwenda kwa haki sasa, wewe utakuwa kweli hatua katika kazi hii na kuona kanuni zake. Orodha ya inaonyesha, katika user sana ya kirafiki format, 10 au zaidi mistari karibu ambapo sasa ni katika kanuni yako hivyo unaweza kweli kuona faili badala ya kuwa wabadilishane nyuma na nje kati ya maoni tofauti. Magazeti ni kama printf, kama jina lake ina maana. Kwamba inaonyesha nini variable sawa. Info wenyeji ni kweli kusaidia. Hii ni toleo maalum ya magazeti. Info wenyeji inaonyesha wote wa ndani vigezo, prints wote kwa ajili yenu ambayo kwa sasa inapatikana. Basi, mimi kwa ujumla, badala ya kuwa na magazeti nje vigezo nne kwamba mimi nina curious kuhusu kama mimi nina kwa ajili ya kitanzi, kwa mfano, mimi kuandika tu info wenyeji, na kutakuwa na kuonyesha mimi nini yangu ya kukabiliana na i sawa, pamoja na safu kwamba mimi nina kazi ya sawa. Hatimaye, kuendelea. Kuandika mapumziko ataacha wakati wa mapumziko uhakika. Unaweza kutembea kwa njia line na line na ijayo na hatua. Kuendelea anaendesha mpango wa yako ijayo kuvunja kiwango au hadi kukamilika kama kuna pointi hakuna zaidi ya mapumziko. Disable kuondosha kuvunja pointi kama wewe aliamua mapumziko katika kuu ilikuwa muafaka, unataka kuweka mahali pengine. Na hatimaye q, kujiondoa, anapata nje ya GDB. Hivyo mpango huu. / Kaisari, sisi ni kwenda kuangalia njia ya haki sasa na sisi ni kwenda kutumia GDB kupata mende katika mpango huu. Mimi mbio mpango huu mapema na Angalia 50, na I got frown moja. Kila kitu ni kuwepo, ni compiled, ni kupita mengi ya vipimo, lakini kwa sababu fulani, hakuwa na kupita tano mtihani, na kugeuka BARFOO, kofia wote, ndani ya E-D-U-I-R-R, mechi zote, kutumia tatu kama muhimu. I got pretty karibu. I got mbali na barua moja. Hivyo kuna baadhi makosa madogo katika hapa. Nimekuwa inaonekana kwa njia ya kanuni yangu. Sikuweza kufikiri nje. Hopefully, you guys anaweza kunisaidia kufikiri nini hii mdudu ni. Hivyo kwamba ni makosa tuko ajili ya kutafuta. Hebu hoja ndani ya GDB. Tena, nimekuwa kukimbia GDB. / Kaisari, hivyo sasa tuko katika GDB. Na kile ambacho ni kwanza kitu mimi wanapaswa kufanya nini? Nimekuwa tu aliingia GDB. Mtu nipe nzuri amri ya kuingia. STUDENT: Vunja kuu. JASON HIRSCHHORN: Vunja kuu. Ajabu. Hebu aina hiyo in You guys unaweza kuangalia hapa au kufuata pamoja kwenye kompyuta yako. Kuvunja kuu, na utaona hatua ya mapumziko ilianzishwa katika - inanipa baadhi ya kumbukumbu anwani weird, na pia inatoa me line idadi. Kama ningekuwa na kuangalia nyuma katika faili hili, Napenda kutambua kwamba kuu kilichotokea juu ya line 21. Nifanye kukimbia baada ya hapo? Ni mpango wangu mbio? Hapana Hivyo kile lazima mimi kukimbia baada ya hapo? Mwanafunzi: kukimbia. JASON HIRSCHHORN: kukimbia. Je, mimi kukimbia tu kukimbia, au lazima Mimi kuongeza baadhi ya mambo mengine katika? Mwanafunzi: Kukimbia na hoja. JASON HIRSCHHORN: Kukimbia na amri hoja. Na kwa kuwa mimi nina debugging maalum sana kesi, mimi wanapaswa kuingia kwamba amri line hoja. Kwa hiyo nitakuwa wanajitokeza tatu, ambayo ni mara ya pili, pato I got kutoka Check 50. Kuanzia mpango. Sisi kwenda kwa njia ya wanandoa wa mistari. Itabidi sasa kuona kwamba sisi ni juu ya line 21. Je, mimi kujua kwamba sisi ni juu ya line 21? Kwa sababu kama ukiangalia kwa upande wa kushoto ya wastaafu dirisha langu, inasema line 21. Na kwamba anatoa mimi, kwa kweli, kificho kwamba ni katika mstari wa 21. Basi, mimi misspoke mapema. Kuu ni si kweli katika mstari wa 21. Kuu ni wanandoa wa mistari juu ya 21. Lakini katika mstari wa 21, kwamba ambapo sisi ni kuvunja. Mstari wa code ina lakini haitekelezwi. Hiyo ni muhimu. line unaweza kuona hana ameuawa bado. Hiyo ni mstari wa pili code wewe ni kuhusu nitafanya. Hivyo mstari wa pili, kama wewe guys ni pengine ukoo na, hii ni hali kuangalia kuona kama mimi na aliingia hoja ya mstari amri. Na kwa i, ni nini pili sehemu ya kwamba kufanya? Ni nini i? STUDENT: Mabadiliko ya kwa integer. JASON HIRSCHHORN: Sorry? STUDENT: Ni kubadilisha hoja ya integer. JASON HIRSCHHORN: Hivyo i mabadiliko ARG v1 kutoka kamba integer. Na kisha nini ni kuangalia? Mwanafunzi: Kama kuna pili hoja ya mstari amri, kando kutoka mbio mpango. JASON HIRSCHHORN: Na nini nusu ya pili ya hii Kujieleza Boolean kuangalia? Hii ni sehemu zaidi ya hapa, kwa i? STUDENT: Kama ni hasi. JASON HIRSCHHORN: Kuhakikisha nini? Mwanafunzi: Kuhakikisha ni ni, kwa kweli, chanya. JASON HIRSCHHORN: Hasa. Hii ni kuangalia kuona kama ni hasi, na kama ni hasi, mimi na hisia ijayo line nguvu kuwa mimi kunguruma katika user. Basi hebu hit mwisho kutekeleza mstari huu. Hatuoni kwamba line kwamba guys labda inatarajiwa kuona kunguruma katika user na kisha kurudi, kwa sababu line huu hakuwa na nitafanya. Mimi aliingia 3. Hivyo mimi, kwa kweli, kuingia amri mbili line hoja, na 3 ni kubwa kuliko sufuri. Hivyo tuliona kwamba line, sisi kunyongwa, lakini hatukuwa hatua ndani ikiwa hali hiyo. Basi sasa, pili, naona mimi nina kuweka int muhimu sawa na i ARG v1. Hivyo kwamba ni mimi kujenga muhimu kutofautiana. Basi, ikiwa mimi magazeti nje muhimu sasa hivi, kwa sababu kwamba utapata kuona thamani ndani ya kutofautiana, muhimu ni sawa na 47. Hiyo ni weird, lakini bila shaka, hiyo ni kwa sababu mimi si kunyongwa kwamba line bado. Hivyo sasa kama mimi hit n, nitafanya kwamba line, na kufanya magazeti muhimu, muhimu itakuwa sawa 3, ambayo ni nini tunatarajia sawa. Hivyo tena, katika GDB, line wewe kuona kuwa si kunyongwa bado. Una hit n au s au idadi ya amri nyingine kwa kweli kutekeleza mstari huo. Magazeti muhimu. Muhimu ya saa 3. Hadi sasa, hivyo nzuri. Kamba ni Nakala wazi. Hebu kutekeleza mstari huo. Mimi nina kupata kamba kutoka kwa mtumiaji. Hebu angalia katika Check yangu 50, mimi kuingia BARFOO mechi zote, hivyo kwamba ni nini mimi itabidi kuingia. Kama mimi sasa magazeti Nakala wazi. Utaona ni sawa na kamba. Inanipa nyingine weird hexadesimoli idadi, lakini ni gani katika ukweli kusema kwamba kamba wangu ni BARFOO. Kama nilitaka kuona nini muhimu ililingana katika hatua hii, ni jinsi gani mimi kuangalia muhimu? STUDENT: Print muhimu. JASON HIRSCHHORN: Print muhimu, hasa. Na kwa kweli, kuna njia ya mkato. Kama kupata uchovu wa kuandika magazeti, unaweza aina tu p. Hivyo p muhimu gani huo kitu halisi. Na tena, Mimi naona ni sawa na 3. Kama nilitaka kujua nini wote muhimu na BARFOO ililingana wakati huo huo lakini mimi nilikuwa nimechoka ya kuandika kila moja nje mmoja mmoja, mimi inaweza aina info na wananchi. Kwamba anatoa mimi usawa muhimu 3. Nakala wazi ni sawa na BARFOO. Ni pia inatoa yangu haya mambo mawili weird saa ya juu, variable hii i na hii n kutofautiana. Hizo ni kweli zilizopo katika mpango wangu kuu. Sisi si yaliyojitokeza yao bado, lakini kama hakikisho, wale zipo katika wangu kwa kitanzi. Hivyo sasa hivi, wao ni sawa na baadhi weird idadi kwa sababu wao si kuanzishwa bado, lakini hawana bado zipo katika kumbukumbu, hivyo wao ni tu kuweka kwa baadhi ya thamani taka. Lakini tunaona muhimu katika wazi Nakala haki pale. Hivyo nina kwenda kutekeleza mstari huu, line 34, kwa kitanzi. Tunakwenda kuruka ndani ya kwa kitanzi kwa kupiga n. Na sisi ni ndani kwa ajili ya kitanzi. Sisi ni katika kuangalia yetu ya kwanza. Na tena, haya lazima aina ya kuangalia ukoo na wewe kwa sababu hii ilikuwa Mpango Kaisari ambayo ilikuwa imeandikwa, lakini tena, ina aina fulani ya mdudu. Na sasa kama mimi kufanya info wenyeji, kwa sababu mimi nina ndani kwamba kwa kitanzi, utaona kwamba i sawa na sifuri, kama sisi kutarajia. Hiyo ni nini sisi kuweka kwa na kuanzishwa Ni kwa kwa ajili ya kitanzi. n sawa na 6. Hiyo pia mantiki kwa sababu sisi kuweka kwa strlen wa maandishi wazi. Hivyo napenda kufanya wenyeji info au magazeti kwa kutofautiana mara kwa mara ili kuhakikisha kwamba kila kitu ni mara zote kile Mimi kutarajia sawa. Katika kesi hiyo, kila kitu ni kile kutarajia sawa. Basi hebu kuanza kusonga kupitia hii kwa kitanzi. line mimi nina juu ya ni line 36, ikiwa wazi Nakala i ni mkubwa kuliko na wazi Nakala i ni chini ya au sawa na z. Mimi najua tatizo langu ni si kwa yangu ya kwanza barua, ni pamoja na barua ya pili. Kama sisi kuangalia nyuma katika Check 50, B inakwenda E faini. Mimi kuchukua A na kuondoka kama A, si kubadilisha kwa D. Hivyo kitu kibaya na barua ya pili. Hivyo nina kwenda kwa hoja huko katika pili. Lakini kama mimi unataka kuangalia nini wazi Nakala mimi ililingana katika hii hasa kesi, nadhani ni lazima kuwa na nini? Nini Nakala wazi mimi sawa katika hii raundi ya kwanza kupitia kwa kitanzi? STUDENT: Zero? JASON HIRSCHHORN: Nakala wazi ya mimi? Hivyo ni lazima mji mkuu wa B. mimi, bila shaka, sawa na sifuri, lakini Nakala wazi bracket zero kufungwa bracket sawa na B kwa sababu masharti, kama tuliona wiki iliyopita, ni safu, hivyo sisi ni kupata tabia ya kwanza kwa jambo hilo. Hivyo tena, kama mimi kuchapishwa Nakala wazi ya Mimi, mimi, kwa kweli, kupata tabia B. Na kwamba nadhifu, sawa? Mimi si kweli kuwa Nakala wazi I. Hiyo si moja ya vigezo mimi kuweka au kuanzishwa, lakini unaweza magazeti nje jeshi lote la mambo kama Ningependa. Lakini hebu hoja kwa njia ya. Kama Nakala wazi mimi ni mkubwa kuliko A na Nakala wazi mimi ni chini ya au sawa na Z, wazi kwamba ni kweli kwa sababu tuna B. mji mkuu wa mimi nina kwenda kukimbia baadhi amri juu yake. Tuliona kwamba math wiki iliyopita, hivyo tutaweza kuchukua nafasi ya kwamba kwa kazi sahihi kulingana na Angalia 50. Haya braces curly, moja kwanza ilionyesha kwamba nilikuwa exiting kama hali, moja ya pili ilionyesha kwamba mimi nina exiting kwa kitanzi. Na hivyo sasa wakati mimi kugonga Next, tutaweza kuona tuko nyuma katika kwa kitanzi tena. Tunakwenda kupitia kwa kitanzi tena. Hebu kweli hatua katika pili iteration ya kwa kitanzi na aina info na wananchi. Hivyo sisi ni katika iteration pili wetu kwa kitanzi. Mimi ni sawa na 1, ambayo sisi kutarajia. N sawa na 6, ambayo sisi kutarajia. Muhimu ni sawa na 3, ambayo sisi kutarajia. Na Nakala wazi, utaona, sawa na EARFOO sasa, si BARFOO tena kwa sababu katika iteration yetu ya awali, B mara iliyopita katika mji mkuu wa E. Hivyo sisi ni juu ya kwa kukutana na tatizo, hivyo hii ni wapi tunakwenda kwa kupiga mbizi katika debugging. Lakini je, mtu yeyote una maswali yoyote juu ya nini tumefanya hadi sasa? Ajabu. Hivyo sisi ni juu ya kutekeleza hii kama hali, Nakala wazi bracket mimi kufungwa bracket zaidi ya A na Nakala wazi mimi chini ya au sawa na Z. Lakini kabla ya Mimi kwenda katika kwamba, kwa sababu hii ni ambapo Mimi najua kosa langu ni, nataka uhakika nje Nakala wazi ya I. Hivyo hebu kuweka magazeti nje. Ni gani sawa tabia ya A, ili inaonekana hivyo mbali, wote ni vizuri na nzuri. Hivyo natarajia mstari huu kwa mantiki yangu, line hii inapaswa kuwa ya kweli. Ni barua ya mji mkuu. Lakini kama mimi hit n, sisi kutambua kwamba hii line, kwa kweli, hakuwa nitafanya. Mimi akaruka chini ya mwingine kama. Kwa nini kwamba kutokea? Mwanafunzi: Kwa sababu una hali yako Nakala wazi ni zaidi kuliko A, si sawa au zaidi kuliko. JASON HIRSCHHORN: Kwa hiyo mimi alikuwa na maandishi yangu wazi Mimi ni mkubwa kuliko, si zaidi kuliko au sawa na. Hivyo ni wazi, mji mkuu wa A hakuwa kusababisha hii kama hali, na sisi alifanya si hatua ndani yake, na sisi alifanya si kufanya mabadiliko muhimu. Hivyo hiyo ni, kwa kweli. I figured nje ya mdudu yangu. Mimi naweza kurudi nyuma katika chanzo faili yangu, mabadiliko hayo, na taarifa hiyo na kukimbia Angalia 50 tena. Lakini tutaweza kuona, kwa ajili ya ufundishaji ya ajili, kama mimi kuendelea. mwingine kama hana kutekeleza aidha, lakini nini badala sawa na ni amri kwamba haina mabadiliko. Hivyo si iliyopita wakati wote, na kama mimi magazeti Nakala wazi hapa, tutaweza kuona kwenda njia ya kuwa kwa kitanzi hakufanya hivyo, kwa kweli, kubadili tabia ya kuwa pili wakati wote. Bado mji mkuu wa A. Hivyo tena, sisi debugged makosa yetu. Tumegundua kwamba kulikuwa na baadhi mantiki kukosa. Na sisi debugged ni kabla ya muda kabla ya kweli utekelezaji kwamba line, lakini ingekuwa niliona alikuwa sisi tu hit Next na kuruka kwa kuwa mwingine kama, hiyo ina maana kwamba kama hali si kweli. Hatukuwa, kwa kweli, kupata matokeo ya sisi ilivyotarajiwa. Hivyo basi sisi wangeweza ilisababisha, alikuwa sisi haikuwa hivyo wajanja, kuangalia kwamba kama hali na kuangalia kama, kwa kweli, hali yetu lazima kutathmini kwa kweli katika hali ya sasa. Hayo ni yote kwa debugging mpango huu. Je, mtu yeyote una maswali yoyote? Ni amri gani mimi kugonga kwa kuacha GDB? Swali: Na basi mimi itabidi ilisababisha, kuacha anyway? Ndiyo au hapana. Mimi itabidi hit ndiyo, na mimi itabidi kuacha GDB. Ili kwamba ilikuwa primer haraka GDB. Kwa kweli, katika mazingira ya kweli, Nilifanya hivyo katika saa za ofisi. Mimi GDBed mpango huu saa ileile masaa ya ofisi na mwanafunzi. Na kama sisi kurudi nyuma kwa amri tuliona kabla ya, sisi kutumika kuvunja kuu, kwanza kitu sisi alivyofanya. Tulikuwa kukimbia na hoja mstari amri, Jambo la pili sisi alivyofanya. Tulikuwa ijayo mengi kwa hoja kwetu kwa njia ya mistari. Na tena, short version ya pili ni n. Hiyo ni katika mabano katika kijivu juu ya slide. Sisi hakuwa na kutumia hatua, lakini hatukuwa lazima haja ya kwa kesi hii. Lakini tunaweza kutumia katika kidogo baadaye juu ya leo kama sisi ni debugging, kwa mfano, binary ya utafutaji wakati binary kutafuta ni kuitwa katika tofauti kazi lakini kuna baadhi makosa nayo. Tunakwenda kutaka hatua katika wito wa search binary na kweli Debug yake. Orodha ya hatukuwa kutumia aidha kwa sababu tulikuwa na hisia nzuri ya kanuni zetu, lakini kama mimi hakuwa wanataka kupata hisia ya kile code mimi ilikuwa karibu, mimi nilikuwa tu kutumia orodha. Magazeti sisi kutumika, info wenyeji sisi kutumika. Kuendelea sisi hakuwa na haja ya kutumia katika hii kesi, wala hakuwa sisi haja ya kutumia afya, lakini sisi alifanya matumizi kujiondoa. Tena, amri hizi 10, mazoezi yao. Kama wewe kuelewa amri hizi 10, unapaswa kuweka kwa debugging yoyote kutoa kwa GDB. Hivyo sisi ni juu ya kwenda, tena, crux ya sehemu leo, kwenda juu haya kuchagua na kutafuta algorithms. Kabla ya sisi kufanya hivyo, tena, maswali yoyote, maoni, wasiwasi kwa GDB? Hivyo ni kila mtu kwenda kutumia GDB badala ya printf? Basi kila mtu, kwa ajili ya milele ya, kila mtu ni wakitikisa vichwa vyao kichwa haki yao ya sasa, hivyo mimi kuona wewe katika masaa ya ofisi na TFS wote kuona na wao itabidi kusema, nionyeshe jinsi ya kutumia GDB, na wewe utakuwa na uwezo kuwaonyesha, sawa? Aina ya? Labda hopefully. Baridi. Hivyo sisi ni kwenda kuhamia katika kuchagua na kutafuta. Utaona Nina orodha tayari yamepangwa kwa ajili yetu, lakini kwamba si kwenda kuwa kesi daima. Hivyo katika kuweka tatizo vipimo kwa ajili ya kuweka tatizo tatu, una kaptula kwamba unaweza kuangalia, na ni kweli anauliza wewe kuangalia kaptula hizo. Pia katika hotuba wiki iliyopita, tulikwenda juu ya mengi ya algorithms haya, hivyo mimi nina si kwenda kutumia wakati katika darasa kwenda juu ya algorithms haya tena au kuchora picha kwa namna gani hawa algorithms kazi. Tena, kwamba taarifa unaweza kuangalia upya hotuba, au kwamba taarifa ni alitekwa outstandingly juu ya kaptula kwa ajili ya utafutaji haya, yote ya ambazo zinapatikana katika cs50.net. Hivyo badala yake, nini tunakwenda kwa kufanya ni kuandika programu hizi. Sisi kuwa na akili, mfano wa akili, ya jinsi ya kazi, na hivyo nini tunakwenda kufanya ni kanuni yao kwa kweli. Tunakwenda kugeuka kuwa mfano wa kuigwa wa akili, picha kwamba, kama wewe, katika halisi code. Na kama ungekuwa kuchanganyikiwa kidogo au hazy juu ya mfano wa akili, mimi kabisa kuelewa. Sisi siyo kweli kwenda kuruka na kanuni mara moja. Hivyo wakati hii haraka katika slide hii anauliza ninyi na kanuni search binary, na kweli, toleo la usioisha ya search binary, Jambo la kwanza mimi kweli wanataka kufanya ni kuandika baadhi ya pseudocode. Hivyo kuwa na mtindo huu wa akili ya jinsi ya binary kazi search. Kuchukua karatasi kama una moja kwa urahisi, au kufungua Nakala mhariri, na Ningependa kila mtu kuandika. Kuchukua dakika nne kuandika pseudocode kwa ajili ya kutafuta binary. Tena, kufikiri juu ya kwamba mfano akili. Mimi itabidi kuja karibu kama una maswali na tunaweza kuchora picha nje. Lakini kwanza, kabla ya kuanza programu, Ningependa kuandika pseudocode kwa ajili ya kutafuta binary hivyo wakati sisi kupiga mbizi katika, tuna baadhi ya mwelekeo kama ambapo sisi lazima kichwa. STUDENT: Je, sisi kudhani safu ya maadili sisi kupata tayari yamepangwa? JASON HIRSCHHORN: Hivyo kwa ajili ya kutafuta binary kazi - swali bora - wewe kuchukua katika sorted safu ya maadili. Hivyo kudhani itakuwa kazi. Tutaweza kwenda nyuma slide hii. Utaona katika zambarau kazi tamko ni bool binary_search int thamani, maadili int, int n. Hii inapaswa kuangalia familiar kama wameweza tayari ufanyike au kujipatia yako mikono chafu na kuweka tatizo. Lakini hiyo ni kazi tamko yako. Tena, lazima haja ya kuwa na wasiwasi kuhusu kiasi kwamba katika wakati huu. Kile kwa kweli nataka wewe kufanya ni kuchukua dakika nne kwa pseudocode binary kutafuta, na kisha tutaweza kwenda juu ya kwamba kama kikundi. Nami kuja karibu. Kama una maswali, kujisikia bure kunyanyua mkono wako. Kwa nini wewe kuchukua dakika mbili zaidi kumaliza up pseudocode? Najua hii inaweza kuonekana ujinga kwamba sisi ni matumizi ya muda sana juu ya kitu ambacho si hata kweli katika C, lakini hasa kwa ajili ya haya zaidi algorithms changamoto na tatizo seti kwamba sisi kuwa na kufikiri, kuanzia mwaka pseudocode si hofu kuhusu syntax, tu hofu juu ya mantiki, ni incredibly kusaidia. Na kwa njia hiyo, wewe si kutatua mbili matatizo incredibly vigumu kwa mara moja. Wewe ni kulenga tu juu ya mantiki, na basi hoja katika syntax. OK. Hebu kuanza kwenda kwa pseudocode. Nimeandika hapa, binary search pseudocode. Tutaweza kuandika hii juu ya bodi pamoja. Au mimi itabidi kuandika na wewe utakuwa kutoa mimi papo mimi haja. Basi unaweza mtu yeyote nipe kwanza mstari wa pseudocode ninyi aliandika kwa ajili ya kutafuta binary? Ndiyo, Annie? STUDENT: Wakati urefu wa orodha ni kubwa kuliko sufuri. JASON HIRSCHHORN: Wakati urefu ya orodha kubwa kuliko sufuri. Na tena, tunaona baadhi C-kuangalia mambo syntactical hapa. Lakini zaidi ya hii ni katika lugha ya Kiingereza. Je, mtu yeyote kuwa na line yoyote kuweka kabla ya hii katika wao pseudo-code? Mwanafunzi: Kupata safu ya yamepangwa idadi. JASON HIRSCHHORN: You aliandika "kupata safu ya idadi sorted. "Per kazi tamko, tutaweza kuwa na kupita safu ya idadi yamepangwa. Mwanafunzi: [inaudible]. JASON HIRSCHHORN: Hivyo sisi kuwa na hiyo. Lakini ndiyo, kama sisi hawakuwa na kwamba, sisi bila haja ya kutatua safu yetu ya idadi, kwa sababu search binary kazi tu juu ya arrays yamepangwa. Hivyo wakati urefu wa orodha ni sawa na sifuri, mimi nina kwenda kuweka katika baadhi braces curly kufanya ni kuangalia kidogo zaidi kama C. Lakini wakati, inaonekana ramani kwenye kitanzi wakati, hivyo ndani ya wakati huu kitanzi nini tunahitaji kufanya kwa ajili ya kutafuta binary? Mtu mwingine ambaye si mimi kutokana na kujibu bado lakini ambaye aliandika hii? STUDENT: Go to katikati ya orodha. JASON HIRSCHHORN: Tom. Kwenda katikati ya orodha. Na swali ifuatavyo-up, nini tunafanya mara moja tuko katika katikati ya orodha? STUDENT: Je, kuangalia kama hiyo ni idadi wewe ni kuangalia kwa. JASON HIRSCHHORN: Excellent. Kwenda katikati ya orodha na kuangalia kama thamani yetu ni pale - ajabu. Je, mtu yeyote kuwa na kitu kingine chochote kwamba ilikuwa tofauti kuliko hii? Hiyo ni kweli kabisa. Jambo la kwanza sisi kufanya katika kutafuta binary ni kwenda katikati ya orodha na kuangalia kuona kama thamani yetu ni huko. Hivyo mimi kudhani kama thamani yetu ni huko, tunafanya nini? Mwanafunzi: Sisi kurudi zero [inaudible]. JASON HIRSCHHORN: Yeah, kama yetu thamani ni huko, sisi kupatikana. Ili tuweze kuwaambia baadhi ya njia, hata hivyo hii kazi inaelezwa, sisi tunasema user sisi kupatikana. Kama siyo huko, ingawa, kwamba ambapo hii anapata gumu. Hivyo kama si huko, mtu mwingine ambaye alikuwa akifanya kazi ya kutafuta binary au ina wazo sasa, tunafanya nini? STUDENT: Swali. JASON HIRSCHHORN: Ndiyo? STUDENT: Je, safu tayari yamepangwa? JASON HIRSCHHORN: Ndiyo, sisi ni kuchukua safu tayari yamepangwa. STUDENT: Hivyo basi una kuangalia kama thamani kwamba unaweza kuona ni zaidi ya thamani kwamba unataka, unaweza hoja katikati ya nusu nyingine. JASON HIRSCHHORN: Hivyo kama katikati ya orodha ni zaidi kuliko yale sisi ni kutafuta, basi hatuna nini? Sisi hoja wapi? STUDENT: Unataka hoja ya nusu ya orodha na idadi ya chini zaidi ya hiyo. JASON HIRSCHHORN: Hivyo tutaweza wito kwamba upande wa kushoto. Hivyo kama katikati ni mkubwa, tunaweza kutafuta kushoto nusu ya orodha. Na kisha kwa search, nini wala maana na search? Mwanafunzi: [inaudible]. JASON HIRSCHHORN: Sisi kwenda katikati. Sisi kwa kweli kurudia jambo hili. Sisi kurudi nyuma kupitia wakati wetu kitanzi. Mimi nitakupa moja mwisho - mwingine, kama, katikati ni kidogo kuliko kile hatuna, tunafanya nini hapa? STUDENT: Go to haki. JASON HIRSCHHORN: Search haki. Hii inaonekana ni nzuri, lakini haina mtu yeyote kuwa na chochote kwamba sisi inaweza kuwa kukosa au kitu kingine chochote kwamba kuweka katika yako pseudo-code? Hivyo hii ni nini sisi hadi sasa. Wakati urefu wa orodha ni kubwa kuliko sifuri, sisi ni kwenda katikati ya orodha na kuangalia kama thamani yetu ni huko. Kama katikati ni mkubwa, tunakwenda kutafuta kushoto, mwingine kama katikati ni chini, tunakwenda kutafuta haki. Hivyo tumekuwa wote walikuwa baadhi uzoefu na suala sisi kutumia katika sayansi ya kompyuta na zana tuna. Lakini utasikia tayari taarifa tulikuwa akizungumza katika Kiingereza, lakini sisi kupatikana mambo mengi ambayo walionekana ramani kwenye zana tuna katika chombo yetu coding kit. Hivyo haki mbali bat, sisi siyo kwenda kwa kweli ya kificho bado. Tunaona nini hapa katika lugha ya Kiingereza kuwa ramani juu ya mambo tunaweza kuandika katika C? STUDENT: Wakati. JASON HIRSCHHORN: Wakati. Hivyo wakati haki hii hapa ramani juu ya nini? Mwanafunzi: kitanzi wakati. JASON HIRSCHHORN: kitanzi wakati? Au pengine, kwa ujumla zaidi, kitanzi. Tunataka kufanya kitu tena na tena. Hivyo sisi ni kwenda na kanuni kitanzi. Na sisi tayari kujua, kwa sababu tumefanya hii michache mara na sisi na mengi ya mifano huko nje, jinsi kweli kuandika ripoti hii kwa kitanzi. Hivyo kwamba wanapaswa kuwa na pretty rahisi. Tunapaswa kuwa na uwezo wa kupata kwamba kuanza pretty haraka. Ni kitu gani tunaona katika hapa? Gani nyingine miundo syntaxes, mambo kwamba sisi ni ukoo na katika C, kufanya sisi tayari kuwa na hisia za Kulingana na mbali ya maneno sisi kutumika? Ndiyo, Anna? [Inaudible] tu kidding. Anna, kwenda mbele. STUDENT: Kama na mwingine. JASON HIRSCHHORN: Kama na mwingine - papa hapa. Basi je, wale kuangalia kama? Mwanafunzi: An kama taarifa mwingine. JASON HIRSCHHORN: Yeah, masharti, right? Hivyo tutaweza pengine haja ya kuandika baadhi ya masharti. Na tena, ingawa labda utata katika kwanza, sisi ujumla kuwa na hisia sasa ya jinsi ya kuandika hali na syntax kwa masharti. Na kama sisi kufanya hivyo, sisi tu kuangalia up syntax kwa masharti, kata na kuweka kwamba, kwa sababu tunajua haja hali hapa. Yoyote na mambo mengine tunaona kwamba ramani kwenye mambo tupate haja ya kufanya katika C? Yeah, Aleha? STUDENT: Hii inaweza kuwa wazi, kwa kuangalia tu kama thamani sawa na kitu. JASON HIRSCHHORN: Hivyo ni jinsi gani sisi kuangalia na - ili kwenda katikati ya orodha na kuangalia kama thamani yetu ni huko? Je, sisi kufanya hivyo katika C? Nini syntax kwa kuwa? Mwanafunzi: Usawa, sawa. JASON HIRSCHHORN: Usawa, sawa. Hivyo hii kuangalia pengine ni kwenda kuwa sawa, sawa. Hivyo tutaweza kujua sisi haja ya kuwa mahali fulani. Na kwa kweli, tu katika kuandika hayo, tunaona yale mambo mengine. Tunakwenda kufanya baadhi ya operators kulinganisha huko - ajabu. Hivyo ni kweli inaonekana kama, kwa kubwa, sisi si imeandikwa a neno la C code bado. Lakini tulipata mfano akili chini kupitia mihadhara na kaptula hizo. Tuliandika pseudo-code kama kikundi. Na tayari, tuna 80% kama si 90% ya nini tunahitaji kufanya. Sasa, sisi tu haja ya na kanuni yake, ambayo tena, ni zisizo yasiyo na maana tatizo la kutatua. Lakini angalau sisi ni kukwama kwa mantiki. Angalau sasa wakati sisi kwenda masaa ya ofisi, Naweza kusema, Mimi najua kile haja kufanya, lakini unaweza kuwakumbusha yangu ya syntax? Au hata kama masaa ya ofisi ni inaishi, wewe unaweza Google kwa syntax, badala kuliko kuwa kukwama juu ya mantiki. Na tena, badala ya kujaribu kutatua mantiki na matatizo syntax wote mara moja, mara nyingi ni bora zaidi kwa kuvunja hizo mbili matatizo ngumu mbali katika mbili zaidi ndio manageable na kufanya pseudo-code kwanza na kisha code katika C. Basi hebu angalia nini mimi kwa Pseudo-code kabla ya muda. Wakati urefu wa orodha ni kubwa kuliko sifuri, kuangalia katikati ya orodha. Kama idadi kupatikana akarudi kweli, mwingine kama idadi ya juu, tafuta kushoto. Mwingine kama idadi ndogo, tafuta haki, kurudi uongo. Hivyo kwamba inaonekana karibu kufanana kama si karibu kufanana na kile sisi aliandika. Kwa kweli, Tom, nini alisema kwanza, kuvunja katikati ya orodha na kama Idadi ya kupatikana ndani ya kauli mbili ni nini hasa mimi. Mimi pamoja nao huko. Mimi lazima tumesikia mara ya kwanza. Hivyo kwamba ni Pseudo-code tuna. Kama unataka sasa, sorry, kwenda nyuma na tatizo yetu ya awali. Hebu code binary.c. Hivyo kutekeleza toleo usioisha ya search binary kutumia zifuatazo kazi tamko hilo. Na huna haja ya nakala chini bado tu. Mimi nina kweli kwenda kufungua up haki hapa binary.c. Kwa hiyo, kuna kazi tamko katikati ya screen. Na utaona mimi alichukua pseudo-code kutoka pande yangu, lakini karibu sawa kwa nini sisi aliandika, na kuweka kwamba katika kwa ajili yenu. Hivyo sasa, hebu kuchukua muda wa dakika tano na kanuni ya kazi hii. Na tena, kama una maswali yoyote, kunyanyua mikono yako, basi mimi kujua, mimi itabidi kuja karibu. Mwanafunzi: [inaudible]. JASON HIRSCHHORN: Kwa hiyo mimi alichukua binary search ufafanuzi katika juu, juu ya mstari 12. Hiyo ni nini I got kwa slide yangu. Na kisha haya yote Pseudo-code I just nakala na pasted kutoka slide, pseudo-code slide. Mimi bado si kusikia [inaudible]. Hivyo kama una kumaliza yako utekelezaji, nataka kuangalia ni. Mimi yaliyopelekwa ninyi helpers.h file mapema katika darasa hili. Na itakuwa inapatikana online kama vile kwa shusha kwa watu kuangalia wakati huu sehemu kuchelewa. Na mimi tu kutumika usambazaji generic kanuni kutoka pset3. Hivyo mimi alichukua find.C, matumizi helpers.h faili yangu badala ya helpers.h file hiyo kutolewa katika usambazaji code. Na mimi alikuwa na kufanya mabadiliko ya mtu mwingine katika find.C badala ya wito tu tu search, piga binary_search. Hivyo kama unataka mtihani code yako, kujua kwamba ni jinsi ya kufanya hivyo. Kwa kweli, wakati tutarusha kanuni hii sasa hivi, mimi tu alifanya nakala ya pset3 directory yangu, tena, walibadilishana nje files wasaidizi na kisha alifanya kwamba mabadiliko katika find.C kuwaita binary_search badala ya kutafuta. JASON HIRSCHHORN: Ndiyo. Una swali? Mwanafunzi: Nevermind. JASON HIRSCHHORN: Hakuna wasiwasi. Naam, hebu kuanza. Sisi Kanuni hii kama kikundi. Mtu mwingine note. Tena, hii ni, inaweza kwa urahisi walibadilishana kwa ajili ya kuweka tatizo tatu. Nina helpers.h faili yangu ambayo, badala kuliko helpers.h sisi ni kupewa, asema binary search, Bubble aina, na uteuzi aina. Na katika find.c utasikia taarifa juu ya line, nini ni kwamba, line 68, sisi wito binary kutafuta badala ya search. Hivyo tena, kanuni ambayo inapatikana online au kificho kwamba wewe ni kujenga sasa hivi inaweza kwa urahisi walibadilishana kwa ajili ya p kuweka 3 ya kuangalia hilo. Lakini kwanza, hebu Code Search binary. Kazi yetu tamko, sisi kurudi bool. Sisi kuchukua integer aitwaye thamani. Sisi kuchukua safu ya integers aitwaye maadili, na sisi kuchukua n kuwa na ukubwa wa safu. On line 10, hapa, nina mkali ni pamoja na stdbool.h. Je, mtu yeyote kujua kwa nini kwamba huko? Hivyo je, hiyo mstari wa kanuni nini? Mwanafunzi: Ni utapata kutumia aina bool kurudi. JASON HIRSCHHORN: Hasa. STUDENT: Au ni maktaba ambayo inaruhusu kutumia aina bool kurudi. JASON HIRSCHHORN: Hivyo mkali ni pamoja na stdbool.h line anitiaye baadhi ufafanuzi na maazimio kwa ajili ya mambo kwamba mimi kuruhusiwa kutumia katika maktaba hii. Hivyo miongoni mwa wale ni kusema kwamba kuna aina hii inaitwa bool, na inaweza kuwa kweli au uongo. Hivyo kwamba ni nini kwamba line gani. Na kama mimi hawakuwa na kwamba line, napenda kupata shida kwa kuandika hii neno sahihi hapa, bool, papo hapo. Hasa haki. Basi, mimi haja ya kuwa katika kanuni hii. OK. Hivyo hii, tena, ni iterative version, si moja ya kujirudia. Hivyo basi sisi kuanza. Hebu kuanza na hii ya kwanza mstari wa Pseudo code. Na hopefully, sisi - au si hopefully. Sisi ni kwenda kuzunguka chumba. Tutaweza kwenda mstari kwa mstari, na mimi itasaidia takwimu nje line kwamba tunahitaji kuandika kwanza. Hivyo wakati urefu wa orodha ni kubwa kuliko sufuri. Hebu kuanza mbele. Nini line lazima mimi kuandika hapa, katika kanuni? STUDENT: Wakati mabano n, ni mkubwa kuliko 0. JASON HIRSCHHORN: Wakati n ni kubwa kuliko 0. Hivyo n ni ukubwa wa orodha, na sisi ni kuangalia kama - [INTERPOSING SAUTI] JASON HIRSCHHORN: - sorry? STUDENT: Je, tunajua kwamba n ni ukubwa wa orodha? JASON HIRSCHHORN: Sorry. Kwa pset vipimo, tafuta na aina Kazi unahitaji kuandika, n ni ukubwa wa orodha. I forgot kueleza kwamba hapa. Lakini ndiyo. n ni ukubwa wa orodha, katika kesi hii. Hivyo wakati n, ni mkubwa kuliko 0. OK. Ili kuthibitisha kidogo matatizo ingawa, kama mambo kwenda juu. Kwa sababu tutaendelea kujua ukubwa wa orodha katika hii kazi, lakini kusema sisi kuanza na safu ya 5 integers. Na sisi kwenda kwa njia na tumekuwa sasa dhiki ni chini ya safu ya 2 integers. Ambayo 2 integers ni kwamba? ukubwa ni 2 sasa kwamba tunataka kuangalia, lakini ambayo 2 ni kwamba? Je, hiyo mantiki, swali hilo? OK. Mimi itabidi kuuliza tena. Hivyo sisi kuanza mbali na safu hii ya 5 integers, na n sawa na 5, sawa? Tutaweza kukimbia kupitia hapa. tutaweza pengine mabadiliko ya kawaida, haki, kama mambo kwenda juu. Ambayo ni kile sisi kusema tunataka kufanya. Hatutaki kutafuta kitu full tena. Hivyo kusema sisi mabadiliko hayo kwa 2. Sisi kuchukua nusu orodha hiyo isiyo ya kawaida. Hivyo tu kuchukua 2. Hivyo sasa n sawa na 2. Mimi kuomba msamaha kwa maskini kavu kufuta kalamu. Haki? Na sisi ni kutafuta njia ya orodha tena pamoja na orodha ya ukubwa 2. Naam, safu yetu ni bado ya kawaida 5. Tunasema tu wanataka kutafuta matangazo ya 2 ndani yake. Hivyo ambayo 2 matangazo ni hayo? Je, hiyo mantiki? Je, wao ni wa kushoto 2 matangazo? Je, wao ni haki 2 matangazo? Je, wao ni katikati 2 matangazo? Tumevunja tatizo chini, lakini sisi kweli hawajui ambayo ni sehemu ya tatizo bado tuko kuangalia, tu kwa kuwa hizi vigezo 2. Kwa hiyo, tunahitaji kidogo kisha zaidi, wakati n, ni mkubwa kuliko 0. Tunahitaji kujua ambapo kwamba n ni katika safu yetu halisi. Hivyo haina mtu yeyote kuwa na mabadiliko ya mstari huu? Zaidi ya mstari huu ni sahihi kabisa. Je, kuna Aidha mwingine? Je, sisi kubadilishana kitu nje kwa n kwa kufanya line hii kidogo bora? Mm-hm? STUDENT: Je, unaweza initialize variable kama urefu wa n kwamba utakuwa kisha kutumika baadaye katika kazi? JASON HIRSCHHORN: Kwa hiyo initialize urefu kutofautiana kwa n, na sisi kutumia baadaye? Lakini basi sisi tu update urefu na sisi bado kukimbia katika tatizo hili ambapo sisi kupunguza urefu wa tatizo letu, lakini sisi kamwe kujua wapi, kwa kweli, kwamba urefu ramani kwenye. STUDENT: Je, si kwamba kwenda kutokea baadaye wakati wewe kusema, tafuta kushoto, kutafuta haki? Wewe ni kwenda kwa tofauti eneo la yako - JASON HIRSCHHORN: Sisi ni kwenda katika eneo hilo, lakini jinsi gani tunajua ambayo ni kwenda? Kama sisi tu na safu hii na n, ni jinsi gani sisi kujua wapi kwenda katika safu. Katika nyuma, ndiyo? Mwanafunzi: Je, una, kama, chini ya amefungwa na juu amefungwa variable au kitu kama hicho? JASON HIRSCHHORN: OK. Hivyo hii ni wazo mwingine. Badala ya kuweka wimbo wa tu kawaida, sisi kuweka wimbo wa chini na juu amefungwa kutofautiana. Hivyo ni jinsi gani sisi mahesabu ya kawaida kutoka chini amefungwa na juu amefungwa? [INTERPOSING SAUTI] JASON HIRSCHHORN: Toa. Na pia kuweka wimbo wa chini amefungwa na juu amefungwa hebu kujua, ni sisi kutafuta hizi mbili? Je, sisi kutafuta hizi mbili juu ya hapa? Je, sisi kutafuta katikati mbili? Pengine si katikati mbili, kwa sababu hii, kwa kweli, ni search binary. Lakini sasa tutaweza kuwa na uwezo wa kupata ukubwa, lakini pia mipaka ya safu. Katika kiini, kama tuna kubwa yetu kitabu cha simu, sisi mpasuko ni katika nusu. Sasa tunajua ambapo kuwa ndogo kitabu cha simu ni. Lakini sisi siyo kweli ripping kitabu cha simu katika nusu. Bado tunahitaji kujua wapi mipaka mpya ya tatizo letu ni. Je, mtu yeyote una maswali yoyote kuhusu hilo? Ndiyo? Mwanafunzi: Je, ni kazi kwa kujenga variable, i, kwamba basi tu kuhama nafasi ya i jamaa na wake nafasi ya sasa, na urefu, n? JASON HIRSCHHORN: Na nini ni i? STUDENT: Kama i kuwa kama aina ya - Kama ungependa initialize i kuwa nafasi ya katikati ya safu. Na kisha, kama thamani katika nafasi i katika katikati ya safu katika kupatikana kwa kuwa chini ya thamani unahitaji, i sasa inakuwa urefu wa safu, pamoja na thamani ya i kugawanywa na 2. Kama, kuona, kuhama i - JASON HIRSCHHORN: Haki. Mwanafunzi: - hadi - JASON HIRSCHHORN: Kwa hiyo mimi ni karibu chanya ambayo kazi. Lakini jambo kuwa, unahitaji mbili vipande vya habari hapa. Unaweza kufanya hivyo kwa mwanzo na mwisho, au unaweza kufanya hivyo kwa kawaida, na kisha baadhi marker. Lakini huna haja ya vipande viwili wa habari hapa. Huwezi kupata kwa pamoja na moja tu. Je, kwamba inafanya hisia? Hivyo sisi ni kwenda kupitia, na sisi ni kwenda kufanya [inaudible] na kujenga baadhi ya kalamu. Hivyo what'd kuandika katika kanuni yako? Mwanafunzi: mimi tu alisema int amefungwa moja ni sawa na 0. JASON HIRSCHHORN: Hebu piga kwamba int, mwanzo. Mwanafunzi: OK. JASON HIRSCHHORN: Kwamba inafanya maana zaidi kwa ajili yangu. Na? STUDENT: Mimi alisema, mimi nadhani, INT mwisho. JASON HIRSCHHORN: int mwisho. STUDENT: Nadhani, n minus 1, au kitu kama hicho. Kama, hiki mwisho. JASON HIRSCHHORN: Hivyo wewe aliandika, int mwanzo usawa 0, semicolon, na int mwisho sawa na n minus 1, semicolon. Hivyo kimsingi, nini sisi ni kufanya hapa, 0 nafasi ya kwanza. Na kama tunajua katika arrays, hawana kwenda hadi n, wao kwenda n minus 1. Hivyo tuna baadhi ya mipaka ya safu yetu. Na mipaka haya ya awali ya kutokea kwa kuwa mipaka ya awali ya tatizo letu. OK. Ili sauti nzuri. Basi, sisi kurudi nyuma kwa mstari huu, wakati urefu wa orodha ni kubwa kuliko 0, nini, badala ya n, lazima sisi kuweka katika hapa? Mwanafunzi: Andika kukomesha minus mwanzo. JASON HIRSCHHORN: Wakati kukomesha minus mwanzo, ni mkubwa kuliko 0? OK. Na tunaweza, kama sisi alitaka kufanya kidogo nicer, nini mwingine tunaweza kufanya? Kama tulitaka safi kanuni hii juu kidogo? Jinsi gani tunaweza kujikwamua 0? Hii ni swali style. Ni sahihi hivi sasa. Mwanafunzi: kukomesha haina mwanzo sawa? JASON HIRSCHHORN: Tunaweza kufanya nini? [INTERPOSING SAUTI] Mwanafunzi: Kukomesha ni zaidi? JASON HIRSCHHORN: Yeah. Tunaweza tu kufanya wakati kukomesha ni zaidi ya mwanzo. Haki. Sisi aliongeza mwanzo upande mwingine ya kwamba, na sisi got kuondoa 0. Hivyo hii inaonekana tu kidogo safi. OK. Hivyo, wakati urefu wa orodha ni 0, tuliandika kwamba, wakati kuishia ni mkubwa kuliko mwanzo. Sisi ni kwenda kuweka katika muhimu wetu braces curly, na kisha Jambo la kwanza tunataka kufanya ni kuangalia yao katika orodha kidogo. Wewe? Je, unaweza kunipa - STUDENT: Kama mabano thamani za mraba bracket - JASON HIRSCHHORN: Kama mabano thamani za mraba bracket. Mwanafunzi: kukomesha kugawanywa na 2. JASON HIRSCHHORN: Kukomesha? STUDENT: Mimi naona tatizo na yako - JASON HIRSCHHORN: OK. Naam, kuangalia katikati. Jinsi gani sisi kujua nini katikati ni? Yeah. Hivyo basi mimi kufuta kwamba code. Jinsi gani sisi kujua nini katikati ni? Katika kitu chochote, wakati una mwanzo na mwisho, jinsi gani unaweza kupata katikati? STUDENT: You wastani. STUDENT: Wewe kuongeza yao pamoja na kisha - JASON HIRSCHHORN: Kuongeza yao pamoja na basi? STUDENT: Na wastani wa. Kuigawanya kwa 2. JASON HIRSCHHORN: Kuongeza yao pamoja na kugawanya na 2. Hivyo int katikati ni sawa na? Tom, unaweza unipe? Mwanafunzi: Mwanzo pamoja na kuishia - JASON HIRSCHHORN: Mwanzo pamoja na mwisho. STUDENT: All, bracket, kugawanywa na 2. JASON HIRSCHHORN: All, katika mabano, kugawanywa na 2. Hivyo kwamba anatoa mimi katikati ya kitu chochote, ni sahihi? Mwanafunzi: Wewe pia haja ya pande zote it up. JASON HIRSCHHORN: Ni nini maana, mimi haja kwa pande zote it up? [INTERPOSING SAUTI] Mwanafunzi: Kwa sababu kama Ni isiyo ya kawaida posta, basi ni kama - JASON HIRSCHHORN: Naam, OK. Ili niweze pande zote it up. Lakini kama ni isiyo ya kawaida ya simu, 5, naweza kuchukua 1 mbali kutoka katikati. Au kama ni idadi hata, badala yake, hiyo kesi bora. Kama ni 4, sisi tu na 4, naweza kuchukua kwanza "katikati", quote, unquote au pili "katikati" moja. Aidha ingekuwa kazi kwa ajili ya kutafuta binary, hivyo mimi si kweli haja ya pande zote yake. Lakini kuna wengine jambo moja mimi haja ya kuangalia mstari huu. Sisi wanaweza kutambua ni bado, lakini tutaweza kuja nyuma yake. Kwa sababu line hii kwa kweli bado mahitaji ya kitu kingine moja. Lakini hadi sasa, tumekuwa imeandikwa mistari minne ya code. Sisi tumepewa mwanzo wetu na kuishia kalamu. Tuna wakati wetu kitanzi, ambayo ramani juu ya moja kwa moja pseudocode yetu. Sisi ni kuangalia katikati kwamba ramani moja kwa moja kwenye pseudocode yetu. Naweza kusema hii inakwenda katikati ya orodha, mstari huu wa kificho. Na kisha, kwa mara ya sisi kwenda katikati ya orodha, jambo la pili sisi haja ya kufanya ni kuangalia kama thamani yetu ni huko kwa pseudocode sisi aliandika mapema. Hivyo ni jinsi gani sisi kuangalia kama thamani yetu ni katikati ya orodha? You. Kwa nini si kufanya hili? STUDENT: Kama thamani wetu ni katikati ni sawa na chochote sisi kuweka - I mean sawa sawa na - JASON HIRSCHHORN: Ni - OK. STUDENT: Mimi nina uhakika nini variable sisi ni kuangalia kwa ingawa, ni kwa sababu - [INTERPOSING SAUTI] Mwanafunzi: [inaudible]. JASON HIRSCHHORN: Hasa. Kwa kazi tamko, sisi ni kuangalia kwa thamani. Hivyo sisi ni kwa ajili ya kutafuta thamani katika safu ya maadili. Basi, wewe ni sahihi kabisa. Utafanya, kama thamani paren wazi bracket katikati kufungwa bracket usawa sawa na thamani, na ndani kuna nini tunahitaji kufanya nini? Kama thamani wetu huko, nini Je, tunahitaji kufanya nini? [INTERPOSING SAUTI] Mwanafunzi: Kurudi sifuri. JASON HIRSCHHORN: Kurudi kweli. Mwanafunzi: Kurudi kweli. JASON HIRSCHHORN: Michael, nini mstari huu nini? Mwanafunzi: [inaudible] Mpango huo kukimbia mkondo wake, na kwamba ni juu, na wameweza nini unahitaji nini? JASON HIRSCHHORN: mpango au nini? Katika kesi hii? Mwanafunzi: kazi. JASON HIRSCHHORN: kazi. Na hivyo, kurudi chochote aitwaye na kumpa thamani, kweli. Hasa haki. Kuu. Nini kurudi aina kuu, Michael? Mwanafunzi: int, integer? JASON HIRSCHHORN: int, hasa. integer. Hiyo ilikuwa ni suala tu kuhakikisha nyie wamekuwa juu yake. Gani kurejea kawaida, kama mambo yote ni kazi vizuri? STUDENT: Zero. JASON HIRSCHHORN: Zero. Hasa haki. STUDENT: Kama hii tu anarudi kweli, hakuna habari wanapewa juu ya nini - Oh, hii ni kusema tu kwamba thamani ni ndani ya safu. JASON HIRSCHHORN: Hasa. Mpango huu ni si kutoa taarifa ya wapi hasa thamani ni. Ni tu kusema, ndiyo, tulikuta yake, au hakuna, sisi hakuwa na kupata hiyo. Hivyo kama idadi kupatikana, kurudi kweli. Vizuri, kwa kweli sisi tu alifanya kwamba kweli haraka na kwamba line moja ya kanuni. Kwa hiyo nitakuwa hoja kwamba mstari wa pseudocode. STUDENT: Je, si tunahitaji kubadili safu? Ni lazima kuwa na maadili, si thamani, sawa? JASON HIRSCHHORN: Sorry. Asante. STUDENT: Yeah. JASON HIRSCHHORN: line Hii lazima maadili. Hasa haki. OK. Hivyo tumekuwa inaonekana katika orodha katikati. Kama idadi kupatikana kurudi kweli. Kuendelea juu na pseudocode zetu, ikiwa katikati ni mkubwa, tafuta kushoto. Kwa hiyo mimi alikuwa katika hapa, kama idadi juu, tafuta kushoto. Constantine, unaweza kutoa mimi mstari huu wa kanuni? Mwanafunzi: Kama thamani ya katikati - JASON HIRSCHHORN: Hivyo kama thamani - kama paren wazi maadili bracket katikati karibu bracket - STUDENT: Je, ndogo kuliko thamani? JASON HIRSCHHORN: Je, chini ya. STUDENT: Chini ya thamani. JASON HIRSCHHORN: Thamani. Vizuri, kwa kweli, unataka kuangalia kama idadi - Sorry. Hii ni utata kidogo. Lakini mwingine kama idadi katika katikati ya orodha ni kubwa zaidi. STUDENT: Oh, OK. JASON HIRSCHHORN: Mimi itabidi mabadiliko hayo. Mwingine kama katikati ni ya juu, sisi unataka kutafuta wa kushoto, OK? Na tunafanya nini ndani ya hii kama hali? STUDENT: Je, mimi kufanya mabadiliko madogo kwa hali, mabadiliko hayo kwa mwingine kama? JASON HIRSCHHORN: Else kama? OK. Hivyo kanuni hii nitafanya sawa. Lakini jambo zuri kuhusu kutumia kama, mwingine kama, mwingine kama au kama mwingine kama, mwingine ina maana kwamba moja tu ya wale ni kwenda kuchunguzwa, si wote watatu kati yao, uwezekano. Na kwamba inafanya kidogo nicer kwenye kompyuta hiyo ni kuendesha programu yako. Hivyo [? Constantine,?] sisi ni ndani ya mstari huu, mwingine kama maadili, bracket katikati karibu bracket ni zaidi ya thamani. Kwa nini tunahitaji kufanya nini? Sisi haja ya kutafuta upande wa kushoto. Je, sisi kufanya hivyo? Mimi naenda kukupa mwanzo. Tuna mambo haya mawili aitwaye mwanzo na mwisho. Hivyo kinachohitajika kutokea mwanzo? Kama unataka kutafuta wa kushoto wa orodha, sisi kupata mwanzo wetu wa sasa. Tufanye nini haja ya kufanya hivyo? Mwanafunzi: Sisi kuweka mwanzo katikati pamoja na 1. JASON HIRSCHHORN: Hivyo kama sisi ni kutafuta kushoto? STUDENT: Sorry, minus katikati - hivyo mwisho itakuwa katikati minus 1 na mwanzo - JASON HIRSCHHORN: Na nini hutokea kwa mwanzo? Mwanafunzi: Ni anakaa huo. JASON HIRSCHHORN: Hivyo maana anakaa huo. Kama sisi ni kutafuta kushoto, sisi ni kutumia mwanzo huo - sahihi kabisa. Na kuishia? Sorry, ni nini kukomesha sawa tena? Mwanafunzi: minus Mashariki 1. JASON HIRSCHHORN: minus Mashariki 1. Sasa, kwa nini minus 1, si tu katikati? Mwanafunzi: katikati ni nje ya picha tayari, kwa sababu tulikuwa na checked kwamba ni nje? JASON HIRSCHHORN: Hiyo ni sahihi kabisa. katikati ni nje ya picha. Sisi tayari checked katikati. Hivyo hatutaki "katikati," quote unquote, kuendelea kuwa katika safu kwamba sisi ni kuangalia. Hivyo hii ni ya ajabu. Mwingine kama maadili bracket katikati ni mkubwa kuliko thamani ya kukomesha usawa minus katikati 1. Jeff, nini kuhusu line hii ya mwisho? Mwanafunzi: Else. Maadili katikati ni chini ya thamani? JASON HIRSCHHORN: Sisi itabidi wewe ni kunipa mwingine. Hivyo kama wewe si nipe - STUDENT: Hivyo basi mwanzo itakuwa katikati pamoja na 1. JASON HIRSCHHORN: Mwanzo usawa katikati plus 1, tena, kwa hiyo sababu kwamba Constantine alitupa mapema. Na mwisho, ambaye si kutokana na mimi mstari wa kanuni bado? Kurudi uongo, Aleha, nini wala sisi kuandika hapa? Mwanafunzi: Kurudi uongo. JASON HIRSCHHORN: Kurudi uongo. Na sisi haja ya kufanya hivyo, kwa sababu kama sisi si kupata hiyo, sisi haja ya kusema sisi hakuwa na kupata hiyo. Na sisi alisema sisi ni kwenda na kurudi bool, hivyo sisi dhahiri kuwa na kurudi bool mahali fulani. Hivyo basi kukimbia kanuni hii. Mimi nina kweli kwenda kwa - hivyo sisi ni katika terminal. Tutaweza wazi dirisha yetu. Hebu Matokeo yote. Sisi kupatikana kuna kosa moja. Kuna kosa juu ya line 15, inatarajiwa semicolon mwishoni mwa tamko hilo. Hivyo nini mimi kusahau? Mwanafunzi: semicolon. JASON HIRSCHHORN: semicolon haki hapa. Nadhani kwamba alikuwa Tom ya code. Hivyo Tom, [inaudible]. Just kidding. Hebu wala kufanya kila tena. STUDENT: Nini Dropbox directory tunapaswa kuwa katika hili? JASON HIRSCHHORN: Hivyo unaweza kuangalia tu kwa kidogo hii. Lakini tena, kama alitaka hoja hii kificho katika pset3 saraka yako ya kujaribu nje, kwamba ni nini mimi. Kama wewe utakuwa taarifa hapa - sorry, swali zuri. [? LS,?] Nina katika hapa find.c code kutoka wiki hii distro code. Nina helpers.h. Nina kufanya faili kwamba mimi kwa kweli mwisho kidogo ni pamoja na hizi mpya files sisi ni kuandika. Yote hayo code itakuwa inapatikana, si usambazaji kificho, lakini mpya Kufanya faili mpya helpers.h faili kuwa inapatikana online kwa download. Tena, hivyo wale ni codes ziada tuna. Hivyo kufanya kila, kwa mstari huu, hufanya kupata, binary, Bubble uteuzi - hufanya zote tatu wao na inaandaa katika hii kutekelezwa code kupata. Hivyo kwa ujumla, hatutaki kwa moja kwa moja check50. Tunataka kukimbia baadhi ya vipimo juu yetu wenyewe. Lakini tu ili tuweze kuharakisha hii kidogo, check50 2013 pset3.find itapita katika helpers.c-- my mbaya. Sina kwamba hivi sasa. Hivyo sisi ni kweli kwenda kukimbia kanuni kwa ajili ya kweli. Usage.find /, unajua kwamba maana yake ni nini? STUDENT: You haja ya pili mstari amri juu yake. JASON HIRSCHHORN: Mimi haja pili mstari amri. Na kwa vipimo, nahitaji kuingia nini sisi ni kuangalia kwa. Hivyo hebu angalia kwa 42. Tutaweza kuweka katika sorted, kwa sababu sisi si imeandikwa aina ya kazi bado - 42, 43, 44. Na Kudhibiti D hawakuona sindano katika haystack. Hiyo ni mbaya. Ni dhahiri huko. Hebu jaribu kitu kingine. Labda ni kwa sababu mimi kuweka mwanzoni. Hebu kufanya 41, 42, 43. Kuna sisi kwenda. Ni kupatikana. Hebu kuweka mwishoni sasa, tu ili tuweze kuwa na uhakika - 40, 41, 42. Je, si kupata sindano. Hivyo nilivyoeleza hili mapema. Kwa bahati mbaya, nilijua hii alikuwa anaenda kutokea. Lakini kwa ajili ya ufundishaji, ni vizuri kuchunguza yake. Haifanyi kazi. Kwa sababu fulani, haiwezi kupata hiyo. Sisi kujua nini huko, lakini sisi si kutafuta hiyo. Kwa hiyo, jambo moja tunaweza kufanya ni kwenda kwa njia ya GDB kupata hiyo, lakini haina mtu yeyote, bila ya kupitia GDB, na hisia ya ambapo sisi Star up? [? Madu? ?] STUDENT: Nadhani inaweza kuwa wakati kukomesha ni sawa na mwanzo, na ni moja tu-hiki orodha. Basi tu huacha badala yake ya kweli kuangalia ni. JASON HIRSCHHORN: Hiyo ni sahihi kabisa. Wakati mwisho sawa na mwanzo, kufanya sisi bado na hiki katika orodha yetu? STUDENT: Ndiyo. JASON HIRSCHHORN: Ndiyo, kwa kweli, sisi na moja na hiki moja tu. Na kwamba itakuwa zaidi uwezekano wa kutokea wakati, kwa kificho sisi majaribio, sisi ni katika mbele ya haystack au mwisho wa haystack. Hiyo ambapo mwanzo na mwisho ni kwenda sawa moja, na kutafuta binary. Hivyo katika kesi hizo mbili hakuwa na kazi, kwa sababu kuishia ni sawa na mwanzo. Lakini kama kuishia ni sawa na mwanzo, hii haina kitanzi wakati nitafanya? Haina. Na tunaweza kuwa checked kwamba tena kwa njia ya GDB. Hivyo ni jinsi gani sisi kurekebisha kanuni hii, kwa sababu wakati wakati kuishia ni sawa na mwanzo, sisi pia wanataka hii kitanzi wakati kukimbia. Basi nini fix tunaweza kufanya mstari 18? Mwanafunzi: [inaudible] ni mkubwa kuliko au sawa na. JASON HIRSCHHORN: Hasa haki. Wakati mwisho ni zaidi ya au sawa na mwanzo. Basi sasa, sisi kuhakikisha kupata kwamba kona kesi mwishoni. Na hebu angalia. Hebu kukimbia wakati huu moja zaidi. Hebu kufanya yote. Tena, itabidi tu kufuata pamoja hapa. Kupata 41 wakati huu. Kuweka tu thabiti. Kupata 42. Hebu kuweka mwanzoni - 42, 43, 44. Sisi kupatikana. Ili kwamba ilikuwa kweli mabadiliko ya sisi zinahitajika ili kufanya. Hiyo ilikuwa ni mengi ya coding sisi tu hivyo, binary search. Je, mtu yeyote una maswali yoyote kabla ya Mimi hoja juu ya ndani ya mistari tuliandika katika search binary au jinsi sisi figured nini hatukuwa kufikiri? Kabla ya sisi kusonga mbele, mimi pia wanataka kwa uhakika kuwa kwa kiasi kikubwa, sisi mapped yetu pseudo-code moja kwa moja kwenye kanuni zetu. Hatukuwa na kwamba jambo gumu kufikiri na mwanzo na mwisho. Lakini alikuwa na wewe si figured kwamba nje, ingekuwa imeandikwa pretty much kufanana code, ila kwa wale juu mistari miwili. Na basi ingekuwa wamebaini wakati alifanya hivyo katika hundi na kesi ambazo unahitaji kitu kingine. Hivyo hata kama wewe alimfuata wetu pseudo-code line kwa line, ungependa wameweza kujipatia wote lakini mistari miwili ya ya kificho unahitajika kuandika. Na ningependa kuwa tayari bet kwamba guys ingekuwa wote figured kwamba nje pretty haraka, kwamba unahitajika kwa kuweka aina fulani ya marker huko kufikiri nje ambapo walikuwa. Tena, ni nguvu ya kufanya Pseudo-code kabla ya muda. Hivyo tunaweza kufanya mantiki ya kwanza, na kisha tunaweza na wasiwasi juu ya syntax. Alikuwa sisi wamekuwa kuchanganyikiwa kuhusu mantiki wakati kujaribu kuandika kanuni hii katika C, tunataka waliopata wote messed up. Na kisha tunatarajia kuwa na kuuliza maswali kuhusu mantiki na syntax na meshing wote pamoja. Na tunataka waliopata waliopotea katika kile unaweza haraka kuwa vigumu sana tatizo. Basi hebu kuondoka sasa kwa uteuzi aina. Tuna muda wa dakika 20 wa kushoto. Hivyo nina hisia hatutakuwa na uwezo wa kupata njia zote za uteuzi aina na Bubble aina. Lakini hebu angalau kujaribu kumaliza uteuzi aina. Hivyo kutekeleza uteuzi aina kutumia zifuatazo kazi tamko hilo. Tena, hii ni kuchukuliwa kutoka kuweka tatizo vipimo. Maadili Int ni mabano, ni safu ya integers. Na int.n ni ukubwa wa kwamba safu. Uteuzi aina ni kwenda aina safu hii. Hivyo kwa mfano wetu wa akili ya uteuzi aina, sisi kuvuta - kwanza, sisi kupitia orodha ya kwanza wakati, kupata idadi ndogo, kuweka mwanzoni, kupata pili idadi ndogo ya, kuiweka katika nafasi ya pili kama tunataka aina ili kupaa. Mimi si kulazimisha wewe kuandika Pseudo-code hivi sasa. Lakini kabla ya sisi kufanya code kama darasa katika dakika tano, sisi ni kwenda kuandika pseudo-code hivyo tuna baadhi ya hisia ya wapi tunakwenda. Hivyo kujaribu kuandika pseudo-code juu yako mwenyewe. Na kisha kujaribu kugeuka kuwa pseudo-code katika kanuni. Tutafanya kwamba kama kundi kwa dakika tano. Na bila shaka, napenda kujua kama una maswali yoyote. Mwanafunzi: Hiyo ni? JASON HIRSCHHORN: Angalia jinsi ya mbali wanaweza kupata muda wa dakika mbili zaidi. Naelewa wewe si kuwa na uwezo wa kumaliza. Lakini tutakwenda juu ya hili kama kikundi. Wewe ni wote coding hivyo [inaudible], hivyo mimi nina pole kwa pause nini unafanya. Lakini hebu kwenda kwa njia hii kama kikundi. Na tena, tafuta binary, nyote kutoa yangu mmoja kama si mistari zaidi ya maadili. Asante kwa hilo. Tunakwenda kufanya kitu kimoja hapa, kanuni pamoja kama kundi. Hivyo uteuzi aina - wacha kuandika baadhi ya haraka pseudo-code. Kwa mfano akili, mtu anaweza kunipa mstari wa kwanza wa Pseudo-code, tafadhali? Je, mimi unataka kufanya nini? STUDENT: Wakati orodha ni nje ya utaratibu. JASON HIRSCHHORN: OK, wakati orodha ni nje ya utaratibu. Na nini maana "nje ya utaratibu?" STUDENT: Wakati [inaudible] haijawahi yamepangwa. JASON HIRSCHHORN: Wakati orodha ni nje ya utaratibu, tunafanya nini? Nipe mstari wa pili, tafadhali, Marcus. STUDENT: Hivyo kupata ijayo idadi ndogo ya. Hii itakuwa indented. JASON HIRSCHHORN: Hivyo kupata ijayo idadi ndogo. Na kisha mtu mwingine? Mara baada ya sisi kupata ijayo ndogo posta, tunafanya nini? Mimi nina kwenda kusema kupata idadi ndogo ya. Hiyo ni nini tunataka kufanya. Hivyo kupata idadi ndogo. Kisha tunafanya nini? Mwanafunzi: [inaudible] kwa mwanzo. JASON HIRSCHHORN: Sorry? Mwanafunzi: Mahali katika mwanzo wa orodha. JASON HIRSCHHORN: Kwa hiyo kuiweka katika mwanzo wa orodha. Na tunafanya nini kwa kitu kwamba alikuwa katika mwanzo ya orodha, sawa? Sisi ni overwriting kitu. Hivyo wapi sisi kuweka kwamba? Yeah, Anna? STUDENT wapi ndogo idadi ilikuwa? JASON HIRSHHORN: Hivyo kuweka mwanzo ya orodha ambapo idadi ndogo ya mara. Hivyo wakati orodha ni nje ya utaratibu, kupata idadi ndogo, mahali katika mwanzo wa orodha, kuweka mwanzo wa orodha ambapo idadi ndogo ya mara. Marcus, unaweza amerudia mstari huu wakati orodha ni nje ya utaratibu? Mwanafunzi: Wakati idadi ya si vyema? JASON HIRSHHORN: OK, hivyo ili kujua kwamba idadi si yamepangwa, je, sisi haja ya kufanya? Kiasi gani tunahitaji kwenda kwa njia ya orodha hii? Mwanafunzi: Kwa hiyo mimi nadhani kwa kitanzi, au wakati, wakati idadi checked ni chini ya ya urefu wa orodha? JASON HIRSHHORN: Sawa, hiyo ni nzuri. Nadhani misphrased swali langu vibaya. Mimi nilikuwa tu kujaribu kupata katika tunakwenda na kwenda kupitia orodha nzima. Hivyo wakati orodha ni nje ya utaratibu, kwa ajili yangu, ni vigumu ramani juu. Lakini kimsingi, kwamba ni jinsi gani Nadhani kuhusu hili. Kwenda kwa njia ya orodha nzima, kupata idadi ndogo ya, mahali katika mwanzo - kweli, wewe ni haki. Hebu kuweka wote wawili. Hivyo wakati orodha ni nje ya utaratibu, sisi haja ya kwenda kwa orodha nzima mara moja, kupata idadi ndogo ya, mahali katika mwanzo wa orodha, kuweka mwanzo wa orodha ambapo idadi ndogo ya mara, na kisha kama orodha ni bado nje ya utaratibu, tumekuwa got kwenda kwa njia hii mchakato tena, right? Hiyo ni kwa nini uteuzi aina, Big-O Runtime ya uteuzi aina, mtu yeyote? STUDENT: n mraba. JASON HIRSHHORN: n mraba. Kwa sababu kama Marcus na mimi tu barabara hapa, tunakwenda kuwa na kupitia orodha orodha idadi ya nyakati. Hivyo kwenda kwa njia ya kitu ya urefu n n idadi ya nyakati kwa kweli ni n mraba. Hivyo hii ni pseudocode yetu. Hii inaonekana ni nzuri sana. Je, mtu yeyote una maswali yoyote kuhusu pseudocode? Kwa sababu kwa kweli uteuzi aina lazima pengine kuja moja kwa moja, kanuni kutoka pseudocode. Kwa hiyo, maswali yoyote kuhusu mantiki ya pseudocode? Tafadhali kuuliza sasa. Uteuzi aina - wakati orodha ni nje ya utaratibu, sisi ni kwenda kwa njia hiyo na kupata ndogo kila wakati na kuiweka mbele. Hivyo wakati orodha ni nje ya utaratibu, unaweza mtu nipe mstari wa kanuni ambao hakunipa line ya maadili ya bado, tafadhali? Inaonekana kama nini? STUDENT: Hiyo ni kwa kitanzi. JASON HIRSHHORN: Inaonekana kama kwa kitanzi. OK, unaweza kunipa kwa kitanzi? Kwa - STUDENT: i Usawa 0. JASON HIRSHHORN: i au - nini sisi kukosa? Tufanye nini hapa hapa? Mwanafunzi: Int. JASON HIRSHHORN: Hasa. (Int i = 0; - STUDENT: i