1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON HIRSCHHORN: Karibu kwa A5, kila mtu. 3 00:00:07,820 --> 00:00:11,270 Tuna wiki kusisimua mbele yetu, hasa kwa sababu kuna watu wengi mpya 4 00:00:11,270 --> 00:00:12,350 inakabiliwa na katika chumba hiki. 5 00:00:12,350 --> 00:00:12,920 Ni ajabu. 6 00:00:12,920 --> 00:00:15,740 mengi ya wewe ni hapa kwa ajali, ambayo ni bora zaidi. 7 00:00:15,740 --> 00:00:18,220 Hivyo hopefully wewe utadumisha kujiunga na sisi. 8 00:00:18,220 --> 00:00:20,220 >> Wiki hii tunakwenda kutumia wingi wa sehemu 9 00:00:20,220 --> 00:00:21,870 maandalizi kwa ajili ya jaribio. 10 00:00:21,870 --> 00:00:26,580 Hivyo kwa ajenda yetu, sisi ni kwenda kuzungumza kidogo kuhusu rasilimali kwa ajili ya darasa, 11 00:00:26,580 --> 00:00:30,350 lakini pia kwa jaribio, na kisha, tena, kutumia wingi wa darasa kuzungumza 12 00:00:30,350 --> 00:00:31,390 juu ya maswali. 13 00:00:31,390 --> 00:00:33,900 Mara baada ya sisi ni kosa kujibu yako maswali, au kama maswali yako 14 00:00:33,900 --> 00:00:39,010 kawaida kutuongoza baadhi coding, mimi kuwa na matatizo ya sampuli kutoka midterms 15 00:00:39,010 --> 00:00:43,180 siku za nyuma kwamba sisi ya kificho kuishi katika sehemu pamoja pia kuleta nyingine 16 00:00:43,180 --> 00:00:45,420 mada nzuri ya bima. 17 00:00:45,420 --> 00:00:48,280 >> Hivyo kwanza, kama tumekuwa wamekwenda kupitia kwa michache iliyopita wiki kuwakumbusha 18 00:00:48,280 --> 00:00:51,700 guys, kuna tani ya rasilimali kutosha kwa ajili ya kozi hii. 19 00:00:51,700 --> 00:00:55,020 Wengi wao kuwa incredibly kusaidia na wewe kama wewe kuendelea 20 00:00:55,020 --> 00:00:57,280 kujifunza kwa jaribio 0, kwa sababu ni Jumanne mchana. 21 00:00:57,280 --> 00:00:59,630 Basi wote wa umekuwa kusoma kwa kidogo. 22 00:00:59,630 --> 00:01:02,640 >> Kuna maelezo ya hotuba na chanzo kificho kwamba ni lazima 23 00:01:02,640 --> 00:01:04,050 dhahiri kuangalia nje. 24 00:01:04,050 --> 00:01:05,019 Kuangalia kaptula. 25 00:01:05,019 --> 00:01:07,470 Angalia study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 Na kisha, hapa chini, idadi ya rasilimali nyingine. 27 00:01:11,770 --> 00:01:14,020 >> Tena, jaribio 0 ni kesho saa 1 kamili. 28 00:01:14,020 --> 00:01:18,230 Kama hujafanya hivyo tayari, kuangalia nje Kuhusu Quiz 0 hati juu ya 29 00:01:18,230 --> 00:01:21,370 Mzee kozi kufikiri ambapo wewe ni kuchukua jaribio. 30 00:01:21,370 --> 00:01:25,770 Jaribio kuanza saa 1:10 na mwisho dakika 70 baadaye. 31 00:01:25,770 --> 00:01:29,610 Hivyo kama wewe kuonyesha up baada ya 1:10, wewe ni kwenda kupata dakika kwamba wengi wachache 32 00:01:29,610 --> 00:01:30,940 zaidi ya 70 kuchukua jaribio. 33 00:01:30,940 --> 00:01:33,570 Ili kuhakikisha uko huko kwa wakati. 34 00:01:33,570 --> 00:01:38,690 Kama wewe ni ugani mwanafunzi au kuwa na baadhi ya masuala mengine kupima, 35 00:01:38,690 --> 00:01:40,400 wanaweza kuwa katika 1:00 kesho. 36 00:01:40,400 --> 00:01:43,540 Lakini tena, angalia Kuhusu Quiz 0 hati kuhakikisha unajua wakati 37 00:01:43,540 --> 00:01:44,760 wewe ni kuchukua jaribio. 38 00:01:44,760 --> 00:01:46,440 Niliandika dakika 75 hapa. 39 00:01:46,440 --> 00:01:48,580 Nadhani hiyo ni haki, si 70. 40 00:01:48,580 --> 00:01:53,420 >> Ni inashughulikia nyenzo zote kutoka wiki 0 kwa hotuba ya wiki iliyopita juu ya Jumatano. 41 00:01:53,420 --> 00:01:59,350 Na tena, kwa jaribio hili, kwa kuwa hati, unaweza kupata moja kuwili na 8 42 00:01:59,350 --> 00:02:03,770 1/2 na 11 karatasi kwamba kupata kutumia kama maelezo wakati wa jaribio. 43 00:02:03,770 --> 00:02:08,570 Watu wengi, kama si watu wengi, na iligundua kuwa moja na manufaa zaidi njia 44 00:02:08,570 --> 00:02:11,970 kujifunza kwa jaribio ni kwa kufanya utafiti karatasi, a 45 00:02:11,970 --> 00:02:13,730 moja ya sider, yao wenyewe. 46 00:02:13,730 --> 00:02:17,710 Ili kuangalia katika wale nyuma kama wameweza kuona majeshi ya zamani. 47 00:02:17,710 --> 00:02:19,960 Kufikia nje kwa rafiki kuona nini wao ni kuweka juu ya yao. 48 00:02:19,960 --> 00:02:23,610 >> Lakini mikono ya chini, njia bora unaweza utafiti ni kwenda kwa kila kitu na 49 00:02:23,610 --> 00:02:26,530 whittle ni chini ya kile lazima au lazima si ni juu ya kwamba karatasi ya 50 00:02:26,530 --> 00:02:30,570 karatasi, kwa sababu hiyo tu kweli njia manufaa kwa wewe kuhakikisha 51 00:02:30,570 --> 00:02:33,620 wewe kwenda kwa kila kitu na na baadhi uzoefu nayo. 52 00:02:33,620 --> 00:02:36,690 Watu wengi, tunaona, hata kama kuwa karatasi ameketi haki 53 00:02:36,690 --> 00:02:39,840 karibu na wao juu ya jaribio, si kugeuka hiyo, kwa sababu, tena, kwamba sana 54 00:02:39,840 --> 00:02:43,290 mchakato wa kwenda kwa njia ya habari imewasaidia kujifunza. 55 00:02:43,290 --> 00:02:45,370 >> Je, mtu yeyote una maswali yoyote kuhusu jaribio 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 Ina kila mtu - 58 00:02:51,450 --> 00:02:53,230 Mimi si kwenda kufanya show za mikono. 59 00:02:53,230 --> 00:02:53,550 Kamwe akili. 60 00:02:53,550 --> 00:02:54,790 Mimi alikuwa anaenda kuuliza ni nani kuanza kusoma. 61 00:02:54,790 --> 00:02:58,360 Lakini mimi sitaki kufanya wote si kuinua mikono yako. 62 00:02:58,360 --> 00:03:01,290 Hivyo kama nilivyosema - Ndiyo, Avi, kwenda mbele. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Je, kuwa jambo muhimu kuweka juu ya moja ya pager? 64 00:03:04,205 --> 00:03:05,875 >> Mwanafunzi: Hiyo ni juu yenu. 65 00:03:05,875 --> 00:03:08,210 >> JASON HIRSCHHORN: Unaweza kupata kutumia hukumu yako. 66 00:03:08,210 --> 00:03:13,220 Mambo muhimu kuweka juu ya moja ya pager, kama wewe ni kuchanganyikiwa kuhusu O kubwa 67 00:03:13,220 --> 00:03:17,510 Runtime ya aina mbalimbali za utafutaji na kila aina, kuweka kwamba huko katika 68 00:03:17,510 --> 00:03:18,760 Handy dandy chati. 69 00:03:18,760 --> 00:03:22,250 Kwa njia hiyo, kama wewe ni aliuliza kwamba juu ya jaribio, huna haja ya kujaribu na takwimu 70 00:03:22,250 --> 00:03:23,560 nje au sababu kupitia Runtime. 71 00:03:23,560 --> 00:03:24,730 Unaweza tu nakala yake chini. 72 00:03:24,730 --> 00:03:28,320 Kama ukiangalia Quizzes iliyopita, mengi ya mara kwa mara, kuna mbio maswali wakati. 73 00:03:28,320 --> 00:03:34,150 Hivyo kwamba itakuwa mfano wa mema kitu ya kuweka kwenye yako moja pager. 74 00:03:34,150 --> 00:03:37,450 >> Mambo mengine nzuri ya kuweka juu, kama wewe ni kuchanganyikiwa kuhusu jinsi ya kutangaza 75 00:03:37,450 --> 00:03:40,570 kazi au nini sehemu mbalimbali za kazi tamko ni, kuandika 76 00:03:40,570 --> 00:03:43,400 kwamba kuna, toleo la generic na kisha labda mfano. 77 00:03:43,400 --> 00:03:47,290 Kama wewe ni kuchanganyikiwa kuhusu kuyatumia, mchoro wa jinsi ya kuyatumia kazi ni 78 00:03:47,290 --> 00:03:48,660 pengine kweli kusaidia. 79 00:03:48,660 --> 00:03:52,440 Kama wewe ni kuchanganyikiwa kuhusu kujirudia, a sampuli kazi ya kujirudia huko 80 00:03:52,440 --> 00:03:54,980 inaweza pia kuthibitisha kuwa kweli kusaidia. 81 00:03:54,980 --> 00:03:57,290 Je, hiyo kukupa baadhi ya mawazo? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Unahitaji kuelewa nzima kuandaa mchakato, kama 83 00:04:01,820 --> 00:04:03,220 jinsi matendo yote? 84 00:04:03,220 --> 00:04:06,620 >> JASON HIRSCHHORN: Kila kitu ambayo imekuwa kufunikwa inaweza 85 00:04:06,620 --> 00:04:08,060 show up kwenye jaribio. 86 00:04:08,060 --> 00:04:08,930 Maswali - 87 00:04:08,930 --> 00:04:11,300 lakini tena, baadhi ya mambo kuwa mizigo sana kuliko wengine. 88 00:04:11,300 --> 00:04:14,330 Baadhi ya mambo wamekuja tena na tena katika darasa, katika 89 00:04:14,330 --> 00:04:15,590 hotuba, na sehemu. 90 00:04:15,590 --> 00:04:17,220 Mambo mengine na si kuja mara kwa mara. 91 00:04:17,220 --> 00:04:22,900 >> Tumekuwa aliongea mengi kuhusu # ni pamoja na na -L kitu na nini wale maana katika 92 00:04:22,900 --> 00:04:24,390 mchakato wa kutungwa. 93 00:04:24,390 --> 00:04:29,120 Tumekuwa aliongea mengi kuhusu GDB, kushikamana, wale bendera mbalimbali kwamba sisi kutumia wakati 94 00:04:29,120 --> 00:04:33,100 sisi kukusanya kitu, na nini make15, kwa mfano, kwa kweli 95 00:04:33,100 --> 00:04:34,510 ina maana na haina kweli. 96 00:04:34,510 --> 00:04:38,110 Sisi si kuzungumza kama mengi juu ya kila hatua moja katika 97 00:04:38,110 --> 00:04:39,240 mchakato wa kutungwa. 98 00:04:39,240 --> 00:04:40,410 Tumekuwa bado kuongea kuhusu hilo. 99 00:04:40,410 --> 00:04:42,550 Hivyo bado kitu ambacho wewe lazima familiar with. 100 00:04:42,550 --> 00:04:44,610 Lakini tena, sisi siyo kwenda kuwa - 101 00:04:44,610 --> 00:04:49,140 mambo ambayo kuja mara nyingi zaidi katika darasa ni zaidi uwezekano wa kuja zaidi 102 00:04:49,140 --> 00:04:52,495 mara nyingi na kuwa na zaidi sana mizigo juu ya jaribio. 103 00:04:52,495 --> 00:04:53,280 >> Baridi. 104 00:04:53,280 --> 00:04:54,580 Maswali mengine kuhusu jaribio 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, hivyo mimi kuweka orodha ya mada kwenye bodi. 107 00:05:00,050 --> 00:05:01,550 Nilikwenda kupitia mtaala. 108 00:05:01,550 --> 00:05:07,340 Nilikwenda kupitia mapitio sehemu ya kutoka jana usiku na slides wale kuja 109 00:05:07,340 --> 00:05:13,710 na mashirika yasiyo ya orodha kamili ya mada kwamba tuna kufunikwa hivyo mbali katika CS50 110 00:05:13,710 --> 00:05:16,800 na mambo ambayo huenda kuonekana kwenye jaribio. 111 00:05:16,800 --> 00:05:19,900 Hivyo mimi nina si kwenda kupitia kila moja ya haya. 112 00:05:19,900 --> 00:05:22,370 Ambayo ingeweza kuchukua zaidi wakati kuliko sisi sasa. 113 00:05:22,370 --> 00:05:26,880 Lakini mimi kuweka hii hapa kwa hopefully jog kumbukumbu yako kama mambo ambayo inaweza 114 00:05:26,880 --> 00:05:28,420 au inaweza kuwa kama ukoo na wewe. 115 00:05:28,420 --> 00:05:32,850 >> Na ningependa hupenda kutumia wingi wa sehemu ya kujibu maswali yako kuhusu 116 00:05:32,850 --> 00:05:35,130 haya mada, mada si kufunikwa hapa. 117 00:05:35,130 --> 00:05:36,130 Tunaweza kuandika Pseudo code. 118 00:05:36,130 --> 00:05:40,010 Tunaweza kuandika code halisi kuhakikisha kwamba - 119 00:05:40,010 --> 00:05:44,280 Siwezi kujibu swali lako na kusaidia kila mtu kimsingi kuelewa 120 00:05:44,280 --> 00:05:48,330 mengi ya mada hizi ili utasikia kujisikia tayari na starehe kwenda katika 121 00:05:48,330 --> 00:05:50,150 Jaribio kesho. 122 00:05:50,150 --> 00:05:52,300 Basi kusoma juu ya orodha. 123 00:05:52,300 --> 00:05:54,780 Wewe hopefully wamekuja sehemu na baadhi ya maswali pia. 124 00:05:54,780 --> 00:05:58,480 Wakati uko tayari, kunyanyua mkono wako na sisi kuanza. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Kumbuka, maswali una, hakuna maswali ya kijinga. 127 00:06:05,200 --> 00:06:06,250 Tumesikia kwamba mengi. 128 00:06:06,250 --> 00:06:09,490 Na maswali na, mimi niko tayari bet, watu wengine wengi wote 129 00:06:09,490 --> 00:06:11,740 ameketi hapa na kuangalia online na vile vile. 130 00:06:11,740 --> 00:06:13,770 Hivyo unaweza tu kuwasaidia watu kwa kuuliza maswali. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: Kati ya stack na chungu, kuna kabla ya zilizotengwa 133 00:06:18,040 --> 00:06:22,880 asilimia ya kumbukumbu hiyo hufafanuliwa kama hii ni kwa ajili stack au kwa chungu? 134 00:06:22,880 --> 00:06:25,010 Au jinsi gani kwamba kazi, hasa? 135 00:06:25,010 --> 00:06:26,230 >> JASON HIRSCHHORN: Mkuu swali. 136 00:06:26,230 --> 00:06:28,640 Mimi kwenda nyuma kuwaeleza kidogo. 137 00:06:28,640 --> 00:06:30,910 Je, kila mtu - 138 00:06:30,910 --> 00:06:31,660 tafadhali kuwa waaminifu hapa. 139 00:06:31,660 --> 00:06:34,130 Najua mimi kuuliza kuongeza yako mkono mbele ya wenzako. 140 00:06:34,130 --> 00:06:38,510 Lakini kuna watu ambao wanaona wasiwasi na stack na chungu 141 00:06:38,510 --> 00:06:42,980 na wangependa kwenda juu ya kwamba na nini wale maana yake nini? 142 00:06:42,980 --> 00:06:43,880 Kunyanyua mkono wako kama - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Asante. 145 00:06:45,120 --> 00:06:48,420 Hivyo sisi ni kwenda juu stack na chungu kweli haraka na kisha 146 00:06:48,420 --> 00:06:50,370 kuhamia katika kujibu swali lako. 147 00:06:50,370 --> 00:06:58,250 >> Hivyo kama sisi kuteka sanduku kuwakilisha kumbukumbu kwenye kompyuta yako, ni nini baadhi ya 148 00:06:58,250 --> 00:07:02,160 mambo ambayo kwenda katika sanduku hili? 149 00:07:02,160 --> 00:07:03,630 Kuu. 150 00:07:03,630 --> 00:07:04,020 kazi kuu. 151 00:07:04,020 --> 00:07:05,890 Wapi kuu kwenda? 152 00:07:05,890 --> 00:07:08,090 >> Mwanafunzi: [inaudible]. 153 00:07:08,090 --> 00:07:09,390 >> JASON HIRSCHHORN: Hivyo tutaweza kuweka kuu hapa chini. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Nini kingine huenda katika sanduku hili? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> Mwanafunzi: kazi ambayo wito. 158 00:07:18,140 --> 00:07:19,020 >> JASON HIRSCHHORN: kazi kwamba sisi kuwaita. 159 00:07:19,020 --> 00:07:20,440 Na ni wapi wao kwenda? 160 00:07:20,440 --> 00:07:21,300 >> STUDENT: Katika stack. 161 00:07:21,300 --> 00:07:22,380 >> JASON HIRSCHHORN: Wao kwenda katika stack. 162 00:07:22,380 --> 00:07:27,350 Hivyo sisi ni kwenda kuwaita hii kitu hapa chini stack. 163 00:07:27,350 --> 00:07:31,880 Na juu juu, tuna chungu. 164 00:07:31,880 --> 00:07:35,450 Hivyo kumbukumbu si sanduku tu kama hii. 165 00:07:35,450 --> 00:07:37,330 Lakini ni kweli pretty sawa. 166 00:07:37,330 --> 00:07:40,840 Ni kwenda kuwa mengi ya masanduku ya juu ya na juu, kulingana na jinsi kubwa yako 167 00:07:40,840 --> 00:07:43,730 kompyuta ni au jinsi kubwa kumbukumbu yako ni. 168 00:07:43,730 --> 00:07:46,950 >> Katika quote-unquote "chini" ni stack. 169 00:07:46,950 --> 00:07:50,880 Na kuna mambo mbalimbali kwamba kwenda juu ya stack. 170 00:07:50,880 --> 00:07:53,840 Na wale wanategemea kazi una katika kanuni yako. 171 00:07:53,840 --> 00:07:57,780 Daima kuwa moja ya kazi katika yako code aitwaye kuu, hivyo kuna daima 172 00:07:57,780 --> 00:08:00,480 sehemu hapa chini katika stack kujitoa kwa kuu. 173 00:08:00,480 --> 00:08:03,980 >> Sehemu hizi katika stack walioitwa muafaka stack. 174 00:08:03,980 --> 00:08:09,580 Wakati wewe piga kazi nyingine, wanasema kuu wito binary kazi ya kutafuta, 175 00:08:09,580 --> 00:08:11,075 sisi kuweka sura nyingine juu ya stack. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Zaidi hasa, sisi ni kwenda kuchangia chunk ya kumbukumbu juu yetu 178 00:08:17,320 --> 00:08:22,960 kompyuta kuhifadhi binary search wa ndani vigezo na kuendesha binary 179 00:08:22,960 --> 00:08:24,150 search code. 180 00:08:24,150 --> 00:08:26,810 >> Hivyo tunatoa wito search binary. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Katika chunk hii ya kumbukumbu, tunakwenda kuhifadhi vigezo yake ya ndani. 183 00:08:33,340 --> 00:08:35,270 Sisi ni kwenda kuhifadhi wito wake printf. 184 00:08:35,270 --> 00:08:38,159 Chochote kinachotokea, kazi ambayo ni kwenda kuhifadhiwa haki pale. 185 00:08:38,159 --> 00:08:40,350 Search kisha ni kwenda kutekeleza. 186 00:08:40,350 --> 00:08:42,210 Ni kwenda kukamilisha utekelezaji. 187 00:08:42,210 --> 00:08:47,450 Ni neno katika C yale ambayo kunaashiria kwamba kazi ya lazima 188 00:08:47,450 --> 00:08:49,306 kukamilisha utekelezaji wake? 189 00:08:49,306 --> 00:08:50,040 >> Mwanafunzi: Return. 190 00:08:50,040 --> 00:08:50,870 >> JASON HIRSCHHORN: Kurudi. 191 00:08:50,870 --> 00:08:53,230 Hivyo wakati wowote kuona taarifa ya kurudi, ncha kazi 192 00:08:53,230 --> 00:08:54,350 wakati hits hiyo. 193 00:08:54,350 --> 00:08:56,740 Search hivyo binary hit kurudi wake. 194 00:08:56,740 --> 00:09:01,360 Hii ni sehemu ya kumbukumbu mapenzi kimsingi kuwa huru up. 195 00:09:01,360 --> 00:09:03,510 Na kuu kwenda nyuma kwa kunyongwa. 196 00:09:03,510 --> 00:09:07,240 Itakuwa hivyo kuu pause popote mara, wito search binary, kupata baadhi ya thamani ya kurudi, 197 00:09:07,240 --> 00:09:08,700 na kuendelea utekelezaji. 198 00:09:08,700 --> 00:09:10,840 Sura hii stack kwenda mbali. 199 00:09:10,840 --> 00:09:14,810 >> Kama sisi wito kazi kujirudia, ambayo ni kazi kwamba wito yenyewe juu ya 200 00:09:14,810 --> 00:09:18,480 na tena, tupate kupata - kusema sisi alifanya search binary recursively. 201 00:09:18,480 --> 00:09:21,520 Sisi ili kupata binary search toleo moja, search binary mbili, binary search 202 00:09:21,520 --> 00:09:24,090 tatu, tafuta binary nne, search binary tano. 203 00:09:24,090 --> 00:09:27,950 Na kisha hii tafuta mwisho binary tano hit kesi ya msingi, na stack 204 00:09:27,950 --> 00:09:31,010 muafaka kwenda nyuma na kuweka kufunga mpaka sisi kupata nyuma kuu. 205 00:09:31,010 --> 00:09:32,530 Tunaweza kwenda zaidi ya kujirudia katika kidogo. 206 00:09:32,530 --> 00:09:35,530 Lakini haya yote ni kusema, kama wewe ni wito kazi nyingi kwa wakati, 207 00:09:35,530 --> 00:09:39,250 kutakuwa na stack nyingi muafaka juu ya stack. 208 00:09:39,250 --> 00:09:42,900 >> chungu, kwa upande mwingine, hadi hapa, si kwa ajili ya kazi, 209 00:09:42,900 --> 00:09:44,380 si kwa vigezo ndani. 210 00:09:44,380 --> 00:09:48,920 Ni kwa ajili ya dynamically zilizotengwa vigezo. 211 00:09:48,920 --> 00:09:57,210 Basi hizi ni vigezo ambayo inaweza kuwa kuanzishwa katika ama kuu au 212 00:09:57,210 --> 00:09:58,640 kazi kwamba wito kuu. 213 00:09:58,640 --> 00:10:00,790 Mahali popote katika kanuni yako, unaweza kuanzishwa. 214 00:10:00,790 --> 00:10:04,360 Na initialize dynamically zilizotengwa kwa ajili ya kutofautiana. 215 00:10:04,360 --> 00:10:06,970 Nini kazi katika C tunatumia? 216 00:10:06,970 --> 00:10:07,600 >> Mwanafunzi: malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON HIRSCHHORN: malloc. 218 00:10:09,240 --> 00:10:10,800 Wewe piga malloc. 219 00:10:10,800 --> 00:10:12,260 Kupata nafasi ya kumbukumbu. 220 00:10:12,260 --> 00:10:15,020 Na kwamba nafasi ya kumbukumbu ni juu ya chungu. 221 00:10:15,020 --> 00:10:18,840 Na kwamba nafasi ya kumbukumbu anakaa huko mpaka wito bure. 222 00:10:18,840 --> 00:10:22,670 >> Hivyo dynamically zilizotengwa vigezo katika chungu kuwepo kwa muda mrefu kama wewe 223 00:10:22,670 --> 00:10:25,250 wao wanataka kuwepo, na wao si kwenda mbali mpaka waziwazi 224 00:10:25,250 --> 00:10:26,760 kuwaambia kwenda mbali. 225 00:10:26,760 --> 00:10:29,670 Unaweza kujenga yao katika moja ya kazi. 226 00:10:29,670 --> 00:10:31,930 Stack kwamba kazi ya ya sura ya kwenda mbali. 227 00:10:31,930 --> 00:10:35,490 Lakini hiyo variable bado zipo katika chungu mpaka ni huru, 228 00:10:35,490 --> 00:10:39,650 uwezekano wa na kazi hiyo aitwaye search binary au chochote. 229 00:10:39,650 --> 00:10:42,580 >> Hivyo wale vigezo chungu kukaa huko kwa muda mrefu kama unataka 230 00:10:42,580 --> 00:10:43,490 yao ya kukaa huko. 231 00:10:43,490 --> 00:10:46,090 Na wao kupata kuweka hapa. 232 00:10:46,090 --> 00:10:47,450 Na kisha moja ijayo anapata kuweka huko. 233 00:10:47,450 --> 00:10:50,210 Wao kushika kupata kujazwa katika, na wao kukaa huko mpaka wito bure. 234 00:10:50,210 --> 00:10:52,870 >> Na kimsingi, chungu na stack, kupata swali Marcus ya, 235 00:10:52,870 --> 00:10:54,500 kukua kwa kila mmoja. 236 00:10:54,500 --> 00:10:57,730 Na kama wao kukimbia katika mtu mwingine, wameweza kutumika juu kumbukumbu zote katika yako 237 00:10:57,730 --> 00:11:01,330 kompyuta, na mpango wako kuacha kwa sababu huna kumbukumbu yoyote zaidi 238 00:11:01,330 --> 00:11:02,420 kushoto na kutumia. 239 00:11:02,420 --> 00:11:07,290 Katika baina yao, kuna mambo uwezekano wa nyingine. 240 00:11:07,290 --> 00:11:10,980 Lakini kwa wigo wa kozi hii, wewe hawana haja ya kuwa na wasiwasi juu ya hilo. 241 00:11:10,980 --> 00:11:12,020 >> Ili kwamba ilikuwa jibu swali lako. 242 00:11:12,020 --> 00:11:13,520 Je, si wasiwasi kuhusu hilo. 243 00:11:13,520 --> 00:11:15,550 Lakini hiyo ilikuwa jibu kwa muda mrefu. 244 00:11:15,550 --> 00:11:17,800 Wote unahitaji kujua ni chungu na stack mapenzi - 245 00:11:17,800 --> 00:11:18,900 moja kuanza saa chini. 246 00:11:18,900 --> 00:11:19,570 stack gani. 247 00:11:19,570 --> 00:11:20,790 chungu juu huko. 248 00:11:20,790 --> 00:11:21,990 Wao kukua karibu na mtu mwingine. 249 00:11:21,990 --> 00:11:23,110 >> Na wakigusa, kwamba ni tatizo. 250 00:11:23,110 --> 00:11:24,500 Mbio nje ya kumbukumbu. 251 00:11:24,500 --> 00:11:28,760 Lakini pia, pamoja na kujua wapi wao ni, ni nini kuhifadhiwa katika wote 252 00:11:28,760 --> 00:11:30,512 stack na chungu. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: Wakati wao yanapogongana, ni kwamba stack kufurika? 255 00:11:33,570 --> 00:11:35,670 >> JASON HIRSCHHORN: Wakati wao yanapogongana, si kwamba stack kufurika. 256 00:11:35,670 --> 00:11:38,340 kufurika stack ni eneo tofauti kuwa tunaweza kwenda juu kama unataka. 257 00:11:38,340 --> 00:11:40,020 OK, tutaweza kuja nyuma na kwamba katika kidogo. 258 00:11:40,020 --> 00:11:42,730 >> STUDENT: Nini neno aitwaye wakati wao hit kila mmoja, 259 00:11:42,730 --> 00:11:44,450 stack na chungu? 260 00:11:44,450 --> 00:11:46,640 >> JASON HIRSCHHORN: Kwa sasa, msiwe na wasiwasi juu. 261 00:11:46,640 --> 00:11:47,750 Tu kujua - 262 00:11:47,750 --> 00:11:50,530 Nami kujibu swali hilo baada ya darasa. 263 00:11:50,530 --> 00:11:52,680 Kama wao kukimbia katika kila mmoja, mbio nje ya kumbukumbu, kwa sababu hakuna zaidi 264 00:11:52,680 --> 00:11:53,330 nafasi huko. 265 00:11:53,330 --> 00:11:55,450 >> STUDENT: Sorry, nini seg kosa? 266 00:11:55,450 --> 00:11:58,710 >> JASON HIRSCHHORN: sehemu ya kosa anaweza kuitwa kwa - 267 00:11:58,710 --> 00:12:02,240 inategemea kwa nini wake aitwaye seg kosa ya. 268 00:12:02,240 --> 00:12:06,260 Wakati mwingine, stack yako kufurika, kutakuwa na kusema seg kosa kama makosa. 269 00:12:06,260 --> 00:12:08,180 >> STUDENT: Je kuhusu dereferencing null variable? 270 00:12:08,180 --> 00:12:10,040 Ni kwamba seg kosa? 271 00:12:10,040 --> 00:12:11,480 >> JASON HIRSCHHORN: Dereferencing null pointer - 272 00:12:11,480 --> 00:12:17,850 OK, hivyo kama una pointer kwamba kuweka sawa kwa null, kuyatumia, kukumbuka, 273 00:12:17,850 --> 00:12:20,270 anwani kuhifadhi kumbukumbu kama maadili yao. 274 00:12:20,270 --> 00:12:23,660 Na null pointer kimsingi ni kuhifadhi 0, 0-th 275 00:12:23,660 --> 00:12:26,670 kushughulikia kwa kuwa kutofautiana. 276 00:12:26,670 --> 00:12:30,010 Hivyo 0x, 0, 0, 0, 0, nakadhalika. 277 00:12:30,010 --> 00:12:35,030 Kwamba anwani 0-th katika kumbukumbu kwamba si katika picha wetu, hiyo ni hadi pale 278 00:12:35,030 --> 00:12:38,800 mahali fulani, hiyo ni zimehifadhiwa kwa ajili ya kompyuta. 279 00:12:38,800 --> 00:12:40,130 Sisi ni hawaruhusiwi kugusa yake. 280 00:12:40,130 --> 00:12:44,680 >> Hivyo wakati mpango wako ni utekelezaji, ikiwa kitu ni kujaribu kwenda kumbukumbu 281 00:12:44,680 --> 00:12:48,990 anwani 0, anajua kwamba kwamba ni thamani tupu. 282 00:12:48,990 --> 00:12:50,820 Ni anajua hakuna kitu lazima kuwa huko. 283 00:12:50,820 --> 00:12:53,420 Hivyo kama wewe kujaribu na kutumia kitu pale na kutibu kitu kama huko au 284 00:12:53,420 --> 00:12:58,355 kujaribu kwenda kwenye eneo hilo, wewe ni kwenda kupata kosa seg au makosa. 285 00:12:58,355 --> 00:13:00,520 Je, hiyo kujibu swali lako? 286 00:13:00,520 --> 00:13:03,170 >> Na sasa tutaweza kwenda nyuma stack kufurika. 287 00:13:03,170 --> 00:13:09,560 Mambo katika stack, kama nyie na kuona mbele, katika - hebu kuteka karibu 288 00:13:09,560 --> 00:13:11,966 up ya sura ya stack. 289 00:13:11,966 --> 00:13:15,050 Je, kila mtu kuona kwamba? 290 00:13:15,050 --> 00:13:16,650 Hivyo tuna stack sura yetu. 291 00:13:16,650 --> 00:13:23,260 Sisi ni kuokoa safu katika kama ndani variable katika kazi hii. 292 00:13:23,260 --> 00:13:29,510 Hivyo kusema safu yetu ina matangazo tano. 293 00:13:29,510 --> 00:13:33,230 Zote tano za wale kuhifadhiwa katika kwamba sura ya stack. 294 00:13:33,230 --> 00:13:37,540 >> Kama sisi kuanza kuandika zaidi ya mipaka ya safu hii - 295 00:13:37,540 --> 00:13:43,990 hivyo kama sisi kuanza kuandika ndani, hebu kusema kwamba 0. 296 00:13:43,990 --> 00:13:46,800 Wale ni bahati tano ya safu yetu. 297 00:13:46,800 --> 00:13:50,980 Kama sisi kuanza kuandika katika index 5, ambayo hatuna wakati tuna 298 00:13:50,980 --> 00:13:55,900 safu ya ukubwa 5, sisi kuanza kuandika katika index 6, 7, 8, 9, tunaweza kupata Stack 299 00:13:55,900 --> 00:13:57,960 Makosa kufurika. 300 00:13:57,960 --> 00:14:00,510 >> Kwa ujumla si - 301 00:14:00,510 --> 00:14:04,910 pengine kupata katika matatizo kama wewe kwenda juu ya kwa moja. 302 00:14:04,910 --> 00:14:08,640 Lakini kwa ujumla, utapata katika zaidi shida kama wewe kwenda juu na mengi 303 00:14:08,640 --> 00:14:12,770 na kwenda mbali zaidi ya kwamba kuandika juu ya kurudi pepe ya kwamba 304 00:14:12,770 --> 00:14:16,080 kazi, ambayo iko katika chini ya sura ya stack. 305 00:14:16,080 --> 00:14:16,520 >> Kwa sababu, sawa? 306 00:14:16,520 --> 00:14:17,670 You - katika - sorry. 307 00:14:17,670 --> 00:14:18,550 Si "kwa sababu ya haki." 308 00:14:18,550 --> 00:14:20,470 >> Katika sura ya stack, una vigezo lako. 309 00:14:20,470 --> 00:14:27,090 Chini kabisa ya stack frame ni kurudi anwani. 310 00:14:27,090 --> 00:14:28,790 Hiyo ambapo kazi huenda wakati juu. 311 00:14:28,790 --> 00:14:33,750 Na kama wewe overwrite kwamba kurudi mitaani, kisha wakati huu frame stack, 312 00:14:33,750 --> 00:14:36,680 wakati wewe ni kwenda kwa stack sura na utekelezaji wa kila mstari, wewe ni 313 00:14:36,680 --> 00:14:40,350 kwenda kwa mwezi anwani yako ya kurudi kwamba imeandikwa huko badala ya 314 00:14:40,350 --> 00:14:40,910 halisi moja. 315 00:14:40,910 --> 00:14:45,050 Na kwamba ni jinsi gani tumeona baadhi ukiukaji wa usalama 316 00:14:45,050 --> 00:14:46,780 yanaweza kutokea kwa kompyuta. 317 00:14:46,780 --> 00:14:52,760 >> Hivyo stack kufurika, katika muda mfupi, ni wakati ninyi overwrite sehemu katika stack 318 00:14:52,760 --> 00:14:55,440 wewe ni wanatakiwa kutumia, serikali za mitaa variable uko walidhani kutumia, na 319 00:14:55,440 --> 00:14:58,070 hasa wakati wa kuanza overwriting mambo muhimu kama 320 00:14:58,070 --> 00:14:59,100 kurudi anwani. 321 00:14:59,100 --> 00:15:00,090 Na hapo ndipo utapata makosa. 322 00:15:00,090 --> 00:15:03,980 Au labda hata unaweza kuanza hata kuandika katika - 323 00:15:03,980 --> 00:15:05,370 kusema search binary mara haki juu ya kuu. 324 00:15:05,370 --> 00:15:07,790 Kama overwrote mengi, wewe unaweza kuandika ndani ya kuu. 325 00:15:07,790 --> 00:15:10,230 Lakini kwa ujumla, unaweza kupata makosa kabla ya basi, kwa sababu ya kompyuta anajua 326 00:15:10,230 --> 00:15:12,270 wewe ni kufanya kitu haipaswi kufanya. 327 00:15:12,270 --> 00:15:12,560 Yeah. 328 00:15:12,560 --> 00:15:13,910 >> STUDENT: Nini tofauti kati ya stack kufurika 329 00:15:13,910 --> 00:15:16,940 na kufurika buffer? 330 00:15:16,940 --> 00:15:19,420 >> JASON HIRSCHHORN: Buffer kufurika ni ya aina zaidi generic ya 331 00:15:19,420 --> 00:15:20,395 nini nimekuwa tu kama ilivyoelezwa. 332 00:15:20,395 --> 00:15:22,610 >> STUDENT: Kwa hiyo stack kufurika ni mfano wa buffer kufurika. 333 00:15:22,610 --> 00:15:23,420 >> JASON HIRSCHHORN: Hasa. 334 00:15:23,420 --> 00:15:28,700 Hii ni safu tunaweza kufikiria kama buffer, nafasi kwa ajili ya mambo kwenda in 335 00:15:28,700 --> 00:15:30,600 Hii ni stack buffer kufurika. 336 00:15:30,600 --> 00:15:33,210 Tunaweza kuwa na lundo buffer kufurika. 337 00:15:33,210 --> 00:15:36,870 Kama kulikuwa na buffer, ambayo kuna mara nyingi ni safu chungu, na sisi 338 00:15:36,870 --> 00:15:40,600 overwrote mipaka hayo, basi sisi ingekuwa na chungu buffer kufurika. 339 00:15:40,600 --> 00:15:44,870 >> Na zaidi ya upeo wa kozi hii, wao ni wanaona tofauti kidogo. 340 00:15:44,870 --> 00:15:48,040 compiler ina maalum njia ya kuchunguza kila mmoja. 341 00:15:48,040 --> 00:15:50,660 Lakini buffer kufurika ni zaidi generic aina ya kile ilivyoelezwa, 342 00:15:50,660 --> 00:15:54,090 ambayo ilikuwa stack buffer kufurika. 343 00:15:54,090 --> 00:15:56,240 Je, kwamba kujibu swali lako? 344 00:15:56,240 --> 00:15:57,910 Tamu. 345 00:15:57,910 --> 00:16:01,850 >> Kulikuwa na maswali yoyote kuhusiana kwa stack au chungu? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Yeah. 348 00:16:05,510 --> 00:16:08,220 >> STUDENT: Mimi najua wewe kuwa na masharti bure kwa sababu wao uko katika chungu 349 00:16:08,220 --> 00:16:09,305 na hawataki kuvuja kumbukumbu. 350 00:16:09,305 --> 00:16:12,240 Lakini je, una bure vigezo kimataifa na mambo kama hayo? 351 00:16:12,240 --> 00:16:14,335 Au ni wao moja kwa moja huru? 352 00:16:14,335 --> 00:16:15,700 >> JASON HIRSCHHORN: swali Good. 353 00:16:15,700 --> 00:16:22,340 Hivyo katika CS50.H, sisi kujenga jambo hili kwa wewe kuitwa kamba. 354 00:16:22,340 --> 00:16:23,800 kamba ni kweli nini? 355 00:16:23,800 --> 00:16:24,810 >> Mwanafunzi: Char nyota. 356 00:16:24,810 --> 00:16:29,180 >> JASON HIRSCHHORN: nyota char, pointer tabia, pointer kwa 357 00:16:29,180 --> 00:16:30,650 safu ya wahusika. 358 00:16:30,650 --> 00:16:32,210 Hiyo ni nini string ni. 359 00:16:32,210 --> 00:16:36,050 Hivyo tunahitaji bure, kwa sababu GetString, ambayo sisi kutumika mengi - 360 00:16:36,050 --> 00:16:38,370 kamba jina sawa na GetString - 361 00:16:38,370 --> 00:16:43,560 kwamba mallocs kwa sisi baadhi ya kumbukumbu juu ya chungu na kisha anarudi pointer kwa 362 00:16:43,560 --> 00:16:47,230 tabia ya kwanza ya kwamba kamba, nyota char. 363 00:16:47,230 --> 00:16:52,760 >> Hivyo zenye, kama hamjakuwa kuandika bure yoyote ya masharti yako 364 00:16:52,760 --> 00:16:55,600 kwamba umefanya kuitwa hivyo mbali, una imekuwa kinachovuja baadhi ya kumbukumbu. 365 00:16:55,600 --> 00:16:57,430 Bila shaka sisi si aliongea juu ya yake, hivyo hakuna mtu wamezipata katika 366 00:16:57,430 --> 00:16:58,520 shida kwa kufanya hivyo. 367 00:16:58,520 --> 00:16:59,980 Lakini kwenda mbele, ndiyo. 368 00:16:59,980 --> 00:17:03,990 Wakati wewe piga GetString, wewe ni mallocing baadhi ya nafasi juu ya chungu. 369 00:17:03,990 --> 00:17:07,640 Na kama huna simu bure baadaye kwamba kamba, una kumbukumbu leak. 370 00:17:07,640 --> 00:17:09,440 Kwamba kujibu swali lako? 371 00:17:09,440 --> 00:17:10,606 >> Yeah 372 00:17:10,606 --> 00:17:15,020 >> STUDENT: Kwa hiyo kufanya hivyo, je, sisi kutumia bure sahihi kabla ya kurudi? 373 00:17:15,020 --> 00:17:18,510 Kama, ndani ya wigo wa, mimi nadhani kama tunasema, kama, int kuu, ndani ya 374 00:17:18,510 --> 00:17:24,410 wigo wa kificho kwamba ni ndani ya wale braces curly, haki kabla ya - 375 00:17:24,410 --> 00:17:26,140 unajua ambapo d kawaida kuweka kurudi. 376 00:17:26,140 --> 00:17:27,950 Je, kuweka bure kabla ya kwamba? 377 00:17:27,950 --> 00:17:31,000 >> JASON HIRSCHHORN: Hivyo unaweza kuweka bure popote unataka kuweka bure. 378 00:17:31,000 --> 00:17:33,810 Kwa sababu hizi ni dynamically zilizotengwa vigezo, kwa sababu wanaweza 379 00:17:33,810 --> 00:17:39,170 kuishi zaidi ya upeo wa fulani kazi, kama simu malloc katika 380 00:17:39,170 --> 00:17:44,140 kazi tofauti, kwa mfano, GetString, unaweza kupiga bure katika kuu. 381 00:17:44,140 --> 00:17:46,050 Huna haja ya kuiita katika kazi maalum 382 00:17:46,050 --> 00:17:47,570 ambapo malloc inaitwa. 383 00:17:47,570 --> 00:17:50,340 Lakini huna haja ya kuiita kabla ya kurudi kuu. 384 00:17:50,340 --> 00:17:51,120 >> Na ni kweli inategemea. 385 00:17:51,120 --> 00:17:54,960 Inategemea nini malloced kwamba nafasi katika nafasi ya kwanza. 386 00:17:54,960 --> 00:17:57,320 Baadhi ya watu kuwaita bure pretty haraka. 387 00:17:57,320 --> 00:17:59,220 Baadhi ya watu si kuwaita bure mpaka mwisho wa mpango wao. 388 00:17:59,220 --> 00:18:00,660 Na wao itabidi kwenda kwa njia ya na bure kila kitu. 389 00:18:00,660 --> 00:18:03,597 Inategemea sababu ya kuita malloc. 390 00:18:03,597 --> 00:18:11,270 >> STUDENT: Na nini unaweza kusema kama wewe kuitwa matumizi GetString? 391 00:18:11,270 --> 00:18:13,320 Ningependa kusema huru nini? 392 00:18:13,320 --> 00:18:20,040 >> JASON HIRSCHHORN: Kwa hiyo syntax kwa ajili ya bure ni tu bure, paren wazi, karibu 393 00:18:20,040 --> 00:18:22,130 paren, na jina la pointer. 394 00:18:22,130 --> 00:18:26,410 Hivyo kama wewe kuandika kamba jina usawa GetString, kuweka jina katika hapa. 395 00:18:26,410 --> 00:18:27,760 Hiyo ni jina la pointer. 396 00:18:27,760 --> 00:18:30,570 Na anajua bure kumbukumbu. 397 00:18:30,570 --> 00:18:33,920 >> Mwanafunzi: Basi inatufanya kuwa kumbukumbu, pointer bado anazungumzia mahali 398 00:18:33,920 --> 00:18:34,970 katika kumbukumbu? 399 00:18:34,970 --> 00:18:39,020 Au ni pointer pia ombwe anwani hiyo inaelekeza kwa. 400 00:18:39,020 --> 00:18:40,290 >> JASON HIRSCHHORN: Tunapaswa kujaribu kuwa. 401 00:18:40,290 --> 00:18:41,430 Tunapaswa kificho kwamba. 402 00:18:41,430 --> 00:18:43,880 Hebu kuja nyuma wakati sisi kupata coding, na hebu kificho kwamba. 403 00:18:43,880 --> 00:18:46,000 Na kama unataka kufikiri jibu na kwamba, unaweza pia kificho kwamba 404 00:18:46,000 --> 00:18:46,690 katika huo huo. 405 00:18:46,690 --> 00:18:49,100 Lakini hiyo ni swali kubwa. 406 00:18:49,100 --> 00:18:53,480 >> Mwanafunzi: Je, inawezekana bure kitu mapema mno? 407 00:18:53,480 --> 00:18:58,530 Hivyo bado haja yake kwa mpango wako, na wewe huru kuwa nafasi kumbukumbu? 408 00:18:58,530 --> 00:18:59,200 >> JASON HIRSCHHORN: Ndiyo. 409 00:18:59,200 --> 00:19:03,020 Inawezekana, kama wewe bure kitu na kisha kuitumia tena, utakuwa 410 00:19:03,020 --> 00:19:06,890 kukimbia katika makosa. 411 00:19:06,890 --> 00:19:10,810 Lakini hiyo ni juu ya sababu wewe huru kitu na kisha kuitwa baadaye. 412 00:19:10,810 --> 00:19:13,940 Ili kwamba ilikuwa programu ya kosa. 413 00:19:13,940 --> 00:19:14,780 Lakini ndiyo. 414 00:19:14,780 --> 00:19:17,760 Unaweza kuandika hiyo. 415 00:19:17,760 --> 00:19:19,240 >> Yoyote maswali zaidi juu ya - 416 00:19:19,240 --> 00:19:19,760 ndiyo. 417 00:19:19,760 --> 00:19:22,820 >> STUDENT: Hivyo kama wanatakiwa tu bure ni kwa ujumla kabla ya 418 00:19:22,820 --> 00:19:25,490 mpango mwisho, haina maana kwamba kama mpango mwisho na huna bure yake, 419 00:19:25,490 --> 00:19:27,580 kwamba kumbukumbu bado ni zilizotengwa? 420 00:19:27,580 --> 00:19:31,330 >> JASON HIRSCHHORN: Kama mpango wako mwisho na kusahau bure kitu, basi 421 00:19:31,330 --> 00:19:34,390 kwamba kumbukumbu zilizotengwa kwa ajili ya katika maisha ya programu yako. 422 00:19:34,390 --> 00:19:37,670 Wakati mpango wako kufunga kabisa, kwamba kumbukumbu si kwenda 423 00:19:37,670 --> 00:19:39,490 kukaa humo milele. 424 00:19:39,490 --> 00:19:42,080 kompyuta ni smart kutosha kujua kwamba wakati mpango wa kufunga, ni 425 00:19:42,080 --> 00:19:46,440 lazima kujikwamua yote ya kumbukumbu kwamba mara yanayohusiana na mpango huo. 426 00:19:46,440 --> 00:19:51,240 >> Hata hivyo, kuna zana unaweza kuendesha juu ya mpango wa kuchunguza kama, wakati 427 00:19:51,240 --> 00:19:54,720 mpango kumaliza, alisahau bure baadhi ya kumbukumbu. 428 00:19:54,720 --> 00:19:57,960 Na kwa tatizo lako ijayo kuweka ambapo wewe utakuwa kutumia malloc na kutumia 429 00:19:57,960 --> 00:20:02,610 kuyatumia, utakuwa mbio hii mpango juu ya mpango wako kuona kama, 430 00:20:02,610 --> 00:20:06,530 wakati anarudi kuu, na baadhi ya mambo ambayo walikuwa kushoto unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Hivyo siyo kwenda kukaa malloced milele katika kompyuta yako. 432 00:20:09,130 --> 00:20:11,720 Hiyo itakuwa fujo, kwa sababu haraka sana, kompyuta 433 00:20:11,720 --> 00:20:12,960 kukimbia nje ya kumbukumbu. 434 00:20:12,960 --> 00:20:16,450 Lakini kama wao kukimbia mpaka mwisho wa yako mpango na siyo huru na yako 435 00:20:16,450 --> 00:20:20,260 mpango exits, hiyo ni bado ni tatizo kuwa chombo hiki itasaidia kushughulikia. 436 00:20:20,260 --> 00:20:21,520 >> Mwanafunzi: Ni kwamba Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON HIRSCHHORN: Ni aitwaye Valgrind. 438 00:20:22,910 --> 00:20:23,520 Na wewe utakuwa - 439 00:20:23,520 --> 00:20:25,780 >> STUDENT: Lakini hatuna kujua kwamba kwa jaribio, ingawa? 440 00:20:25,780 --> 00:20:27,600 I mean, ilikuwa ni kuongelea kidogo katika hotuba. 441 00:20:27,600 --> 00:20:33,600 >> JASON HIRSCHHORN: Kwa hiyo Valgrind ni jina la chombo kwamba. 442 00:20:33,600 --> 00:20:37,180 Kujua nini yake ni kutosha kwa ajili ya jaribio. 443 00:20:37,180 --> 00:20:40,200 Lakini ninyi si kutumika bado juu yako kuweka tatizo kwa sababu sisi si alikuwa na 444 00:20:40,200 --> 00:20:43,520 tatizo kuweka kwamba ina wazi kushughulikiwa na malloc au kutumia malloc. 445 00:20:43,520 --> 00:20:45,330 Hivyo si kutumika Valgrind bado. 446 00:20:45,330 --> 00:20:47,760 Lakini utatumia ni mapema kuliko baadaye. 447 00:20:47,760 --> 00:20:48,710 >> STUDENT: Je, unaweza kurudia nini Valgrind ni? 448 00:20:48,710 --> 00:20:49,190 >> JASON HIRSCHHORN: Sorry? 449 00:20:49,190 --> 00:20:51,240 >> STUDENT: Je, unaweza kurudia yale madhumuni ya Valgring ni? 450 00:20:51,240 --> 00:20:53,100 >> JASON HIRSCHHORN: Valgrind ni jina - 451 00:20:53,100 --> 00:20:59,890 kama GDB husaidia Debug mpango wako, Valgrind husaidia kufikiri kama 452 00:20:59,890 --> 00:21:03,210 mambo si huru wakati mpango wako kufunga. 453 00:21:03,210 --> 00:21:05,110 Hivyo itabidi kuendesha kwenye programu yako. 454 00:21:05,110 --> 00:21:09,230 Na mpango wako exits, na kutakuwa na kusema mpango wako aitwaye malloc na hayo, wengi 455 00:21:09,230 --> 00:21:13,670 mara kwa hii ka wengi, nanyi tu aitwaye bure hili mara nyingi. 456 00:21:13,670 --> 00:21:16,520 Na hivyo kushoto ka mingi bila kuwa huru. 457 00:21:16,520 --> 00:21:18,050 Au itabidi kusema umefanya huru kila kitu. 458 00:21:18,050 --> 00:21:19,070 Kazi nzuri. 459 00:21:19,070 --> 00:21:19,480 >> Mwanafunzi: OK. 460 00:21:19,480 --> 00:21:21,060 Na ni kuitwa Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON HIRSCHHORN: V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> Mwanafunzi: swali kuhusu kuyatumia. 463 00:21:25,970 --> 00:21:30,080 Hivyo kusema kuwa n nyota x sawa na kitu. 464 00:21:30,080 --> 00:21:33,330 Hiyo ni sawa na, chochote ni kuweka huko, ni kwamba nini kuwa kuweka ndani ya 465 00:21:33,330 --> 00:21:36,120 nini x ni akizungumzia, au pointer ya x? 466 00:21:36,120 --> 00:21:37,690 >> JASON HIRSCHHORN: Je, unaweza kurudia swali? 467 00:21:37,690 --> 00:21:39,340 Je, sisi kuteka ni unaposema yake? 468 00:21:39,340 --> 00:21:42,710 >> STUDENT: Katika jaribio, kwa kweli, moja alimtuma sisi, ilikuwa ni kama, char 469 00:21:42,710 --> 00:21:46,520 nyota ukweli ni sawa na CS50 miamba, sawa? 470 00:21:46,520 --> 00:21:52,190 Hivyo haina maana kwamba kuwa CS50 miamba ni nini ukweli ni akizungumzia? 471 00:21:52,190 --> 00:21:55,810 >> JASON HIRSCHHORN: Hivyo wewe ni kuzungumza kuhusu nyota char katika kamba, jinsi 472 00:21:55,810 --> 00:21:56,460 kwamba kazi? 473 00:21:56,460 --> 00:21:56,890 Yeah. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Hebu kuteka hii zaidi ya hapa. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE MAZUNGUMZO] 477 00:22:07,100 --> 00:22:11,130 >> JASON HIRSCHHORN: Kwa hiyo variable hii ni kwenda kuwa ya aina char nyota. 478 00:22:11,130 --> 00:22:14,580 Jinsi kubwa ni kutofautiana ya aina char nyota? 479 00:22:14,580 --> 00:22:15,510 Jinsi ka wengi? 480 00:22:15,510 --> 00:22:16,450 >> WANAFUNZI: Nne. 481 00:22:16,450 --> 00:22:18,210 >> JASON HIRSCHHORN: Ni ka nne. 482 00:22:18,210 --> 00:22:21,420 Jinsi haki za wengi ni variable ya aina int nyota? 483 00:22:21,420 --> 00:22:22,210 >> WANAFUNZI: Nne. 484 00:22:22,210 --> 00:22:24,910 >> JASON HIRSCHHORN: ka nne. 485 00:22:24,910 --> 00:22:28,280 Kama ni pointer, basi ni daima ka nne, kwa sababu kuyatumia, wao 486 00:22:28,280 --> 00:22:30,070 thamani ni kumbukumbu anwani. 487 00:22:30,070 --> 00:22:35,160 Na kumbukumbu anwani juu ya CS50 appliance ni ka nne kwa muda mrefu. 488 00:22:35,160 --> 00:22:42,900 Hivyo wakati sisi kuwaita GetString, au wakati sisi kusema, stringname sawa, na kisha katika 489 00:22:42,900 --> 00:22:46,140 quotes mbili kuweka kamba, sisi ni kuweka - 490 00:22:46,140 --> 00:22:46,920 vizuri, hiyo ni tofauti kidogo. 491 00:22:46,920 --> 00:22:48,630 Tutaweza kufanya GetString kama mfano. 492 00:22:48,630 --> 00:22:52,150 Au char nyota kitu sawa na kamba. 493 00:22:52,150 --> 00:22:54,360 Sorry, nipe mfano kwamba kusoma? 494 00:22:54,360 --> 00:22:57,590 >> Mwanafunzi: char nyota ukweli ni sawa na "Cs50 miamba" katika quotes mbili. 495 00:22:57,590 --> 00:23:02,260 >> JASON HIRSCHHORN: Kwa hiyo nyota hii, tutaweza wito huu x variable kwa ajili yetu 496 00:23:02,260 --> 00:23:04,060 madhumuni ya kurefusha maisha. 497 00:23:04,060 --> 00:23:05,970 Tumeunda variable kuitwa x. 498 00:23:05,970 --> 00:23:07,610 Ni aina char nyota. 499 00:23:07,610 --> 00:23:10,950 Ni pointer kwa mfululizo ya wahusika. 500 00:23:10,950 --> 00:23:12,200 Hivyo hapa chini - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Hivyo hii ni jinsi hii ingekuwa kazi katika kumbukumbu. 503 00:23:25,890 --> 00:23:27,410 Hii itakuwa kuhifadhi kumbukumbu anwani. 504 00:23:27,410 --> 00:23:31,770 Itakuwa kuhifadhi kumbukumbu ya barua pepe ya tabia ya kwanza katika safu. 505 00:23:31,770 --> 00:23:33,830 Na wakati wewe ikifuatiwa pointer, ungekuwa 506 00:23:33,830 --> 00:23:35,200 kupata tabia ya kwanza. 507 00:23:35,200 --> 00:23:38,780 >> Na kama wewe ni kusoma jambo hili kama kamba, kompyuta yako ni smart 508 00:23:38,780 --> 00:23:42,930 kutosha kujua, kusoma jambo hili zima mpaka anapata kuwepo kwa kuzorota 0. 509 00:23:42,930 --> 00:23:45,530 Lakini kama wewe ni kusoma tabia katika wakati, hivyo wewe iterating kupitia 510 00:23:45,530 --> 00:23:49,910 kamba hii, basi utakuwa tu kusoma tabia ya wakati mpaka kupata 511 00:23:49,910 --> 00:23:50,850 backslash 0. 512 00:23:50,850 --> 00:23:52,335 Kwamba wanaweza kujibu yako swali, ingawa. 513 00:23:52,335 --> 00:23:55,610 >> STUDENT: Yeah, lakini una si malloced kuwa nafasi 514 00:23:55,610 --> 00:23:58,400 lakini kwa kuwa pointer. 515 00:23:58,400 --> 00:24:02,510 >> JASON HIRSCHHORN: Kwa hiyo mimi nina uhakika kabisa nini hasa ni kuangalia, 516 00:24:02,510 --> 00:24:03,640 kwa sababu mimi si kufanya jaribio hilo. 517 00:24:03,640 --> 00:24:06,370 Kwamba ilitakiwa kuwa na manufaa rasilimali kutoka TF mwingine. 518 00:24:06,370 --> 00:24:11,380 Kama wewe ni kujenga kamba juu ya stack au kama variable ndani, itabidi 519 00:24:11,380 --> 00:24:16,920 tu kuwa safu ya mashtaka badala ya ujumla char nyota akizungumzia 520 00:24:16,920 --> 00:24:18,600 kamba nyingine. 521 00:24:18,600 --> 00:24:20,550 Lakini mimi sijui. 522 00:24:20,550 --> 00:24:25,065 Hiyo inaweza kuwa pointer na mwingine kamba juu ya stack kama vizuri. 523 00:24:25,065 --> 00:24:27,240 Yeah. 524 00:24:27,240 --> 00:24:31,116 >> Mwanafunzi: Mimi najua kuwa wewe haja ya kutenga kumbukumbu kama pointer ni 525 00:24:31,116 --> 00:24:33,360 kupata alitangaza ndani ya ya kazi nyingine. 526 00:24:33,360 --> 00:24:36,740 Je, unahitaji kufanya kitu kimoja kama ni kutangazwa kuwa ndani ya kuu, 527 00:24:36,740 --> 00:24:39,570 wewe ni kutumia ndani ya kuu? 528 00:24:39,570 --> 00:24:43,590 >> JASON HIRSCHHORN: Hivyo ndiyo. 529 00:24:43,590 --> 00:24:46,670 Unaweza kutangaza pointer yoyote kumbukumbu anwani katika kumbukumbu. 530 00:24:46,670 --> 00:24:51,440 Inaweza kuwa kumbukumbu ya barua pepe ya ndani variable, ingawa mara nyingi, 531 00:24:51,440 --> 00:24:55,760 watu wala kutangaza anwani kumbukumbu kwa vigezo ndani kwa sababu wao kwenda 532 00:24:55,760 --> 00:24:59,890 mbali mara moja kazi kwamba anarudi, ambayo ni kwa nini sisi kwa ujumla malloc mambo. 533 00:24:59,890 --> 00:25:04,630 Lakini ndiyo, unaweza kutangaza pointer kwa kutofautiana mwingine ndani. 534 00:25:04,630 --> 00:25:06,360 Ni kwa ujumla tu si kufanyika. 535 00:25:06,360 --> 00:25:09,480 Lakini siwezi kuangalia kwamba kitu maalum baada ya darasa. 536 00:25:09,480 --> 00:25:10,650 Yeah. 537 00:25:10,650 --> 00:25:12,350 >> STUDENT: Nadhani hii ni aina ya nini kuwa aliuliza. 538 00:25:12,350 --> 00:25:16,930 Ni gani wanaonekana ajabu kuwa initializing pointer si kama 539 00:25:16,930 --> 00:25:20,760 mitaani, lakini kama nini Inaonekana kama thamani. 540 00:25:20,760 --> 00:25:25,970 Inaonekana kama CS50 ni nini ndani ya kitu kuwa alisema kwa na 541 00:25:25,970 --> 00:25:28,820 si anwani halisi, sawa? 542 00:25:28,820 --> 00:25:30,520 >> JASON HIRSCHHORN: Basi hiyo ni si kesi, ingawa. 543 00:25:30,520 --> 00:25:32,470 Hiyo si nini kinatokea. 544 00:25:32,470 --> 00:25:35,910 Wakati kutangaza nyota char, ni kumbukumbu anwani. 545 00:25:35,910 --> 00:25:38,860 Kuyatumia ni anwani zote kumbukumbu akizungumzia kitu kingine. 546 00:25:38,860 --> 00:25:41,480 Kwamba kitu kingine inaweza kuwa juu ya stack, lakini karibu kila mara ni juu ya 547 00:25:41,480 --> 00:25:43,440 chungu katika njia tutaona kutumika. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Lakini stringname sawa na mara mbili-quote "GetString," tunaweza kuona kwamba na sisi 550 00:25:53,500 --> 00:25:55,010 unaweza kuangalia njia ya kuwa na kificho kwamba. 551 00:25:55,010 --> 00:26:01,190 GetString kamba si kuokolewa katika kwamba variable, au chochote string 552 00:26:01,190 --> 00:26:04,580 jina ni si kuokolewa kwa kuwa variable, kwa sababu si kwamba jinsi 553 00:26:04,580 --> 00:26:06,070 kuyatumia kazi. 554 00:26:06,070 --> 00:26:06,770 Je, hiyo mantiki? 555 00:26:06,770 --> 00:26:07,170 >> STUDENT: Yeah. 556 00:26:07,170 --> 00:26:08,570 >> JASON HIRSCHHORN: OK. 557 00:26:08,570 --> 00:26:11,690 Hopefully, kwamba hakuwa utata kwa mtu yeyote. 558 00:26:11,690 --> 00:26:15,732 Lakini kama ilivyokuwa, tunaweza kuangalia tena katika kidogo, kwa sababu sisi ni kweli kwenda 559 00:26:15,732 --> 00:26:19,240 na kanuni kitu ambacho mapenzi hopefully kazi na masharti na kukusaidia kujisikia 560 00:26:19,240 --> 00:26:22,170 vizuri zaidi pamoja nao. 561 00:26:22,170 --> 00:26:24,869 >> Maswali yoyote kuhusiana na haya mada au mada nyingine kwamba 562 00:26:24,869 --> 00:26:26,119 Mimi itabidi kuweka nyuma up? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 Na - 565 00:26:34,840 --> 00:26:36,310 hivi sasa. 566 00:26:36,310 --> 00:26:37,630 Ndiyo, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Hivyo hii ni unrelated kabisa, lakini tunaweza tu kwenda juu 568 00:26:39,860 --> 00:26:42,760 kweli haraka nini tunahitaji kujua kuhusu tofauti kati ya 32 na 569 00:26:42,760 --> 00:26:46,345 64-bit mashine? 570 00:26:46,345 --> 00:26:47,740 >> JASON HIRSCHHORN: Ndiyo. 571 00:26:47,740 --> 00:26:52,111 Hivyo 32 bits ni jinsi ka wengi? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: Ni ka nne. 573 00:26:53,060 --> 00:26:54,360 >> JASON HIRSCHHORN: Ni ka nne. 574 00:26:54,360 --> 00:26:58,420 Na 64 bits ni jinsi ka wengi? 575 00:26:58,420 --> 00:26:59,112 >> Mwanafunzi: nane. 576 00:26:59,112 --> 00:27:00,610 >> JASON HIRSCHHORN: Nane ka. 577 00:27:00,610 --> 00:27:03,980 Hivyo tena, bits nane ni byte moja. 578 00:27:03,980 --> 00:27:08,340 CS50 yako appliance ni 32-bit mashine. 579 00:27:08,340 --> 00:27:13,650 Hivyo anwani kumbukumbu ni ka nne kwa muda mrefu. 580 00:27:13,650 --> 00:27:17,460 Kuna 2-32 kumbukumbu anwani. 581 00:27:17,460 --> 00:27:21,310 0 to 2-32 minus 1. 582 00:27:21,310 --> 00:27:27,630 Na mimi si mazuri, lakini hiyo ni pengine wigo wa nini unahitaji 583 00:27:27,630 --> 00:27:35,230 kujua kwa ajili ya 32-bit mashine, kwamba kumbukumbu anwani ni mara ya pili, ka nne kwa muda mrefu, 584 00:27:35,230 --> 00:27:39,620 na kwamba kiasi cha juu ya anwani kumbukumbu. 585 00:27:39,620 --> 00:27:41,680 >> Pia, aina data - 586 00:27:41,680 --> 00:27:45,020 hii inaweza kuwa kitu kama vizuri kwamba ni yenye thamani ya kubainisha. 587 00:27:45,020 --> 00:27:49,610 ukubwa wa aina data inategemea mashine wewe ni kufanya kazi pamoja. 588 00:27:49,610 --> 00:27:56,760 Hivyo char, tabia moja, ni jinsi ka wengi juu ya CS50 yetu appliance? 589 00:27:56,760 --> 00:27:57,980 Moja Byte. 590 00:27:57,980 --> 00:28:02,310 Na ni kweli byte moja kama vizuri juu ya 64-bit mashine. 591 00:28:02,310 --> 00:28:05,920 >> Na aina ya data ni idadi sawa ya ka kwenye mashine zote mbili. 592 00:28:05,920 --> 00:28:11,620 Lakini baadhi ya aina data itakuwa tofauti juu ya mashine zote mbili. 593 00:28:11,620 --> 00:28:14,590 Hivyo kwamba itakuwa uwezekano wa Kitu tu unahitaji kujua. 594 00:28:14,590 --> 00:28:16,710 >> Lakini hata hilo, nadhani, ni zaidi ya mipaka - 595 00:28:16,710 --> 00:28:20,990 Mimi nina karibu chanya, kama wewe kuangalia nyuma katika umri wa Quizzes, inasema, kudhani kwa 596 00:28:20,990 --> 00:28:24,090 coding matatizo unatumia 32-bit mashine. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Lakini kuna, kwenda pamoja na kwamba katika Uchunguzi wewe ni nia, kuna 599 00:28:30,620 --> 00:28:35,920 aina data ambazo ni sawa ukubwa juu ya mashine yote. 600 00:28:35,920 --> 00:28:42,670 >> Kama umefanya kuona kitu kama uint32_t, wanaweza au 601 00:28:42,670 --> 00:28:43,260 si wameona kwamba. 602 00:28:43,260 --> 00:28:44,290 Hiyo ni aina data. 603 00:28:44,290 --> 00:28:47,570 Hiyo ni kusema, kuwa 32 bits bila kujali nini mashine hii ni juu ya. 604 00:28:47,570 --> 00:28:50,350 Basi, hao watu ni kuandika portable code, wao pengine si kutumia ints. 605 00:28:50,350 --> 00:28:53,260 Wao itabidi badala yake kutumia hizi data nyingine aina kuwa wanajua itakuwa sawa 606 00:28:53,260 --> 00:28:54,780 ukubwa juu ya kila mashine moja. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 Madhu. 609 00:28:58,250 --> 00:29:00,150 >> Madhu: Mimi nilikuwa na swali kuhusu mchakato wa kutungwa. 610 00:29:00,150 --> 00:29:04,110 Hivyo kama wewe ni kuandika mpango kwamba anatumia maktaba kama CS50 au kitu 611 00:29:04,110 --> 00:29:06,840 kama kwamba, najua kwamba maktaba ina, wakati fulani, kuwa na 612 00:29:06,840 --> 00:29:08,590 ulioandaliwa na uhusiano in 613 00:29:08,590 --> 00:29:13,380 Lakini ni kiasi gani cha kinachotokea wakati wa mkusanyiko wa mpango wako? 614 00:29:13,380 --> 00:29:15,880 Sehemu gani ya kwamba mchakato wa maktaba hutokea wakati uko 615 00:29:15,880 --> 00:29:18,560 kuandaa programu yako mwenyewe? 616 00:29:18,560 --> 00:29:24,020 >> JASON HIRSCHHORN: Basi hebu kwenda juu ya kwa ujumla hatua ya mchakato huu. 617 00:29:24,020 --> 00:29:26,280 Kuandika c faili yako.. 618 00:29:26,280 --> 00:29:33,530 Katika c faili yako., Unaweza # ni pamoja na yako maktaba header, kwa mfano, cs50.h. 619 00:29:33,530 --> 00:29:39,480 Je, hiyo ni pamoja na mkali line kufanya mpango wako? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Ni anaongeza prototypes ya majukumu kutoka header 622 00:29:43,350 --> 00:29:45,120 files katika maktaba. 623 00:29:45,120 --> 00:29:45,600 >> JASON HIRSCHHORN: Hasa. 624 00:29:45,600 --> 00:29:49,870 Inaongeza wale kazi prototypes na kanuni yako. 625 00:29:49,870 --> 00:29:55,230 Hivyo wakati code yako ni kuwa ulioandaliwa katika hatua za mwanzo, compiler anajua 626 00:29:55,230 --> 00:29:59,250 kwamba kazi hizi kweli zipo, na kwamba mahali fulani wamekuwa defined. 627 00:29:59,250 --> 00:30:02,460 Files. H si ni pamoja na ufafanuzi kwa kazi hizi au jinsi 628 00:30:02,460 --> 00:30:03,950 wao kweli kazi. 629 00:30:03,950 --> 00:30:07,960 Cs50.h tu ni pamoja na kitu ambacho anasema GetString ni kitu kweli kwamba 630 00:30:07,960 --> 00:30:09,270 yanaweza kutokea. 631 00:30:09,270 --> 00:30:14,240 Na standardio.h anasema printf ni kitu halisi ambayo yanaweza kutokea. 632 00:30:14,240 --> 00:30:23,190 >> Header hivyo lugha yako c na hili. file anapata akageuka katika baadhi 633 00:30:23,190 --> 00:30:27,750 mashine-someka code, ambayo hatimaye anapata akageuka katika binary 634 00:30:27,750 --> 00:30:30,030 code, 0 na 1 ya. 635 00:30:30,030 --> 00:30:33,590 Na kwamba kificho kwamba hatimaye anapata kunyongwa. 636 00:30:33,590 --> 00:30:38,550 -L cs50 line - kwa mfano, wakati wewe ni kuandika Clang - 637 00:30:38,550 --> 00:30:41,830 na kisha ni pamoja na-l cs50, unapoandika kwamba in 638 00:30:41,830 --> 00:30:42,180 Na unaweza kuona kwamba. 639 00:30:42,180 --> 00:30:43,890 Wakati kuandika kufanya, itabidi kuona kwamba line up hapa. 640 00:30:43,890 --> 00:30:47,740 Na tutaweza kuona kwamba katika pili wakati sisi kanuni au baadaye wakati sisi code. 641 00:30:47,740 --> 00:30:50,390 >> Lakini hiyo-l cs50 line hana kitu tofauti kidogo kuliko 642 00:30:50,390 --> 00:30:52,440 # Ni pamoja na cs50.h. 643 00:30:52,440 --> 00:30:56,300 Je, hiyo-l cs50 line nini? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Mimi nataka kusema kwamba ni viungo maktaba na kazi 646 00:31:00,310 --> 00:31:02,710 simu, kama. files o. 647 00:31:02,710 --> 00:31:08,200 >> JASON HIRSCHHORN: Hivyo sana karibu, kama si doa-on. 648 00:31:08,200 --> 00:31:16,220 -L cs50 inachukua file binary na huingiza kwa faili yako binary. 649 00:31:16,220 --> 00:31:21,410 Hivyo cs50.h, hakuna hatua kwa kumfanya cs50.h kutoka C lugha ya binary kila 650 00:31:21,410 --> 00:31:23,130 wakati moja ni kuwa kutumika. 651 00:31:23,130 --> 00:31:26,650 Hiyo itakuwa silly, kwa sababu itakuwa kupoteza muda mwingi. 652 00:31:26,650 --> 00:31:30,420 Hivyo tayari ulioandaliwa na akageuka katika kutekelezwa. 653 00:31:30,420 --> 00:31:35,430 Na sasa ni kwenda kuwa zimeunganishwa kwa faili yako mwishoni. 654 00:31:35,430 --> 00:31:38,370 Hivyo wale 1 na 0 yanaenda kwa kuunganisha pamoja na watoto wenu 655 00:31:38,370 --> 00:31:39,150 na 0 mwishoni. 656 00:31:39,150 --> 00:31:43,670 Hivyo sasa itabidi kweli na halisi 1 na 0 kwamba kufafanua jinsi GetString, 657 00:31:43,670 --> 00:31:47,890 kwa mfano, kazi, au jinsi printf, kwa mfano, kazi. 658 00:31:47,890 --> 00:31:52,750 >> Na kwa taarifa zaidi, kuna Waandishi wa short kwamba Nate anatoa kwamba 659 00:31:52,750 --> 00:31:55,410 unapaswa kuangalia nje kwamba huenda kupitia hatua hizi. 660 00:31:55,410 --> 00:31:56,050 Lakini - 661 00:31:56,050 --> 00:31:56,560 ndiyo. 662 00:31:56,560 --> 00:32:01,700 >> STUDENT: Je, wao daima katika o files. wakati wao uko katika aina maktaba, 663 00:32:01,700 --> 00:32:06,764 tayari zimeunganishwa, wanaohusishwa - kama wao uko katika code binary? 664 00:32:06,764 --> 00:32:07,600 >> JASON HIRSCHHORN: OK. 665 00:32:07,600 --> 00:32:08,420 Nini - 666 00:32:08,420 --> 00:32:11,780 >> STUDENT: Je, kwamba daima kesi kwa maktaba wakati kiungo wao? 667 00:32:11,780 --> 00:32:12,500 >> JASON HIRSCHHORN: Ndiyo. 668 00:32:12,500 --> 00:32:17,300 Hivyo kuna. S files, ambayo itakuwa mashine code, ambayo pia kuwa 669 00:32:17,300 --> 00:32:17,975 cryptic na wewe. 670 00:32:17,975 --> 00:32:19,410 Huna haja ya kuwa na wasiwasi kuhusu hizo. 671 00:32:19,410 --> 00:32:24,930 Lakini kwa ujumla, yeah, wao itabidi kuwa katika. o files tayari kwenda. 672 00:32:24,930 --> 00:32:27,170 >> Mwanafunzi: Hivyo wakati wewe meli maktaba, je, tu meli 673 00:32:27,170 --> 00:32:28,880 H. Na o.? 674 00:32:28,880 --> 00:32:32,210 Huwezi meli c. Au s.. 675 00:32:32,210 --> 00:32:33,070 >> JASON HIRSCHHORN: Kwa hiyo - 676 00:32:33,070 --> 00:32:36,260 na hii ni katika hii short pia, kama habari hii inaonekana kuwa kuja 677 00:32:36,260 --> 00:32:36,700 kidogo haraka. 678 00:32:36,700 --> 00:32:39,870 Lakini short juu ya compilers mazungumzo kuhusu hili pia. 679 00:32:39,870 --> 00:32:43,290 Wakati meli maktaba, kama meli H., Header file, wale 680 00:32:43,290 --> 00:32:46,290 kazi prototypes, na 1 na 0, kwamba wote unahitaji kutoa. 681 00:32:46,290 --> 00:32:50,640 Huna haja ya kutoa jinsi kazi kazi. c file. 682 00:32:50,640 --> 00:32:56,360 Kwa sababu hatua kwa ujumla, au uhakika APIs, hatua SPL hii, 683 00:32:56,360 --> 00:32:59,650 Stanford portable maktaba, ni kwa wewe na wasiwasi juu ya jinsi namna mpya ya 684 00:32:59,650 --> 00:33:04,220 GRect kazi, au jinsi hoja matendo, au jinsi kuongeza kazi. 685 00:33:04,220 --> 00:33:06,520 Wote unahitaji kujua ni kwamba kuongeza ni kazi ambayo unaweza 686 00:33:06,520 --> 00:33:08,880 kutumia, na ni gani hii. 687 00:33:08,880 --> 00:33:12,760 Hivyo kweli hawana haja ya kujua jinsi ya imeandikwa katika C. Wewe tu haja ya 688 00:33:12,760 --> 00:33:15,460 kujua, hapa ni kazi, nini kufanya, na hapa ni 1 na 0 ya 689 00:33:15,460 --> 00:33:18,870 wakati kweli wanataka kuwatumia. 690 00:33:18,870 --> 00:33:19,530 >> Baridi. 691 00:33:19,530 --> 00:33:26,980 Yoyote maswali zaidi juu ya compilers au mada nyingine kwenye bodi? 692 00:33:26,980 --> 00:33:30,300 >> STUDENT: Nina swali la utekelezaji wa kazi ya kujirudia. 693 00:33:30,300 --> 00:33:31,170 swali kuhusu recursion. 694 00:33:31,170 --> 00:33:33,030 Mimi nilikuwa na hisia kwamba atakuja up. 695 00:33:33,030 --> 00:33:38,310 Basi hebu haraka kupitia kujirudia na maalum 696 00:33:38,310 --> 00:33:40,690 mfano, kazi factorial. 697 00:33:40,690 --> 00:33:44,920 Kwa sababu hii ni mfano kwamba mara nyingi anakuja juu au hutumika 698 00:33:44,920 --> 00:33:46,170 kuonyesha recursion. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Hivyo "4!" ni kusoma kama 4 factorial. 701 00:33:56,410 --> 00:33:59,120 Na nini 4 factorial maana yake nini? 702 00:33:59,120 --> 00:34:00,696 Je, hiyo nini? 703 00:34:00,696 --> 00:34:02,235 Jinsi gani mahesabu 4 factorial? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 Mara 4 mara 3 mara 2 1. 706 00:34:07,960 --> 00:34:11,889 >> Hivyo njia nyingine ya kuandika 4 factorial ni kwa kuandika hii. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 Mara 4 3 factorial. 709 00:34:19,022 --> 00:34:22,080 Kwa sababu 3 factorial ni Mara 3 2 mara 1. 710 00:34:22,080 --> 00:34:27,580 Hivyo mara 4 3 factorial ni 4 mara mara 3 2 mara 1. 711 00:34:27,580 --> 00:34:32,679 Hii ni kwa nini factorial ni kubwa mgombea wa kujirudia, kwa sababu ni 712 00:34:32,679 --> 00:34:36,630 wazi kwamba kuna kitu ambacho hutokea tena na tena na zaidi juu ya 713 00:34:36,630 --> 00:34:39,820 ndogo idadi ya mambo mpaka kufikia mwisho. 714 00:34:39,820 --> 00:34:42,570 Wakati wewe kufikia 1, 1 factorial ni 1. 715 00:34:42,570 --> 00:34:43,719 Huwezi kwenda mengi zaidi. 716 00:34:43,719 --> 00:34:47,219 0 factorial pia kuelezwa kama 1. 717 00:34:47,219 --> 00:34:50,679 Hivyo wakati wewe kupata 1 au 0, wewe ni mwishoni, na unaweza 718 00:34:50,679 --> 00:34:53,219 kuanza kurejea up. 719 00:34:53,219 --> 00:34:59,540 Hivyo kama sisi alitaka kuandika kujirudia kazi kwa mahesabu ya factorial, 720 00:34:59,540 --> 00:35:02,170 sisi ni kwenda kuandika baadhi pseudocode kwa sasa. 721 00:35:02,170 --> 00:35:03,300 Kabla ya sisi kuandika kwamba pseudocode - 722 00:35:03,300 --> 00:35:05,660 Mimi nitakupa guys ya dakika kadhaa kuandika Pseudo code au kufikiria tu 723 00:35:05,660 --> 00:35:09,600 juu yake - kuna mambo mawili kila kazi kujirudia mahitaji. 724 00:35:09,600 --> 00:35:12,530 Ni mambo hayo mawili ni nini? 725 00:35:12,530 --> 00:35:13,220 >> JACK: Ni kujiita. 726 00:35:13,220 --> 00:35:13,680 >> JASON HIRSCHHORN Nuhu? 727 00:35:13,680 --> 00:35:14,460 Oh, Jack. 728 00:35:14,460 --> 00:35:15,100 Kwenda mbele. 729 00:35:15,100 --> 00:35:16,640 >> JACK: Ni kujiita. 730 00:35:16,640 --> 00:35:19,220 >> JASON HIRSCHHORN: Kwa hiyo kujirudia kazi mahitaji ya wito kujirudia, 731 00:35:19,220 --> 00:35:20,220 simu kwa yenyewe. 732 00:35:20,220 --> 00:35:20,770 Hiyo ni moja. 733 00:35:20,770 --> 00:35:21,510 Na nini kitu kingine? 734 00:35:21,510 --> 00:35:22,250 >> JACK: kesi ya msingi. 735 00:35:22,250 --> 00:35:23,780 >> JASON HIRSCHHORN: kesi ya msingi. 736 00:35:23,780 --> 00:35:26,940 kesi ya msingi ni, hapa wakati sisi kuacha. 737 00:35:26,940 --> 00:35:29,510 Hivyo kazi yako anapata kuitwa. 738 00:35:29,510 --> 00:35:31,410 kesi ya msingi anakuja kwanza. 739 00:35:31,410 --> 00:35:33,710 Unataka kujua kama wewe ni mwishoni. 740 00:35:33,710 --> 00:35:37,110 Na kama wewe si mwishoni, wewe kufanya wito wako kujirudia. 741 00:35:37,110 --> 00:35:39,880 Na kwenda kwa njia ya kazi hii tena, kuangalia kesi yako msingi tena. 742 00:35:39,880 --> 00:35:42,575 Kama wewe si mwisho, unaweza kufanya mwingine wito kujirudia, 743 00:35:42,575 --> 00:35:44,130 nakadhalika, na kadhalika. 744 00:35:44,130 --> 00:35:47,110 >> Hiyo ni kwa nini kazi ya kujirudia daima haja ya kesi hizo msingi na wale 745 00:35:47,110 --> 00:35:48,210 kujirudia wito. 746 00:35:48,210 --> 00:35:51,280 Kama huna wito kujirudia, ni bila kuwa na kazi ya kujirudia. 747 00:35:51,280 --> 00:35:53,210 Kama hakuwa na kesi ya msingi, ungependa kwenda milele na 748 00:35:53,210 --> 00:35:54,780 hakutakuwa na mwisho. 749 00:35:54,780 --> 00:35:57,870 Na kesi ya msingi daima huja kwanza, kwa sababu wewe siku zote wanataka kuangalia 750 00:35:57,870 --> 00:36:00,420 kama wewe ni mwishoni kwanza. 751 00:36:00,420 --> 00:36:04,770 Hivyo kabla ya sisi kufanya baadhi ya pseudocode, kwa nini wewe kuchukua dakika kufikiri juu ya 752 00:36:04,770 --> 00:36:09,360 jinsi ya kujirudia factorial kazi vingeandikwa? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Pia, kama wengi kama wewe ni kufanya, kuandika ni nje ya karatasi ni 755 00:36:26,010 --> 00:36:27,960 nini wewe kwenda kuwa na kufanya juu ya jaribio kesho. 756 00:36:27,960 --> 00:36:32,160 Vitendo hivyo pengine nzuri ya kufanya uhakika code wewe ni kuandika 757 00:36:32,160 --> 00:36:34,420 chini juu ya karatasi - 758 00:36:34,420 --> 00:36:35,160 au unaweza kufanya hivyo. 759 00:36:35,160 --> 00:36:36,710 Unajua ambapo semicolons ni. 760 00:36:36,710 --> 00:36:37,660 Unakumbuka syntax. 761 00:36:37,660 --> 00:36:40,400 Kwa sababu wewe ni kuwa na uwezo wa kuwa na compiler kuwaambia alifanya makosa. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Pia, pamoja na mistari hizo, kesho, wakati una coding matatizo, kama wewe 764 00:37:07,240 --> 00:37:11,490 ni alikimbia kwa muda, au kama wewe ni sana kuchanganyikiwa kwa jinsi gani uko walidhani 765 00:37:11,490 --> 00:37:16,030 kuandika kitu fulani katika c, ni itakuwa pasa wewe kuandika pseudo-code 766 00:37:16,030 --> 00:37:18,160 au kuandika maoni katika vilevile. 767 00:37:18,160 --> 00:37:21,940 Kwa sababu kuna sehemu mikopo kwa ajili ya maswali mengi juu ya jaribio. 768 00:37:21,940 --> 00:37:24,840 Basi unaweza kuwa alikimbia, au ili tu kuwa na kuchanganyikiwa. 769 00:37:24,840 --> 00:37:28,030 Kuandika katika maoni au pseudo-code ni mara nyingi njia ambazo unaweza 770 00:37:28,030 --> 00:37:29,360 wanaweza kupata sehemu ya mikopo. 771 00:37:29,360 --> 00:37:31,440 >> Hivyo si kuacha jambo fulani tupu juu ya jaribio. 772 00:37:31,440 --> 00:37:33,490 Hakuna adhabu kwa kuweka mambo in 773 00:37:33,490 --> 00:37:37,650 Kwa kweli, kuweka katika pseudo-code au maoni ni kwenda kusaidia grader 774 00:37:37,650 --> 00:37:40,410 kufikiri kama kweli kujua nini wewe ni kuzungumza juu, na labda tuzo 775 00:37:40,410 --> 00:37:42,030 baadhi ya mikopo sehemu kwa ajili hiyo. 776 00:37:42,030 --> 00:37:44,510 >> Pia pamoja na mistari hizo, kuandika wazi. 777 00:37:44,510 --> 00:37:47,650 Kama tunaweza si kweli nini wewe kuandika, sisi siyo kwenda kuwaita 778 00:37:47,650 --> 00:37:49,900 usiku wa manane kesho na takwimu nini aliandika. 779 00:37:49,900 --> 00:37:51,520 Sisi ni kwenda tu kuchukua mbali pointi. 780 00:37:51,520 --> 00:37:56,570 Kuandika wazi ili tuweze kusikia, au tuseme, tunaweza kusoma nini aliandika. 781 00:37:56,570 --> 00:38:00,230 >> Na kama anasema hukumu mbili, wala kuandika aya. 782 00:38:00,230 --> 00:38:02,280 Kufuata maelekezo. 783 00:38:02,280 --> 00:38:03,500 Kuandika wazi. 784 00:38:03,500 --> 00:38:07,720 Na kuandika katika maoni hayo au pseudocode kwa maswali ambayo inaweza 785 00:38:07,720 --> 00:38:10,270 tuzo sehemu ya mikopo. 786 00:38:10,270 --> 00:38:12,520 >> OK, hebu kwenda factorial. 787 00:38:12,520 --> 00:38:15,000 Hivyo tuna kazi factorial. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Kama ningekuwa kwa kweli kuandika hii katika C, je, mimi haja ya kuweka kabla ya jina 790 00:38:21,550 --> 00:38:22,800 ya kazi? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 aina kurudi, ambayo, katika hii kesi, tutaweza kuwapa int. 793 00:38:30,060 --> 00:38:35,450 Na kisha ndani ya braces curly, ni yale yanayoendelea ndani ya braces curly kwa 794 00:38:35,450 --> 00:38:36,850 kazi? 795 00:38:36,850 --> 00:38:37,950 >> WANAFUNZI: Hoja aina. 796 00:38:37,950 --> 00:38:39,150 >> JASON HIRSCHHORN: hoja yake. 797 00:38:39,150 --> 00:38:42,680 Hivyo factorial pengine kuchukua hoja. 798 00:38:42,680 --> 00:38:44,500 Ni pengine utasikia tu kuchukua hoja moja. 799 00:38:44,500 --> 00:38:49,450 Na tutaweza kusema itabidi kuchukua integer aitwaye x. 800 00:38:49,450 --> 00:38:52,770 Na tena, wakati wa kuandika mfano wa kazi au kuandika kazi 801 00:38:52,770 --> 00:38:57,110 katika kanuni yako kabla ya kufafanua yake, kuandika aina data na jina la 802 00:38:57,110 --> 00:39:01,370 kwamba kutofautiana kwa kuwa kazi tu. 803 00:39:01,370 --> 00:39:06,350 Hivyo unaweza kupita baadhi ya idadi ndani ya hii kazi, kutakuwa na kuwa inajulikana kama x 804 00:39:06,350 --> 00:39:07,340 ndani. 805 00:39:07,340 --> 00:39:08,755 >> Tuna kazi yetu factorial. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Tunahitaji mambo mawili, kesi ya msingi na wito kujirudia. 808 00:39:15,850 --> 00:39:20,900 Kesi ya msingi kwa factorial ni nini? 809 00:39:20,900 --> 00:39:24,850 Mtu ambaye aliandika nje na ambaye ana si amesema bado, ni nini ni msingi 810 00:39:24,850 --> 00:39:26,100 kesi kwa factorial? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> STUDENT: Kama n ni chini ya ya 2, kurudi 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON HIRSCHHORN: Kama n ni chini ya 2, kurudi 1. 814 00:39:33,520 --> 00:39:37,216 Mimi kama kwamba, kwa sababu inachukua huduma ya 0 na 1. 815 00:39:37,216 --> 00:39:45,290 Hivyo tutaweza kufanya x <2, kurudi 1. 816 00:39:45,290 --> 00:39:47,870 Kama sisi kupata kupita 0, kama sisi kupata kupita 1, kazi hii itakuwa 817 00:39:47,870 --> 00:39:49,790 mara moja kurudi 1. 818 00:39:49,790 --> 00:39:54,020 Kama sisi kupata kupita baadhi idadi kubwa kuliko au sawa na 2, tunakwenda 819 00:39:54,020 --> 00:39:55,370 na wito wetu kujirudia. 820 00:39:55,370 --> 00:39:57,855 >> Na hivyo ni jinsi gani ni kwamba kwenda kufanya kazi? 821 00:39:57,855 --> 00:40:01,070 Je, mtu mwingine ambaye alifanya kazi katika hii ambaye amesema bado nipe 822 00:40:01,070 --> 00:40:07,380 wito kujirudia kwa kazi hii katika pseudocode? 823 00:40:07,380 --> 00:40:10,770 Kama sisi kupata kupita katika idadi x na ni zaidi ya 2, nini 824 00:40:10,770 --> 00:40:13,370 tunataka kufanya nini? 825 00:40:13,370 --> 00:40:17,930 Sisi pia mfano yameandikwa juu ya upande kwamba anaweza kukupa ladha. 826 00:40:17,930 --> 00:40:20,770 >> Mwanafunzi: Wito mara x factorial ya x minus 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON HIRSCHHORN: Hasa haki. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Sisi ni kwenda na kurudi mara x factorial ya x minus 1. 830 00:40:37,750 --> 00:40:41,810 Na kwamba, hata ingawa niliandika juu, kimsingi, nini alisema katika lugha ya Kiingereza, 831 00:40:41,810 --> 00:40:44,580 kazi hii factorial kupata kuitwa tena. 832 00:40:44,580 --> 00:40:46,320 Kutakuwa na nitafanya juu ya x minus 1. 833 00:40:46,320 --> 00:40:49,320 Ni itabidi kurudi kwa baadhi integer, na kisha kutakuwa na kuzidisha hizi mbili 834 00:40:49,320 --> 00:40:52,050 pamoja, na thamani ambayo itakuwa akarudi chochote kuitwa hii 835 00:40:52,050 --> 00:40:55,010 kazi factorial, ambayo inaweza kuwa mfano mwingine wa 836 00:40:55,010 --> 00:40:58,420 kazi hii factorial. 837 00:40:58,420 --> 00:41:01,360 >> Hivyo kwamba ni mfano wa kujirudia kazi, sana 838 00:41:01,360 --> 00:41:02,530 rahisi kujirudia kazi. 839 00:41:02,530 --> 00:41:04,530 Lakini wengi wao watakuwa kama hii. 840 00:41:04,530 --> 00:41:11,170 Kama ungependa kujirudia nzuri changamoto kwa jaribio, kujaribu coding 841 00:41:11,170 --> 00:41:13,230 search binary recursively. 842 00:41:13,230 --> 00:41:18,950 Kwa sababu kama alivyofanya search binary kwa kuweka tatizo tatu, pengine alifanya hivyo 843 00:41:18,950 --> 00:41:21,730 iteratively katika kitanzi wakati. 844 00:41:21,730 --> 00:41:23,700 >> Lakini inaweza pia kuwa imeandikwa recursively. 845 00:41:23,700 --> 00:41:26,310 Wewe ni kwenda haja ya kuandika yako mwenyewe kazi tofauti kwamba inachukua baadhi 846 00:41:26,310 --> 00:41:29,020 amri ya mstari wa mbalimbali hoja - au si amri ya mstari wa hoja, baadhi 847 00:41:29,020 --> 00:41:30,910 mbalimbali hoja tu mara kwa mara. 848 00:41:30,910 --> 00:41:33,870 Lakini unaweza kuandika search binary recursively pia. 849 00:41:33,870 --> 00:41:36,190 >> Mwanafunzi: Hivyo unaweza pia imeandikwa, badala ya x minus 1, 850 00:41:36,190 --> 00:41:39,502 inaweza kuwa pia imeandikwa x minus minus, au unaweza kuwa na 851 00:41:39,502 --> 00:41:40,830 imeandikwa minus minus x. 852 00:41:40,830 --> 00:41:44,740 Unaweza tu kueleza kweli haraka kwa nini hizo bila kuwa na mambo mbalimbali, 853 00:41:44,740 --> 00:41:49,510 kama nini tofauti ni kati ya x minus minus na minus minus x? 854 00:41:49,510 --> 00:41:51,320 >> JASON HIRSCHHORN: Hapana, mimi nina kwenda katika hiyo. 855 00:41:51,320 --> 00:41:55,500 Lakini mimi kuzungumza na wewe kuhusu hilo baada ya darasa. x minus minus, minus minus x 856 00:41:55,500 --> 00:41:57,780 kuongezwa x kwa 1. 857 00:41:57,780 --> 00:41:59,090 Lakini wao kufanya ni kidogo tofauti. 858 00:41:59,090 --> 00:42:00,340 Lakini mimi si unataka kwenda katika hiyo. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Maswali mengine kuhusu kujirudia au kazi hii? 861 00:42:09,090 --> 00:42:10,140 Hiyo ni kweli hata pseudocode. 862 00:42:10,140 --> 00:42:15,060 Kwamba kimsingi code katika C ungependa kuandika kwa hili. 863 00:42:15,060 --> 00:42:19,393 >> OK, maswali yoyote kuhusu mada hapa? 864 00:42:19,393 --> 00:42:19,864 Yeah. 865 00:42:19,864 --> 00:42:23,130 >> STUDENT: Nina mnyonge ya haraka ya yaliyo ya uhakika na usahihi. 866 00:42:23,130 --> 00:42:24,260 >> JASON HIRSCHHORN: Floating uhakika na usahihi. 867 00:42:24,260 --> 00:42:26,920 Je, mtu kweli haraka nipe mnyonge ya 868 00:42:26,920 --> 00:42:28,210 yaliyo ya uhakika na usahihi? 869 00:42:28,210 --> 00:42:30,420 Wote walikuwa kufanya hivyo kwa ajili yako kuweka tatizo, hivyo ni wote 870 00:42:30,420 --> 00:42:31,700 familiar nayo. 871 00:42:31,700 --> 00:42:35,090 Au labda si nyote. 872 00:42:35,090 --> 00:42:36,602 Mtu yeyote? 873 00:42:36,602 --> 00:42:39,530 Nipe doa kuanza. 874 00:42:39,530 --> 00:42:40,750 Yaliyo ya uhakika na usahihi. 875 00:42:40,750 --> 00:42:42,380 Tatizo ni nini? 876 00:42:42,380 --> 00:42:42,960 Ndiyo. 877 00:42:42,960 --> 00:42:43,680 Victoria? 878 00:42:43,680 --> 00:42:44,480 >> Vanessa: Vanessa. 879 00:42:44,480 --> 00:42:45,285 >> JASON HIRSCHHORN: Vanessa. 880 00:42:45,285 --> 00:42:45,680 Sorry. 881 00:42:45,680 --> 00:42:51,550 >> Vanessa: Kuna tu idadi finite ya idadi ambayo yanaweza kuwakilishwa 882 00:42:51,550 --> 00:42:57,930 kwa sababu uko juu, katika yetu kesi, mfumo wa 32-bit. 883 00:42:57,930 --> 00:43:03,080 Hivyo aina ya kuwa na kufanya juu ya idadi ya baadhi ya. 884 00:43:03,080 --> 00:43:03,910 >> JASON HIRSCHHORN: Basi hiyo ni sahihi kabisa. 885 00:43:03,910 --> 00:43:08,110 Kuna tu kiasi fulani cha idadi ambayo yanaweza kuwakilishwa. 886 00:43:08,110 --> 00:43:11,770 Kama wewe kuzidisha namba mbili kubwa sana, inaweza kufurika kiasi 887 00:43:11,770 --> 00:43:13,950 ya nafasi una kuwakilisha integer. 888 00:43:13,950 --> 00:43:17,930 Hiyo ni kwa nini wakati mwingine sisi kutumia muda mrefu muda mrefu badala ya int. 889 00:43:17,930 --> 00:43:19,210 Hiyo ina nafasi zaidi. 890 00:43:19,210 --> 00:43:21,210 Kwamba wanaweza kushikilia idadi kubwa. 891 00:43:21,210 --> 00:43:24,310 >> Yaliyo hatua usahihi ina nini na hiyo, lakini pia ina nini na 892 00:43:24,310 --> 00:43:29,300 ukweli kwamba idadi decimal ni si daima kuwakilishwa. 893 00:43:29,300 --> 00:43:29,540 Sorry. 894 00:43:29,540 --> 00:43:31,280 Hebu kuweka nyuma hii up. 895 00:43:31,280 --> 00:43:36,610 idadi decimal 1.0 ni daima kuwakilishwa kama wewe bila kutarajia, 896 00:43:36,610 --> 00:43:40,770 1.000000000. 897 00:43:40,770 --> 00:43:50,360 Wakati mwingine ni kuwakilishwa kama 1.000000001 au .999999999. 898 00:43:50,360 --> 00:43:52,780 Inawezekana kuwa hata 89 kutupwa huko mahali fulani. 899 00:43:52,780 --> 00:43:56,560 Hivyo idadi ya wale decimal ni si kuwakilishwa hasa kama wewe ungekuwa 900 00:43:56,560 --> 00:43:58,430 wao wanatarajia kuwa kuwakilishwa. 901 00:43:58,430 --> 00:44:00,010 >> Hivyo katika kuweka tatizo - 902 00:44:00,010 --> 00:44:00,860 ilikuwa ni mbili? - 903 00:44:00,860 --> 00:44:05,290 kuweka tatizo mbili, ambapo sisi kushughulikiwa na idadi yaliyo uhakika, wakati sisi alitaka 904 00:44:05,290 --> 00:44:08,690 yao ya kuwakilisha nini hasa sisi alitaka yao ya kuwakilisha, idadi 905 00:44:08,690 --> 00:44:12,860 ya pennies, au idadi ya senti, sisi kuzidisha yao na 100. 906 00:44:12,860 --> 00:44:14,750 Sisi mviringo yao. 907 00:44:14,750 --> 00:44:18,660 Na kisha sisi kukatwa kila kitu nyuma ya uhakika decimal. 908 00:44:18,660 --> 00:44:22,020 Hiyo ilikuwa ni kuhakikisha kwamba wangeweza kweli sawa nini hasa sisi alitaka 909 00:44:22,020 --> 00:44:22,410 wao sawa. 910 00:44:22,410 --> 00:44:26,870 >> Kwa sababu wakati wewe kuchukua kitu ambacho a kuelea na kurejea katika int, wewe 911 00:44:26,870 --> 00:44:29,860 kukatwa kila kitu kwa haki ya uhakika decimal. 912 00:44:29,860 --> 00:44:33,900 Kwa sababu kuna baadhi ya hatua yaliyo kutokuwa sahihi, 100.000 inaweza kuwa 913 00:44:33,900 --> 00:44:37,440 kuwakilishwa kama 99.999999999. 914 00:44:37,440 --> 00:44:40,350 Na kama wewe tu kukatwa kila kitu haki ya haki mbali, wewe kwenda 915 00:44:40,350 --> 00:44:41,600 kupata idadi sahihi. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Yeah. 918 00:44:44,180 --> 00:44:45,290 >> STUDENT: Mimi nilikuwa na swali kuhusu akitoa. 919 00:44:45,290 --> 00:44:47,500 Utaratibu gani gani kutokea katika? 920 00:44:47,500 --> 00:44:54,480 Kama ungependa kufanya kuelea, mabano, 1 kugawanywa na 10, je, ni je, 1 kugawanywa na 10, 921 00:44:54,480 --> 00:44:58,910 kisha kupata 0.1, kisha kurejea ndani kuelea? 922 00:44:58,910 --> 00:45:01,470 >> JASON HIRSCHHORN: Kama wewe kufanya kuelea 1 kugawanywa na 10 - 923 00:45:01,470 --> 00:45:02,550 >> STUDENT: Yeah, na kisha ni sawa na - 924 00:45:02,550 --> 00:45:04,240 vizuri, kwa kawaida kuwa ni sawa katika - 925 00:45:04,240 --> 00:45:04,690 Yeah. 926 00:45:04,690 --> 00:45:06,760 Unataka kufanya hivyo kuelea, sawa? 927 00:45:06,760 --> 00:45:12,790 >> JASON HIRSCHHORN: OK, hivyo tunakwenda kutumia kwa segue katika kuhesabia 928 00:45:12,790 --> 00:45:15,390 majibu ya maswali haya kupitia coding. 929 00:45:15,390 --> 00:45:18,180 Kwa sababu pengine utasikia kuwa na mengi ya maswali haya dakika, na njia nzuri ya 930 00:45:18,180 --> 00:45:19,100 kuyatatua kwa njia ya coding. 931 00:45:19,100 --> 00:45:21,320 Hivyo sisi ni kwenda na kanuni hii hivi sasa, na kisha sisi ni kwenda nyuma na 932 00:45:21,320 --> 00:45:24,020 ya kificho swali alikuwa. 933 00:45:24,020 --> 00:45:24,950 >> Hivyo mstari wa kwanza - 934 00:45:24,950 --> 00:45:29,390 Mimi lazima kuwa imeandikwa ni - ni nini Jambo la kwanza tunataka kufanya wakati sisi 935 00:45:29,390 --> 00:45:32,250 kufungua faili mpya katika gedit? 936 00:45:32,250 --> 00:45:34,190 >> Mwanafunzi: Ni pamoja na. 937 00:45:34,190 --> 00:45:35,920 >> JASON HIRSCHHORN: Ni pamoja na nini? 938 00:45:35,920 --> 00:45:37,952 >> Mwanafunzi: CS50 maktaba. 939 00:45:37,952 --> 00:45:39,920 >> JASON HIRSCHHORN: OK. 940 00:45:39,920 --> 00:45:42,590 Nini kingine lazima sisi ni pamoja? 941 00:45:42,590 --> 00:45:46,820 Tuko tu kwenda kuangalia nini kinatokea wakati kutupwa kitu kuelea. 942 00:45:46,820 --> 00:45:48,605 Lakini je, tunahitaji ni pamoja na kama sisi ni kwenda kuandika C mpango? 943 00:45:48,605 --> 00:45:49,300 >> STUDENT: Standard I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON HIRSCHHORN: stdio.h. 945 00:45:50,625 --> 00:45:54,880 Sisi kwa kweli hawana haja, kwa hii mpango, cs50.h, hata kama ni 946 00:45:54,880 --> 00:45:55,920 daima kusaidia kwa pamoja. 947 00:45:55,920 --> 00:45:58,260 Lakini sisi daima haja stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> STUDENT: Wakati coding katika C? 949 00:45:59,660 --> 00:46:15,770 >> JASON HIRSCHHORN: Wakati coding katika C. 950 00:46:15,770 --> 00:46:17,090 >> Basi, mimi ila ni kama hii. C file. 951 00:46:17,090 --> 00:46:18,590 Mimi kupata baadhi ya nzuri syntax mwangaza. 952 00:46:18,590 --> 00:46:22,890 Niliandika utupu ndani ya kuu. 953 00:46:22,890 --> 00:46:24,792 Gani utupu maana yake nini? 954 00:46:24,792 --> 00:46:26,740 >> Mwanafunzi: Je, si kuchukua yoyote amri ya mstari wa hoja. 955 00:46:26,740 --> 00:46:28,900 >> JASON HIRSCHHORN: njia tupu, katika hii kesi, kuu haina kuchukua yoyote 956 00:46:28,900 --> 00:46:29,700 amri ya mstari wa hoja. 957 00:46:29,700 --> 00:46:32,720 Katika kesi nyingine, ina maana kazi haina kuchukua amri ya mstari wa hoja. 958 00:46:32,720 --> 00:46:36,560 Au kazi, kama ningekuwa kuandika utupu kuu (utupu), kwamba kusema kuu ya 959 00:46:36,560 --> 00:46:38,460 si kurudi kitu chochote. 960 00:46:38,460 --> 00:46:39,960 Hivyo utupu tu ina maana chochote. 961 00:46:39,960 --> 00:46:42,510 Gani mimi kuandika kama ningekuwa kuchukua amri ya mstari wa hoja? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> Mwanafunzi: int arc c kamba arc v 964 00:46:47,150 --> 00:46:49,055 >> JASON HIRSCHHORN: int argc kamba argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Hiyo ni kweli? 967 00:46:55,572 --> 00:46:58,720 >> Mwanafunzi: Ni char mabano nyota argv. 968 00:46:58,720 --> 00:47:01,730 >> JASON HIRSCHHORN: Ili wewe uandike mabano kamba argv au char nyota argv 969 00:47:01,730 --> 00:47:03,710 mabano, lakini unahitaji mabano. 970 00:47:03,710 --> 00:47:06,290 Kwa sababu argv ni safu ya masharti, kumbuka. 971 00:47:06,290 --> 00:47:07,360 Siyo string moja tu. 972 00:47:07,360 --> 00:47:10,350 Hivyo kamba argv ni, hapa ni kamba na mtu mmoja aitwaye argv. 973 00:47:10,350 --> 00:47:13,630 Mabano kamba argv ni, hapa safu ya masharti. 974 00:47:13,630 --> 00:47:17,865 Hivyo int mabano argc kamba argv itakuwa kitu ambacho mimi 975 00:47:17,865 --> 00:47:18,810 pengine kuandika. 976 00:47:18,810 --> 00:47:23,050 >> Hivyo alitaka kuokoa katika integer? 977 00:47:23,050 --> 00:47:24,285 >> STUDENT: Yeah, integer. 978 00:47:24,285 --> 00:47:25,840 Au katika kuelea. 979 00:47:25,840 --> 00:47:26,710 >> JASON HIRSCHHORN: Katika kuelea? 980 00:47:26,710 --> 00:47:30,790 Kama, kuelea x sawa na 1 kugawanywa na 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON HIRSCHHORN: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 Je, mimi magazeti nje kuelea katika printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Nini? 986 00:47:46,714 --> 00:47:47,560 >> Mwanafunzi:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON HIRSCHHORN:% f. 988 00:47:48,300 --> 00:47:50,810 Nini integer? 989 00:47:50,810 --> 00:47:52,110 d au i. 990 00:47:52,110 --> 00:47:53,000 Nini kamba? 991 00:47:53,000 --> 00:47:54,240 >> STUDENT: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON HIRSCHHORN: s. 993 00:47:56,140 --> 00:47:57,550 Jinsi gani mimi kupata line mpya? 994 00:47:57,550 --> 00:47:58,800 >> Mwanafunzi: backslash n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON HIRSCHHORN: Je, mimi kurudi kama anaendesha kuu kwa usahihi? 997 00:48:07,100 --> 00:48:08,360 >> STUDENT: 0. 998 00:48:08,360 --> 00:48:09,430 Je, mimi haja ya kuandika kwamba line, ingawa? 999 00:48:09,430 --> 00:48:10,170 >> STUDENT: Hapana 1000 00:48:10,170 --> 00:48:11,513 OK, sisi sipendi kufanya hivyo, basi. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Je, kila mtu kusoma kwamba? 1003 00:48:17,190 --> 00:48:18,485 Inaonekana kidogo kidogo. 1004 00:48:18,485 --> 00:48:20,160 Je, kila mtu kuona, au lazima Mimi kufanya hivyo kubwa? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Nadhani kwa ajili ya kamera, tutaweza kufanya ni kidogo kubwa, ingawa. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON HIRSCHHORN: Kama nataka upande huu . C faili ndani kutekelezwa, nini 1009 00:48:38,410 --> 00:48:39,260 mimi kuandika? 1010 00:48:39,260 --> 00:48:41,610 >> STUDENT: Matokeo ya mtihani. 1011 00:48:41,610 --> 00:48:42,080 >> JASON HIRSCHHORN: Sorry? 1012 00:48:42,080 --> 00:48:42,790 >> STUDENT: Matokeo ya mtihani. 1013 00:48:42,790 --> 00:48:44,040 >> JASON HIRSCHHORN: Matokeo ya mtihani. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Sisi walikuwa wanazungumza juu ya line hili mapema. 1016 00:48:48,410 --> 00:48:49,140 Clang. 1017 00:48:49,140 --> 00:48:51,270 Nini Clang? 1018 00:48:51,270 --> 00:48:52,200 jina la compiler. 1019 00:48:52,200 --> 00:48:53,920 Nini mstari huu? 1020 00:48:53,920 --> 00:48:55,580 >> Mwanafunzi: Sets ni kwa ajili ya matumizi ya GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON HIRSCHHORN: Sets ni kwa ajili ya matumizi ya GDB. 1022 00:48:59,230 --> 00:49:02,338 Mstari huu, nini hiyo? 1023 00:49:02,338 --> 00:49:03,290 >> Mwanafunzi: code Kupunguza. 1024 00:49:03,290 --> 00:49:06,010 >> JASON HIRSCHHORN: Hiyo ni chanzo faili. c file. 1025 00:49:06,010 --> 00:49:08,150 Je, mistari hizi mbili nini? 1026 00:49:08,150 --> 00:49:10,245 Au hizi mbili si mistari. 1027 00:49:10,245 --> 00:49:12,300 >> Mwanafunzi: Ni majina ni mtihani. 1028 00:49:12,300 --> 00:49:15,410 >> JASON HIRSCHHORN: Kwa hiyo dash o anasema, jina ni kitu tofauti. 1029 00:49:15,410 --> 00:49:16,790 Na hapa wewe ni wito ni mtihani. 1030 00:49:16,790 --> 00:49:18,900 Kama mimi hawakuwa na kwamba katika, itakuwa ni jina hili? 1031 00:49:18,900 --> 00:49:20,260 >> Mwanafunzi: A.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON HIRSCHHORN: A.out. 1033 00:49:22,340 --> 00:49:25,366 Je, hii nini? 1034 00:49:25,366 --> 00:49:27,670 >> Mwanafunzi: Viungo maktaba math. 1035 00:49:27,670 --> 00:49:29,550 >> JASON HIRSCHHORN: Ni viungo katika maktaba math. 1036 00:49:29,550 --> 00:49:32,880 Sisi hawakuwa ni pamoja na maktaba math, lakini tangu kwamba jambo la kawaida, wameweza 1037 00:49:32,880 --> 00:49:35,780 kufanya imeandikwa na daima ni pamoja na math maktaba. 1038 00:49:35,780 --> 00:49:39,050 Na vivyo hivyo, hii ni pamoja na Maktaba CS50. 1039 00:49:39,050 --> 00:49:43,010 >> OK, hivyo kama sisi orodha, sasa tuna kutekelezwa aitwaye mtihani. 1040 00:49:43,010 --> 00:49:45,150 Nitafanya hivyo, mimi kuandika mtihani. 1041 00:49:45,150 --> 00:49:48,330 Mimi naona kwamba hatua yangu yaliyo, kama ilivyotarajiwa, ni sawa na 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Je, hiyo - 1044 00:49:51,590 --> 00:49:52,060 hivyo - 1045 00:49:52,060 --> 00:49:55,210 >> STUDENT: Kisha kama wewe kuweka kuelea sasa, kama wewe kutupwa kama kuelea - 1046 00:49:55,210 --> 00:49:56,870 >> JASON HIRSCHHORN: Tupa 1 kwa kuelea? 1047 00:49:56,870 --> 00:49:59,180 >> STUDENT: Hapana, kutupwa kitu kamili - 1048 00:49:59,180 --> 00:49:59,500 yeah. 1049 00:49:59,500 --> 00:50:02,460 Kama wewe tu alifanya hivyo, ingekuwa kwamba kufanya hivyo ni 0.1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON HIRSCHHORN: OK, hivyo kweli haraka, 1 kugawanywa na 10, wale ni 1051 00:50:07,170 --> 00:50:08,690 integers kugawanyika. 1052 00:50:08,690 --> 00:50:13,580 Hivyo wakati wewe kugawanya integers, wao ni 0, na wewe ni kuokoa kwamba 0 katika 1053 00:50:13,580 --> 00:50:17,170 kuelea, kwa sababu slash ni integer tu mgawanyiko. 1054 00:50:17,170 --> 00:50:19,180 Hivyo sasa sisi ni kugeuka kitu ndani ya kuelea. 1055 00:50:19,180 --> 00:50:21,650 >> Hebu kuona nini kinatokea. 1056 00:50:21,650 --> 00:50:22,900 Tutaweza kufanya mtihani. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Hivyo sasa tunaona kwamba slash hakuwa integer mgawanyiko, ilikuwa yaliyo 1059 00:50:31,090 --> 00:50:32,640 hatua mgawanyiko. 1060 00:50:32,640 --> 00:50:35,700 Kwa sababu moja ya hoja yake alikuwa ametiwa kwa kuelea. 1061 00:50:35,700 --> 00:50:38,380 Basi sasa alikuwa akisema, kutibu mgawanyiko kama sisi ni kushughulika na 1062 00:50:38,380 --> 00:50:40,140 pointi yaliyo, si kwa integers. 1063 00:50:40,140 --> 00:50:42,760 Na hivyo kupata jibu sisi kutarajia. 1064 00:50:42,760 --> 00:50:44,620 >> Hebu angalia nini kinatokea - 1065 00:50:44,620 --> 00:50:47,103 oops. 1066 00:50:47,103 --> 00:50:51,646 Kama nilitaka magazeti zaidi decimal matangazo, ni jinsi gani mimi kufanya hivyo? 1067 00:50:51,646 --> 00:50:55,550 >> STUDENT: Point dot f, au kama wengi maeneo decimal kama unataka. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON HIRSCHHORN: Kwa hiyo mimi magazeti 10 matangazo decimal. 1070 00:51:04,440 --> 00:51:06,610 Na sisi sasa kuona sisi ni kupata baadhi ya mambo ya ajabu. 1071 00:51:06,610 --> 00:51:09,650 Na kwamba huenda nyuma kwa swali lako kuhusu yaliyo hatua kutokuwa sahihi. 1072 00:51:09,650 --> 00:51:10,950 Kuna mambo weird kuhifadhiwa katika hapa. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, je, hiyo kujibu swali lako? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Gani kingine unataka na kanuni haraka? 1077 00:51:20,200 --> 00:51:25,470 >> Mwanafunzi: Mimi nilitaka kuona kama au si, kama wewe huru juu ya baadhi ya pointer, 1078 00:51:25,470 --> 00:51:30,410 kama bado kwamba pointer alikuwa kuhifadhiwa katika ni anwani ya nini alikuwa 1079 00:51:30,410 --> 00:51:32,170 akizungumzia hapo awali. 1080 00:51:32,170 --> 00:51:34,100 >> JASON HIRSCHHORN: OK, hivyo hebu kufanya hivyo. 1081 00:51:34,100 --> 00:51:38,030 Nyota Char PTR, hii inajenga variable aitwaye PTR ya aina char nyota. 1082 00:51:38,030 --> 00:51:39,280 Je, mimi kuandika malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Just malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 Lakini basi ina kuwa ukubwa wa, na katika kesi hii, mimi nadhani wewe d 1087 00:51:51,040 --> 00:51:52,465 akizungumzia kwa Char. 1088 00:51:52,465 --> 00:51:54,450 Hivyo Ningependa kuwa char. 1089 00:51:54,450 --> 00:51:57,520 >> JASON HIRSCHHORN: OK, hivyo zaidi yaliyotokea, Ndani ya - 1090 00:51:57,520 --> 00:51:58,770 hebu hariri. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Ndani ya malloc, unataka namba ya ka juu ya chungu. 1093 00:52:09,260 --> 00:52:12,320 Kwa ujumla, nini tumeona kwamba sisi ni kufanya ni tunakwenda malloc 1094 00:52:12,320 --> 00:52:14,940 masharti, kwa mfano, au arrays ya integers. 1095 00:52:14,940 --> 00:52:21,600 Hivyo kama tunataka integers 10, au 10 chars, 10 itatupa 10. 1096 00:52:21,600 --> 00:52:24,370 Na kisha ukubwa wa chars bila kutoa sisi kwamba ukubwa wa chars, ambayo katika 1097 00:52:24,370 --> 00:52:25,120 kesi hii ni 1 Byte. 1098 00:52:25,120 --> 00:52:26,250 Sisi kupata 10 bytes. 1099 00:52:26,250 --> 00:52:28,540 Kama tulikuwa na kuandika ukubwa wa int, kwamba atatupa 40 bytes. 1100 00:52:28,540 --> 00:52:31,520 >> Hivyo zaidi yaliyotokea, ndani ya malloc ni idadi ya ka unataka. 1101 00:52:31,520 --> 00:52:34,620 Katika kesi hiyo, sisi ni kupata 1 Byte. 1102 00:52:34,620 --> 00:52:36,900 Ambayo inaonekana kama matumizi weird ya malloc, lakini kwa ajili yetu 1103 00:52:36,900 --> 00:52:38,470 madhumuni ya hufanya akili. 1104 00:52:38,470 --> 00:52:40,420 Hivyo kuna hiyo. 1105 00:52:40,420 --> 00:52:43,420 >> Sisi ni kwenda kuwaita bure. 1106 00:52:43,420 --> 00:52:47,040 Sisi kujikwamua ni na sisi kutumia PTR tena. 1107 00:52:47,040 --> 00:52:48,750 Na nini unataka kuangalia? 1108 00:52:48,750 --> 00:52:50,550 >> Mwanafunzi: Mimi nilitaka kuangalia kama au si kulikuwa na kitu chochote 1109 00:52:50,550 --> 00:52:51,900 ndani yake. 1110 00:52:51,900 --> 00:52:53,050 >> JASON HIRSCHHORN: Hivyo kama Ni alisema kwa kitu chochote? 1111 00:52:53,050 --> 00:52:57,740 >> STUDENT: Yeah, hasa, kama bado alikuwa na kumbukumbu anwani. 1112 00:52:57,740 --> 00:53:02,220 >> JASON HIRSCHHORN: Kwa hiyo unataka kuangalia thamani ya PTR? 1113 00:53:02,220 --> 00:53:03,470 >> STUDENT: Yeah, hasa. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON HIRSCHHORN: Je, mimi kuandika hapa kama nataka kuangalia thamani ya 1116 00:53:10,160 --> 00:53:11,880 uhakika - ni nini, Jordan akasema, thamani? 1117 00:53:11,880 --> 00:53:13,720 Au ni nini kuhifadhiwa ndani ya PTR? 1118 00:53:13,720 --> 00:53:14,620 >> Mwanafunzi: anwani kumbukumbu. 1119 00:53:14,620 --> 00:53:16,330 >> JASON HIRSCHHORN: anwani kumbukumbu. 1120 00:53:16,330 --> 00:53:20,520 Basi, ikiwa mimi kuandika tu hii, utakuwa nipe thamani ya PTR. 1121 00:53:20,520 --> 00:53:22,800 Na jinsi gani mimi magazeti nje kumbukumbu anwani? 1122 00:53:22,800 --> 00:53:26,470 Nini string format kwa ajili ya kumbukumbu ya mitaani? 1123 00:53:26,470 --> 00:53:27,430 >> Mwanafunzi:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON HIRSCHHORN:% p. 1125 00:53:28,050 --> 00:53:29,500 % S ni kamba. 1126 00:53:29,500 --> 00:53:30,750 % P kwa pointer. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Hiyo ni kweli? 1129 00:53:43,540 --> 00:53:44,790 Hiyo ni haki. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Hivyo PTR sawa na - 1132 00:53:51,040 --> 00:53:53,350 bado ina kitu ndani yake. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 Hii pengine ni zaidi kuvutia swali. 1135 00:53:57,645 --> 00:53:59,198 Je, hiyo line nini? 1136 00:53:59,198 --> 00:54:00,830 >> Mwanafunzi: seg makosa. 1137 00:54:00,830 --> 00:54:01,310 >> JASON HIRSCHHORN: Nini? 1138 00:54:01,310 --> 00:54:02,678 >> STUDENT: Nadhani ni seg makosa. 1139 00:54:02,678 --> 00:54:03,574 >> JASON HIRSCHHORN: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> STUDENT: Nadhani kutakuwa na seg kosa. 1141 00:54:04,920 --> 00:54:08,265 >> JASON HIRSCHHORN: Hivyo mstari huu ya kificho, nyota PTR, nini 1142 00:54:08,265 --> 00:54:10,152 haina nyota maana yake nini? 1143 00:54:10,152 --> 00:54:11,240 >> Mwanafunzi: Content ya. 1144 00:54:11,240 --> 00:54:11,560 >> JASON HIRSCHHORN: Yeah. 1145 00:54:11,560 --> 00:54:13,910 Kwenda kupata maudhui ya. 1146 00:54:13,910 --> 00:54:16,830 Hivyo hii ni kwenda kwa kumbukumbu kushughulikia huko na nipe. 1147 00:54:16,830 --> 00:54:21,030 Nilikuwa% c haki hapa kwa sababu kuna ni wahusika kuhifadhiwa huko. 1148 00:54:21,030 --> 00:54:23,390 Hivyo sisi ni kwenda kwa kuwa hotuba sisi niliona - au pengine utasikia kuwa 1149 00:54:23,390 --> 00:54:25,190 kidogo, hii ni tofauti wakati sisi kuendesha programu. 1150 00:54:25,190 --> 00:54:28,010 Lakini tutaweza kwenda kwa anwani hiyo ambayo tunajua bado ipo 1151 00:54:28,010 --> 00:54:29,260 na kuona nini huko. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Hivyo hakuwa na seg kosa. 1154 00:54:37,110 --> 00:54:38,970 Ni tu hakutupa kitu chochote. 1155 00:54:38,970 --> 00:54:43,350 Anaweza kuwa kweli ametupa kitu, sisi tu hawezi kuona. 1156 00:54:43,350 --> 00:54:45,110 Na kwamba huenda nyuma na wazo hili - 1157 00:54:45,110 --> 00:54:47,270 na sisi siyo kwenda kupata sana katika hii, kwa sababu hiyo zaidi ya 1158 00:54:47,270 --> 00:54:48,460 wigo wa kozi hii. 1159 00:54:48,460 --> 00:54:51,260 Lakini kuongelea haki hapa, kama sisi akaenda zaidi ya mipaka ya safu na 1160 00:54:51,260 --> 00:54:54,890 1, sisi wanaweza kupata shida. 1161 00:54:54,890 --> 00:54:58,550 >> Wakati mwingine, wakati wewe tu kwenda mbali na 1, wewe ni kufanya kitu kibaya, na 1162 00:54:58,550 --> 00:54:59,220 inaweza kupata shida. 1163 00:54:59,220 --> 00:55:00,820 Lakini huna daima kupata katika matatizo. 1164 00:55:00,820 --> 00:55:05,170 Inategemea ni kiasi gani cha jambo baya ninyi kufanya, wewe kwenda kupata shida. 1165 00:55:05,170 --> 00:55:07,790 Ambayo si kusema, kuwa sloppy na kanuni yako. 1166 00:55:07,790 --> 00:55:12,080 Lakini ni kusema, mpango si daima kuacha, hata kama wewe kwenda mahali fulani 1167 00:55:12,080 --> 00:55:14,130 wewe si wanatakiwa kwenda. 1168 00:55:14,130 --> 00:55:18,170 >> mfano mzuri wa kwamba ni, mengi ya watu katika matatizo yao kuweka 3, ambayo 1169 00:55:18,170 --> 00:55:22,350 ilikuwa 15, hakuwa na kuangalia mipaka ya bodi. 1170 00:55:22,350 --> 00:55:25,860 Hivyo inaonekana wa kushoto, inaonekana haki, inaonekana ya juu, inaonekana 1171 00:55:25,860 --> 00:55:27,000 chini. 1172 00:55:27,000 --> 00:55:31,540 Lakini hakuwa na kuangalia kuona kama juu ilikuwa kweli kwenda kwenye ubao. 1173 00:55:31,540 --> 00:55:35,220 Na mengi ya watu ambaye alifanya hivyo na akageuka kuwa katika, mpango wao kazi 1174 00:55:35,220 --> 00:55:38,960 kikamilifu, kwa sababu ambapo bodi hiyo ilikuwa kuhifadhiwa katika kumbukumbu, kama wewe akaenda moja 1175 00:55:38,960 --> 00:55:42,300 juu au kuangaliwa kwamba kumbukumbu mitaani, hapakuwa na kitu chochote 1176 00:55:42,300 --> 00:55:44,870 hasa kutisha juu ya kwamba, hivyo mpango yako hakuwa 1177 00:55:44,870 --> 00:55:45,970 kwenda kupiga kelele saa wewe. 1178 00:55:45,970 --> 00:55:48,870 >> Lakini sisi bado kuchukua mbali pointi kama hakuwa kuangalia kwamba, kwa sababu wewe 1179 00:55:48,870 --> 00:55:50,850 walikuwa kufanya kitu hawakuwa na wanatakiwa kufanya, na unaweza kuwa na 1180 00:55:50,850 --> 00:55:51,860 wamezipata katika matatizo. 1181 00:55:51,860 --> 00:55:54,040 Ni tabia mbaya, ingawa, pengine hakufanya hivyo. 1182 00:55:54,040 --> 00:55:57,790 Hivyo hii ni kuonyesha kwamba, ndiyo, sisi bado wanaweza kwenda yake. 1183 00:55:57,790 --> 00:55:59,010 Na sisi siyo kupata katika shida katika kesi hii. 1184 00:55:59,010 --> 00:56:04,000 Kama sisi alijaribu kufanya kusoma ijayo wahusika 100, tunatarajia 1185 00:56:04,000 --> 00:56:06,000 pengine kupata katika matatizo. 1186 00:56:06,000 --> 00:56:09,400 Na unaweza kusoma ya kificho 100 ijayo wahusika kama unataka kwa kufanya baadhi ya 1187 00:56:09,400 --> 00:56:10,110 aina ya kwa kitanzi. 1188 00:56:10,110 --> 00:56:10,850 Yeah. 1189 00:56:10,850 --> 00:56:16,250 >> Mwanafunzi: Tangu sisi walikuwa kwa ajili kwamba nafasi thamani halisi, sisi bila 1190 00:56:16,250 --> 00:56:17,050 kweli kuwa na uwezo wa kuona chochote. 1191 00:56:17,050 --> 00:56:21,740 Je, sisi kujaribu na kuweka kwamba sawa na kama c au kitu? 1192 00:56:21,740 --> 00:56:22,640 >> JASON HIRSCHHORN: Mkuu swali. 1193 00:56:22,640 --> 00:56:25,340 Je, mimi kuweka thamani kwamba - 1194 00:56:25,340 --> 00:56:28,980 nini mstari wa kanuni mimi kuandika juu ya line saba kufanya nini alisema? 1195 00:56:28,980 --> 00:56:34,040 >> STUDENT: Star PTR sawa na moja quote c mwisho moja quote. 1196 00:56:34,040 --> 00:56:36,970 >> JASON HIRSCHHORN: Kwa hiyo hiyo ni kuweka tabia, c, katika eneo hilo, 1197 00:56:36,970 --> 00:56:40,200 kwa sababu tena, kwamba nyota ina maana kwenda huko. 1198 00:56:40,200 --> 00:56:43,320 Na wakati wa kutumiwa katika upande wa kushoto wa kazi operator, kwamba ni sawa na 1199 00:56:43,320 --> 00:56:47,270 ishara, sisi siyo kwenda kupata kwamba thamani sana kama kuweka thamani hiyo. 1200 00:56:47,270 --> 00:56:48,520 Sasa hebu angalia nini kinatokea. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Sisi kuweka kitu pale na huko. 1203 00:56:56,770 --> 00:56:58,000 Sisi kuitwa bure. 1204 00:56:58,000 --> 00:57:00,100 Baadhi ya mambo pengine kilichotokea juu ya chungu. 1205 00:57:00,100 --> 00:57:01,890 Hivyo si huko tena. 1206 00:57:01,890 --> 00:57:07,440 Lakini tena, sisi siyo kupata katika shida kwa ajili ya kwenda huko. 1207 00:57:07,440 --> 00:57:10,260 >> Mimi nina kufanya hii kwenye kanuni kuonyesha kwamba mengi ya haya 1208 00:57:10,260 --> 00:57:12,410 maswali kwamba wewe kuwa, wao ni kweli kuvutia 1209 00:57:12,410 --> 00:57:13,650 majibu muda mwingi. 1210 00:57:13,650 --> 00:57:15,260 Na wao ni maswali mzuri. 1211 00:57:15,260 --> 00:57:19,010 Na unaweza kufikiri yao nje ya yako mwenyewe kama, kwa mfano, 1212 00:57:19,010 --> 00:57:19,990 sisi siyo katika sehemu. 1213 00:57:19,990 --> 00:57:20,940 Yeah. 1214 00:57:20,940 --> 00:57:24,430 >> STUDENT: Kwa sababu wewe si kutuma pointer mahali popote, je, unahitaji 1215 00:57:24,430 --> 00:57:26,530 kutumia malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON HIRSCHHORN: Hivyo hii inakwenda nyuma swali yako ya awali. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Je, ni tu variable ndani? 1219 00:57:29,980 --> 00:57:32,280 Malloc hapa ni kwamba kulazimisha. 1220 00:57:32,280 --> 00:57:35,260 matumizi ya malloc hapa ni si kwamba kulazimisha kwa sababu ni 1221 00:57:35,260 --> 00:57:36,500 tu variable ndani. 1222 00:57:36,500 --> 00:57:40,970 >> STUDENT: Hivyo unaweza kufanya char nyota PTR sawa na hujambo? 1223 00:57:40,970 --> 00:57:41,400 >> JASON HIRSCHHORN: Oh. 1224 00:57:41,400 --> 00:57:43,300 Hivyo sisi ni kwenda kwa sasa kupata nyuma swali yako ya awali. 1225 00:57:43,300 --> 00:57:46,885 Nadhani walikuwa hawaridhishwi na jibu langu. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Kama hiyo? 1228 00:57:49,226 --> 00:57:49,682 >> STUDENT: Yeah. 1229 00:57:49,682 --> 00:57:50,932 Kusubiri. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON HIRSCHHORN: Na ambapo unataka magazeti nje? 1232 00:57:57,850 --> 00:58:00,026 Hivyo tutaweza magazeti nje kamba kama hayo? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> Mwanafunzi: kuvutia. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON HIRSCHHORN: Hivyo hii anasema hii hoja ina aina ya tabia. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Hivyo hii lazima tabia. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> STUDENT: Just inachukua moja ya kwanza. 1241 00:58:26,280 --> 00:58:28,610 >> JASON HIRSCHHORN: Hivyo hii ni kile alisema kabla. 1242 00:58:28,610 --> 00:58:34,240 Kama nilivyosema, siyo kuhifadhi kamba ndani ya kutofautiana pointer. 1243 00:58:34,240 --> 00:58:35,120 Ni kuhifadhi - 1244 00:58:35,120 --> 00:58:36,350 >> Mwanafunzi: thamani ya kwanza ya kamba. 1245 00:58:36,350 --> 00:58:40,810 >> JASON HIRSCHHORN: pepe ya thamani ya kwanza ya kamba. 1246 00:58:40,810 --> 00:58:46,940 Kama tulikuwa na magazeti nje ya hii, sisi ni kupata thamani ndani ya pointer. 1247 00:58:46,940 --> 00:58:51,005 Na tutaweza kuona ni kweli, kumbukumbu anwani. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Je, hiyo mantiki? 1250 00:58:56,440 --> 00:58:56,940 Sorry. 1251 00:58:56,940 --> 00:58:58,996 Kusubiri, je, hiyo kujibu yako swali, ingawa? 1252 00:58:58,996 --> 00:58:59,790 >> STUDENT: Yeah. 1253 00:58:59,790 --> 00:59:05,830 >> JASON HIRSCHHORN: line hii ya code ni kujenga kamba na kisha mwingine 1254 00:59:05,830 --> 00:59:09,115 variable pointer hiyo akizungumzia kamba hiyo, ya kwamba safu. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Yeah. 1257 00:59:14,980 --> 00:59:19,200 >> STUDENT: Hivyo kama sisi akaenda kumbukumbu moja kushughulikia zaidi, tungepata h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Je, ni na kuhifadhiwa kama kamba? 1260 00:59:23,150 --> 00:59:24,400 >> JASON HIRSCHHORN: Kama, sisi alifanya - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 hivyo hii ni muhimu kufanya. 1263 00:59:30,790 --> 00:59:33,780 Hii ni hatua ya hesabu, ambayo guys tumeona kabla na lazima 1264 00:59:33,780 --> 00:59:35,550 kiasi starehe na. 1265 00:59:35,550 --> 00:59:36,905 Hii ni sawa na kuandika - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 kama tulikuwa kuandika mstari wa kanuni, tumeona safu nukuu kabla ya. 1268 00:59:46,350 --> 00:59:55,900 Hii inapaswa kutupatia pili thamani katika safu hii, h. 1269 00:59:55,900 --> 01:00:05,010 >> Kama sisi alifanya hii, lazima pia kutoa sisi thamani ya pili kwa kuwa safu. 1270 01:00:05,010 --> 01:00:08,320 Kwa sababu ni kwenda si kwa kumbukumbu barua pepe ya jambo la kwanza, lakini 1271 01:00:08,320 --> 01:00:10,530 kumbukumbu ya barua pepe ya jambo moja zaidi. 1272 01:00:10,530 --> 01:00:14,360 Na kisha dereferences nyota operator kwamba pointer. 1273 01:00:14,360 --> 01:00:16,940 Na tena, hebu angalia. 1274 01:00:16,940 --> 01:00:18,664 Sisi kupata h tena. 1275 01:00:18,664 --> 01:00:20,980 >> STUDENT: Ni nini hasa gani dereference maana yake nini? 1276 01:00:20,980 --> 01:00:23,650 >> JASON HIRSCHHORN: Dereference ni neno dhana kwa kwenda. 1277 01:00:23,650 --> 01:00:26,390 Kwenda huo na kupata nini huko ni kwa dereference pointer. 1278 01:00:26,390 --> 01:00:28,240 Ni tu neno dhana kwa ajili hiyo. 1279 01:00:28,240 --> 01:00:29,986 >> Mwanafunzi: Kama tulitaka magazeti kamba nzima, tunaweza 1280 01:00:29,986 --> 01:00:31,930 kufanya Ampersand pointer? 1281 01:00:31,930 --> 01:00:33,490 >> JASON HIRSCHHORN: OK, sisi ni kwenda pause hapa. 1282 01:00:33,490 --> 01:00:35,480 Sisi ni kwenda mwisho hapa. 1283 01:00:35,480 --> 01:00:41,760 Ampersand anatoa pepe ya eneo, hivyo wakati wa kufanya Ampersand ya 1284 01:00:41,760 --> 01:00:44,080 variable, inakupa anwani ambapo kwamba kutofautiana ni kuhifadhiwa. 1285 01:00:44,080 --> 01:00:48,580 Ampersand pointer nitakupa barua pepe ya PTR ambapo PTR ni katika kumbukumbu. 1286 01:00:48,580 --> 01:00:50,140 >> Sisi siyo kwenda juu ya kwa mfano huu. 1287 01:00:50,140 --> 01:00:52,640 Unaweza kufikiri haya mambo juu yako mwenyewe. 1288 01:00:52,640 --> 01:00:55,740 Lakini tena, hii inaweza hata kuwa verging kidogo zaidi ya kile unahitaji kujua kwa 1289 01:00:55,740 --> 01:00:58,000 wigo wa hii katikati mrefu - 1290 01:00:58,000 --> 01:00:59,070 au jaribio hili, badala. 1291 01:00:59,070 --> 01:01:00,270 Sorry. 1292 01:01:00,270 --> 01:01:03,770 >> Sisi ni kwenda kusonga mbele, kwa sababu napenda kama kwa kufanya moja coding tatizo 1293 01:01:03,770 --> 01:01:05,100 kabla ya wakati ni up. 1294 01:01:05,100 --> 01:01:09,340 Na sisi ni kwenda na kanuni nini nadhani ni kulazimisha zaidi ya haya 1295 01:01:09,340 --> 01:01:11,020 mifano, atoi. 1296 01:01:11,020 --> 01:01:14,520 Hiyo ilikuwa swali juu ya Jaribio miaka miwili iliyopita. 1297 01:01:14,520 --> 01:01:17,810 Na mimi kuwa ni juu ya bodi hapa. 1298 01:01:17,810 --> 01:01:20,680 >> Watu waliulizwa juu ya jaribio - 1299 01:01:20,680 --> 01:01:23,640 walipewa kidogo zaidi tesxt katika swali, lakini mimi kuondolewa 1300 01:01:23,640 --> 01:01:26,640 Nakala kwa sababu ilikuwa ni lazima kwa madhumuni yetu sasa. 1301 01:01:26,640 --> 01:01:29,180 Ilikuwa ni baadhi tu ya background juu ya nini atoi alivyofanya. 1302 01:01:29,180 --> 01:01:31,425 Lakini wote tunajua na ni sana ukoo na atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Mimi zinaonyesha Kanuni hii juu ya karatasi. 1304 01:01:35,620 --> 01:01:39,310 Mimi pia kupendekeza kutumia mkakati kwamba tumeenda juu ya 1305 01:01:39,310 --> 01:01:41,040 mengi katika sehemu yetu. 1306 01:01:41,040 --> 01:01:44,130 Kwanza, kuhakikisha unaelewa nini atoi ya kufanya. 1307 01:01:44,130 --> 01:01:47,580 Kuchora picha au kuja na baadhi picha ya akili yake katika kichwa yako. 1308 01:01:47,580 --> 01:01:51,120 Next, kuandika pseudocode kwa hili. 1309 01:01:51,120 --> 01:01:53,120 On jaribio, kama wote kupata ni pseudocode, angalau 1310 01:01:53,120 --> 01:01:54,550 kuweka kitu chini. 1311 01:01:54,550 --> 01:02:00,070 Na kisha ramani kwamba pseudocode kwenye C. Kama una kuangalia katika yako 1312 01:02:00,070 --> 01:02:03,760 pseudocode, kama kuangalia kama kitu ni 1, kwamba ramani kwenye kama 1313 01:02:03,760 --> 01:02:05,750 hali na kadhalika. 1314 01:02:05,750 --> 01:02:07,850 Na hatimaye, Kanuni mpango C. 1315 01:02:07,850 --> 01:02:15,000 >> Basi nenda nyuma atoi na kuchukua dakika tano kwa kanuni hii juu ya karatasi ya 1316 01:02:15,000 --> 01:02:19,480 karatasi, ambayo pengine ni kuhusu kiasi cha muda itachukua juu ya 1317 01:02:19,480 --> 01:02:21,260 Jaribio na kanuni atoi. 1318 01:02:21,260 --> 01:02:27,060 Tano kwa dakika 15, tano hadi 12, tano kwa Dakika 10, ni kuhusu kiasi cha 1319 01:02:27,060 --> 01:02:30,150 wakati wewe d kutumia katika hii swali katika jaribio. 1320 01:02:30,150 --> 01:02:31,670 Hivyo kuchukua muda wa dakika tano sasa, tafadhali. 1321 01:02:31,670 --> 01:02:35,957 Na kama una maswali yoyote, kuongeza mkono wako na mimi itabidi kuja karibu. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [SIDE CONVERSATIONS] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON HIRSCHHORN: OK, hivyo kwamba alikuwa dakika tano. 1326 01:08:37,580 --> 01:08:39,880 Hiyo ilikuwa pengine juu ya kiasi cha wakati wewe d kutumia juu ya kwamba juu ya jaribio, 1327 01:08:39,880 --> 01:08:42,120 labda ya mwisho ya chini ya wakati huo. 1328 01:08:42,120 --> 01:08:44,010 Tutaweza kurejea katika kidogo. 1329 01:08:44,010 --> 01:08:45,740 Hebu kuanza coding hii. 1330 01:08:45,740 --> 01:08:49,479 Na kama sisi si kupata njia zote, majibu ya hii na hii 1331 01:08:49,479 --> 01:08:54,189 swali jaribio zinapatikana, tena, Fall 2011 ni wakati swali hili 1332 01:08:54,189 --> 01:08:54,913 alionekana kwenye jaribio. 1333 01:08:54,913 --> 01:08:57,830 >> Na ilikuwa yenye thamani ya pointi nane juu ya jaribio wakati huo. 1334 01:08:57,830 --> 01:09:01,140 Pointi nane ni juu ya mwisho juu ya kiasi cha pointi kitu ni thamani. 1335 01:09:01,140 --> 01:09:04,790 Maswali mengi ni katika mbalimbali ya pointi moja hadi sita. 1336 01:09:04,790 --> 01:09:08,500 Hivyo hii ni changamoto zaidi swali, kwa uhakika. 1337 01:09:08,500 --> 01:09:09,750 Je, mtu yeyote kupata yangu ilianza? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Kwa ujumla, ni sisi kwenda kutaka kufanya na hii 1340 01:09:15,380 --> 01:09:17,550 kazi atoi, mantiki? 1341 01:09:17,550 --> 01:09:19,569 Tufanye nini unataka kufanya nini? 1342 01:09:19,569 --> 01:09:22,279 Hivyo sisi ni kwenda kuandika baadhi pseudocode. 1343 01:09:22,279 --> 01:09:24,090 >> STUDENT: Convert wahusika ndani ya integers. 1344 01:09:24,090 --> 01:09:26,700 >> JASON HIRSCHHORN: Convert wahusika ndani ya integers. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Hivyo ni jinsi wahusika wengi ni sisi kwenda haja ya kwenda kwa? 1347 01:09:30,870 --> 01:09:32,295 >> STUDENT: All wao. 1348 01:09:32,295 --> 01:09:34,100 >> Mwanafunzi: wahusika wote katika kamba. 1349 01:09:34,100 --> 01:09:35,540 >> JASON HIRSCHHORN: All ya wahusika katika kamba. 1350 01:09:35,540 --> 01:09:42,180 Hivyo kama sisi alitaka kwenda kwa njia ya kila tabia katika kamba, ni kitu gani 1351 01:09:42,180 --> 01:09:44,560 katika C tumeona kwamba ina kuruhusiwa yetu kupitia kila 1352 01:09:44,560 --> 01:09:45,939 tabia katika kamba? 1353 01:09:45,939 --> 01:09:46,819 >> WANAFUNZI: A kwa kitanzi. 1354 01:09:46,819 --> 01:09:48,069 >> JASON HIRSCHHORN: A kwa kitanzi. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Hivyo sisi ni kwenda kwa kitanzi kwa njia ya kila tabia katika s. 1357 01:09:55,330 --> 01:10:00,940 >> Basi kwa nini sisi ni kwenda kutaka kufanya wakati sisi kupata tabia ya maalum? 1358 01:10:00,940 --> 01:10:02,480 Kusema sisi ni kupata kupita 90. 1359 01:10:02,480 --> 01:10:03,460 Sisi kupata 9. 1360 01:10:03,460 --> 01:10:04,240 Ni tabia. 1361 01:10:04,240 --> 01:10:07,440 Tufanye nini wanataka kufanya na kwamba tabia 9? 1362 01:10:07,440 --> 01:10:10,082 >> Mwanafunzi: Ondoa kutoka tabia ya 0? 1363 01:10:10,082 --> 01:10:11,860 >> STUDENT: Kuongeza 0? 1364 01:10:11,860 --> 01:10:13,350 >> JASON HIRSCHHORN: Ondoa kutoka tabia ya 0? 1365 01:10:13,350 --> 01:10:13,800 >> STUDENT: Yeah. 1366 01:10:13,800 --> 01:10:15,573 >> JASON HIRSCHHORN: Kwa nini unataka kufanya hivyo? 1367 01:10:15,573 --> 01:10:16,560 >> Mwanafunzi: [inaudible] 1368 01:10:16,560 --> 01:10:17,010 thamani. 1369 01:10:17,010 --> 01:10:18,380 Int yake thamani. 1370 01:10:18,380 --> 01:10:21,580 >> JASON HIRSCHHORN: OK, hivyo sisi kuchukua tabia ya 9, Ondoa kutoka 1371 01:10:21,580 --> 01:10:25,820 tabia ya 0 kupata integer halisi 9. 1372 01:10:25,820 --> 01:10:27,070 Tamu. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 Na jinsi gani unajua kwamba tabia ya 9 minus 0 tabia ni 9? 1375 01:10:37,000 --> 01:10:39,222 Nini chati gani kuangalia? 1376 01:10:39,222 --> 01:10:43,130 >> Mwanafunzi: Kuna mantiki ni tisa maeneo kati ya 9 na 0. 1377 01:10:43,130 --> 01:10:44,620 Au unaweza kuangalia katika meza ASCII. 1378 01:10:44,620 --> 01:10:45,120 >> JASON HIRSCHHORN: meza ASCII. 1379 01:10:45,120 --> 01:10:46,490 Lakini ndiyo, wewe ni sahihi pia. 1380 01:10:46,490 --> 01:10:47,780 Hivyo sisi Ondoa 0. 1381 01:10:47,780 --> 01:10:49,010 Hivyo basi, tuna integer 9. 1382 01:10:49,010 --> 01:10:49,970 Na nini tunataka kufanya na kwamba? 1383 01:10:49,970 --> 01:10:54,970 Kama tuna 90, ni integer kwanza tuna, nini tunataka kufanya nini? 1384 01:10:54,970 --> 01:10:58,180 >> Mwanafunzi: Ningependa kuweka katika integer muda safu, basi math yake 1385 01:10:58,180 --> 01:11:02,088 baadaye kufanya hivyo ndani ya mwisho. 1386 01:11:02,088 --> 01:11:03,020 >> JASON HIRSCHHORN: OK. 1387 01:11:03,020 --> 01:11:06,990 >> Mwanafunzi: Unaweza kuanza mwishoni mwa safu na kisha kusonga mbele ili 1388 01:11:06,990 --> 01:11:10,350 kwamba kila wakati kusonga mbele, kuzidisha ni na 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON HIRSCHHORN: OK. 1390 01:11:10,830 --> 01:11:12,250 Kwamba inaonekana kama pretty kulazimisha wazo. 1391 01:11:12,250 --> 01:11:16,040 Tunaweza kuanza mwishoni mwa safu yetu, na tunaweza kutumia strleng. 1392 01:11:16,040 --> 01:11:17,030 Tunaweza kutumia strleng katika hapa. 1393 01:11:17,030 --> 01:11:18,870 Tutaweza kupata urefu wa kamba yetu. 1394 01:11:18,870 --> 01:11:20,100 Sisi kuanza mwishoni. 1395 01:11:20,100 --> 01:11:29,170 Na + moja kwanza, sisi tu kuchukua integer, na labda sisi kujenga kama 1396 01:11:29,170 --> 01:11:32,270 mpya integer variable juu juu ambapo sisi ni hifadhi kila kitu. 1397 01:11:32,270 --> 01:11:37,340 Hivyo sisi kitanzi kwa njia ya kila char katika s kutoka nyuma na mbele, sisi Ondoa 0, na 1398 01:11:37,340 --> 01:11:42,790 kisha sisi kuchukua yake, na kulingana na ambako ni, sisi kuzidisha 1399 01:11:42,790 --> 01:11:45,860 kwa nguvu ya 10. 1400 01:11:45,860 --> 01:11:50,644 Kwa sababu moja ya kwanza, sisi kufanya nini kuzidisha tabia ya rightmost na? 1401 01:11:50,644 --> 01:11:51,440 >> STUDENT: 10 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON HIRSCHHORN: 10 0. 1403 01:11:53,170 --> 01:11:56,010 Tufanye nini kuzidisha pili rightmost tabia na? 1404 01:11:56,010 --> 01:11:57,450 >> Mwanafunzi: [inaudible]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON HIRSCHHORN: Nini? 1406 01:11:57,960 --> 01:11:59,150 >> STUDENT: 10 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON HIRSCHHORN: 10 1. 1408 01:12:00,420 --> 01:12:03,754 tatu rightmost tabia? 1409 01:12:03,754 --> 01:12:04,580 >> STUDENT: 10 na 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON HIRSCHHORN: 10 na 2. 1411 01:12:05,350 --> 01:12:07,200 >> STUDENT: Sorry, Sielewi nini sisi ni kufanya hapa. 1412 01:12:07,200 --> 01:12:08,640 >> JASON HIRSCHHORN: OK, hebu kwenda nyuma, basi. 1413 01:12:08,640 --> 01:12:12,500 Hivyo sisi ni kwenda kupata kupita katika kamba. 1414 01:12:12,500 --> 01:12:14,470 Kwa sababu sisi ni kuandika atoi. 1415 01:12:14,470 --> 01:12:15,260 Hivyo sisi kupata kupita katika kamba. 1416 01:12:15,260 --> 01:12:17,640 Kusema sisi ni kupata kupita katika string 90. 1417 01:12:17,640 --> 01:12:19,930 >> Jambo la kwanza tunakwenda kufanya ni kuweka mpya integer variable kwamba sisi ni 1418 01:12:19,930 --> 01:12:22,150 tu kwenda kujenga kama integer wetu mpya. 1419 01:12:22,150 --> 01:12:24,630 Hiyo ni nini tunakwenda kurudi mwishoni. 1420 01:12:24,630 --> 01:12:30,110 Sisi haja ya kwenda kwa kila tabia katika kamba kwa sababu tumethibitisha 1421 01:12:30,110 --> 01:12:34,430 kwamba tunahitaji kugusa kila moja na kisha kuongeza kwa integer wetu mpya. 1422 01:12:34,430 --> 01:12:36,330 >> Lakini hatuwezi kuongeza tu kama idadi. 1423 01:12:36,330 --> 01:12:38,270 Hatuwezi tu kuchukua 9 na kuongeza 9 kwa integer yetu. 1424 01:12:38,270 --> 01:12:40,560 Ni inategemea mahali nini ni katika kamba. 1425 01:12:40,560 --> 01:12:42,960 Sisi ni kwenda haja ya kuzidisha ni kwa nguvu ya 10. 1426 01:12:42,960 --> 01:12:45,580 Kwa sababu hiyo ni jinsi msingi 10 kazi. 1427 01:12:45,580 --> 01:12:49,050 >> Hivyo sisi ni kwenda kupata halisi tabia, au integer halisi 1428 01:12:49,050 --> 01:12:53,860 posta, kwa kutoa tabia ya 0 kutoka tabia ya 9 kama tulivyofanya kwa 1429 01:12:53,860 --> 01:12:57,560 kutoa mapato tabia ya mji mkuu wa A kutoka chochote tabia tulikuwa katika moja ya 1430 01:12:57,560 --> 01:12:58,120 matatizo hayo. 1431 01:12:58,120 --> 01:13:04,190 Hivyo tutaweza kweli kupata idadi kutoka kwa 0 9 kuokolewa kama idadi halisi, na sisi itabidi 1432 01:13:04,190 --> 01:13:07,590 kuzidisha ni kwa nguvu ya 10 kulingana juu ya ambapo sisi ni katika kamba. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 Na kisha sisi ni kwenda kuongeza nyuma ndani ya integer wetu mpya kutofautiana. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Basi nini hii bila kuangalia kama ingekuwa kuwa - tutaweza kuteka zaidi ya hapa. 1437 01:13:37,890 --> 01:13:40,086 Kama sisi kupata kupita katika string 90 - 1438 01:13:40,086 --> 01:13:41,336 >> Mwanafunzi: [inaudible]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON HIRSCHHORN: Lakini atoi inachukua kamba. 1441 01:13:45,540 --> 01:13:46,350 Hivyo sisi ni kwenda kupitia kufanya. 1442 01:13:46,350 --> 01:13:49,900 Tutaweza kupata kupita katika 90. 1443 01:13:49,900 --> 01:13:51,540 Sisi kwenda kutoka nyuma na mbele. 1444 01:13:51,540 --> 01:13:53,920 Sisi kuchukua 0. 1445 01:13:53,920 --> 01:13:55,080 >> STUDENT: Samahani. 1446 01:13:55,080 --> 01:13:55,880 Labda hii ni ya kijinga. 1447 01:13:55,880 --> 01:13:59,440 Kama sisi ni kupata kupita katika kamba, kwa nini ni 90 nini tuko 1448 01:13:59,440 --> 01:14:00,260 kupata kupita katika? 1449 01:14:00,260 --> 01:14:03,160 Kwa sababu 90 ni integer. 1450 01:14:03,160 --> 01:14:06,820 >> JASON HIRSCHHORN: Kwa sababu atoi inachukua kamba na anarudi kwenye integer 1451 01:14:06,820 --> 01:14:08,320 uwakilishi wa kamba hiyo. 1452 01:14:08,320 --> 01:14:13,650 Lakini string 90 ni si integer 90 au idadi 90. 1453 01:14:13,650 --> 01:14:17,920 kamba 90 ni safu ya wawili, au herufi tatu, badala yake, 9 1454 01:14:17,920 --> 01:14:22,740 tabia, 0 tabia, na backslash 0 tabia. 1455 01:14:22,740 --> 01:14:26,260 >> Na sisi ni kuandika atoi kwa sababu, kwa mfano, wakati kuchukua amri 1456 01:14:26,260 --> 01:14:30,230 hoja line, na ni kuokolewa katika argv, ni kuokolewa kama kamba. 1457 01:14:30,230 --> 01:14:32,940 Lakini kama unataka kutibu kama posta, unahitaji kubadilisha kwa 1458 01:14:32,940 --> 01:14:34,700 halisi integer. 1459 01:14:34,700 --> 01:14:37,210 Ambayo sisi alifanya moja ya seti tatizo letu. 1460 01:14:37,210 --> 01:14:38,800 Ambayo tulivyofanya katika idadi ya seti tatizo letu. 1461 01:14:38,800 --> 01:14:41,690 Kila mtu kwamba alichukua integer kama hoja ya mstari amri. 1462 01:14:41,690 --> 01:14:46,490 Hivyo ndiyo sababu atoi yetu kufanya kazi inachukua kamba. 1463 01:14:46,490 --> 01:14:51,910 >> Hivyo tena, katika mfano wetu hapa, sisi ni kwenda kuchukua moja ya mwisho. 1464 01:14:51,910 --> 01:14:55,050 Tunakwenda Ondoa tabia ya 0 na hayo, kwa sababu wahusika 0 1465 01:14:55,050 --> 01:14:58,810 subtracted na tabia 0 anatoa idadi halisi 0, kulingana na 1466 01:14:58,810 --> 01:15:00,950 ASCII math kwamba sisi kufanya. 1467 01:15:00,950 --> 01:15:04,870 >> Kwa sababu wahusika ni kuwakilishwa kama tofauti na halisi yao - 1468 01:15:04,870 --> 01:15:08,830 tabia ya a, kwa mfano, lowercase a ni 97. 1469 01:15:08,830 --> 01:15:10,260 Siyo - oops! 1470 01:15:10,260 --> 01:15:13,290 Siyo chochote bila kutarajia kwa kuwa, 0, kwa mfano. 1471 01:15:13,290 --> 01:15:16,200 Hivyo kuwa na Ondoa tabia ya kupata 0. 1472 01:15:16,200 --> 01:15:18,950 >> Hivyo sisi ni kwenda kufanya hivyo hapa kupata idadi halisi. 1473 01:15:18,950 --> 01:15:22,560 Na kisha sisi ni kwenda kuzidisha ni kwa nguvu ya 10 kulingana na ambapo 1474 01:15:22,560 --> 01:15:27,030 ni katika kamba, na kisha kuchukua na kuongeza wetu mmiliki mahali 1475 01:15:27,030 --> 01:15:32,520 variable ili tuweze kuja na mwisho mpya integer yetu. 1476 01:15:32,520 --> 01:15:35,080 Je, ambayo inafanya hisia na kila mtu? 1477 01:15:35,080 --> 01:15:37,730 >> Hivyo sisi ni si kwenda Kanuni hii sasa hivi, kwa sababu tuko 1478 01:15:37,730 --> 01:15:38,830 kupata short kwa wakati. 1479 01:15:38,830 --> 01:15:40,860 Mimi kuomba msamaha kwa muda ya kwamba. 1480 01:15:40,860 --> 01:15:44,620 Lakini hii ni nini, hopefully, ungekuwa kuwa na uwezo wa kufanya juu ya jaribio - katika 1481 01:15:44,620 --> 01:15:47,710 sana angalau, kupata pseudocode hii imeandikwa nje. 1482 01:15:47,710 --> 01:15:50,840 >> Na kisha, kama tulikuwa kuandika pseudocode, kwa kweli, tunaweza kufanya hii 1483 01:15:50,840 --> 01:15:51,490 pretty haraka. 1484 01:15:51,490 --> 01:15:55,230 Kila mstari wa maoni sisi tuliandika hapa tafsiri ya juu 1485 01:15:55,230 --> 01:15:56,970 mstari mmoja wa C code. 1486 01:15:56,970 --> 01:16:01,780 Kutangaza mpya variable, kuandika kitanzi, baadhi kutoa, baadhi 1487 01:16:01,780 --> 01:16:07,070 kuzidisha, na baadhi kazi. 1488 01:16:07,070 --> 01:16:09,020 Pengine tunatarajia pia wanataka kuandika line kurudi. 1489 01:16:09,020 --> 01:16:12,040 Tunaweza pia unataka kuweka baadhi hundi katika hapa. 1490 01:16:12,040 --> 01:16:12,655 Yeah. 1491 01:16:12,655 --> 01:16:15,720 >> STUDENT: Kwa hiyo tunaweza kutibu s kama kamba halisi? 1492 01:16:15,720 --> 01:16:18,730 Kwa sababu najua tu anwani. 1493 01:16:18,730 --> 01:16:22,090 Kama, jinsi gani unaweza kupata urefu wa kamba kuwa kupita kwa njia ya? 1494 01:16:22,090 --> 01:16:25,310 >> JASON HIRSCHHORN: Hivyo jinsi gani urefu wa kamba? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> Mwanafunzi: strlen, yeah. 1497 01:16:26,660 --> 01:16:30,550 Lakini unaweza kuweka s kama hoja kwa kuwa? 1498 01:16:30,550 --> 01:16:34,620 >> JASON HIRSCHHORN: Kwa hiyo strlen inachukua nyota char. 1499 01:16:34,620 --> 01:16:38,090 Na kinachofuata ni kwamba nyota char, na anaendelea kuhesabu mpaka anapata a 1500 01:16:38,090 --> 01:16:41,865 backslash 0. strlen kwa kweli mojawapo ya mipango mingine sisi 1501 01:16:41,865 --> 01:16:42,850 walikuwa wanakwenda code. 1502 01:16:42,850 --> 01:16:44,560 Hiyo ni mtu mwingine nzuri ya code. 1503 01:16:44,560 --> 01:16:47,270 Moja Hiyo ni kidogo rahisi, kwa sababu kama utaenda kufikiri juu ya kwamba 1504 01:16:47,270 --> 01:16:47,830 conceptually - 1505 01:16:47,830 --> 01:16:51,620 I just alisema kwa sauti kubwa - strlen ifuatavyo pointer na anaendelea kwenda na 1506 01:16:51,620 --> 01:16:54,210 kuhesabu na kuweka wimbo mpaka kufikia backslash 0. 1507 01:16:54,210 --> 01:16:56,530 >> STUDENT: OK, got it. 1508 01:16:56,530 --> 01:17:00,200 >> JASON HIRSCHHORN: Kwa hiyo bora ya bahati juu ya jaribio 0 kesho. 1509 01:17:00,200 --> 01:17:03,170 Kama una maswali yoyote, mimi itabidi kuwa nje baada ya hii. 1510 01:17:03,170 --> 01:17:05,610 Jisikie huru email yangu. 1511 01:17:05,610 --> 01:17:08,480 Kuwafikia TF yako mwenyewe kama wewe ni si katika sehemu yangu, au kupata wangu 1512 01:17:08,480 --> 01:17:10,005 email kama unataka. 1513 01:17:10,005 --> 01:17:13,140 >> Kama unataka kituko nje na kutuma tu barua pepe yangu, freakout email, mimi itabidi 1514 01:17:13,140 --> 01:17:16,710 kutuma nyuma, kama, smiley uso, au, kama, joke au kitu. 1515 01:17:16,710 --> 01:17:18,190 Hivyo jisikie huru kufanya hivyo pia. 1516 01:17:18,190 --> 01:17:20,750 Bahati nzuri tena, na mimi itabidi kuona nyote wiki ijayo. 1517 01:17:20,750 --> 01:17:23,435