PROFESA: Kwa hiyo ajenda kwa wiki hii, si mambo ambayo mengi. Lakini pengine sana, inasaidia sana na muhimu kwa nyie wiki hii. Lakini tunakwenda kutumia labda 15, Dakika 20 tu kwa haraka kuzungumza kuhusu orodha kiungo. Orodha kiungo ni kwenda kufunikwa juu ya jaribio. Hivyo labda itakuwa msaada sana kujifunza kidogo kuhusu nini kwamba ni. Tunakwenda kutumia kubwa Wengi wa kifungu cha leo kwenda juu Jaribio sifuri matatizo mazoezi. Na kisha tutaweza kuokoa labda 20, dakika 30 mwishoni kwa maswali yoyote kuenea mtu ana. Na kisha, mwisho dakika tano, mimi nina kwenda kutoa pampu up hotuba kwa jaribio. Nyie wote wanataka kuwa hapa kwa ajili hiyo. Kwa sababu ni kwenda kuwa na muda mzuri. Sawa, hivyo baadhi nyenzo kwenye orodha kiungo. Jinsi re kawaida muundo ni una kile kinachoitwa nodi, sawa? Una mambo haya kuitwa nodes, ambayo ni structs. Nitakwenda juu ya jinsi ya kujenga nodi katika slide ijayo. Lakini kimsingi wote wanaohusishwa orodha ni ni takwimu ambazo imekuwa strung pamoja kupitia kuyatumia. Na hivyo faida tuna ya kutumia orodha wanaohusishwa juu, pengine, kama safu, ni ukweli kwamba katika safu unahitaji moja contiguous kuzuia wa kumbukumbu zote katika sehemu moja, moja baada ya mwingine, ili kuwa na uwezo wa kuwa na kwamba. Wakati orodha wanaohusishwa, ungeweza na vipande random kidogo cha kumbukumbu duniani kompyuta yako strung pamoja na kuyatumia. Na kwa njia hii wanaweza kupata habari kuja moja baada ya mengine, baada ya nyingine bila wanaohitaji tu chunk kubwa ya kumbukumbu katika kompyuta yako mahali fulani. Na hivyo hii ni moja ya kubwa sababu kwa nini tunatumia orodha kiungo. Pili, ni rahisi sana dynamically resize orodha kiungo kwa sababu katika safu, wakati kutangaza safu, una baadhi ya thamani kuweka. Hebu sema mimi alitaka kujenga safu ya 10 integers. Mimi kuunda safu ya 10 integers, na hiyo ni yake. Ni 10. Sijui nini cha kufanya baada ya hapo. Kama nilitaka kufanya hivyo 11, hawawezi kufanya hivyo. Kama mimi wanataka kufanya hivyo 9, hawawezi kufanya hivyo. Ambapo katika orodha kiungo, unaweza kuongeza na kufuta na kuingiza popote unataka. Unaweza dynamically resize yako muundo wa hapa, muundo yako data. Na kwamba inatupa mengi zaidi aliongeza kubadilika kwamba hatuna kawaida kuwa na arrays. Mtu yeyote kuchanganyikiwa juu ya msingi muundo wa jinsi orodha kiungo ni au kwa nini tuna kutumia moja juu ya safu? Naam, tutaweza kwenda juu kwa undani jinsi ya kweli kujenga moja. Lakini hii ni aina tu ya maana ya jumla ya hivi sasa. Baridi. Na hivyo arrays ni strung pamoja wa haya mambo lovely kidogo aitwaye nodes. Nodi yote ni aina ya struct. Kumbuka, struct ni kama alitaka kujenga aina fulani ya kutofautiana katika C kwamba hana tayari zipo, wewe, kama programu, kweli anaweza kujenga kwamba wewe mwenyewe. Na hivyo aina hii ya data muundo inaitwa nodi, ana kweli imekuwa kuundwa kwa yetu, ili haipo ndani ya C juu yake mwenyewe. Na kwa njia hiyo wewe kujenga moja ni una kichwa cha typedef struct, ambayo anaelezea compiler mimi nina kuhusu kujenga struct. Tunakwenda jina hilo "nodi." Na ndani ya tunakwenda kutangaza kutofautiana katika, ambayo ni kwenda kuhifadhi thamani. Na kisha sisi ni pia kwenda kuwa pointer kuitwa "pili" kwamba pointi kwa ijayo nodi katika orodha ya kiungo. Na kisha kumaliza kwamba mbali na kurudia tu nodi tena hivyo compiler anajua, sawa hiyo ni mwisho wa struct yangu. Na hivyo kwa njia hii, tuko aina ya kujenga cute kidogo safu aina ya kitu kwa thamani na kwa pointer. Na unaweza kuhusisha watu wote pamoja na kuyatumia hizo. Ili waweze kuwa na kila aina strung pamoja katika mlolongo. Baridi. Je, unaweza kusikia kwamba kidogo bora? Watazamaji: Naam. PROFESA: zote haki. Hivyo njia hiyo, kama wewe guys unaweza kuona, kawaida kiungo orodha ni muundo ni una kichwa. Una thamani kichwa ambayo si kuwa alisema na pointer mwingine yeyote. Lakini itakuja kumweka katika, au rejea, nodi mwingine. Nodi baada anaenda rejea nodi baada ya hapo, na kadhalika na kadhalika mpaka hatimaye kugonga Mwisho wa kiungo orodha yako. Na wewe tu wala kuwa pointer huko. Na hivyo, nadhani kama, juu ya mlolongo, au hata kama mmoja wenu guys alifanya, mimi sijui, kama na matunda Loops ulipokuwa mdogo. Wewe ungekuwa kamba yao pamoja na kuvaa kwao shingoni yako. Nadhani ni halisi kitu kimoja. Una mambo haya kidogo kwamba Unaweza kamba pamoja kwamba hatua kwa moja baada ya hayo, ili moja baada ya yake, na kadhalika na kadhalika mpaka una mlolongo muundo wa data kwamba unaweza kutumia hata hivyo wewe kama. Hivyo njia kwamba hii tunataka kawaida kuingiza au kufuta node yoyote kutoka kwa kiungo orodha ni tofauti sana kulingana na pale kwamba nodi ni. Hivyo, kwa mfano, kwa sababu kuyatumia ni daima akionyesha thamani maalum, wakati kufuta au kuingiza nodi, unataka kuhakikisha kwamba pointer yote ni akionyesha mambo ya haki. Hivyo kama alitaka uwezekano wa kuingiza nodi mpya kwa thamani ya moja ndani ya kiungo yamepangwa orodha, sisi wote tunajua hapa kutoka picha kwamba itakuja kwenda katika kati ya kichwa na mbili, sawa? Kwa sababu moja inafaa haki pale. Lakini njia ambayo tunataka kufanya kwamba ni na dereferencing pointer kutoka kichwa na kutuma kwamba kwa moja. Lakini sisi kuja katika tatizo hapa. Je, mtu yeyote kuona nini tatizo ni kama tulikuwa dereference kwanza pointer kutoka kichwa na moja? Nini tatizo gani sisi kukimbia katika kama sisi kujaribu kuongeza hii mbele ya safu yetu? Watazamaji: [inaudible] PROFESA: Hasa. Hivyo hapa tuna pointer kwamba alikuwa mara moja akizungumzia kutoka kichwa na mbili. Lakini kama wewe kujikwamua kwamba pointer, wewe kumweka kwa moja, sisi sasa kuwa na wazo wapi pa kwenda kupata mbili. Kwa sababu kama nilivyosema hapo kabla, nimepata kubwa chunk ya kumbukumbu katika kompyuta yako. Nodes haya yote naweza nasibu Kukifuatiwa katika sehemu yoyote katika kompyuta yako. Na wewe hawajui jinsi kwenda juu ya kutafuta hiyo. Na hivyo unahitaji kuwa na kuyatumia akizungumzia nodes wote mwishoni. Au mwingine kama ajali dereference moja bila kumshirikisha kwanza thamani kwanza, uko tu kwenda kupoteza kila kitu baadaye. Kwa hiyo kile tunakwenda kufanya ni, wewe ungekuwa kwanza unataka kujenga pointer juu ya nodi unataka kuingiza. Kumweka ambapo wewe wanataka kuingiza kwa, na kisha baadaye wewe inaweza kumweka kichwa nyuma moja. Je, hiyo mantiki kwa kila mtu hapa? Kubwa. Fikiria kama tu kama mlolongo. Ikiwa kuongeza mlolongo, ni aina ya Intuitive jinsi wewe d kwenda juu ya kuingiza hilo. OK, hivyo kwamba ni kweli sana mfupi kuliko mimi walidhani itakuwa, dakika tano sapa katika orodha ya kiungo. Hivyo tu nyie na wazo msingi wa kile ambacho ni. Hapa tuna ajenda kwa jaribio sifuri. Je, si lazima hii kuwatisha ninyi. Najua ni mengi ya habari. Inaonekana sana inatisha. Ni pia mengi ya, mimi kufikiri, CSC aina ya masharti. Mambo kama masharti hexadecimal, kuyatumia, mgao wa kumbukumbu ya nguvu ni suala sana inatisha sounding. Lakini tunakwenda kuvunja yao chini, kufanya baadhi ya matatizo mazoezi ili nyie wote ni tayari kwa mtihani huu. Ni wangapi wenu guys kuwa tayari kuanza kusoma? OK, nyie pengine wanataka kuanza kupata kuanza juu ya kwamba, kwa sababu ya jaribio ni kesho. Au Alhamisi kwa baadhi yenu. Yeah, hivyo sisi ni kwenda juu ya baadhi ya matatizo mazoezi. Kama nyie wote wanataka kuchukua nje ya karatasi, kalamu. Tunakwenda kutumia tu idadi kubwa ya kifungu cha leo kwenda juu baadhi ya kwamba hivyo nyie na wazo la nini cha kutarajia juu ya jaribio. SAWA. Michache ya vifaa maelezo pia, kwa mtu yeyote ambao haijawahi kwa kiungo kwamba kuna, kama kwenda cs50.yale.edu, juu ya mbele ukurasa huu kuna uhusiano kwamba anasema "Kuhusu Quiz sifuri." Kiungo inachukua wewe huko. Kama si kusoma, tafadhali kusoma. Kwa sababu atakwambia kweli ni muhimu habari kuhusu jaribio. Mimi nina kwenda kuvuta hii nje kutoka kwamba kwa sababu tu, kimwili, kama nyie sijui wapi kwenda, tutakuwa na matatizo. Na hivyo kama jana wako katika suala kwa A kwa N, kwenda ukumbi sheria shule. Na kama kuanza yako ya mwisho na P A to Z, kwenda Davies Ukumbi wa. Na hii inatumika tu kwa Watu katika sehemu ya Jumatano. Kama wewe ni kuchukua jaribio kwenye Alhamisi, wewe kwenda SSS 114 ambapo hotuba yako kawaida ni. Watazamaji: [inaudible] PROFESA: O to Z, wewe ni kwenda kwenda Davies ukumbi. Mimi nina kwenda kubadili hali hiyo, haki? Oh, yeah, wewe tu kushindwa moja kwa moja. Oh yeah, hiyo ni wewe Christa. Naam, mbaya wangu. Yep, O to Z, wewe ni kwenda kwenda Davies Auditorim. Mimi nina kwenda kurekebisha hili mara moja mimi kupakia. Naam. Na kisha pia kitu muhimu kwa akili ni kwamba Jumatano, ikiwa ni rasmi waliojiunga na kifungu cha Jumatano, lazima kuchukua jaribio yako siku ya Jumatano. Na kama wewe ni waliojiunga na Alhamisi, lazima kuchukua jaribio yako Alhamisi. Na ni wakati darasani. Ambapo, nadhani ni kama 1:00 kwa 02:15 juu ya Jumatano na 2:30-03:45 Alhamisi. Kama una migogoro irreconcilable, Visingizio Dean wa ni kitu pekee, kwa bahati mbaya, tunaweza kuchukua. Kwa sababu tumekuwa na idadi kubwa ya maombi kubadili kutoka Jumatano Alhamisi. Ambayo hatuwezi kutimiza isipokuwa tuna ombi Dean wa. SAWA. Hivyo kabla ya sisi kupata kuanza juu ya michache ya matatizo mazoezi, Mimi tu kwenda juu Andy tips msaada kwa ajili ya mafanikio. Nyie, wakati wewe kujifunza, kwa kweli wanataka kufanya mazoezi ya kuandika kificho kwa mkono. Mara ya kwanza mimi milele alichukua Jaribio CS, nilikuwa na si kuandika mazoezi kificho kwa mkono kabla na ilikuwa kubwa mno kushangaza jinsi ilivyokuwa vigumu. Wakati nyie si kupata katika tabia ya kuandika nje kila kitu, inakuja sana kawaida kuwa uwezo wa kuwa autocompleted mabano na semicolons huko. Wakati kuandika ni nje kwa mkono, wakati mwingine ni sana, ni rahisi sana kusahau semicolon, au kusahau kwa karibu mabano, au kusahau kwa karibu matumbo, au kitu kama hicho. Hivyo wakati wewe kuandika kanuni kwa mkono, ni kujisikia tofauti sana. Hivyo nyie, wakati wewe ni kazi kupitia baadhi ya matatizo mazoezi, ingekuwa nzuri kwa kweli mazoezi leo. Au kesho, nadhani, kama wewe ni kuchukua chemsha bongo siku ya Alhamisi. Pili, tuna iliyopita, kama, thamani nane mwaka wa mazoezi Quizzes online. Jaribio la mwaka huu pengine kuwa sana, ni sawa na wote. Wao ni wote ni sawa. Aina ya kupata katika mtindo wa aina ya maswali tuyaombayo, aina ya kazi ambayo tutaweza kuandika katika, nakadhalika, nakadhalika. Hivyo kuchukua Quizzes mazoezi, hasa chini ya vikwazo wakati. Dakika 75 kufanya jaribio ni si mengi ya kiasi cha muda. Ni sana, mrefu sana. Na hivyo nyie kweli wanataka kuhakikisha kwamba nyie ni katika tabia ya kuandika kificho kwa mkono haraka. Kwa sababu wewe hawataki kwanza muda wa kuona jaribio la kuwa urefu kuwa juu ya jaribio lako. Nyie kweli wanataka kuhakikisha kwamba zoezi kabla. Nne, unataka kupitia hotuba na sehemu slides. Huna kwa kukariri mambo. Kwa kweli, kila mtu anaruhusiwa karatasi moja ya maelezo ya karatasi nyeupe, mbele na nyuma. Nyie unaweza aina au kuandika. Kama wewe mwenyewe kupata wanaohitaji kukariri kitu chochote, kuiweka chini kwenye karatasi hiyo. Mimi kuhakikisha wewe, hawataki kuwa kukwama katikati ya jaribio kwamba kuwa kama, oh yeah, nini Runtime wa aina hii dhidi ya aina hiyo. Tu kuiweka chini na nakala yake moja kwa moja kutoka kumbuka karatasi yako. Basi unaweza kweli kutumia tu yako ubongo kufikiri juu ya matatizo badala ya kuwa na kukumbuka ukweli. Na hivyo kweli kuchukua faida ya maelezo yoyote niche ambayo unadhani unahitaji kukariri, plop ni chini ya mapitio karatasi. Sawa, maswali yoyote logistically Jaribio kuhusu kabla ya kuanza baadhi matatizo Jaribio mazoezi? Yeah? Watazamaji: Mimi si alikuwa na nafasi kuangalia jaribio [inaudible] lakini je, ni kwenda kuwa maombi zaidi, au ni kuna pia kwenda kuwa, kama, maswali maarifa? PROFESA: Ni mengi. Hivyo, kwa njia hiyo mimi ingekuwa ilivyoelezwa Jaribio is-- mimi kuweka pamoja baadhi ya matatizo mazoezi kwamba mimi vunjwa kutoka pande zote za Quizzes. Lakini utaona kwamba kuna kuu mbili aina ya maswali tutakuuliza wewe. Moja ni kiwango cha chini sana undani wa mambo ya ajabu. Tutaweza kukupa chunk ndogo ya kificho na kusema, je kuna kosa hapa? Nini itakuwa uchapishaji nje hapa? Nini kanuni hii kuzalisha, nakadhalika. Hivyo kiwango cha chini sana habari maelezo. Na upande wa flip, tutaweza kuwa sana kiwango cha juu maswali elimu makao. Je, unaweza kueleza kile Tofauti kati ya binary tafuta na tafuta linear ni? Kwa nini tunataka kutumia moja juu ya nyingine? Labda, ni nini GDB? Kwa nini tunataka kutumia GDB? Ngazi ya juu, zaidi ya msingi uelewa maswali. Hivyo utaona mchanganyiko wa wawili kati yao juu ya jaribio lako. Kitu kingine chochote kabla ya sisi kichwa moja kwa moja ndani yake? SAWA. Watazamaji: Moja zaidi. PROFESA: Oh, moja zaidi. Pole. Watazamaji: Yeah, ni sawa. Hivyo ni kusema dakika 75 ni mfupi mno, kama hakuna uwezekano kwamba sisi kumaliza? Au, kama, dakika 75 ni wakati hasa kama kiasi kama tunataka haja kama tulikuwa ipasavyo tayari? PROFESA: Sawa, hivyo Jaribio ni changamoto. Ni dhahiri changamoto. Utapata mwenyewe short kwa wakati. Pengine wewe kwenda kuikumba, kama 10, Dakika 15 kwenda, na kuwa kama, shit. I have sana kufanywa. Na hiyo ndiyo kabisa faini. Kila mtu kwenda kuhisi kwa njia hiyo. Tu kuwa makini sana ya muda kiasi gani una. Na hivyo ndiyo sababu nawaambia guys kufanya Quizzes mazoezi. Kwa sababu ni kweli anatoa maana kubwa nini jaribio ni kwenda kuwa kama. Hivyo kama wewe mwenyewe kupata kuwa uwezo wa kumaliza mazoezi Quizzes katika kiasi nzuri ya muda, unaweza kasi mwenyewe vizuri, basi si kuwa na tatizo Jumatano au Alhamisi. Baridi. Hivyo kama kila mtu wants-- Nadhani watu wengi kuwa karatasi nje tayari. Mimi nina kwenda kimsingi tu kukupa maswali sampuli, kukupa guys, kama, a dakika chache kwa kuyafanya. Na tutaweza kwenda juu kama darasa nini majibu yao ni. Hivyo hii ni ya kawaida sana swali mapema tutaweza kuuliza wewe, kuwabadili tu nambari kati ya kali tofauti. Mapacha, kama nyie Unaweza wanakumbuka, ni msingi mbili. Alisema ni msingi 10, au nini sisi kama binadamu kwa kawaida kutafsiri. Hexadesimoli ni msingi 16, ambayo ni sifuri kupitia tisa ikiwa ni pamoja na kupitia F. Hivyo kuna namba nne mimi nina kuuliza nyie kubadili hapa. Mimi nitakupa wewe kama, tatu kwa dakika nne kufikiri kupitia jinsi tunataka kwenda kuhusu utatuzi huu. Watazamaji: Je, ni halali calculators? PROFESA: Wewe si haja calculators, yeah. Nadhani Aidha msingi, nadhani, ni nyie wote atatakiwa kufanya. Na hivyo tu mimi aina ya kuwa na hisia ya wakati kila mtu ni kosa, kuangalia juu, nguvu, sijui, tabasamu, kuangalia na furaha kama wewe ni kosa. Naam. Labda wanandoa dakika zaidi. OK, hebu kuleta katika. Mimi makusudi kwenda kutoa nyie muda kidogo kuliko pengine haja ya kufanya baadhi ya matatizo haya, tu kwa sababu nataka kuhakikisha kwamba tunapata kupitia rundo la matatizo. Hivyo hakuna wasiwasi kama alivyofanya si kuwa na nafasi ya kumaliza. Kabisa sawa kwa muda mrefu kama una wazo la jinsi ya kwenda kuhusu hili. Basi hebu kwenda mbele na kufanya moja ya kwanza. Hivyo kwanza, haina mtu yeyote wanataka kuniambia katika mapacha, je kila mmoja tarakimu haya kuwakilisha katika suala la maadili yao? Yeah? Watazamaji: Mbili kwa nguvu sifuri, 2-1. PROFESA: Hasa. So. Haki, hivyo kawaida wakati tuko katika wigo 10 haya yote ni wa kuwakilisha, kama, 10 ya msingi ya sifuri, sawa? Hiyo ni sehemu moja yako. Wote wako mahali 10 ni ni 10 kwa nguvu za yule. Wewe 100 mahali ni 10 kwa nguvu ya mbili. Chochote msingi uko katika kinaenda cha kufanya na halisi kitu kimoja, tu na msingi tofauti. Hivyo binary, kila kitu kilicho ni msingi mbili. Wewe ni kwenda kubadilisha wote tarakimu katika mbili kwa nguvu chochote ya kwamba tarakimu. Na hivyo kwa maana hii, sisi unaweza kuwa njia rahisi ya kuweza kuongeza hadi au kuhitimisha namba zote ili kubadili ndani ya wigo 10. Hivyo haina mtu yeyote wanataka kuniambia nini jibu la moja kwanza ni katika wigo wa kumi? Watazamaji: Mbili, [inaudible] PROFESA: Naam. Watazamaji: 42. PROFESA: 42, kuna kwenda. Hivyo njia tulipata jibu hili lilikuwa na kufanya mbili za kwanza, hizo ni mbili. Plus mbili ya tatu, ambayo ni nane. Plus mbili kwa tano, ambayo ni chochote ni kushoto juu. Wewe kuhitimisha yao juu na ni 42. Ni mtu yeyote kuchanganyikiwa juu ya jinsi sisi got kwamba? Aidha hivyo msingi, kama Nilisema, unapaswa kuwa sawa. Kama siyo, vizuri, tunaweza kufanya mazoezi kwamba pia. Lakini hiyo ni sawa. Baridi. Je, mtu yeyote wanataka kunipa kujibu kwa moja pili vile vile? 50? Nzuri. Mtu yeyote kuchanganyikiwa juu ya jinsi tulipata kuwa ama? Baridi, mimi itabidi majibu juu ya slide ijayo. Hivyo hakuna wasiwasi kama wewe haja ya nakala yake chini. OK, hivyo hexadecimal ni kidogo trickier. lakini mimi nina kwenda kuonyesha nyie njia ya mkato kwa jinsi ya kufanya hivyo. Hivyo hexadecimal, kama wewe kumbuka, yote ni kuwa 16. Na kwa sababu sisi kama binadamu si kweli kuwa na idadi 16 kuiwakilisha kwamba, sisi kwenda kutoka sifuri hadi tisa, ambayo yetu ya kwanza Maadili ya 10, na kisha sisi kufanya kupitia F, ambayo ni karibu maadili sita. Na hivyo njia rahisi ya kwenda kutoka idadi yoyote mapacha kwa hexadesimoli ni kuvunja yao juu katika nusu. Na hivyo idadi yoyote binary tutaweza kutoa unaweza kuwa na tarakimu nane. Unaweza tu kuvunja yao juu katikati. Hivyo kwanza one-- moja moja, moja moja, moja, moja, moja moja. Aina ya kufikiri it up, unajua, kuteka kufyeka au comma katika baina yao. Na unaweza kubadilisha tu moja kwa moja chochote hii ni kwa kwanza idadi ya hexadecimal, na chochote hapa ni pili ya hexadesimoli. Basi kumbuka kutoka nukuu ya kawaida, je maadili hexadecimal kuanza na? Watazamaji: sifuri. PROFESA: 0x. Hivyo tunajua kwamba wakati wowote tunakuomba kubadili idadi yoyote ya hexadecimal, au wakati wowote unaweza kuona yoyote idadi hiyo inaanza na 0x, unajua kwamba ni thamani hexadecimal. Na kisha utaenda kuulizwa kuamua nini tarakimu hizi mbili ni. Na njia ya kufanya hivyo, kuhesabu up kuwa nusu na kuhesabu up kwamba nusu. Hivyo katika mfano huu, ni nini ingekuwa moja, moja, moja, moja kuwa? Nini thamani ingekuwa kwamba kuwa? Hiyo d kuwa F, sawa? Hiyo d kuwa 15. Hivyo hii itakuwa F. One, moja, moja, moja hapa ni pia F. Hivyo moja, moja, moja, moja, moja, moja, moja, moja katika hexadesimoli, yote ni ni 0XFF. Kwa sababu nusu huu kuwakilishwa F, thamani ya 15, na nusu huu kuwakilishwa F, thamani 15. Kwa sababu kumbuka, tuko kuhesabu kutoka sifuri hadi tisa. A ni kama 10, B ni kama 11, F ni 15. Je, hiyo mantiki kwa kila mtu jinsi tulipata kutoka mapacha kwa hexadesimoli? Watazamaji: Na hivyo jinsi gani sisi kupata 15 kutoka moja, moja, moja, moja? PROFESA: Yeah, hii ni mapacha, sawa? Fikiria hii ni idadi mapacha. Hivyo kuwa wawili kwa 0, ambayo ni moja. Watazamaji: Oh, Sawa. Hivyo wewe tu jumla nje. PROFESA: Yeah, na kisha wewe tu jumla kwamba nje. Hayo ni yote ni. Watazamaji: Sawa. PROFESA: Sawa. Watazamaji: Hivyo wewe kwenda kutoka mapacha kwa decimal ya hexadecimal? PROFESA: Hiyo ni Njia rahisi ya kufanya hivyo, yeah. Wewe si kwenda kwa decimal sababu alisema ana sifuri hadi tisa tu. Tuko tu aina ya kugawanyika huu juu katika wawili. Watazamaji: [inaudible] kutumia alisema kupata nini mechi hadi katika hexadesimoli. PROFESA: I mean, wewe ni kuhesabu kwa kutumia hisabati za msingi. Watazamaji: Naam. PROFESA: Yeah, pretty much. Ni kidogo utata. Lakini tu kujua kwamba wewe Unaweza kugawanya chochote thamani huu ni katika nusu tu. Angalia, ni nini hii katika binary? Nini idadi ni kwamba? Ni kwenda kuwa kitu kutoka sifuri hadi F. Hapa pia ni kwenda kuwa kitu kutoka sifuri hadi F. Na kisha unaweza kuweka tu hizo mbili pale pale. Watazamaji: Sawa. PROFESA: Yep. SAWA. Hivyo wewe guys wanataka kujaribu moja ijayo basi? Sifuri, moja, sifuri moja, moja, sifuri, moja sifuri. Mimi nitakupa guys kama sekunde 30, tangu wewe pengine hawakujua hila kwa jinsi ya kufanya hivyo mapema. OK, mtu yeyote wanataka kupata risasi hili? 0X5A. PROFESA: 0X5A. 5a. Nzuri. Hivyo hii hapa ingekuwa be-- unataka kutuambia jinsi got kwamba? Kwanza, umeingiaje tano? Watazamaji: Kwa sababu sifuri, moja, sifuri, moja ni watano. PROFESA: Je, kila mtu kuelewa kwa nini sifuri, moja, sifuri, moja ni tano? Nimepata moja hapa. Una kitu katika wawili kwa kwanza. Vipande viwili kwa pili, wewe kuwa moja, ambayo ni nne. Hivyo kuongeza pamoja nne moja, una tano. Kila mtu mwema? SAWA. Na kisha nini hii na kwa nini? Nini idadi gani A yanahusiana na? Watazamaji: 10. PROFESA: Na nini hii katika msingi mawili hata lini? Watazamaji: [inaudible] PROFESA: Hasa. Hivyo hii thamani pili hapa itakuwa 0X5A. Kila mtu mzuri kuhusu jinsi ya kubadilisha? Ni rahisi sana kuliko unafikiri ni. Nataka tu kuhakikisha unajua tips msaada na mbinu kwa jinsi ya kufanya hivyo. Watazamaji: Kwa nini unaweza tu kupasuliwa ni katikati kama hayo? Tu kuwa kama, sawa, mimi nina kwenda tu kwa huduma kuhusu hizi kwanza [inaudible]? PROFESA: Kwa sababu hiyo ni kweli njia maadili hexadecimal ni kuwakilishwa. 0x, kwamba kwa kweli ina maana chochote zaidi nawaambia kuwa ni hexadesimoli idadi. Na hii mara zote inawakilisha nne za kwanza tarakimu. Na hii mara zote inawakilisha mwisho nne ya tarakimu. Na hivyo tarakimu hizi mbili tu yanahusiana na vipande mbalimbali. Watazamaji: Hivyo sisi always-- PROFESA: Wewe ni daima kwenda kupata nane thamani bits. Watazamaji: Je, hivyo tu kama jambo hapa au kwamba kitu duniani? PROFESA: Hiyo tu Jambo katika kompyuta, yep. Watazamaji: Sawa. Kutisha. PROFESA: Pia, hivyo katika mfano huu sisi kubadilishwa kutoka mapacha kwa decimal, na kutoka mapacha kwa hexadesimoli. Nyie unataka kuhakikisha wewe pia mazoezi kwenda njia nyingine kote. Hivyo kama mimi alitoa wewe 0XFF, ungeweza kuteka kwamba nje katika binary, sawa? Kubadilisha F katika binary, ambayo ni moja, moja, moja, moja, kubadilisha F kwa binary, ambayo ni moja, moja, moja, moja. Hivyo tunaweza kuuliza wewe kufanya njia nyingine kote. Hivyo alisema kwa binary, au hexadecimal kwa mapacha. Kwa hiyo unataka kufanya uhakika unajua njia zote mbili. Tutaweza pengine kuuliza macho ya mbili. Yeah, una swali? Siwezi see-- wewe ni vizuri? Watazamaji: Naam. PROFESA: Sawa. Mimi ni nzuri ili kufuta hili? Kubwa. Haki wote, hivyo majibu ni hapa kama kuna mtu ni wadadisi baadaye na kupata kuchanganyikiwa. SAWA. Watazamaji: Je, ni jambo kama sisi kuweka barua yetu katika mji mkuu au lowercase? PROFESA: Ni gani, kwa sababu katika hexadesimoli, na mkataba huo, wahusika wote ni uppercase. Hivyo kupitia F ni kwenda kuwa uppercase. Kama kuweka ndogo a, sijui kama tunataka lazima alama yake vibaya. Lakini kinadharia, hiyo ni si kitaalam jinsi wewe walidhani kuwa nayo. Basi lazima wote uppercase. Yeah, swali zuri. SAWA. Pili swali. Fikiria mpango huu lovely hapa. Mimi itabidi kuuliza swali, Nitarudi hii. Hivyo, kwanza, nini ndani ya kiwango cha io.h hiyo ni ya manufaa kwa mpango? Pili, ni nini utupu yanamaanisha katika mstari tatu? Na tatu, ni nini kurudi sifuri kutoka kuu, kama mstari sita, kwa ujumla yanamaanisha? Kama nyie unataka kuandika wale chini, tangu nina kubadili nyuma kwa slide tu hivyo unaweza kuona kanuni. Huu ni mfano wa, kama, labda swali ngazi za juu ambapo tunakuomba mambo maana katika mpango huo. Kila mtu mwema kwa ajili yangu na kurudi nyuma na slide? OK, baridi. Hivyo mimi nitakupa guys kama labda tatu dakika ya kuangalia moja ya haraka hii ya kweli. OK, hivyo hii moja ya kama haki rahisi, conceptually. Je, mtu yeyote wanataka kuniambia nini kwanza ndani ya hash na ikiwa ni pamoja na kiwango chetu io.h maktaba faili? Kwa nini tunahitaji kuwa maktaba pamoja na kwa mpango huu? Nini hapa tunahitaji ni kwa? Yeah? Watazamaji: Je, kwamba wakati kuweka kwamba printf? PROFESA: Hasa. Hivyo printf, wakati wowote kuchukua pembejeo kutoka kwa mtumiaji na magazeti kitu screen, hiyo ni pembejeo kiwango, maktaba pato. Fikiria ni kwamba way-- pembejeo, pato. Je nina pato? Ndiyo, mimi kufanya. Hivyo najua kwamba mimi nina daima kwenda haja maktaba standardize i.o. Hivyo printf ni kazi ambayo tunahitaji kupata na hashtag ni pamoja na kiwango cha i.o maktaba. SAWA. Pili, je, utupu yanamaanisha? Tuna int kuu (utupu), ni nini utupu hapa maana hapa kwenye mstari tatu? Yeah, katika nyuma. Watazamaji: [inaudible] PROFESA: Hasa. Basi kumbuka, tumejifunza kuanzia na pset yetu kuwa unaweza kweli kutaja mstari amri hoja kwamba mpango wako, kwamba Kazi kuu, inachukua kama wewe, mtumiaji, simu yake. Kama tuna batili, hiyo ina maana kwamba wewe inaweza tu kukimbia mpango moja kwa moja bila yoyote hoja mstari amri. Kila mtu wazi juu ya hilo? SAWA. Na mwisho kwa nini sisi kujisumbua kufanya hii kitu kurudi sifuri hapa? Kwa nini sisi hata kuwa int kuu? Kwa nini hatuwezi tu na utupu kuu utupu? Yeah? Watazamaji: Hivyo tu kwamba tunaweza kuwa na uhakika kuwa mpango huo ni exiting kwa mafanikio, kama kinyume na kama ilikuwa kuhesabiwa. Na tunataka kujua kwamba hiyo ni aina mbalimbali ya upotevu. PROFESA: Yeah, kwa uhakika. Hii ni sana Jambo kawaida kwamba sisi kufanya, ni kwamba tu mwishoni mwa mpango wako, tu kuhakikisha kwamba kazi yako kuu anagombea kwa usahihi, sisi daima wanataka kufanya kurudi sifuri. Hata kama tunaweza lazima hawaoni kwamba kuchapishwa mahali popote. Kwa sababu kama programmers, unajua, kama una mengi ya mistari tofauti ya maadili na wewe sijui wapi haya ni kwenda vibaya, na kama kosa hutokea unataka kuhakikisha kuwa wewe kupata kosa hilo. Na hivyo kawaida kama kitu fulani kitaenda vibaya tutaweza kuwa kurudi kwa moja tu kuhakikisha tunajua kwamba ni. Hivyo kama unaweza kuona kurudi sifuri, kwamba kwa kawaida ina maana mpango wako ni kunyongwa kwa mafanikio. Nzuri? Baridi. Sawa, mpango wa pili hapa. Fikiria jambo hilo. Na kama nyie ona kuelea, nyie Unaweza pengine kuwa na wazo nzuri ya nini Mimi nina kuhusu kuuliza. Hivyo wakati mpango huu executes, kama unaweza kuona, Mimi kutangaza kuelea ndani ya kazi yangu kuu. Mimi kutaja ni "kujibu," na mimi nina kuweka kuwa sawa na mtu kugawanywa na 10. Mimi uchapishaji nje, kwa moja mahali alisema kwamba kuelea. Na kisha mimi nina kurudi sifuri. Hivyo wakati utekelezaji wa mpango, kufikiri nyuma kwa tamaa sasa, mpango huu Prints 0.0. Kama sisi wote kujua, pengine sisi wote Unajua, moja kugawanywa na 10 ni si 0.00, ni 0.1. Lakini kueleza kwa nini mpango huu anadhani kuwa 1 kugawanywa na 10 prints kwa 0.1 mengine ya 0.1? Mimi nitakupa guys labda kama 30 sekunde kwa haraka tu kufikiri juu ya kwamba na mimi itabidi kurudi nyuma na mpango huo. SAWA. Mtu yeyote wanataka kuwapa risasi? Katika hukumu tatu au chini, kwa sababu kwa kawaida tuko kwenda kuzuia majibu yote kwa hukumu tatu au chini hivyo huna tu regurgitate mambo random kwenye jaribio yako. Naam, kuchukua risasi. Watazamaji: Hivyo nadhani kuna hii Jambo kuitwa, kama, [inaudible] Hivyo huenda kuna, kwa mfano, huenda kuna, kama, 0.09, kwamba ambapo magazeti kwanza tarakimu, itakuwa kwa 0.0? PROFESA: Karibu, si kabisa. Christabell? Watazamaji: Wewe ni kugawa moja na 10, na wao uko integers zote mbili. Na hivyo kwa njia hiyo itakuja kuhifadhi ni kama integer. Na hivyo integer karibu itakuwa 0.0. Na hivyo ndiyo 0.1. PROFESA: Yeah, hiyo ni nzuri kwa kweli. Hiyo ni jibu sahihi. Hivyo hii ni utata sana dhana kwa mengi ya watoto. Na kwa kweli mimi nataka kuhakikisha kuwa hii ni kushinikizwa katika kichwa kila mtu. Hivyo kile tunachokiita yaliyo hatua kutokuwa sahihi, ambapo sababu ni kwa nini kura wa mipango yako katika tamaa hakuwa na kazi ya awali ilikuwa ni kwa sababu alisahau kutupwa kutofautiana yako. Kwa hiyo kile Christabell alisema ilikuwa sahihi kabisa. Kuelea ni asili imprecise. Kwa sababu katika kompyuta, haki, tuna kiasi kidogo cha vipande vya kumbukumbu tunaweza kutumia kuwakilisha idadi. Hivyo, kwa mfano, hii ID CS50 is-- Nadhani ni kompyuta 64-bit. Kuelea inaweza tu kuwakilishwa na kiasi kidogo cha vipande hayo. Na hivyo 0.1 na zeros usio na mipaka, kwamba aliitwa 0.1 ni, sawa? Lakini hatuwezi kweli kuhifadhi kwamba idadi katika kompyuta yetu. Sisi tu hawana kumbukumbu ya kutosha ya kufanya hivyo. Na hivyo karibu zaidi ya makadirio ya nini kuhifadhiwa katika kumbukumbu ni kweli kitu kama 0.000 kitu, kitu, kitu, kitu fulani. Ambayo, mara moja butu hivyo, raundi chini ya 0.0. Na hivyo mfano hii ni moja tu kwamba inaonyesha kura ya masuala tuna wakati wowote tuko kujaribu kimakosa kufanya hesabu bila akitoa kama integer tofauti. Hivyo tu kuwa na wasiwasi wa jambo hili kutokea. On Quizzes, kama sisi kukupa kuzuia wa kanuni na ni kama, nini Prints nje mwishoni? Na kama ni baadhi ya thamani random wewe guys wanapaswa kujua kwa nini kinatokea. Yeah? Watazamaji: Truncate ni kujikwamua kila kitu baada ya hatua fulani? [Inaudible] PROFESA: Yeah, hivyo kweli huu ni mfano mbaya kweli kweli, kwa sababu 0.100 chochote kweli ingekuwa butu hadi 0.1. Lakini kama ungekuwa na kukimbia it-- mimi si kumbuka, kwa sababu mwaka jana wao mbio ni juu ya mpango tofauti. Wao mbio katika kitu kinachoitwa Appliance CS50, ambayo ni tofauti na ID. Hiyo ilikuwa ni mfumo wa 32-bit, nadhani. Na hivyo kulikuwa na idadi tofauti. Lakini kimsingi, tu kujua kwamba dhana nzima ya truncation na jinsi tu kupunguzwa mambo mbali. Na hivyo kama rounds-- Watazamaji: Bila rounding. PROFESA: Hasa. Naam. Baridi. Hi, katika nyuma. Tunakwenda zaidi ya baadhi Jaribio mapitio maswali. Sawa. Hivyo kufikiria mpango tofauti hapa. Mimi nina kwenda kukupa guys a dakika kadhaa kusoma juu ya hili. Hili ni jambo ambalo lilikuwa kwa sana Hivi karibuni kwamba nadhani akapiga mengi ya wewe guys ya akili. Lakini sisi ni kwenda kuzungumza kwa njia hii tena tu kuhakikisha kuelewa kabisa. SAWA. SAWA. Mtu yeyote wanahitaji muda zaidi wa kusoma kwa njia ya kificho hili? SAWA. Hivyo inaonekana kwangu kuwa katika mpango huu mimi nina kujenga masharti mawili kwa kutumia GetString. Mtu mmoja aitwaye s na mtu mmoja aitwaye t. Na kama uko sawa sawa kwa kila mmoja, ni lazima magazeti "Wewe aina kitu kimoja. " Lakini elsewise, ingekuwa magazeti, "Wewe typed mambo mbalimbali, "sawa? Inaonekana sana, rahisi sana. Lakini, hata hivyo, kama mimi kwa kweli jaribu kuandika mpango huu, inaonekana kwamba hata wakati mimi pembejeo halisi masharti sawa, bado Prints nje, "Wewe typed mambo mbalimbali! " Je, mtu yeyote unataka kuchukua risasi katika nini mpango huu daima anajibu kwamba pembejeo za ni tofauti, hata wakati maneno yenyewe ni sawa? Hivyo kama ningekuwa input-- David upendo kutumia mfano kama mama, sawa? Lowercase M-O-M kwa S, T sawa lowercase M-O-M. Kama mimi mbio hili kwa njia ya kwamba kanuni, kwa nini ni magazeti nje "uliyochapa mambo mbalimbali?" Je, mtu yeyote haja zaidi muda wa kufikiria kuhusu hili? Sawa, nafikiri sisi ni nzuri. Yeah? Watazamaji: Sawa, hivyo ni kitu kuhusu ambapo ni kuhifadhiwa katika kumbukumbu, sawa? PROFESA: Yep. Watazamaji: wapi ni kama, kama hii kamba s ni kuhifadhiwa katika kumbukumbu spot-- Mimi mzushi Haya ni sifuri. PROFESA: Ni kweli. Watazamaji: Na kamba t ni kuhifadhiwa katika kumbukumbu doa, kama, 167, na kisha sifuri haina sawa 167. PROFESA: Hasa. OK, hivyo kumbuka hii ya ajabu ufunuo sisi alielezea kwa nyie wiki hii iliyopita, kwamba masharti si kweli zipo? Wakati sisi kujenga kitu kinachoitwa kamba tuko, katika hali halisi, kujenga kitu kinachoitwa Char nyota. Ambao wote ni ni pointer kamba au kwa safu ya chars. Na hivyo katika mfano huu, ikiwa mimi walikuwa na pembejeo M-O-M njia kwamba kompyuta yangu ingekuwa kuhifadhi ni ndani ya kumbukumbu sifuri backslash, sawa? Wale nne wahusika, chars, itakuwa kuhifadhiwa mahali fulani. Na kisha hizi nne wahusika, sifuri backslash, ni kuhifadhiwa mahali pengine, sawa? Mimi sijui ambapo anwani ni, wao uko mahali fulani katika kompyuta yangu. Lakini mimi si hasa kujua walipo. Wakati mimi kujenga kamba s, kila kwamba kweli ni ni pointer kuanza ya kamba hii. Na wakati mimi kujenga thamani huu t, yote ambayo ni pointer kwa hapa. Na hivyo wakati wewe ni kujaribu equate na kuangalia ili kuona kama s ni sawa sawa na t, kompyuta ni kweli tu ya kurejea wewe pepe ya m huu na anuani ya kuwa m. Na kwa sababu wao ni wawili vipande tofauti vya data kwamba ni kuhifadhiwa katika mbili tofauti anwani katika kompyuta yako, kompyuta yako kamwe kwenda kutambua yao kama kuwa sawa. Je, mtu yeyote wanataka kutoa risasi katika kile sisi ingekuwa kufanya kama sisi alitaka kusahihisha huu na kuwa sahihi mpango mbio badala yake? Fikiria kwamba kwa sekunde kadhaa. Je, tunahitaji mabadiliko ya kupata hii kazi mpango njia tunataka kufanya kazi? Naam, nataka kuchukua kumchoma katika hilo? Watazamaji: Je, sisi kujaribu dereference pointer na kuangalia kupitia safu? PROFESA: Hiyo ni njia moja ya kufanya hivyo. Hivyo, nini jina yako tena? Samahani, unikumbushe. Zee: Zee. PROFESA: Yeah, hivyo nini Zee alipendekeza ingekuwa kabisa kazi. Sawa? Tunaweza dereference pointer na kweli kwenda na upatikanaji data ya kimwili ndani ya hapa. Na tunaweza tu kulinganisha screen nzima. Tunaweza kusema, sawa, pointer, nipe nini ndani hapa. Itakuwa kurudi m. Na naweza kusema, pointer, nipe nini ndani hapa. Kurudi m. Je, wale mechi? Ndiyo. Kisha sisi kusonga mbele. Sisi kuendelea kuangalia mbili nzima masharti njia yote hadi mpaka mwisho na kuona kama hizo ni sawa, kama maadili yote ni sawa. Na kama maadili yote ni sawa, basi tunajua masharti ni kweli. Kabisa, hiyo ni jinsi tunataka kufanya hivyo? Je, mtu yeyote kuchanganyikiwa yoyote ya hili? Dhana nzima ya jinsi masharti ni kuyatumia kweli tu, na jinsi wao si kweli zipo? Na kwa nini sisi kupata makosa kama njia ya sisi kupata? Kwa sababu mimi kuhakikisha nyie, kuyatumia na kamba mgao na kumbukumbu yatakuja juu. Yeah? Watazamaji: [inaudible] dereference hivyo, wewe tu kuweka nyota [inaudible] PROFESA: Haki. Hivyo kwa derererence pointer njia kwenda kuwa pepe ya pointer na kupata taarifa, thamani huko. Na njia ya kufanya hivyo ni nyota pointer. Usiwachanganye hiyo. Watazamaji: [inaudible]. PROFESA: Naam. Watazamaji: Hivyo unaweza tu kuandika kama nyota s sawa sawa nyota t. PROFESA: Naam, hapana. Hakuna Watazamaji: Hiyo siyo nzuri ya kutosha, sawa? PROFESA: Siyo, kwa sababu wewe ni kuangalia tu barua ya kwanza. Pengine wewe kwenda kwa haja baadhi ya aina ya kitanzi kwamba iterates kwa njia ya kila mmoja tabia katika masharti yote mawili. Naam. Hivyo kama alitaka kuangalia tu kuona kama ilianza na kitu kimoja, unaweza kufanya kama, nyota s ni sawa na nyota t. Basi, unajua kwamba angalau wao ilianza na tabia hiyo. Yeah? Watazamaji: Hivyo njia huna kwamba itakuwa kama iliyoingia kwa kitanzi au pointer? PROFESA: Naam. Pretty much tu kwa kitanzi. Kumbuka, Daudi darasani zilizotajwa bure kisintaksia sukari? Naye alikuwa na haya sana Jambo utata wa nyota t pamoja na moja, ambapo itakuwa kuunganisha kupitia na hoja ya pointer? Njia rahisi ya kufanya hii ni t ya i. Hivyo ni tu safu. Njia hiyo ingekuwa kwa kitanzi kwamba mbio kutoka sifuri kwa i, ambapo i ni urefu wa kamba, ungeweza tu kuandika kwamba badala ya kufanya pointer nzima, akimaanisha kitu. Hivyo mambo haya ni hasa sawa katika kompyuta yako. Nyie pengine si wanahitaji kujua kwamba, lakini ni vizuri tu aina ya kuwa katika nyuma ya akili yako. Tu kujua kwamba kompyuta inatambua vitalu mbalimbali ya maadili kama kitu kimoja. Kwa sababu hii ni mbali zaidi user kirafiki kwa sisi sasa ni kama ni safu. Ni rahisi tu. Watazamaji: Hivyo kutumia strlen kama, get-- PROFESA: Naam. Watazamaji: Sawa. PROFESA: Ungeweza kutumia strlen au, kama hawakuwa na strlen unaweza tu kufanya up mpaka hit sifuri backslash kwa wote. Aidha ingekuwa kazi. Naam. Watazamaji: Hivyo ni dereference kila tabia moja kama tulikuwa kweli kuandika kanuni hii, sisi inaweza tu kufanya mabano t i kama na nyota mbele yake? PROFESA: Yeah, sawa sawa s mabano i, na kisha kusonga i chini hadi kugonga mwisho. Yeah, hiyo ni nini ungependa kufanya. Na mimi itabidi kweli kuwa ijayo mfano wa wakati sisi kweli kuandika strlen hivyo nyie mapenzi aina ya kupata kucheza karibu na hayo kidogo. Ndivyo ilivyo kwa mtu wazi juu ya kumbukumbu tu, masharti, kuyatumia, ubora anwani? Baadhi ya dhana ngazi za juu kuwa wewe mapenzi kwa haja uhakika wa kujua juu ya jaribio kesho. Sawa. Nzuri. Yep. OK, hivyo jambo moja kwamba tutaweza pia kuuliza wewe, kama sisi kufanya kila mwaka juu ya jaribio, ni, tuseme kwamba tumesahau (ambayo tunaonekana kusahau kufanya kila mwaka) ambao kichwa faili strlen ni alitangaza. Na hivyo inabidi kuandika upya wenyewe. Hapa ni orodha ya miongozo tuweze sasa wewe guys ambapo unaweza kupata kudhani kuwa s kamba haitakuwa null. Unaweza kudhani kuwa s itakuwa kuachishwa na backslash sifuri. Hivyo unajua kwamba ni nini itakuja mwisho na. Na, kwa mfano, kwamba urefu wa hodi itakuwa tano. Hivyo unaweza kudhani kuwa hodi Itakuwa tano, H-E-L-L-O. Huwezi kuwa kudhani kuwa backside sifuri akaunti kwa urefu. Hii jambo la mwisho hapa, hawana wasiwasi kuhusu integer kufurika. Je, mtu yeyote kumbuka nini integer kufurika ni? Watazamaji: Goes zaidi urefu wa [inaudible]. PROFESA: Yeah, unaweza kueleza kidogo, hiyo ina maana gani? Watazamaji: Hivyo, mimi nadhani unaendelea nyuma kwa mfano truncating mapema. Lakini kama una tu idadi mingi kwamba kwenda zaidi ya idadi ya bits kwamba unaweza kweli hawawajui kwamba itakuwa tu aina ya kukatwa. PROFESA: Yeah, kadhalika kawaida kompyuta, jinsi vipande wengi hawana tuna? Watazamaji: 32? PROFESA: Yeah, 32, wa kulia. Na hivyo ndiyo, ni nini, nne bilioni, bilioni mbili? Nne bilioni, hadi bilioni nne integers chanya, sawa? Bilioni mbili hasi, bilioni mbili chanya, inategemea jinsi gani unataka kufanya hivyo. Na hivyo kimsingi tunaweza kuwa integers kutosha kwamba unaweza kwenda juu kwa mawili kwa 31 bala 1, sawa? Kwa sababu mara moja sisi kugonga mbili kwa 32, hatufanyi na kwamba kumbukumbu nyingi katika kompyuta yetu. Na hivyo, kinadharia, mimi tunaweza kuja na idadi yaani, kama, mbili kwa 46. Ni kubwa-punda idadi, lakini kinadharia unaweza. Na hivyo integer kufurika ni kama kujaribu kujenga integer kwamba huenda zaidi ya kile kompyuta yako ni uwezo wa kuhifadhi. Na hivyo nyie kwa mfano huu hawana na wasiwasi kuhusu sisi kutoa kubwa kamba kwamba ni wawili kwa chars 32 muda mrefu. Kwamba itakuwa kweli maana. Haki wote, hivyo mimi nina kwenda tu kukupa nyie muundo msingi wa hili. Wewe ni kwenda kujenga kazi kuitwa int strlen ambapo a kupita katika, nyota Char, au kamba, pointer kamba kuitwa s. Wote haki, kila mtu nakala kwamba chini. Baridi. Njia nyingine Oops--. Hivyo hii ni aina ya kama vigumu kipande cha tatizo, hivyo mimi nitakupa guys labda tano kwa dakika sita ili aina ya wachangie na kuandika kazi hii nje. Watazamaji: Hatuna akaunti kwa [inaudible], hatuna kutumia integer? PROFESA: Hapana, huna. Mimi nitakupa guys ladha. Kitanzi wakati wanaweza kuwa muhimu sana hapa. Naam. Hapa ni pipi. Pipi pia inapatikana kwa jaribio, nadhani. Hivyo nyie itakuwa wote sugared hadi kesho. Je, I-- wewe got it. Watazamaji: Sawa. PROFESA: Naam. Labda sekunde 30 zaidi au hivyo. Haki wote, kama wewe ni si kosa, hakuna wasiwasi. Tutaweza hoja kwa njia hii pamoja. SAWA. Hivyo nina kwenda tu mpangilio muundo wa msingi kwa kazi hii hapa. Int strlen. Kwanza, haina mtu yeyote nataka kuwaambia mimi nini kwamba int kunaashiria? Tunahitaji kuwa na katika kazi hii. Watazamaji: Strlen [inaudible]. PROFESA: Hasa. Hivyo chochote kinachotokea katika hapa, tunahitaji kurudi integer. Na kama maalum katika spec, tunataka return-- Kwenda kwa hayo guys, tu kuendelea. Ni wote nzuri. Kula yote hivyo sina kuchukua ni nyuma, kwa kweli. Int tu kunaashiria kwamba wewe ni kwenda kuwa kurudi integer. Ni hii nyota Char s nini? Hiyo ina maana gani? Watazamaji: Kama, nini kuwa pembejeo katika. PROFESA: Hasa. Na kile ambacho ni karibu kitu kimoja kama Char nyota? Watazamaji: Kamba? PROFESA: Hasa. Basi wote sisi ni kufanya ni kutoa hii pointer kamba. SAWA. Baridi. Pia, usisahau, kama sisi kusahau kukupa mabano haya, usisahau kuandika nao mwenyewe. Kwa sababu kinadharia, kanuni yako ni sahihi kama wewe kusahau kuandika yao. Daima tu makini. Kama, mambo kidogo kwamba huna taarifa wakati wewe ni programu juu ya mbali, kwa sababu mbali yako anafanya hivyo kwa ajili yenu? Usisahau wakati wewe ni kuandika kwa mkono. Yeah? Watazamaji: Lakini jinsi sahihi? Kama, tunapata tatizo vibaya nzima? PROFESA: Hapana, hapana. Msiwe na wasiwasi. Ni kweli kinadharia iwezekanavyo kwa ajili ya kupata pointi kamili juu ya swali hata kama kanuni yako mapenzi kamwe kukimbia katika maisha halisi. Mimi zinaonyesha huna kujaribu kufanya kutokea. Kwa mfano, kama kama kila kitu hiyo ni hapa ni haki, lakini wewe kusahau matumbo au mabano, kificho wako si kweli kuendesha. Lakini tunaweza kuwa na huruma. Yeah? Watazamaji: Je, una kutoa maoni juu ya hati zetu? PROFESA: Hapana, hapana, hapana wasiwasi juu ya hilo. Hakuna maoni. Mtindo lazima kuwa nzuri. Kama, si Smush kila kitu kwenye mstari mmoja. Hatutakuwa na furaha na wewe kama wewe kufanya hivyo. Je, mtu yeyote wanataka nipe mstari wa kwanza? Ladha, ni rahisi sana. Yeah? Watazamaji: Int, n sawa na sifuri. Tu kuanzisha kukabiliana. PROFESA: Hivyo tunataka baadhi aina ya kukabiliana, sawa? Mimi tu kwenda kwa jina hilo "kuhesabu" kwa ajili ya readability. Je, tunataka kuweka kwa sawa? Watazamaji: sifuri. PROFESA: Yep. Semicolon. Ni pia weird sana kuchora semicolons. Tu mazoezi ya kufanya hivyo. Hivyo tunataka kwanza na kukabiliana ya aina int. Kwa sababu tunataka kuhesabu hadi jinsi wahusika wengi au barua ni katika kamba hii, sawa? Rahisi sana hatua ya kwanza. OK, labda kidogo ngumu zaidi sasa, jinsi ni sisi kwenda kufanya hivyo? Je, mtu yeyote wanataka nipe mstari wa kanuni ambazo zinaweza kuwa na uwezo wa kusaidia kitanzi kupitia chochote hii ni? Naam, jasiri nafsi katika nyuma? Watazamaji: sawa, hivyo wakati hatua Stars, yeah, nyota wa s, si sawa na sifuri, basi kufanya kitu? PROFESA: Hiyo ni kweli, kweli karibu. Kweli karibu. Hivyo nina kwenda kushughulikia mambo mawili na kwamba. Awali ya yote, siyo hasa sifuri. Ni nini? Ni null Terminator, ambayo ni backslash sifuri. Hivyo wao ni tofauti katika suala la jinsi wao ni kuhifadhiwa. Hivyo wewe ni kweli karibu. Na pili, hatutaki kwa hoja tu pointer. Tunataka kweli kupata maadili, haki? Na hivyo ni jinsi gani sisi kufanya hivyo? Rahisi sana. Sidhani kuhusu kuyatumia, sidhani kuhusu kumbukumbu. Kurudi nyuma na wiki mbili bila shaka hii. Watazamaji: [inaudible]. PROFESA: Kama ya, kumbuka? Masharti ni nini? Jinsi ndio kuhifadhiwa katika kumbukumbu? Watazamaji: Wao ni kukulia. PROFESA: Wao ni kukulia. Hivyo ni jinsi gani sisi kupata kila tabia ndani? Watazamaji: [inaudible]. PROFESA: Hasa. Hivyo while-- yale yanayoendelea ndani ya hapa? S ya - Watazamaji: I. PROFESA: Oh, i haipo, gani? Watazamaji: Oh, kuhesabu? PROFESA: Tunaweza tu kutumia kuhesabu, hawawezi sisi? Watazamaji: Samahani, mimi kuitwa ni i. PROFESA: Yeah, ni wote nzuri. Tuna kutofautiana hapa hiyo ni tayari imetangazwa kama kukabiliana yetu. Hivyo kwa nini sio sisi tu kutumia kwamba hoja kwa njia ya kitanzi wakati? Je, hiyo mantiki? Hivyo wakati s ya count-- haina mtu yeyote wanataka kunipa kile kinachotokea baada ya hapa? Watazamaji: Ni haina sawa. PROFESA: Je, si sawa, sawa? Ni bang sawa, Moderators kumweka sawa, chochote guys wanataka kuiita haina equal-- Watazamaji: [inaudible]. PROFESA: Naam. Kumbuka moja kunukuu ni kwa Char, quotes mbili ni kwa kamba. Kuwa makini wakati kutumia yao. Hivyo wakati sisi ni kutafuta njia ya safu, tabia mwisho, tunajua hatutaki kuwa ni backslash sifuri. Hivyo wakati. Sisi si mwisho wa kamba. Je, tunataka kufanya ndani? Watazamaji: Tunataka kuongeza kukabiliana hivyo ni makosa pamoja pamoja? PROFESA: Hasa. Hivyo hapa sisi ni kwenda kufanya kuhesabu, kuhesabu pamoja pamoja. Kukosa moja zaidi line. Tuko karibu na hapo. Je, ni sisi kusahau kufanya nini? Watazamaji: Kurudi sifuri? PROFESA: Unataka kurudi sifuri? Watazamaji: Hakuna, kurudi kwa strlen. Kusubiri. PROFESA: Ni ni kuhifadhiwa katika? Watazamaji: Hesabu. Kuhesabu. PROFESA: Hasa. Hivyo hapa sisi ni kwenda na kurudi kuhesabu. Kwa sababu gani tuko kufanya hapa ultimately-- tuna kukabiliana kutofautiana hiyo ni kwenda increment kupitia kamba yetu. Tunakwenda kuendelea, kuweka kwenda, kwa kuzunguka katika kitanzi hii. Na wakati sisi siyo tarehe ya mwisho ya hii kamba, ambayo ni null Terminator. Na kila wakati sisi kwenda kwa njia ya hivyo, sisi ni kuongeza ili kukabiliana na yetu. Na tunakwenda zaidi pamoja katika safu hii. Na mwisho, mara moja sisi kugonga null Terminator, tunajua, loo, tunaweza kuvunja, kurudi kuhesabu. Tuna strlen yetu. Je, kila mtu kupata jinsi hii ilikuwa kutekelezwa? Wakati loops-- Najua kuwa hatuna amefanya sana pamoja nao, lakini wao ni kawaida sana, muhimu sana kama sijui nini wewe kuacha hali lazima ina kuwa. Swali? Watazamaji: Je, sisi kuandika null kwa masharti wakati? PROFESA: Wakati? Yeah, hivyo katika tatizo hili nilikuwa wewe guys kudhani kuwa s haitakuwa null. Kwa sababu kumbuka, kinadharia, ikiwa niliokupa pointer kwamba alikuwa pia kikubwa cha kumbukumbu, ingekuwa kukupa null, haki? Hilo ndilo uendeshaji mfumo atafanya. Hivyo kama mimi Sikuwaambieni kwa kudhani s itakuwa batili, unahitaji kuangalia. Hivyo hapa up, ungependa kufanya kama sawa sawa na null, kurudi moja. Kitu kama hicho. Watazamaji: [inaudible] sifuri. PROFESA: Sawa, mimi nitakuambia wewe kwa nini hatuwezi kufanya hivyo. Kwa sababu kumbuka katika kumbukumbu, haki, hapa. Tutaweza kwenda hapa. Nimepata vitalu kubwa ya kumbukumbu zote na grids kwamba duka maadili tofauti, sawa? Na hivyo kamba zote is-- kwa mfano, kama sisi ni pembejeo hodi, itakuwa H-E-L-L-O sifuri backslash, sawa? Na kisha ambaye anajua, kama random mambo ambayo ni katika hapa baada yake. Sisi si kweli kujua nini huko. Na hivyo kama ungekuwa kufanya badala ya backslash sifuri, null, inaweza kuwa null. Kwa sababu tu inaweza kuwa na maana baadhi ya mambo mengine random ambayo si mali katika kamba yako. Na hivyo kwa njia hiyo sisi daima kujua kwamba kamba mwisho ni pamoja na backslash sifuri. Na hivyo ndiyo siku zote jinsi sisi kuangalia kuona mwisho wa kamba. Batili, njia kwamba wote ni kama una pointer haupo, kwanza ya yote, au kama kumbukumbu yako ni tu kubwa kwamba huwezi kurudi, basi ni d kuwa null. Hivyo kuwa makini sana wakati kutofautisha Tofauti kati null na backslash sifuri. Naam. Kila mtu sawa na hili? SAWA. Kwa hiyo mimi alikuwa nyie kuandika strlen. Kuchukuliwa kwa tungeweza pia kuuliza wewe kuandika nje kwa mimi, kumbuka kwamba "Atwoa" au chochote nyie unataka simu yake? Hiyo kazi katika Vigenere na Kaisari, kwamba waongofu Ascii thamani ya integer? Hiyo pia ina kuja juu ya siku za nyuma Quizzes wa majukumu tumekuwa aliuliza wewe kuandika. Pretty much kazi yoyote kwamba umetumia na ni rahisi sana kuandika mwenyewe, sensorer kama ni ya chini, ni juu, ili kupunguza, kwa juu. Kazi hiyo inaweza kubadilisha kamba kutoka lowercase kwa uppercase. Sote tunajua jinsi ya kufanya hivyo, sawa? Ni rahisi sana. Nataka tu kuhakikisha kuwa wewe can-- ni mawazo mchakato huo. Wewe tu iterate kupitia na kurejea mambo. Wewe ama hesabu au wakati kurejea mambo tofauti. Napenda suggest-- mimi sijui kama tunakwenda kuuliza kukariri kile mtaji au mji mkuu Z, au lowercase A au lowercase z ni katika Ascii, lakini napenda kupendekeza labda kuandika kwamba chini katika kesi tunafanya. Hivyo tu nyie na kumbukumbu. Kama uppercase A ni, nini, 197? Na kisha lowercase ni kama 50 na kitu. 65, yeah, kuna kwenda. Hivyo tu pretty much kujua tofauti kati yao ni 32. Hiyo ni pretty muhimu. Naam. Mimi ni nzuri juu ya hili? SAWA. Watazamaji: Tunaweza kinadharia kuandika baadhi ya hizi chini pamoja juu ya little-- yetu PROFESA: Wewe kinadharia inaweza tu nakala kazi chini. Hiyo ni kweli. Watazamaji: Si [inaudible]. PROFESA: You guys kuwa na karatasi. Nyie na karatasi kumbuka. Unaweza aina hiyo. Unaweza kuandika hayo. Unaweza kufanya chochote unataka na hayo. Naam. Hivyo kinadharia, ikiwa unataka, kwenda kwa. Watazamaji: [inaudible] lakini sisi si kweli lazima haja ya kukumbuka thamani, tunaweza tu kutumia juu au kwa kazi chini, sawa? PROFESA: Naam. Lakini kama tuliyowapa swali inayosema kuandika kwa juu, basi ingekuwa haja ya kuandika. Hivyo wewe guys unaweza kudhani kuwa wewe guys kupata kazi zote, lakini kama unataka kutumia kwa juu au kwa chini, je, pia una kufanya? Watazamaji: [inaudible] kutumia CS50 [inaudible] PROFESA: Je, ni CS50.h? Kuwa makini huko. Hivyo kwa juu, kupunguza, ni juu, ni ya chini, kazi ambazo zinahusisha kamba kudanganywa ni yote ndani ama Ascii au ndani ya maktaba math au ndani ya maktaba kamba. Hivyo kama wewe guys kutumia wale kazi, kuwa makini na kukumbuka ni pamoja na mpira wa kichwa hicho. Hivyo labda pia jambo unataka pamoja katika karatasi yako, kile ni kichwa? Ni maktaba nini tumekuwa kutumia? Nini kazi ni ndani ya maktaba hizo? Ni muhimu. Yeah? Watazamaji: Je sisi tu askari nje na kufanya alama kupitia kabisa kila barua tumekuwa milele kuonekana kama juu ya maswali yote? PROFESA: Wewe naweza. Sijui jinsi ya furaha tunakwenda kuwa na daraja Jaribio kwamba wakati kila kipande cha kanuni ni mara mbili kwa muda mrefu kama kuna haja kuwa. Sijui, tupate kuchukua mbali hatua kwa mtindo. Lakini kinadharia yako kificho itakuwa haki. Nyie naweza askari nje na tu ni pamoja na kila kitu. Hiyo ni sawa pia, yeah. Watazamaji: [inaudible]. PROFESA: Naam. Ningependa kupendekeza si kufanya hivyo ingawa. Naam. Watazamaji: Moto. PROFESA: Swali Mwema. Watazamaji: Hivyo, mazingira ya kesi mbaya. PROFESA: hali mbaya zaidi. Kama kabisa kusahau, unaweza kufanya hivyo. Naam. Yep, kanuni ni haki pale. Nilikuwa n badala ya kuhesabu lakini, wewe Unajua, chochote ikifungwa mashua yako. Watazamaji: Ngoja, hivyo sisi bila kuwa na alama pamoja na sababu tuko kuanzia saa int? PROFESA: Yeah, I just kudhani kuwa sisi waliombwa kuandika kazi. Kama alitaka kuwa salama, wewe inaweza pengine kuiweka huko. Lakini mimi tu haikujali, yeah. Mimi wala hata kujua kama wewe haja maktaba yoyote kwa hili. Kwa sababu wewe si kweli uchapishaji nje chochote au kitu chochote, sawa? Naam, mimi sijui kama unahitaji maktaba. SAWA. Hii pia ni kidogo zaidi pamoja mistari ya kumbukumbu kudanganywa. Aina hii ya kidogo Tricky. Fikiria kuhusu hili. Una kazi kuitwa func. Mimi nilikuwa na jina lake ni chochote, lakini mimi kuchagua jina hilo func. Mimi kuwa ni juu kuu wangu. Kumbuka, unataka kuwa na kazi baada kuu yako, unataka kuhakikisha pamoja na mfano wa juu. Lakini katika kesi hii ilikuwa ni ya muda mfupi kwamba nilihisi kuwa mimi naweza tu pamoja na hayo atop kuu. Mimi hakuwa na haja ya kuwa na mfano, kwa sababu ni tayari imeandikwa juu. Basi wote mimi nina kufanya katika kazi yangu kuu ni kujenga integer x sawa 10. Mimi nina wito func yangu kazi, na kisha kuchapisha up kitu. Na kisha hiyo ni kweli nini func ni kufanya. Nyie nataka kufikiri kwa njia hii. Kwa sababu ni kidogo suala gumu. Ni sana, gumu sana, kwa kweli. Kufikiri kwa nini hii Mpango itakuwa outputting. Mimi nitakupa guys dakika mbili. Majadiliano nzuri? Watazamaji: Naam. PROFESA: Naam. Haki wote, hivyo hii ni gumu kwa sababu. Na hii ni kwa nini nilitaka kuleta huu kwa mawazo ya kila mtu. Je, mtu yeyote wanataka kunipa maoni, jaribio? Kitu gani hii magazeti nje? Kabisa faini kama wewe ni sahihi. Yeah? Watazamaji: Nadhani ni 100 na kisha 10 juu ya mistari mbili tofauti. PROFESA: Na 10? Je, mtu yeyote kuwa na guesses nyingine yoyote? Yeah? Watazamaji: Labda tu kwa sababu 10 func si kurudi kitu chochote? PROFESA: Sawa, hivyo sisi na nadhani namba moja ni kwamba nadhani namba mbili ni tu kwenda magazeti nje 10. Je, mtu yeyote kuwa na guesses nyingine yoyote? SAWA. Basi hebu kutembea kwa njia hii, sawa? Wakati wowote kupata kipande cha kanuni, si tu kuangalia ni na kuwa kama, ah, hiyo ni mambo sana! Mimi hivyo kuchanganyikiwa! Kama, utulivu mwenyewe chini. Tu kujua kwamba unaweza tu kuangalia njia kificho mstari kwa mstari. Hayo ni yote ni. Ni kama kusoma kitabu. Hivyo, pamoja na kazi yoyote, sisi daima kuanza saa kuu. Hivyo sisi ni kwenda kwa kuanza saa int kuu utupu, hata mpango huo tayari kukimbia chini, sawa? Kuanza saa katika utupu kuu. Int x ni sawa na 10. Hivyo nina kwenda kwa kufuta hii. Mimi nina kwenda kuteka kumbukumbu tu hivyo guys unaweza aina ya kuona nini kinatokea. Kumbuka chini hapa tuna mkusanyiko wetu? Hadi hapa tuna wetu chungu mahali fulani hapa. Stack kukua, sawa? Na ndani ya stack, una mains kazi kama vile wote wa vigezo mains ndani. Hivyo hapa, int x sawa 10. Ndani ya kazi yetu kuu tuko kujenga variable kuitwa x. Sisi ni kuweka kwamba sawa na 10. Hapa nimepata baadhi x, na uko kuweka kwamba sawa na 10, kulia, ndani ya kuu. Kila mtu mwema? Kazi. Hivyo sasa, ndani ya kuu yetu kazi, sisi ni wito kazi tumekuwa imeandikwa hapo juu. Hivyo sisi ni sasa kuingia kazi ya pili. Tunakwenda kuunda nyingine kutofautiana int x sawa 100. Nini kinatokea hapa katika stack? Nini kinatokea wakati wewe piga kazi ambayo inajenga vigezo mpya? Nini kinatokea hapa katika stack? Watazamaji: [inaudible] piles juu? PROFESA: Naam. Hivyo ni kweli inajenga nakala. Na aina ya piles juu. Fikiria stack-- mkusanyiko ya vitabu, mkusanyiko wa kitu chochote. Piles juu, kwanza katika mwisho nje, mara ya mwisho katika, kwanza nje. Hivyo ni kwenda kujenga x hapa. Hiyo inaenda kuwa funcs zote vigezo. Kubwa. Hivyo basi, tuna mbili tofauti x kwamba kuwakilisha mambo mawili tofauti sana. Kisha tunakwenda magazeti nje integer ya x. Basi hebu magazeti 100, sawa? Kwa sababu hapa ni 100. Hivyo hiyo ni jambo la kwanza kwamba ni kwenda magazeti nje. Kama hii anarudi kazi kitu, sasa kwamba kazi, kwamba mstari katika kuu ni kosa. Kila mtu mzuri na mimi hadi sasa? Hivyo sisi ni sasa kupitia wawili kati ya mistari mitatu ya kazi yetu kuu. Sasa tunakwenda mstari wa tatu. Tunakwenda printf. Ni hii x ndani ya kuu ni nini? Je, hiyo kuwakilisha? Nini thamani ya x sasa? Watazamaji: 100. PROFESA: Ni 100? Watazamaji: Bado 10. PROFESA: Bado 10. Naam. Kwa sababu kumbuka, ndani ya func yetu, x sawa 100. Lakini kama sisi kurudi nyuma kwa kazi yetu kuu, kwamba kutofautiana ni kuhifadhiwa katika mahali tofauti juu ya stack yetu. Hivyo sasa tunahitaji kurudi nyuma na stack kuu, mains vigezo mitaa. Na hapa x ni sawa na 10. Na hivyo sisi ni kwenda magazeti nje 10. Hivyo yeye alikuwa na haki kabisa. Tunakwenda kuwa na pato la 100 na 10. Yeah? Watazamaji: Wakati wewe malloc, je, ni lundo au stack kwamba ni [inaudible]? PROFESA: Wakati malloc, wewe ni kuchukua kumbukumbu kutoka lundo na kugawa yake. Hivyo kwamba huna kwa fujo na yoyote ya hii. Kwa hiyo mimi nadhani takeaway kubwa hapa ni kitu kinachoitwa wigo. Kwa wale ambao walikuwa katika mapitio kikao jana usiku, sisi aliyesema ufupi juu ya jambo hili. Wigo amefafanua jinsi na wakati vigezo yako kuwepo. Au ndani ya kile muafaka kufanya vigezo yako kuwepo. Pretty sana utawala wa kidole gumba kwa ujumla ni, variables-- yako kama wewe kujenga yao ndani ya curly braces zipo tu ndani ya braces wale curly. Hivyo kwa mfano katika kazi yetu ya func, unaweza kuona wale braces mbili. Kama wewe ni kujenga chochote ndani yake, nafasi ni yote wewe kufanya ni kujenga stack na kuhifadhi kwamba kuna. Same kitu katika kuu. Hiyo tu kuhifadhiwa ndani ya kuu. Pia unataka kuwa mwangalifu sana hapa. Kwa sababu ya wigo pia lends yenyewe kwa mifano mbalimbali. Hivyo kwa mfano a kwa kitanzi, kwa int i sawa 0. Mimi ni chini ya, sijui, 10. Mimi pamoja na plus. Na nimepata kificho ndani yake, sawa? Wapi kutofautiana hii, i, kwa kweli tu zipo? Tu ndani ya yako kwa kitanzi. Hivyo I bet wengi wenu guys kuwa pengine ilipata hitilafu hii wakati unafanya mipango katika psets yako. Ni wangapi wenu guys wamejaribu kutumia i nje ya kwa kitanzi na alikuwa makosa? Kama integers unreferenced au kitu kama hicho? Sababu ni kwa nini kitu kinachotokea ni kwa sababu hapa uko kujenga kitu ambacho tu ipo ndani ya yako kwa kitanzi. Na kama wewe kujaribu kuitumia, i hana kweli zipo nje ya hiyo. Hivyo kimsingi kompyuta wakisema, Mimi hawajui nini wewe kuzungumza juu. Najua wote ni kwamba i alikuwa hapa, lakini sasa hakuna tena. Hivyo kama ningekuwa kujenga kwa kitanzi ndani, sawa? Na mimi nina kwenda kujenga mwingine, kama int j, na kuwa ni kufanya chochote. Na una kificho ndani ya kuwa kitanzi, j tu ipo hapa. Lakini hiyo pia ipo ndani ya i. Na hivyo j ipo tu ndani ya hii kwa kitanzi, ambapo i ipo katika jambo zima. Kila mtu wazi? Same kitu na kauli masharti kama unataka kujenga kitu chochote. Same kitu na wakati tanzi kama unataka kujenga kitu chochote. Hiyo ni kitu cha mwangalifu sana kuhusu. Hivyo hii ilikuwa ni tatizo mzuri katika kuhisi kwamba alionyesha mambo mawili. Ni alionyesha kwanza, wigo. Na alionyesha pia mgao kumbukumbu. Kwa sababu nyie anapaswa kujua kuwa kazi kukua zaidi katika stack. Na kwamba wakati wewe piga kazi, wewe ni kujenga kimsingi stack mpya wa kumbukumbu. Hiyo ni tofauti sana na nini mains yako kumbukumbu ni. Naam. Whew! Kila mtu sawa katika suala hilo? Hiyo ilikuwa ni utata. Mada nzuri sana ya kwenda juu, kwa sababu wewe pengine kwenda kupata baadhi gumu mambo kama hayo juu ya jaribio. Naam. Baridi. Mimi itabidi kuweka wewe kupata 100 juu ya moja mstari na kisha 10 kwa upande mwingine. Naam, nzuri sana. Sawa, sasa nyie kupata nafasi ya kuwa TAS. Kupata kujibu zote nzuri barua pepe kwamba mimi wakati mwingine kupata. Kwa hiyo, Ndugu Andi, naona Nadhani kitu ni kwenda vibaya na mkusanyaji yangu. Nina hakika kwamba kanuni yangu ni sahihi, lakini mimi kuendelea kupata kosa segmentation kila wakati mimi kukimbia. Nini kinaendelea? Tafadhali msaada, kura ya upendo. Kama nyie got kitu kama kwamba jinsi gani unaweza kuitikia? Hizi ni kweli ya kawaida sana maswali tutakuuliza wewe. Ni kama, tutaweza kukupa mazingira, tutaweza kutupa nadhani wako bora katika nini kinaendelea. Mtu yeyote kuwa kumchoma katika nini kinaendelea? Yeah? Watazamaji: Labda dereferenced null, kitu kama pointer ni akionyesha kitu null. PROFESA: Yeah, kwamba d kuwa mfano wa wakati ambayo ingeweza kutokea. Lakini nini picha kubwa ya nini kinaendelea hapa? Watazamaji: Je, ni wewe ni kujaribu kupata kumbukumbu kwamba wewe si zinatakiwa kuwa na upatikanaji wa? PROFESA: Hasa. Hivyo kufikiria seg kosa, mbali mipaka, vikwazo eneo katika kumbukumbu kwamba unapaswa kuwa kugusa. Hivyo pretty much wakati wewe ni kujaribu kwa index-- kama kwa mfano, umefanya alitangaza safu kutoka sifuri hadi tisa. Lakini wewe kujaribu kugusa kwamba 10 thamani, huna upatikanaji wa jambo hilo. Kwa kuwa si amekiri kuwa ni. Na hivyo kompyuta yako ni kwenda kuangalia kwamba kama, uh oh, wewe ni kujaribu kwenda nje ya mipaka ya ripoti. Mimi nina kwenda kukupa segmentation kosa. Fikiria kama sehemu, sawa? Sehemu ya ziada, kosa hilo ni wakati wewe kujaribu uvunjaji kitu na unapaswa kuwa huko. Segmentation kosa ni wakati wowote wewe kujaribu kugusa mambo kwamba unapaswa kuwa kugusa. Mifano jambo la kawaida ni ripoti. Bila shaka, kama wewe ni kujaribu kugusa kwamba alikuwa null, ambayo ingeweza pia kazi vizuri. Kama pointer yako alikuwa anajaribu kugusa mambo ambayo hawapaswi kugusa, kwamba pia anaweza kufanya kazi pamoja. Wengi kawaida utasikia kuona hii katika safu. Kila mtu mwema? Watazamaji: Hivyo kama unataka kupata hatua 10 na kuna tu kikomo ya tisa au kitu. PROFESA: Yeah, kwa uhakika. Pretty much. Baridi. Ndugu Andi. Hivyo sisi tumepewa hizi za ajabu mambo kuitwa kila aina. Kama kuunganisha sort-- kama sisi msumeno katika mfano wakati Daudi alifanya nzima Jambo katika class-- kwa nini, kama ni hivyo kwa kasi zaidi kuliko yoyote ya aina nyingine, kwa nini sisi hata bother kujua yoyote ya aina nyingine? Ni swali hili kweli kuuliza wewe nini? Nini tatu word-- Watazamaji: Nini biashara-off? PROFESA: Hasa. Hilo ndilo swali kuuliza. Nini biashara-off kati ya Kuunganisha aina mistari aina nyingine yoyote? Watazamaji: inachukua kumbukumbu, sawa? PROFESA: Je, kueleza kwamba kidogo zaidi? Kwanza hebu kueleza Unganisha kuhifadhi. Ni kwa jinsi gani kuunganisha aina kazi? Watazamaji: Hivyo ni kazi na kugawa kila kitu katika nusu na kisha kuweka pamoja na reallocating hivyo ili, kama kila wakati kuunganisha seti. PROFESA: Pretty sana. Hivyo siwezi kuteka hii nje, lakini ingekuwa kuchukua yangu dakika tano kuteka ni nje. Kuangalia nyuma juu ya slides sehemu ambapo sisi kufunikwa Unganisha namna yo yote. Hasa. Hivyo njia kuunganisha aina matendo je, ni mgawanyiko mambo katika nusu, na kisha tu inaangalia maadili ya kwanza ya wote na aina tu kwamba. Kuendelea inajenga arrays mpya na unaweka mambo zaidi na zaidi katika utaratibu. Na hivyo wakati hiyo ni kweli, kweli haraka kwa sababu it's-- unajua, tafuta binary ni n logi ya n. Wewe ni kujenga mengi arrays mbalimbali kwamba wewe ni kutumia kiasi kikubwa cha kumbukumbu. Na hivyo wakati ni kasi, biashara mbali hapa ni kwamba unatumia kumbukumbu zaidi. Na hivyo, ladha, aina na utafutaji walikuwa kufunikwa mengi zaidi mwaka huu kuliko wao wamekuwa katika miaka ya nyuma. Nyie lazima kuona kwamba yalijitokeza ipasavyo juu ya jaribio. Napenda dhahiri kutumia muda kwenda juu ya nini yote ya aina mbalimbali ni, tafuta jinsi binary, jinsi linear kazi ya utafutaji. Jinsi ya labda pseudocode kanuni hizo nje. Ni mara mbio ni nini? Kitu kama mbio nyakati ni sana rahisi nakala chini kwenye karatasi kumbuka, sawa? Ni kweli ni vigumu wakati uko katikati ya mtihani na una kufikiri kuwa nje. Nakala yake chini. Mimi kuhakikisha uko kwenda haja ya kujua kwamba. Biashara awamu ya pili ni nini? Kesi mbaya, matukio bora kesi kwa ajili yao wote, kupata sana kujua. Yeah? Watazamaji: Je, tunahitaji kujua jinsi ya kanuni Unganisha aina? Kama, tunahitaji kumbuka kujirudia? PROFESA: Mimi sana shaka, tu kwa sababu ni kama haki ngumu. Lakini inaweza kuwa infeasible kama sisi kuuliza wewe kutumia pseudocode nje. Naam. Yep, sawa, moja zaidi. Hii inaweza wamekuja katika wewe mwisho kipande katika kidogo. Yeah? Je, kila mtu kusikia kwamba? OK, hivyo pretty much kwanza ya wote, ni aina gani ya mpango itakuwa kutoa pato kama hii? Kumbuka sisi aliuliza wewe kujifunza kuhusu aina hii mpya ya debugging chombo? Jina lake lilikuwa lipi? Valgrind, haki Ilikuwa ni mpango ambapo unaweza wito kwamba anaweza kuweka wimbo wa kumbukumbu zote uko kutumia katika mpango wako na kinachoendelea. Hivyo kama wewe nimepata kitu, kama, dhahiri waliopotea, 40 ka katika kuzuia moja. Pengine wewe si kukumbuka kwa bure hilo. Kwa sababu kama unatumia ka ya kumbukumbu, hiyo ina maana umefanya kupatikana kwamba kumbukumbu, lakini wewe hawajaweza kwa bure. Kwa hiyo unataka kufanya kuhakikisha kwamba uko pia kutumia free-- hiyo ni function-- kwa bure zote ya kumbukumbu reallocated na malloc. Baridi. Hivyo slide huu, mimi itabidi it up. Ni kila mahali katika mengi ya mihadhara, katika mengi ya slides sehemu. Kweli unataka kuhakikisha wewe tu kujua yote haya. Aidha katika kumbuka karatasi yako au kama wewe wanataka kukariri, kujisikia huru na. Hiyo ni kweli, kweli, kweli ni muhimu. Pia ni nzuri sana swali kwamba tunaweza kuomba. Kwa nini Uchaguzi sort-- kuangalia Uchaguzi sort-- wote wa runtimes ni n squared. Bila kujali jinsi orodha suala la wewe kama, hivyo kwa nini ni Uchaguzi sort-- Mimi nitakupa guys 30 pili kufikiri juu ya hili. Kwa sababu ni aina ya utata. Inahusisha baadhi ya mawazo dhana. Kwa nini mara kukimbia kuwa sawa katika wote matukio mbaya na bora kesi? Yeah? Watazamaji: Kwa sababu Uteuzi aina kila msimamo au nafasi katika hii safu kidogo Jambo au chochote. Hivyo hata katika bora kesi, hata kama ni kikamilifu yamepangwa, bado bila kuwa kama, sawa, moja. Katika nafasi yangu ya kwanza nina moja. Na kwenda kwa njia ya wote. OK, moja ni ndogo. Na kisha unaendelea tena na ni kama, sawa, wawili ni ndogo kuliko mambo yote. Lakini bado ana kuangalia kila mmoja na kila mmoja. PROFESA: Naam. Hivyo kwa mfano, hebu sema tu tuna orodha, tayari Iliyopangwa, safu moja hadi tano. Njia hiyo aina Uchaguzi ni kwamba huenda kwa njia, ni hundi hizi mbili. Basi ni hundi hizo mbili. Na kisha ni hundi, na ni hundi. Anaendelea kuangalia wote, bila kujali kama au si ni kweli yamepangwa. Kwa sababu hiyo ni tu njia ya aina kazi. Na hivyo swali hili ni aina ya kama swali dhana tutakuuliza. Ambapo kwanza, kwa kujua nini aina Uchaguzi ni, haki, kuwa na uwezo kujibu swali. Wewe kuwa na uwezo wa kuelewa conceptually nini kinaendelea. Na kisha unaweza kuomba na kufikiri, OK hebu tu kufikiria mazingira ya kesi mbaya. Wao ni wote katika utaratibu wa kushuka. Jinsi gani yanayoathiri yake? Nini kama ni wakipanda ili? Kama ni tayari Iliyopangwa? Jinsi gani yanayoathiri runtimes? Na kisha Uteuzi aina, utasikia taarifa kuwa haina kweli jambo. Kwa sababu wewe ni kuangalia zote maadili bila kujali nini kinatokea. Na hivyo mambo vizuri kukumbuka. Kwa nini baadhi aina tofauti na wengine na namna bora na matukio ya kesi mbaya utaathiri wote. Mimi nina kwenda kwa kweli kugonga katika aina kwa sababu hiyo itakuwa juu ya jaribio. Naam. SAWA. Kuna dakika sita wa kushoto. Naweza kuchukua dakika tatu ya maswali. Mimi pia hutegemea kuzunguka kwa kama dakika 20 baada ya kifungu cha kama unataka kuuliza maswali kama vile. Je, mtu yeyote tu na kwa kweli mafupi maswali au masuala dhana wao uko wazi juu hivi sasa? Yeah? Watazamaji: Je, unaweza kuongea kidogo kidogo kuhusu kampuni za bitwise? PROFESA: Naam. Waendeshaji bitwise hivyo ni kitu ambacho pengine kutaka tu kuweka kwenye karatasi yako. Hivyo quickly-- Sitaki kwenda sana katika kina kwa sababu Kikuu cha Harvard, katika mapitio yao kikao, kufunikwa ni pretty vizuri. Bitwise operator, kuna watano kati yao, sawa? Kuna hii, ambayo ni x au kazi, kuna ampersand, ambayo ni na. Bomba, ambayo ni au. Na kisha una mbili aina mbalimbali za mabadiliko. Kama mimi kukupa maadili mbili, kama Nawapa, kama, moja na moja. Nini ambacho ingekuwa kutathmini kwa? Kama mimi kukupa kweli na kweli, ni kweli? Je kuhusu kweli au uongo? Bado kweli, haki? Kwa sababu kuna au. Tutaweza zaidi uwezekano kukupa namba. Basi kumbuka, moja sawa na kweli, sifuri ni sawa na za uongo. Na tupate kutoa mambo haya wewe na kuuliza wewe kutuambia nini kinatokea. Harvard inashughulikia ndani kwanza Dakika 10 ya kikao yao utafiti kweli, kweli vizuri. Hivyo nyie wanataka kufanya kuhakikisha kuangalia nyuma juu ya hilo. Watazamaji: Je, pisa5 kwenda kuwa juu ya jaribio? PROFESA: Hapana Je, si hata kuangalia pisa5 hivi sasa. Ni vigumu. Tu hawana hata bother kuangalia pisa5. Hata hivyo, kama baadhi ya mwanga na mapendekezo, mimi kupendekeza wewe kuanza pisa5 haraka kama jaribio ni juu. Hii itakuwa ni gumu wiki, lakini basi nyie itakuwa kupita kwenye vilima ya rolling kijani na puppies, na ni faini. Darasa hili anapata muhimu rahisi baada ya pset tano. Watazamaji: Ofisi ya masaa ni Jumapili, Jumatatu? PROFESA: Yeah, hivyo masaa ya ofisi mapenzi Jumapili Jumatatu kwa ajili ya pset. Ofisi ya masaa usiku wa leo kimsingi tu kuwa mapitio ya jaribio. Kama mtu anataka kuja na kuuliza TAS swali, tutaweza kuwa huko. Mimi itabidi kuchukua swali labda moja zaidi kama mtu ana swali? Yeah? Watazamaji: Wakati uko kufafanua nodes, [inaudible] kama wewe kusema nyota nodi na kisha ijayo, gani kompyuta moja kwa moja kuelewa kwamba wewe ni akimaanisha pointer mwingine? PROFESA: Hapana Watazamaji: Una relink ni [inaudible]? PROFESA: Kwa hiyo kimsingi struct nodi ya ni, kumbuka, ni kama kujenga nodi na basi una pointer iitwayo ijayo. Wote wewe kufanya ni kuwa na muundo wa huko. Una kuwapa kwamba pointer mahali fulani. Hivyo kompyuta haina kujua nini ni kufanya bado. Una kweli hawawajui wakati wewe ni kujenga orodha yako wanaohusishwa. Na kwamba ni nini hasa pset 5 itakuwa juu. Hivyo hakuna wasiwasi kuhusu yoyote ya kuwa hivi sasa. Watazamaji: Hivyo hatuna haja ya kuzingatia sana juu ya orodha kiungo, tu mkuu mimba? PROFESA: Tu mwingi pretty much, foleni, orodha kiungo, miti, meza hash. Tu kuwa na uwezo wa kujua nini hao. Sisi siyo kwenda kuuliza wewe kama kitu chochote maalum kwa sababu sisi si kweli amefanya pset kwamba inashughulikia yoyote ya kuwa bado. Hivyo katika dakika mbili za mwisho kabla ya Mimi kukuweka huru kuua jaribio hili. Pretty sana, kama, fikiria jinsi mbali nyie wamekuja katika darasa hili. Nakumbuka wakati wiki mbili ya darasa hili, baadhi yenu kutumia masaa matatu kuandika maji. Muda gani itachukua wewe guys kuandika maji sasa? Sekunde 30, labda? Fikiria juu ya ni kiasi gani nyie wamejifunza. CS ni chini kweli, kweli ngumu. Hakuna shaka ya kwamba. Ni vigumu, kwamba ni kwa nini hakuna mtu anasoma yake. Ni vigumu tu. Na ni kabisa faini. Na mimi nina kweli fahari kwamba kila mtu ana yake hii alifanya mbali. Psets si rahisi. Wao kuchukua muda mwingi. Nyie, mimi kamwe kuuliza wewe kuandika mchezo wa 15 au Vigenere juu ya pset. Hakuna haja ya tu kituko nje juu ya hilo. Wote sisi ni kupima hapa ni kufanya tathmini ya maarifa yako dhana, ikiwa ni pamoja kama baadhi ya ujuzi wako msingi ya coding. Mtihani imeundwa kuwa kweli changamoto. Kama, ni iliyoundwa kwa wewe kupata 100. Ni pia iliyoundwa kwa ajili yenu kwa pengine kuwa na uwezo wa kumaliza katika muda wa dakika 75. Na hiyo ndiyo kabisa faini. Nina mwanafunzi mwenyewe. Mimi najua, I hate ni wakati mimi kutembea nje ya jaribio kuwa kama, shit. Hiyo ilikuwa ni ngumu kweli kweli. Pengine nini kinaendelea happen-- na kwamba ni kabisa faini, Mimi nawaambia guys hivi sasa. Njia juu ya mambo haya si juu wakati wote. Na kwa wale ambao wamekuwa kupata, kama, threes juu ya seti tatizo lako, hiyo haina maana wewe ni kwenda kupata asilimia 60 katika darasa hili. Kama kupata 60% juu ya Jaribio, kwamba hana maana wewe ni kwenda kupata D katika darasa hili. Tunaona, hasa mimi, kwa wale katika sehemu yangu, Mimi naona ni vigumu nyie ni wote wanaofanya kazi. Na mimi kuweka wimbo wa jambo hilo. Nyie itakuwa vizuri. Hakuna kumbukumbu ya kitaasisi ya furaha mwishoni mwa muhula. Kwa sababu wote Harvard watoto ni kuwaambia marafiki zao, loo, wewe utakuwa na faini. Hakuna mtu ni kuwaambia nyie kwamba hapa. Hivyo nina kukuambia guys kwamba hapa. Nyie itakuwa vizuri. Mimi hivyo fahari ya yote ya nyie. Mtihani itakuwa vigumu. Kujifunza kwa ajili yake, na baadaye tu kutupa mbali. Kupata tayari kujifunza mambo mapya. Na kula pipi. Tumekuwa na kura ya pipi. Kupata usingizi usiku mzuri wa. Je, si kulala, kwa sababu kwamba d kuwa kweli mbaya. CS mengi ya mantiki. Kama huna kulala, huwezi kazi, na ubongo wako hawezi kufanya kazi. Na mimi itakuwa hapa kwa 20 ijayo dakika kama kuna mtu anataka hutegemea kuzunguka. Nyie ni kwenda kumchinja. Bahati nzuri.