1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] [SEKSYON 5: GEN MWENS konfòtab] 2 00:00:02,730 --> 00:00:05,180 [Nate Hardison, Inivèsite Harvard] 3 00:00:05,180 --> 00:00:08,260 [Sa a se CS50.] [CS50.TV] 4 00:00:08,260 --> 00:00:11,690 Se konsa, akeyi tounen, guys. 5 00:00:11,690 --> 00:00:16,320 Byenveni nan seksyon 5 la. 6 00:00:16,320 --> 00:00:20,220 Nan pwen sa a, li te gen ranpli egzamen 0 ak te wè ki jan ou te fè, 7 00:00:20,220 --> 00:00:25,770 èspere ke ou santi ou reyèlman bon paske mwen te trè enpresyone pa nòt yo nan seksyon sa a. 8 00:00:25,770 --> 00:00:28,050 Pou espektatè i sou entènèt nou an, nou te gen yon koup nan kesyon 9 00:00:28,050 --> 00:00:33,680 sou de pwoblèm ki sot pase yo sou mete nan pwoblèm - oswa sou egzamen an, olye. 10 00:00:33,680 --> 00:00:39,690 Se konsa, nou ap ale nan ale sou moun ki vrèman rapid pou ke tout moun wè sa ki te pase 11 00:00:39,690 --> 00:00:45,060 ak ki jan yo ale nan solisyon an reyèl olye ke jis gade solisyon nan tèt li. 12 00:00:45,060 --> 00:00:50,330 Nou pwal ale sou koup la dènye nan pwoblèm reyèlman byen vit, 32 ak 33. 13 00:00:50,330 --> 00:00:53,240 Jis, ankò, se konsa ke telespektatè yo sou entènèt ka wè sa. 14 00:00:53,240 --> 00:00:59,080 >> Si ou ale nan pwoblèm ou an 32, ki se nan paj 13, 15 00:00:59,080 --> 00:01:02,730 13 soti nan 16, pwoblèm 32 se tout sou echanj. 16 00:01:02,730 --> 00:01:05,010 Li te sou tout échanjé de nonb antye. 17 00:01:05,010 --> 00:01:08,740 Li nan pwoblèm nan ki nou ta fin janbe yon koup de fwa nan konferans. 18 00:01:08,740 --> 00:01:13,590 Ak nan isit la, sa nou te mande ou fè a se yon tras memwa rapid. 19 00:01:13,590 --> 00:01:17,000 Pou ranpli nan valè yo nan varyab yo jan yo sou chemine a 20 00:01:17,000 --> 00:01:20,250 kòm kòd la ale nan fonksyon sa a swap. 21 00:01:20,250 --> 00:01:24,500 An patikilye, ki sa nou ap chèche a - I'm pral mete sa a iPad desann - 22 00:01:24,500 --> 00:01:29,650 an patikilye, ki sa nou ap chèche a se liy sa a resansman 6 isit la menm. 23 00:01:29,650 --> 00:01:36,740 Epi li resansman 6 pou jis continuité ak pwoblèm nan anvan yo. 24 00:01:36,740 --> 00:01:41,720 Ki sa nou vle fè se montre oswa mete lejann sou eta a nan memwa 25 00:01:41,720 --> 00:01:46,090 kòm li se nan moman an lè nou egzekite nan nimewo sa a liy, 6, 26 00:01:46,090 --> 00:01:52,540 ki se efektivman yon retou nan fonksyon swap nou isit la menm. 27 00:01:52,540 --> 00:01:59,450 Si nou desann isit la, nou te wè ki adrès ki nan tout bagay nan memwa te founi pou nou. 28 00:01:59,450 --> 00:02:02,540 Sa a se trè kle; nou pral tounen vin jwenn li nan jis moman yon. 29 00:02:02,540 --> 00:02:09,240 Lè sa a, desann isit la nan pati anba a, nou te gen yon dyagram memwa ti kras ke nou ap ale nan, al gade nan. 30 00:02:09,240 --> 00:02:12,490 Mwen gen aktyèlman fè sa a soti sou iPad m 'yo. 31 00:02:12,490 --> 00:02:20,720 Se konsa, mwen pral altène retounen ak lide ant iPad a ak kòd sa a jis pou referans. 32 00:02:20,720 --> 00:02:26,540 >> Ann kòmanse. Premyèman, kite a konsantre sou koup la nan premye liy nan prensipal isit la menm. 33 00:02:26,540 --> 00:02:30,220 Pou yo kòmanse, nou ap ale nan inisyalize x nan 1 ak y nan 2. 34 00:02:30,220 --> 00:02:33,040 Se konsa, nou gen de varyab nonb antye relatif yo, yo ap tou de yo pral mete sou pil la. 35 00:02:33,040 --> 00:02:36,050 Nou pral mete yon 1 ak yon 2 nan yo. 36 00:02:36,050 --> 00:02:43,150 Se konsa, si mwen baskile sou nan iPad m 'yo, èspere ke, kite la wè - 37 00:02:43,150 --> 00:02:48,660 Apple TV mirwar, epi gen nou ale. Oke. 38 00:02:48,660 --> 00:02:51,670 Se konsa, si mwen baskile sou nan iPad m 'yo, 39 00:02:51,670 --> 00:02:56,220 Mwen vle inisyalize x nan 1 ak y nan 2. 40 00:02:56,220 --> 00:03:00,580 Nou fè sa byen tou senpleman pa ekri yon 1 nan bwat ki make x 41 00:03:00,580 --> 00:03:07,730 ak yon 2 nan bwat ki make y. Ase senp. 42 00:03:07,730 --> 00:03:11,620 Se konsa, kounye a kite a tounen nan konpitè pòtatif li a, wè sa ki k ap pase answit. 43 00:03:11,620 --> 00:03:15,810 Se konsa, liy sa a pwochen se kote bagay sa yo jwenn difisil. 44 00:03:15,810 --> 00:03:28,110 Nou pase adrès ki nan x ak adrès ki nan y kòm paramèt yo a ak b fonksyon an swap. 45 00:03:28,110 --> 00:03:32,380 Adrès postal la nan x ak adrès ki nan y yo se bagay ke nou pa ka kalkile 46 00:03:32,380 --> 00:03:36,360 san refere li a sa yo bal pwen dwa desann isit la. 47 00:03:36,360 --> 00:03:39,750 Ak erezman, de premye pwen yo bal di nou ekzakteman ki sa repons yo ye. 48 00:03:39,750 --> 00:03:44,740 Adrès postal la nan x nan memwa se 10, ak adrès la nan y nan memwa se 14. 49 00:03:44,740 --> 00:03:51,870 Se konsa, sa yo se valè yo ke jwenn ki te pase nan kòm yon ak b moute tèt nan fonksyon swap nou an. 50 00:03:51,870 --> 00:04:00,760 Se konsa, ankò, oblije chanje tounen nan dyagram nou an, mwen ka ekri yon 10 nan yon 51 00:04:00,760 --> 00:04:07,400 ak yon 14 nan b. 52 00:04:07,400 --> 00:04:11,610 Koulye a, pwen sa a se kote nou kontinye ak swap la. 53 00:04:11,610 --> 00:04:14,520 Se konsa, ranvèrsan tounen nan konpitè pòtatif li a ankò, 54 00:04:14,520 --> 00:04:21,079 nou wè ke fason an swap a travay se mwen dèreferans premye a ak magazen rezilta a nan tan. 55 00:04:21,079 --> 00:04:27,650 Se konsa, operatè a dèreferans di, "Hey. Trete sa ki nan varyab yon kòm yon adrès. 56 00:04:27,650 --> 00:04:33,830 Ale nan kèlkeswa sa ki estoke nan ki adrès li, ak chaj li. " 57 00:04:33,830 --> 00:04:41,720 Ki sa ou chaje soti nan varyab la ki pral dwe estoke nan varyab tan nou an. 58 00:04:41,720 --> 00:04:45,150 Ranvèrsan tounen nan iPad la. 59 00:04:45,150 --> 00:04:51,690 Si nou ale nan adrese 10, nou konnen adrès 10 se x nan varibl 60 00:04:51,690 --> 00:04:55,480 paske nou te di a pwen bal nou an ki adrès la x nan memwa se 10. 61 00:04:55,480 --> 00:05:00,180 Se konsa, nou ka ale la, jwenn valè a nan li, ki se 1, menm jan nou wè sou iPad nou an, 62 00:05:00,180 --> 00:05:06,300 ak chaj ki nan tan. 63 00:05:06,300 --> 00:05:08,250 Yon fwa ankò, sa a se pa sa ki final la. 64 00:05:08,250 --> 00:05:14,350 Nou pral mache nan epi n ap jwenn nan eta final nou an nan pwogram nan nan fen an. 65 00:05:14,350 --> 00:05:17,210 Men, kounye a, nou gen menm valè a 1 ki estoke nan tan. 66 00:05:17,210 --> 00:05:19,210 >> Ak gen nan yon kesyon rapid sou isit la. 67 00:05:19,210 --> 00:05:23,980 [Alexander] Èske operatè a dèreferans - sa a jis dwa nan zetwal nan devan nan varyab la? 68 00:05:23,980 --> 00:05:27,600 >> Wi. Se konsa, operatè a dèreferans, menm jan nou baskile tounen nan konpitè pòtatif nou yon lòt fwa ankò, 69 00:05:27,600 --> 00:05:33,780 se sa a zetwal dwa nan devan. 70 00:05:33,780 --> 00:05:37,460 Nan sans sa, li se - ou contrast li ak operatè a miltiplikasyon 71 00:05:37,460 --> 00:05:42,400 ki egzije pou de bagay; operatè a dèreferans se yon operatè unèr. 72 00:05:42,400 --> 00:05:46,130 Jis aplike nan yon sèl valè kòm opoze a yon operatè binè, 73 00:05:46,130 --> 00:05:48,810 ki kote ou aplike nan de valè diferan. 74 00:05:48,810 --> 00:05:52,080 Se konsa, sa a, se sa k ap pase nan liy sa a. 75 00:05:52,080 --> 00:05:58,390 Nou chaje valè a 1 ak ki estoke l 'nan varyab tanporè nou antye ki pè. 76 00:05:58,390 --> 00:06:05,800 Liy nan pwochen, nou sere sa ki nan b nan - 77 00:06:05,800 --> 00:06:12,630 oswa, olye, nou sere sa ki ki B se lonje dwèt nan plas la kote yon se lonje dwèt yo. 78 00:06:12,630 --> 00:06:17,690 Si nou analize sa a de dwat a gòch, nou pral b dèreferans, 79 00:06:17,690 --> 00:06:23,580 nou pral adrese 14, nou pral gen tan pwan nonb antye relatif la ki ki gen la, 80 00:06:23,580 --> 00:06:26,900 ak Lè sa a, nou pral pou yo ale nan adrès la 10, 81 00:06:26,900 --> 00:06:34,240 ak nou pral voye jete rezilta a nan dèreferans nou an b nan espas sa a. 82 00:06:34,240 --> 00:06:40,080 Ranvèrsan tounen nan iPad nou an, kote nou kapab fè sa-a yon ti kras plis konkrè, 83 00:06:40,080 --> 00:06:44,070 li ta ka ede si mwen ekri nonb sou tout de adrès sa yo isit la. 84 00:06:44,070 --> 00:06:53,820 Se konsa, nou konnen ke nan y, nou se nan adrès 14, x se nan adrès 10. 85 00:06:53,820 --> 00:07:00,180 Lè nou kòmanse nan b, nou b dèreferans, nou pwal gen tan pwan valè a 2. 86 00:07:00,180 --> 00:07:08,320 Nou pral gen tan pwan sa a valè paske sa se valè a ki ap viv nan adrès 14. 87 00:07:08,320 --> 00:07:15,700 Epi nou ap ale nan mete l 'nan varyab la ki viv nan adrès 10, 88 00:07:15,700 --> 00:07:19,160 ki se dwa a, ki koresponn ak x varyab nou an. 89 00:07:19,160 --> 00:07:21,810 Se konsa, nou ka fè yon ti kras nan ranplasan isit la 90 00:07:21,810 --> 00:07:35,380 kote nou debarase m de 1 nou yo ak olye nou ekri yon 2. 91 00:07:35,380 --> 00:07:39,560 Se konsa, tout nan byen ak bon nan mond lan, menm si nou te x efase kounye a. 92 00:07:39,560 --> 00:07:44,890 Nou te estoke fin vye granmoun valè x la nan varyab tan nou an. 93 00:07:44,890 --> 00:07:50,210 Se konsa, nou ka ranpli swap a ak liy kap vini an. 94 00:07:50,210 --> 00:07:53,030 Ranvèrsan tounen nan konpitè pòtatif nou an. 95 00:07:53,030 --> 00:07:58,150 Koulye a, tout sa ki rete se pran sa ki soti nan varyab tanporè nou nonb antye relatif 96 00:07:58,150 --> 00:08:05,630 li epi sere yo nan varyab la ki viv nan adrès la ki B se kenbe. 97 00:08:05,630 --> 00:08:10,230 Se konsa, nou ap ale nan efektivman b dèreferans jwenn aksè nan varyab la 98 00:08:10,230 --> 00:08:14,340 ki se nan adrès la ki b kenbe nan li, 99 00:08:14,340 --> 00:08:19,190 epi nou ap ale nan bagay valè a ki tan an kenbe nan li. 100 00:08:19,190 --> 00:08:23,280 Ranvèrsan tounen nan iPad a yon fwa plis. 101 00:08:23,280 --> 00:08:31,290 Mwen ka efase sa a valè isit la, 2, 102 00:08:31,290 --> 00:08:41,010 ak olye nou pral kopye dwa pou 1 nan li. 103 00:08:41,010 --> 00:08:43,059 Lè sa a, liy lan pwochen ki ègzekutra, nan kou - 104 00:08:43,059 --> 00:08:47,150 si nou baskile tounen nan konpitè pòtatif li a - se sa a 6 pwen, 105 00:08:47,150 --> 00:08:52,500 ki se pwen an nan ki nou te vle gen dyagram nou ranpli konplètman. 106 00:08:52,500 --> 00:08:58,940 Se konsa, ranvèrsan tounen nan iPad a yon fwa plis, jis pou ou kapab wè dyagram an fini, 107 00:08:58,940 --> 00:09:06,610 ou ka wè ke nou gen yon 10 nan yon, yon 14 nan b, yon 1 nan tan, yon 2 nan x, ak yon 1 nan y. 108 00:09:06,610 --> 00:09:11,000 Èske gen nenpòt kesyon sou sa a? 109 00:09:11,000 --> 00:09:14,640 sa a pou ka fè plis sans, li te gen te mache nan tout li? 110 00:09:14,640 --> 00:09:24,850 Fè mwens sans? Èspere ke pa. Oke. 111 00:09:24,850 --> 00:09:28,230 >> Endikasyon yo se yon sijè trè difisil. 112 00:09:28,230 --> 00:09:33,420 Youn nan mesye yo nou travay avèk gen yon pwovèb trè komen: 113 00:09:33,420 --> 00:09:36,590 "Pou konprann endikasyon, ou dwe premye konprann endikasyon." 114 00:09:36,590 --> 00:09:40,530 Ki Mwen panse ke se yon bagay ki vre. Li fè sa pran yon pandan y ap jwenn itilize li. 115 00:09:40,530 --> 00:09:45,360 Desen anpil bagay nan foto, desen anpil bagay nan dyagram memwa tankou sa a yon sèl yo ki itil anpil, 116 00:09:45,360 --> 00:09:49,480 ak apre ou fin mache nan egzanp apre egzanp apre egzanp, 117 00:09:49,480 --> 00:09:54,450 li pral kòmanse fè yon ti kras pi plis sans ak yon ti kras plis sans ak yon ti kras sans plis. 118 00:09:54,450 --> 00:10:01,560 Finalman, yon sèl jou, ou pral gen tout bagay sa yo nèt metrize. 119 00:10:01,560 --> 00:10:13,800 Nenpòt kesyon avan nou deplase sou pwoblèm nan apre? Tout dwa. 120 00:10:13,800 --> 00:10:18,840 Se konsa, baskile tounen nan konpitè pòtatif li a. 121 00:10:18,840 --> 00:10:23,300 Pwoblèm nan pwochen nou gen se nimewo pwoblèm 33 nan dosye Mwen / O. 122 00:10:23,300 --> 00:10:26,350 Rale nan sou sa a yon ti jan. 123 00:10:26,350 --> 00:10:28,710 Pwoblèm 33 - Wi? 124 00:10:28,710 --> 00:10:32,110 >> [Danyèl] Mwen te jis te gen yon kesyon rapid. Sa a zetwal, oswa asterisk a, 125 00:10:32,110 --> 00:10:35,590 sa yo rele dereferencing lè w itilize yon asterisk anvan. 126 00:10:35,590 --> 00:10:38,820 Ki sa ki nan li rele lè w itilize comercial a anvan? 127 00:10:38,820 --> 00:10:43,140 >> Comercial la anvan se adrès la-a operatè. 128 00:10:43,140 --> 00:10:45,880 Se konsa, kite a woulo liv tounen moute. 129 00:10:45,880 --> 00:10:49,310 Wouch. Mwen nan mòd rale Se konsa, mwen pa kapab reyèlman woulo liv. 130 00:10:49,310 --> 00:10:52,780 Si nou gade nan sa a kòd vrèman byen vit dwa isit la, 131 00:10:52,780 --> 00:10:54,980 ankò, menm bagay k ap pase. 132 00:10:54,980 --> 00:10:59,180 Si nou gade nan sa a kòd dwa isit la, sou liy sa a kote nou fè apèl la boukante, 133 00:10:59,180 --> 00:11:10,460 comercial a se jis di "jwenn adrès la nan ki lavi x varyab." 134 00:11:10,460 --> 00:11:14,460 Lè du ou compiles kòd ou a, 135 00:11:14,460 --> 00:11:20,590 li te aktyèlman fizikman make soti yon kote nan memwa pou tout nan varyab ou a ap viv la. 136 00:11:20,590 --> 00:11:24,910 Se konsa, sa ki du a kapab Lè sa a, fè yon fwa li a konpile tout bagay, 137 00:11:24,910 --> 00:11:31,110 li konnen, "O, mwen mete x nan adrès 10. Mwen mete y nan adrès 14." 138 00:11:31,110 --> 00:11:34,640 Li ka Lè sa a, ranpli nan valè sa yo pou ou. 139 00:11:34,640 --> 00:11:44,740 Se konsa, ou ka Lè sa a, - li ka Lè sa a, pase sa a nan ak pas & y nan kòm byen. 140 00:11:44,740 --> 00:11:50,730 Nèg sa yo jwenn adrès la, men yo menm tou yo, lè ou pase yo nan fonksyon an swap, 141 00:11:50,730 --> 00:11:55,690 enfòmasyon sa a kalite, sa a * int dwa isit la, di du a, 142 00:11:55,690 --> 00:12:01,350 "Oke, nou ap pral entèprete adrès sa a kòm yon adrès nan yon varyab antye ki pè." 143 00:12:01,350 --> 00:12:05,900 Kòm yon adrès nan yon int, ki se diferan de adrès ki nan yon varyab karaktè 144 00:12:05,900 --> 00:12:09,930 paske yon int pran moute, sou yon machin 32-ti jan, pran moute 4 bytes nan espas, 145 00:12:09,930 --> 00:12:13,310 Lè nou konsidere ke yon karaktè sèlman pran moute 1 multiple nan espas. 146 00:12:13,310 --> 00:12:17,310 Se konsa, li enpòtan yo konnen tou sa ki - sa ki ap viv, ki kalite valè 147 00:12:17,310 --> 00:12:20,340 ap viv nan adrès la ke yo kouri pase pous 148 00:12:20,340 --> 00:12:22,020 Oswa adrès la ke w ap fè fas ak. 149 00:12:22,020 --> 00:12:29,020 Nan fason sa a, ou konnen ki jan anpil bytes nan enfòmasyon yo aktyèlman chaje soti nan RAM ou a. 150 00:12:29,020 --> 00:12:31,780 Lè sa a,, se wi, sa a operatè dèreferans, tankou ou te mande, 151 00:12:31,780 --> 00:12:37,200 ale ak jwenn aksè a enfòmasyon nan yon adrès patikilye. 152 00:12:37,200 --> 00:12:42,820 Se konsa, li di, ak sa a varyab yon isit la, trete sa ki nan yon kòm yon adrès, 153 00:12:42,820 --> 00:12:47,880 ale nan ki adrès, e rale mete deyò, chaje nan processeur a, chaj nan yon rejis 154 00:12:47,880 --> 00:12:56,340 valè yo reyèl oswa sa ki andedan yo ki ap viv nan ki adrès ou. 155 00:12:56,340 --> 00:12:59,620 Nenpòt piplis kesyon? Sa yo se kesyon bon. 156 00:12:59,620 --> 00:13:01,650 Li se yon anpil nan nouvo tèminoloji tou. 157 00:13:01,650 --> 00:13:09,800 Li la tou kalite fenki, wè & ak * nan diferan kote. 158 00:13:09,800 --> 00:13:13,180 >> Tout dwa. 159 00:13:13,180 --> 00:13:18,530 Se konsa, tounen nan pwoblèm 33, ranpli I / O. 160 00:13:18,530 --> 00:13:22,540 Sa a te youn nan moun ki pwoblèm ke mwen panse ke yon koup nan bagay sa yo rive. 161 00:13:22,540 --> 00:13:25,400 Youn nan, li nan yon sijè jistis nouvo. 162 00:13:25,400 --> 00:13:30,590 Li te prezante trè byento anvan egzamen an, 163 00:13:30,590 --> 00:13:33,400 ak Lè sa a, Mwen panse se te kalite tankou youn nan sa yo pwoblèm mo nan matematik 164 00:13:33,400 --> 00:13:39,720 kote yo ba ou yon anpil enfòmasyon, men ou aktyèlman pa fini gen yo sèvi ak yon tòn nan li. 165 00:13:39,720 --> 00:13:44,060 Pati a nan premye pwoblèm sa a se ki dekri ki sa yon dosye CSV se. 166 00:13:44,060 --> 00:13:50,620 Koulye a, yon dosye CSV, selon deskripsyon an, se yon vigil-ekreme valè dosye-a. 167 00:13:50,620 --> 00:13:55,300 Rezon ki fè yo sa yo, se nan tout enteresan, ak rezon ki fè ou janm sèvi ak yo, 168 00:13:55,300 --> 00:14:00,800 se, paske, ki jan anpil nan nou te janm itilize bagay tankou Excel? 169 00:14:00,800 --> 00:14:03,240 Figi pi fò nan ou te, pwobableman, oswa pral sèvi ak nan kèk pwen nan lavi ou. 170 00:14:03,240 --> 00:14:06,430 Ou ap sèvi ak yon bagay tankou Excel. 171 00:14:06,430 --> 00:14:10,940 Yo nan lòd jwenn done yo soti nan yon calcul Excel oswa fè nenpòt sòt de pwosesis ak li, 172 00:14:10,940 --> 00:14:17,240 si ou te vle ekri yon pwogram C oswa Piton pwogram, Java pwogram nan, 173 00:14:17,240 --> 00:14:20,070 fè fas ak done yo ou te ki estoke nan la, 174 00:14:20,070 --> 00:14:23,170 youn nan fason yo jwenn li soti ki pi komen se nan yon dosye CSV. 175 00:14:23,170 --> 00:14:26,850 Epi ou ka louvri moute Excel ak ki lè ou ale nan 'Save a kòm' dyalòg, 176 00:14:26,850 --> 00:14:32,840 ou ka jwenn deyò yon dosye CSV vrè. 177 00:14:32,840 --> 00:14:35,890 >> Sou la men konnen ki jan fè fas ak bagay sa yo. 178 00:14:35,890 --> 00:14:42,010 Nan fason li ap travay se ke li nan menm jan ak - Mwen vle di, li nan esansyèlman miman yon calcul, 179 00:14:42,010 --> 00:14:47,590 , kote, tankou nou wè isit la, nan pyès la trè kite-pi plis, 180 00:14:47,590 --> 00:14:49,910 nou gen tout non yo dènye. 181 00:14:49,910 --> 00:14:54,670 Se konsa, nou gen Malan, Lè sa a, Hardison, ak Lè sa a, Bowden, MacWilliam, ak Lè sa a, Chan. 182 00:14:54,670 --> 00:14:59,470 Tout non yo dènye. Lè sa a, yon vigil separe non yo dènye nan non yo an premye. 183 00:14:59,470 --> 00:15:02,970 David, Nate, Rob, Tommy, ak Zamyla. 184 00:15:02,970 --> 00:15:06,850 Mwen toujou melanje moute Robby ak Tom. 185 00:15:06,850 --> 00:15:10,940 Lè sa a,, finalman, kolòn nan twazyèm se adrès ki imel. 186 00:15:10,940 --> 00:15:18,500 Yon fwa ou konprann ke, tout rès la nan pwogram nan se jistis dwat a aplike. 187 00:15:18,500 --> 00:15:23,850 Ki sa nou te fè yo nan lòd yo mime estrikti sa a menm nan pwogram C nou 188 00:15:23,850 --> 00:15:27,510 se nou te itilize yon estrikti. 189 00:15:27,510 --> 00:15:30,520 Nou pral kòmanse jwe ak sa yo plis yon ti kras tou. 190 00:15:30,520 --> 00:15:35,790 Nou te wè yo pou ti jan nan premye ti kras nan seri pwoblèm 3, lè nou te fè fas ak diksyonè yo. 191 00:15:35,790 --> 00:15:40,290 Men, sa a struct anplwaye estoke yon non sot pase yo, yon non premye, ak imel yon. 192 00:15:40,290 --> 00:15:44,500 Jis tankou dosye CSV nou te estoke. 193 00:15:44,500 --> 00:15:47,950 Se konsa, sa a se jis konvèti soti nan yon fòma nan yon lòt. 194 00:15:47,950 --> 00:15:54,630 Nou gen konvèti, nan ka sa a, yon struct anplwaye nan yon liy, 195 00:15:54,630 --> 00:15:59,060 yon liy vigil-separe, jis tankou sa. 196 00:15:59,060 --> 00:16:01,500 ki fè sans? Ou nèg gen tout te pran egzamen an, 197 00:16:01,500 --> 00:16:07,680 Se konsa, mwen imajine ou gen omwen te gen kèk tan panse sou sa a. 198 00:16:07,680 --> 00:16:16,410 >> Nan fonksyon anboche, pwoblèm nan mande nou pran nan - rale we'll nan sa a sou yon ti jan - 199 00:16:16,410 --> 00:16:22,480 pran nan yon estrikti anplwaye yo, yon struct anplwaye yo, ak non an, 200 00:16:22,480 --> 00:16:30,900 ak sa li yo kole nan dosye staff.csv nou an. 201 00:16:30,900 --> 00:16:34,230 Li sanble ke sa a se jistis dwat yo itilize. 202 00:16:34,230 --> 00:16:37,430 Nou pral kalite jwe otou ak sa yo fonksyon yon ti jan ti kras pi plis jounen jodi a. 203 00:16:37,430 --> 00:16:44,510 Men, nan ka sa a, fonksyon an fprintf se reyèlman kle a. 204 00:16:44,510 --> 00:16:51,960 Se konsa, avèk fprintf, nou ka enprime, jis tankou ou nèg yo te lè l sèvi avèk printf tèm sa a tout antye. 205 00:16:51,960 --> 00:16:55,050 Ou kapab printf yon liy nan yon dosye. 206 00:16:55,050 --> 00:16:59,030 Se konsa, olye pou yo jis fè abityèl apèl la printf kote ou ba li fisèl la fòma 207 00:16:59,030 --> 00:17:05,380 ak Lè sa a, ou ranplase tout varyab yo ak agiman sa yo, 208 00:17:05,380 --> 00:17:11,290 ak fprintf, agiman trè premye ou a se olye dosye a ou vle yo pou yo ekri. 209 00:17:11,290 --> 00:17:21,170 Si nou tout nou te fè yon gade nan sa a nan aparèy la, pou egzanp, nonm fprintf, 210 00:17:21,170 --> 00:17:25,980 nou ka wè diferans ki genyen ant printf ak fprintf. 211 00:17:25,980 --> 00:17:28,960 Mwen pral rale nan isit la yon ti jan. 212 00:17:28,960 --> 00:17:33,140 Se konsa, avèk printf, nou bay li yon fisèl fòma, ak Lè sa a, agiman yo ki vin apre 213 00:17:33,140 --> 00:17:37,580 yo tout varyab yo pou ranplasman oswa sibstitisyon nan fisèl fòma nou an. 214 00:17:37,580 --> 00:17:47,310 Lè nou konsidere ke ak fprintf, agiman an premye se vre sa a * dosye yo rele yon kouran. 215 00:17:47,310 --> 00:17:51,800 >> Moving tounen sou isit la yo anboche nou an, 216 00:17:51,800 --> 00:17:54,550 nou te deja gen kouran dosye * nou louvri pou nou. 217 00:17:54,550 --> 00:17:57,810 Sa a ki sa liy sa a premye fè; li ouvè dosye a staff.csv, 218 00:17:57,810 --> 00:18:01,690 li ouvè li nan mòd ajoutra, ak tout sa ki nan rete pou nou fè se 219 00:18:01,690 --> 00:18:08,640 ekri estrikti nan anplwaye nan dosye a. 220 00:18:08,640 --> 00:18:10,870 Ak, kite la wè, èske mwen vle sèvi ak iPad la? 221 00:18:10,870 --> 00:18:17,900 Mwen pral sèvi ak iPad la. Nou gen anile - Se pou nou mete sa a sou tab la pou m ka ekri yon ti kras pi byen - 222 00:18:17,900 --> 00:18:33,680 anile anboche epi li pran nan yon sèl agiman, yon estrikti anplwaye yo rele an. 223 00:18:33,680 --> 00:18:44,120 Got aparèy òtopedik nou an, nou te gen * dosye nou yo rele ranpli, 224 00:18:44,120 --> 00:18:48,380 nou gen liy fopen nou ban nou, 225 00:18:48,380 --> 00:18:51,890 epi mwen pral jis ekri li kòm pwen depi li nan deja nan pedya la. 226 00:18:51,890 --> 00:19:00,530 Lè sa a, sou liy pwochen nou yo, nou pwal fè yon apèl fprintf 227 00:19:00,530 --> 00:19:03,700 e nou pral pase nan dosye a ke nou vle enprime a, 228 00:19:03,700 --> 00:19:10,290 ak Lè sa a, fisèl fòma nou an, ki - 229 00:19:10,290 --> 00:19:14,300 Mwen pral kite ou nèg di m 'sa li sanble. 230 00:19:14,300 --> 00:19:20,500 Kouman sou ou, Stella? ou konnen ki sa premye pati nan fisèl la fòma sanble? 231 00:19:20,500 --> 00:19:24,270 [Stella] Mwen pa si. >> Ezite mande Jimmy. 232 00:19:24,270 --> 00:19:27,690 ou konnen, Jimmy? 233 00:19:27,690 --> 00:19:31,000 [Jimmy] Èske sa t jis pou sot pase a? Mwen pa konnen. Mwen pa antyèman asire w. 234 00:19:31,000 --> 00:19:39,020 >> Okay. Kouman sou, t 'okenn moun jwenn sa a kòrèk nan egzamen an? 235 00:19:39,020 --> 00:19:41,770 No Tout dwa. 236 00:19:41,770 --> 00:19:47,920 Li sanble ke isit la tout sa nou dwe fè se nou vle chak pati nan estrikti anplwaye nou 237 00:19:47,920 --> 00:19:53,290 yo dwe enprime soti kòm yon fisèl nan dosye nou yo. 238 00:19:53,290 --> 00:19:59,900 Nou jis itilize karaktè a sibstitisyon fisèl twa fwa diferan paske nou genyen yon non dènye 239 00:19:59,900 --> 00:20:07,160 ki te swiv pa vigil, lè sa a yon non premye ki te swiv pa yon vigil, 240 00:20:07,160 --> 00:20:12,430 yo, epi finalman a adrès imel la ki swiv - ki se pa 241 00:20:12,430 --> 00:20:15,140 Fitting sou ekran m '- men li la ki te swiv pa yon karaktè newline. 242 00:20:15,140 --> 00:20:20,060 Se konsa, mwen pral ekri li jis anba isit la. 243 00:20:20,060 --> 00:20:23,560 Lè sa a, swiv fisèl fòma nou an, 244 00:20:23,560 --> 00:20:27,880 nou jis gen sibstitisyon yo, ki nou jwenn aksè lè l sèvi avèk notasyon an dot 245 00:20:27,880 --> 00:20:31,370 ke nou te wè nan seri pwoblèm 3. 246 00:20:31,370 --> 00:20:48,820 Nou ka sèvi ak s.last, s.first, ak s.email 247 00:20:48,820 --> 00:20:58,990 pran plas nan twa valè sa yo nan fisèl fòma nou an. 248 00:20:58,990 --> 00:21:06,190 Se konsa, kouman t 'ki ale? Fè sans? 249 00:21:06,190 --> 00:21:09,700 Wi? Pa gen? Li posib? Oke. 250 00:21:09,700 --> 00:21:14,180 >> Bagay la final ke nou fè apre nou te enprime ak apre nou te louvri dosye nou an: 251 00:21:14,180 --> 00:21:17,370 chak fwa nou te louvri yon dosye li an, nou toujou gen sonje yo fèmen l '. 252 00:21:17,370 --> 00:21:19,430 Paske otreman nou pral fini koule memwa a, 253 00:21:19,430 --> 00:21:22,500 lè l sèvi avèk moute deskriptè dosye-a. 254 00:21:22,500 --> 00:21:25,950 Se konsa, yo fèmen l ', ki fonksyon nou itilize? Danyèl? 255 00:21:25,950 --> 00:21:30,120 [Danyèl] fkloz? >> Fkloz, egzakteman. 256 00:21:30,120 --> 00:21:37,520 Se konsa, pati nan sot pase yo nan pwoblèm sa a te byen fèmen dosye a, lè l sèvi avèk fonksyon an fkloz, 257 00:21:37,520 --> 00:21:40,370 ki jis sanble tankou sa. 258 00:21:40,370 --> 00:21:43,880 Pa twò fou. 259 00:21:43,880 --> 00:21:46,990 Fre. 260 00:21:46,990 --> 00:21:49,520 Se konsa, sa a, se pwoblèm 33 sou egzamen an. 261 00:21:49,520 --> 00:21:52,480 Nou pwal genyen definitivman plis dosye mwen / O ap vini yo. 262 00:21:52,480 --> 00:21:55,130 Nou pral fè yon ti jan ti kras pi plis nan konferans jodi a, oswa nan seksyon jodi a, 263 00:21:55,130 --> 00:22:01,710 paske sa a, se sa k ap pase yo fòme èstime nan sa a pset kap vini yo. 264 00:22:01,710 --> 00:22:05,020 Kite yo deplase sou soti nan egzamen an nan pwen sa. Wi? 265 00:22:05,020 --> 00:22:10,880 >> [Charlotte]] Poukisa fkloz (ranpli) olye pou yo fkloz (staff.csv)? 266 00:22:10,880 --> 00:22:19,100 >> Ah. Paske li sanble ke - pou kesyon an, ki se yon yon sèl gwo, 267 00:22:19,100 --> 00:22:27,800 Se pou rezon sa, lè nou ekri fkloz, èske nou ekri fkloz (ranpli) varyab zetwal 268 00:22:27,800 --> 00:22:33,680 kòm yo te opoze ak non an ranpli, staff.csv? Èske sa kòrèk? Yeah. 269 00:22:33,680 --> 00:22:39,570 Se konsa, kite a pran yon gade. Si m 'chanje tounen nan konpitè pòtatif m' yo, 270 00:22:39,570 --> 00:22:45,040 epi kite pou yo gade nan fonksyon an fkloz. 271 00:22:45,040 --> 00:22:51,460 Se konsa, fonksyon an fkloz fèmen yon kouran epi li pran nan konsèy la kouran an ke nou vle fèmen, 272 00:22:51,460 --> 00:22:57,010 kòm yo te opoze ak non an dosye aktyèl ke nou vle fèmen. 273 00:22:57,010 --> 00:23:01,620 Ak sa a se paske dèyè sèn nan, lè ou fè yon apèl fopen, 274 00:23:01,620 --> 00:23:12,020 lè ou louvri moute yon dosye li an, w ap aktyèlman allocation memwa nan magazen enfòmasyon sou dosye a. 275 00:23:12,020 --> 00:23:16,380 Se konsa, ou gen konsèy dosye ki gen enfòmasyon sou dosye a, 276 00:23:16,380 --> 00:23:23,080 tankou li nan ouvè, gwosè li, kote ou ye a kounye a nan dosye a, 277 00:23:23,080 --> 00:23:29,100 pou ke ou ka fè li ak ekri apèl nan plas sa a an patikilye nan dosye a. 278 00:23:29,100 --> 00:23:38,060 Ou fini fèmen konsèy la olye pou yo fèmen non an dosye-a. 279 00:23:38,060 --> 00:23:48,990 >> Wi? [Danyèl] Se konsa, yo nan lòd yo itilize anboche, ou ta di - li montre kouman li pran konsèy nan itilizatè? 280 00:23:48,990 --> 00:23:53,830 fprintf aji tankou GetString nan sans ke li pral jis tann pou D 'nan itilizatè 281 00:23:53,830 --> 00:23:57,180 epi mande ou nan tape sa a - oswa rete tann pou ou pou w tape twa bagay sa yo nan? 282 00:23:57,180 --> 00:24:00,480 Oswa ou bezwen sèvi ak yon bagay yo aplike anboche? 283 00:24:00,480 --> 00:24:04,100 >> Yeah. Se konsa, nou pa - kesyon an te, ki jan nou jwenn opinyon nan itilizatè 284 00:24:04,100 --> 00:24:09,220 yo nan lòd yo aplike anboche? Ak sa nou genyen isit la se moun ki rele a nan anboche, 285 00:24:09,220 --> 00:24:17,690 ki te pase nan sa a struct anplwaye ak tout done yo ki estoke nan struct la deja. 286 00:24:17,690 --> 00:24:22,990 Se konsa, fprintf se kapab jis ekri sa done dirèkteman nan dosye a. 287 00:24:22,990 --> 00:24:25,690 Gen nan pa gen tann pou D 'itilizatè. 288 00:24:25,690 --> 00:24:32,110 Nan itilizatè a ke yo deja bay opinyon la pa byen mete l 'nan sa a struct anplwaye yo. 289 00:24:32,110 --> 00:24:36,510 Ak bagay sa yo, nan kou, ta kraze si nenpòt nan moun sa endikasyon yo te nil, 290 00:24:36,510 --> 00:24:40,370 pou nou woulo liv tounen moute isit la epi nou gade struct nou an. 291 00:24:40,370 --> 00:24:43,640 Nou gen fisèl sot pase yo, fisèl premye, email fisèl. 292 00:24:43,640 --> 00:24:48,530 Nou kounye a konnen ke tout moun sa yo reyèlman, anba kapo machin lan, se varyab * Char. 293 00:24:48,530 --> 00:24:53,470 Ki ka oswa ka pa dwe lonje dwèt nil. 294 00:24:53,470 --> 00:24:55,800 Yo kapab ap lonje dwèt sou memwa pil wòch la, 295 00:24:55,800 --> 00:24:59,650 petèt memwa sou pil la. 296 00:24:59,650 --> 00:25:04,580 Nou pa vrèman konnen, men si nenpòt nan sa yo endikasyon yo se nil, oswa envalid, 297 00:25:04,580 --> 00:25:08,120 ki ki pral definitivman aksidan fonksyon anboche nou yo. 298 00:25:08,120 --> 00:25:11,050 Se te yon bagay ki te kalite ki depase limit la nan egzamen an. 299 00:25:11,050 --> 00:25:16,440 Nou pa mangonmen sou sa. 300 00:25:16,440 --> 00:25:22,170 Great. Oke. Se konsa, deplase sou soti nan egzamen an. 301 00:25:22,170 --> 00:25:25,760 >> Se pou nou fèmen sa a Guy, e nou pral fè yon gade nan pset 4. 302 00:25:25,760 --> 00:25:34,700 Se konsa, si ou gade mesye nan espèk a pset, yon fwa ou kapab jwenn aksè nan li, cs50.net/quizzes, 303 00:25:34,700 --> 00:25:42,730 nou pral yo ale nan yon kèk nan pwoblèm yo seksyon jodi a. 304 00:25:42,730 --> 00:25:52,240 Mwen defile desann - seksyon nan kesyon ap kòmanse nan paj la tyè nan espèk a pset. 305 00:25:52,240 --> 00:25:57,800 Ak pati nan premye mande w ale yo epi gade kout la sou Redireksyon ak tiyo. 306 00:25:57,800 --> 00:26:02,820 Ki te kalite yon kout fre, montre w kèk nouvo, ke trik nouvèl fre liy lòd ke ou ka itilize. 307 00:26:02,820 --> 00:26:06,050 Lè sa a, nou te gen kèk kesyon pou ou kòm byen. 308 00:26:06,050 --> 00:26:10,860 Kesyon sa a premye sou larivyè, kote printf ekri pa default, 309 00:26:10,860 --> 00:26:15,920 nou kalite manyen sou jis ti jan yon ti kras yon ti moman de sa. 310 00:26:15,920 --> 00:26:22,380 Sa a fprintf ke nou te jis diskite sou pran nan yon kouran * dosye kòm agiman li yo. 311 00:26:22,380 --> 00:26:26,580 fkloz pran nan yon kouran * dosye kòm byen, 312 00:26:26,580 --> 00:26:32,660 ak valè retou a nan fopen ba ou yon kouran * dosye kòm byen. 313 00:26:32,660 --> 00:26:36,060 Rezon ki fè nou pa t 'wè sa yo anvan lè nou te te fè fas ak printf 314 00:26:36,060 --> 00:26:39,450 se paske printf gen yon kouran default. 315 00:26:39,450 --> 00:26:41,810 Ak default kouran an yo ki li ekri 316 00:26:41,810 --> 00:26:45,190 ou pral jwenn enfòmasyon sou nan kout la. 317 00:26:45,190 --> 00:26:50,080 Se konsa, definitivman pran yon gade nan li. 318 00:26:50,080 --> 00:26:53,010 >> Nan seksyon jodi a, nou pwal pale yon ti kras sou gdb, 319 00:26:53,010 --> 00:26:57,720 depi plis abitye a ou yo ki la avèk li, pratik an plis ou jwenn ak li, 320 00:26:57,720 --> 00:27:01,390 pi byen kapab a ou pral aktyèlman Hunt desann pinèz nan kòd pwòp ou yo. 321 00:27:01,390 --> 00:27:05,540 Sa a vitès pwosesis la nan debogaj moute èkstrèmeman. 322 00:27:05,540 --> 00:27:09,230 Se konsa, lè l sèvi avèk printf, chak fwa ou fè sa ou gen compile kòd ou a, 323 00:27:09,230 --> 00:27:13,000 w gen kouri l 'ankò, pafwa ou gen pou avanse pou pi apèl la printf alantou li, 324 00:27:13,000 --> 00:27:17,100 kòmantè soti kòd, li jis pran yon ti tan. 325 00:27:17,100 --> 00:27:20,850 Objektif nou se eseye ak konvenk ou ke avèk gdb, ou kapab esansyèlman 326 00:27:20,850 --> 00:27:26,810 printf anyen nan nenpòt ki pwen nan kòd ou, epi ou pa janm gen compile li. 327 00:27:26,810 --> 00:27:35,120 Ou pa janm gen yo kòmanse epi kenbe devine ki kote yo printf kap vini an. 328 00:27:35,120 --> 00:27:40,910 Premye bagay yo fè se kopi liy sa a epi pou yo jwenn kòd la seksyon koupe nan entènèt la. 329 00:27:40,910 --> 00:27:47,530 Mwen kopye liy sa a nan kòd ki di, "http://cdn.cs50.net wje". 330 00:27:47,530 --> 00:27:49,510 Mwen pral kopi li. 331 00:27:49,510 --> 00:27:55,950 Mwen pral janbe lòt bò nan aparèy m 'yo, rale soti pou ou kapab wè sa m ap fè li, 332 00:27:55,950 --> 00:28:01,890 kole li nan la, epi lè mwen frape Antre, lòd sa a wje literalman se yon sit entènèt jwenn. 333 00:28:01,890 --> 00:28:06,210 Li k ap pase ki rale desann sa a ranpli koupe nan entènèt la, 334 00:28:06,210 --> 00:28:11,790 ak li a pral sove li nan anyè aktyèl la. 335 00:28:11,790 --> 00:28:21,630 Koulye a, si mwen lis anyè mwen ye kounye a ou ka wè ke mwen te gen sa a ranpli section5.zip dwa nan la. 336 00:28:21,630 --> 00:28:25,260 Fason a fè fas avèk ke nèg se ouvriers li, 337 00:28:25,260 --> 00:28:27,650 ki ou ka fè nan liy lan bay lòd, jis tankou sa a. 338 00:28:27,650 --> 00:28:31,880 Section5.zip. 339 00:28:31,880 --> 00:28:36,980 Sa pral ouvriers li, kreye folder nan pou m ', 340 00:28:36,980 --> 00:28:40,410 gonfle tout sa ki, mete yo nan la. 341 00:28:40,410 --> 00:28:47,410 Se konsa, koulye a, mwen ka ale nan anyè seksyon mwen 5 lè l sèvi avèk yo lòd, ki cd. 342 00:28:47,410 --> 00:28:58,310 Klè ekran an lè l sèvi avèk ki klè. Se konsa, klè ekran an. 343 00:28:58,310 --> 00:29:02,280 Koulye a, mwen te gen yon bèl tèminal pwòp kontra avèk. 344 00:29:02,280 --> 00:29:06,200 >> Koulye a, si mwen lis tout dosye yo pou m 'wè nan lis sa a yo, 345 00:29:06,200 --> 00:29:12,270 ou wè sa a mwen te gen kat dosye: buggy1, buggy2, buggy3, ak buggy4. 346 00:29:12,270 --> 00:29:16,180 Mwen te tou te resevwa korespondan. Yo dosye c. 347 00:29:16,180 --> 00:29:20,400 Nou pa pwal fè yon gade nan. Dosye yo c pou kounye a. 348 00:29:20,400 --> 00:29:24,140 Olye de sa, nou pwal sèvi ak yo lè nou louvri moute gdb. 349 00:29:24,140 --> 00:29:28,220 Nou te kenbe yo nan yon fason pou nou gen aksè a kòd la sous aktyèl lè nou ap sèvi ak gdb, 350 00:29:28,220 --> 00:29:32,740 men objektif la nan pati sa a nan seksyon an se Tinker otou ak gdb 351 00:29:32,740 --> 00:29:40,370 ak wè kòman nou ka sèvi ak li nan figi soti sa k ap pase mal ak chak nan sa yo kat pwogram buggy. 352 00:29:40,370 --> 00:29:43,380 Se konsa, nou jis ap ale nan toutotou sal la reyèlman byen vit, 353 00:29:43,380 --> 00:29:47,000 ak mwen pral mande yon moun nan kouri youn nan pwogram ki buggy, 354 00:29:47,000 --> 00:29:54,730 ak Lè sa a, nou pral ale tankou yon gwoup nan gdb, epi nou pral wè sa nou kapab fè ranje pwogram sa yo, 355 00:29:54,730 --> 00:29:58,460 oswa nan omwen idantifye sa k ap pase sa ki mal nan chak nan yo. 356 00:29:58,460 --> 00:30:04,760 Ann kòmanse sou isit la ak Danyèl. Èske w ap kouri buggy1? Ann gade pou wè sa k ap pase. 357 00:30:04,760 --> 00:30:09,470 [Danyèl] Li di, genyen yon fòt aplikasyon. >> Yeah. Egzakteman. 358 00:30:09,470 --> 00:30:12,460 Se konsa, si mwen kouri buggy1, mwen jwenn yon fay segman. 359 00:30:12,460 --> 00:30:16,210 Nan pwen sa a, mwen t 'ka ale ak louvri moute buggy1.c, 360 00:30:16,210 --> 00:30:19,450 eseye ak figi soti sa k ap pase sa ki mal, 361 00:30:19,450 --> 00:30:22,000 men se yon sèl nan bagay sa yo sou sa a erè fòt segman ki pi insuportabl 362 00:30:22,000 --> 00:30:27,610 se ke li pa di ou sou sa ki liy nan bagay sa yo pwogram aktyèlman ale mal ak te kraze yo. 363 00:30:27,610 --> 00:30:29,880 Ou kalite gen fè yon gade nan kòd la 364 00:30:29,880 --> 00:30:33,990 ak figi soti lè l sèvi avèk devine epi tcheke oswa printf yo wè sa k ap pase sa ki mal. 365 00:30:33,990 --> 00:30:37,840 Youn nan bagay ki koul sou gdb se ke li nan reyèlman, reyèlman fasil 366 00:30:37,840 --> 00:30:42,170 figi l liy lan nan ki aksidan pwogram ou an. 367 00:30:42,170 --> 00:30:46,160 Li nan totalman vo li sèvi ak li, menm si jis pou sa. 368 00:30:46,160 --> 00:30:56,190 Se konsa, bòt moute gdb, mwen tape gdb, ak Lè sa a, mwen ba ou li chemen ki mennen nan ègzèkutabl a ke mwen vle kouri. 369 00:30:56,190 --> 00:31:01,960 Isit la mwen sezisman gdb ./buggy1. 370 00:31:01,960 --> 00:31:06,600 Frape Antre nan. Ki ban m 'tout bagay sa a copyright enfòmasyon, 371 00:31:06,600 --> 00:31:13,000 , li desann isit la ou pral wè liy sa a ki di, "Lekti senbòl soti nan / home / 372 00:31:13,000 --> 00:31:17,680 jharvard/section5/buggy1. " 373 00:31:17,680 --> 00:31:22,060 Men, si tout bagay ale byen, ou pral wè l 'enprime soti yon mesaj ki sanble tankou sa a. 374 00:31:22,060 --> 00:31:25,500 Li pral li senbòl, sa ap di "M ap li senbòl nan dosye ègzèkutabl ou an," 375 00:31:25,500 --> 00:31:29,900 ak Lè sa a, li pral gen sa a "fè" mesaj sou isit la. 376 00:31:29,900 --> 00:31:35,410 Si ou wè kèk varyasyon lòt kote nan sa a, oswa ou wè li pa t 'kapab jwenn senbòl yo 377 00:31:35,410 --> 00:31:41,460 oubyen yon bagay tankou sa, ki sa sa vle se ke ou jis pa te konpile ègzèkutabl ou byen. 378 00:31:41,460 --> 00:31:49,980 Lè nou konpile pwogram pou itilize ak gdb, nou gen yo sèvi ak ki drapo espesyal-g, 379 00:31:49,980 --> 00:31:54,540 Epi sa a, fè pa default si ou konpile pwogram ou an, jis pa sezisman fè 380 00:31:54,540 --> 00:31:59,320 oswa fè buggy oswa fè retabli yo, nenpòt nan moun sa. 381 00:31:59,320 --> 00:32:07,800 Men, si w ap konpile manyèlman ak sonnen, lè sa a ou pral gen yo ale nan ak ki gen ladan-g drapo. 382 00:32:07,800 --> 00:32:10,310 >> Nan pwen sa a, kounye a ke nou gen èd memwa gdb nou an, 383 00:32:10,310 --> 00:32:12,310 li nan trè senp nan kouri pwogram nan. 384 00:32:12,310 --> 00:32:19,740 Nou ka swa tape kouri, oubyen nou ka jis tape r. 385 00:32:19,740 --> 00:32:22,820 Pifò kòmandman gdb kapab abreje. 386 00:32:22,820 --> 00:32:25,940 Anjeneral jis youn oswa yon lèt koup, ki se trè bèl. 387 00:32:25,940 --> 00:32:30,980 Se konsa, Saad, si ou tape r ak frape Antre, ki sa ki k ap pase? 388 00:32:30,980 --> 00:32:39,390 [Saad] mwen te resevwa SIGSEGV, fòt segmentation, ak Lè sa a, tout jagon sa a. 389 00:32:39,390 --> 00:32:43,650 >> Yeah. 390 00:32:43,650 --> 00:32:47,990 Tankou nou ap wè sou ekran an dwa kounye a, ak tankou Saad te di, 391 00:32:47,990 --> 00:32:53,430 lè nou tape kouri oswa r ak frape Antre, nou toujou jwenn fay la segman menm. 392 00:32:53,430 --> 00:32:55,830 Se konsa, lè l sèvi avèk gdb pa rezoud pwoblèm nou yo. 393 00:32:55,830 --> 00:32:59,120 Men, li ba nou kèk jagon, epi li vire soti ke sa a jagon 394 00:32:59,120 --> 00:33:03,080 aktyèlman di nou ki kote li k ap pase. 395 00:33:03,080 --> 00:33:10,680 Analizan sa a yon ti kras ti jan, sa a ti jan premye se fonksyon an nan ki tout bagay k ap pase sa ki mal. 396 00:33:10,680 --> 00:33:20,270 Genyen nan sa a __ strcmp_sse4_2, epi li di nou ke li kap pase nan sa a ranpli 397 00:33:20,270 --> 00:33:29,450 rele sysdeps/i386, tout sa a, ankò, kalite yon dezòd - men liy 254. 398 00:33:29,450 --> 00:33:31,670 Sa a kalite difisil yo analizan. Anjeneral lè ou wè bagay tankou sa a, 399 00:33:31,670 --> 00:33:38,770 sa vle di ke li nan segman frakti nan youn nan bibliyotèk yo sistèm. 400 00:33:38,770 --> 00:33:43,220 Se konsa, yon bagay fè ak strkan. Ou nèg te wè strkan anvan. 401 00:33:43,220 --> 00:33:52,730 Pa twò fou, men sa sa vle di ke strkan se kase oubyen ki gen nan yon pwoblèm ak strkan? 402 00:33:52,730 --> 00:33:57,110 Ki sa ou panse, Alexander? 403 00:33:57,110 --> 00:34:04,890 [Alexander] Eske se sa ke - se 254 liy lan? Ak - pa binè a, men li pa plafon yo, nan 404 00:34:04,890 --> 00:34:10,590 ak Lè sa a, gen nan yon lòt lang pou chak fonksyon. Se ke 254 nan ki fonksyon, oswa -? 405 00:34:10,590 --> 00:34:21,460 >> Li nan liy 254. Li sanble ke nan sa a. Dosye a, se konsa li a kòd asanble pwobableman. 406 00:34:21,460 --> 00:34:25,949 >> Men, mwen devine bagay la plis ijan se, paske nou te vinn yon fay segman, 407 00:34:25,949 --> 00:34:29,960 ak li sanble li a vini soti nan fonksyon an strkan, 408 00:34:29,960 --> 00:34:38,030 sa a vle di, lè sa a, se ke strkan kase? 409 00:34:38,030 --> 00:34:42,290 Li ta dwe pa, èspere ke. Se konsa, jis paske ou gen yon fay segmentation 410 00:34:42,290 --> 00:34:49,480 nan youn nan fonksyon yo sistèm, tipikman ki vle di ke ou jis pa yo te rele li yo kòrèkteman. 411 00:34:49,480 --> 00:34:52,440 Bagay la pi rapid pou fè pou konnen ki sa ki aktyèlman pral sou 412 00:34:52,440 --> 00:34:55,500 lè ou wè yon bagay fou tankou sa a, nenpòt lè ou wè yon fay segman, 413 00:34:55,500 --> 00:34:59,800 espesyalman si w gen yon pwogram ki la lè l sèvi avèk pi plis pase jis prensipal yo, 414 00:34:59,800 --> 00:35:03,570 se sèvi ak yon baktras. 415 00:35:03,570 --> 00:35:13,080 Mwen abreje baktras pa ekri BT, kòm opoze a pawòl Bondye a baktras plen. 416 00:35:13,080 --> 00:35:16,510 Men, Charlotte, sa ki pase lè ou tape b ak frape Antre? 417 00:35:16,510 --> 00:35:23,200 [Charlotte] Li montre m 'de liy, 0 liy ak liy 1. 418 00:35:23,200 --> 00:35:26,150 >> Yeah. Se konsa, liy 0 ak liy 1. 419 00:35:26,150 --> 00:35:34,560 Sa yo se ankadreman yo chemine aktyèl ki te kounye a nan jwe lè pwogram ou an te fè aksidan. 420 00:35:34,560 --> 00:35:42,230 Kòmanse nan ankadreman an topmost, ankadreman 0, epi ale nan anba pi plis la-a, ki se ankadreman 1. 421 00:35:42,230 --> 00:35:45,140 Ankadreman topmost nou se ankadreman an strkan. 422 00:35:45,140 --> 00:35:50,080 Ou ka panse a sa a kòm menm jan ak sa pwoblèm nou te jis ap fè sou egzamen an ak endikasyon yo, 423 00:35:50,080 --> 00:35:54,890 kote nou te boukante ankadreman chemine sou tèt ankadreman chemine prensipal yo, 424 00:35:54,890 --> 00:35:59,700 epi nou te gen varyab yo ki swap te lè l sèvi avèk sou tèt varyab yo ki prensipal te lè l sèvi avèk. 425 00:35:59,700 --> 00:36:08,440 Isit la aksidan nou te rive nan fonksyon strkan nou an, ki te aple pa fonksyon prensipal nou an, 426 00:36:08,440 --> 00:36:14,370 ak baktras an, ap ban nou pou nou pa sèlman fonksyon yo nan ki bagay sa yo echwe, 427 00:36:14,370 --> 00:36:16,440 men li la tou di nou kote tout bagay te rele nan. 428 00:36:16,440 --> 00:36:18,830 Se konsa, si mwen woulo liv sou yon ti kras pi plis sou bò dwat la, 429 00:36:18,830 --> 00:36:26,110 nou ka wè ki yeah, nou tout nou te sou liy 254 sa a ranpli strkan-sse4.s. 430 00:36:26,110 --> 00:36:32,540 Men, te rele nan te fè nan buggy1.c, liy 6. 431 00:36:32,540 --> 00:36:35,960 Se konsa, sa vle di nou ka fè - se nou ka jis ale tcheke deyò ak wè sa ki te pral sou 432 00:36:35,960 --> 00:36:39,930 nan buggy1.c, liy 6. 433 00:36:39,930 --> 00:36:43,780 Yon fwa ankò, gen yon fason koup fè sa. Youn nan se sòti soti nan gdb 434 00:36:43,780 --> 00:36:49,460 oswa ki gen kòd ou a louvri nan yon lòt fenèt ak referans kwa. 435 00:36:49,460 --> 00:36:54,740 Sa, nan ak tèt li, se bèl sou la men paske koulye a si w ap nan lè biwo louvri 436 00:36:54,740 --> 00:36:57,220 ak ou te gen yon fay segman ak tf ou a mande ki kote tout bagay te kraze, 437 00:36:57,220 --> 00:36:59,710 ou ka jis di, "Oh, liy 6. Mwen pa konnen sa k ap pase sou li a, 438 00:36:59,710 --> 00:37:03,670 men yon bagay sou liy 6 ki lakòz pwogram mwen yo chire. " 439 00:37:03,670 --> 00:37:10,430 Nan lòt fason fè li se ou ka itilize lòd sa a yo rele lis nan gdb. 440 00:37:10,430 --> 00:37:13,650 Ou kapab tou abreje l 'ak l. 441 00:37:13,650 --> 00:37:18,910 Se konsa, si nou frape l, ki sa nou jwenn isit la? 442 00:37:18,910 --> 00:37:21,160 Nou jwenn yon pakèt antye nan bagay etranj. 443 00:37:21,160 --> 00:37:26,030 Sa a se kòd la asanble aktyèl 444 00:37:26,030 --> 00:37:29,860 ki nan strcmp_sse4_2. 445 00:37:29,860 --> 00:37:32,440 Sa a sanble kalite fenki, 446 00:37:32,440 --> 00:37:36,520 ak rezon an nou ap vin sa a se paske kounye a, 447 00:37:36,520 --> 00:37:40,160 Gdb gen nou nan ankadreman 0. 448 00:37:40,160 --> 00:37:43,070 >> Se konsa, nenpòt lè nou gade varyab, nenpòt ki lè nou gade nan kòd sous, 449 00:37:43,070 --> 00:37:50,530 nou ap chèche nan kòd sous ki konsène ankadreman an pil nou ap kounye a pous 450 00:37:50,530 --> 00:37:53,200 Se konsa, nan lòd jwenn anyen serye, nou bezwen 451 00:37:53,200 --> 00:37:57,070 ale nan yon ankadreman chemine ki fè sans pi plis. 452 00:37:57,070 --> 00:38:00,180 Nan ka sa a, ankadreman an pil prensipal ta fè yon ti kras plis sans, 453 00:38:00,180 --> 00:38:02,680 paske sa ki te aktyèlman kòd la ke nou te ekri. 454 00:38:02,680 --> 00:38:05,330 Pa kòd la strkan. 455 00:38:05,330 --> 00:38:08,650 Nan fason ou kapab deplase ant ankadreman li yo, nan ka sa a, paske nou gen de, 456 00:38:08,650 --> 00:38:10,430 nou gen 0 ak 1, 457 00:38:10,430 --> 00:38:13,650 ou fè sa ak moute a ak kòmandman desann. 458 00:38:13,650 --> 00:38:18,480 Si mwen demenaje moute yon sèl ankadreman, 459 00:38:18,480 --> 00:38:21,770 kounye a mwen nan ankadreman an pil prensipal la. 460 00:38:21,770 --> 00:38:24,330 Mwen kapab deplase desann pou tounen nan kote mwen te ye a, 461 00:38:24,330 --> 00:38:32,830 moute ankò, desann ankò, epi ale kanpe ankò. 462 00:38:32,830 --> 00:38:39,750 Si ou janm fè pwogram ou an nan gdb, ou jwenn yon aksidan, ou jwenn baktras a, 463 00:38:39,750 --> 00:38:42,380 epi ou wè ke li nan nan kèk dosye ke ou pa konnen ki sa k ap pase. 464 00:38:42,380 --> 00:38:45,460 Ou eseye lis, kòd la pa gade abitye nou la a, 465 00:38:45,460 --> 00:38:48,150 pran yon gade nan ankadreman ou ak konnen ki kote ou ye a. 466 00:38:48,150 --> 00:38:51,010 W ap pwobableman nan ankadreman an pil ki mal. 467 00:38:51,010 --> 00:38:58,760 Oswa omwen w ap nan yon ankadreman chemine ki se pa yon sèl ke ou ka reyèlman dbug. 468 00:38:58,760 --> 00:39:03,110 Kounye a ke nou ap nan ankadreman an pil ki apwopriye, nou ap nan prensipal yo, 469 00:39:03,110 --> 00:39:08,100 kounye a nou kapab itilize yo lòd, ki lis konnen sa ki liy lan te ye. 470 00:39:08,100 --> 00:39:13,590 Epi ou ka wè l '; li enprime li pou nou isit la menm. 471 00:39:13,590 --> 00:39:19,470 Men, nou ka frape lis tout menm bagay la tou, ak lis sa a ba nou kopi enprime bèl 472 00:39:19,470 --> 00:39:23,920 nan kòd la sous aktyèl ki k ap pase nan isit la. 473 00:39:23,920 --> 00:39:26,420 >> An patikilye, nou ka gade nan liy 6. 474 00:39:26,420 --> 00:39:29,330 Nou ka wè sa k ap pase sou isit la. 475 00:39:29,330 --> 00:39:31,250 Ak li sanble nou ap fè yon konparezon fisèl 476 00:39:31,250 --> 00:39:41,050 ant fisèl "CS50 wòch yo" ak argv [1]. 477 00:39:41,050 --> 00:39:45,700 Yon bagay sou sa a te ekraze. 478 00:39:45,700 --> 00:39:54,120 Se konsa, Missy, ou gen nenpòt panse sou sa ki ta ka ale sou isit la? 479 00:39:54,120 --> 00:39:59,400 [Missy] Mwen pa konnen poukisa li la ekraze. >> Ou pa konnen poukisa li la ekraze? 480 00:39:59,400 --> 00:40:02,700 Jimmy, nenpòt panse? 481 00:40:02,700 --> 00:40:06,240 [Jimmy] mwen pa antyèman asire w, men dènye tan an nou itilize fisèl konpare, 482 00:40:06,240 --> 00:40:10,260 oswa strkan, nou te gen tankou twa ka diferan anba l '. 483 00:40:10,260 --> 00:40:12,800 Nou pa t 'gen yon ==, mwen pa kwè, dwa nan ki liy an premye. 484 00:40:12,800 --> 00:40:16,700 Olye de sa li te separe an twa, ak yon te == 0, 485 00:40:16,700 --> 00:40:19,910 yon sèl te <0, mwen panse ke, ak yon te> 0. 486 00:40:19,910 --> 00:40:22,590 Se konsa, petèt yon bagay tankou sa? >> Yeah. Se konsa, gen nan pwoblèm sa a 487 00:40:22,590 --> 00:40:27,200 nan n'ap fè konparezon an kòrèkteman? 488 00:40:27,200 --> 00:40:31,660 Stella? Nenpòt panse? 489 00:40:31,660 --> 00:40:38,110 [Stella] Mwen pa si. >> Pa sèten. Danyèl? Panse? Oke. 490 00:40:38,110 --> 00:40:44,770 Li vire soti sa k ap pase dwa isit la se lè nou kouri pwogram nan 491 00:40:44,770 --> 00:40:48,370 epi nou te resevwa fay la segman, lè ou kouri pwogram nan pou premye fwa, Danyèl, 492 00:40:48,370 --> 00:40:50,800 ou te ba li nenpòt agiman liy komand yo ye? 493 00:40:50,800 --> 00:40:58,420 [Danyèl] No >> No Nan ka sa a, ki sa ki valè a nan argv [1]? 494 00:40:58,420 --> 00:41:00,920 >> Pa gen okenn valè. Dwa >>. 495 00:41:00,920 --> 00:41:06,120 Oke, pa gen okenn valè fisèl ki apwopriye yo. 496 00:41:06,120 --> 00:41:10,780 Men, gen kèk valè. Ki valè ki vin estoke nan genyen? 497 00:41:10,780 --> 00:41:15,130 >> Yon valè fatra? >> Li nan swa yon valè fatra, oubyen, nan ka sa a, 498 00:41:15,130 --> 00:41:19,930 se nan fen etalaj la argv toujou sispann ak nil. 499 00:41:19,930 --> 00:41:26,050 Se konsa, sa ki aktyèlman te resevwa ki estoke nan gen nil. 500 00:41:26,050 --> 00:41:30,810 Nan lòt fason yo rezoud sa a, olye ke panse a li, 501 00:41:30,810 --> 00:41:33,420 se eseye enprime li soti. 502 00:41:33,420 --> 00:41:35,880 Sa a se kote mwen te di ke lè l sèvi avèk gdb se gwo, 503 00:41:35,880 --> 00:41:40,640 paske ou kapab enprime soti tout varyab yo, tout valè yo ke w vle 504 00:41:40,640 --> 00:41:43,230 lè l sèvi avèk sa a sou la men-élégan p lòd. 505 00:41:43,230 --> 00:41:48,520 Se konsa, si mwen tape p ak Lè sa a, mwen tape valè a nan yon varyab oswa non an nan yon varyab, 506 00:41:48,520 --> 00:41:55,320 di, arg, mwen wè ke arg se 1. 507 00:41:55,320 --> 00:42:01,830 Si m 'vle enprime soti argv [0], mwen ka fè sa jis tankou sa. 508 00:42:01,830 --> 00:42:04,840 Li te tankou nou te wè, argv [0] se toujou non an nan pwogram ou an, 509 00:42:04,840 --> 00:42:06,910 toujou non an nan ègzèkutabl la. 510 00:42:06,910 --> 00:42:09,740 La a ou wè li nan te resevwa non an chemen plen. 511 00:42:09,740 --> 00:42:15,920 Mwen ka tou enprime soti argv [1] ak wè sa ki rive. 512 00:42:15,920 --> 00:42:20,890 >> Isit la nou te resevwa sa a kalite valè mistik. 513 00:42:20,890 --> 00:42:23,890 Nou te jwenn sa a 0x0. 514 00:42:23,890 --> 00:42:27,850 Sonje nan kòmansman an nan tèm nan lè nou te pale osijè de nimewo ekzadesimal? 515 00:42:27,850 --> 00:42:34,680 Oswa ke kesyon ti kras nan fen pset 0 sou jan yo ka reprezante 50 nan Egzagòn? 516 00:42:34,680 --> 00:42:39,410 Wout la nou ekri nonb Egzagòn nan CS, jis yo pa gen konfizyon tèt nou 517 00:42:39,410 --> 00:42:46,080 avèk chif desimal, se nou toujou prefiks yo ak 0x. 518 00:42:46,080 --> 00:42:51,420 Se konsa, sa a prefiks 0x toujou jis vle di entèprete nimewo ki anba la a kòm yon nimewo ekzadesimal, 519 00:42:51,420 --> 00:42:57,400 pa tankou yon kòd, pa kòm yon nonb desimal, pa kòm yon nimewo binè. 520 00:42:57,400 --> 00:43:02,820 Depi nimewo a 5-0 se yon nimewo valid nan ekzadesimal. 521 00:43:02,820 --> 00:43:06,240 Ak li nan yon nimewo nan desimal, 50. 522 00:43:06,240 --> 00:43:10,050 Se konsa, sa a se jis ki jan nou disambiguate. 523 00:43:10,050 --> 00:43:14,860 Se konsa, 0x0 vle di ekzadesimal 0, ki se tou desimal 0, binè 0. 524 00:43:14,860 --> 00:43:17,030 Se jis nan 0 a valè. 525 00:43:17,030 --> 00:43:22,630 Li sanble ke sa a se sa nil se, aktyèlman, nan memwa. 526 00:43:22,630 --> 00:43:25,940 Nil se jis 0. 527 00:43:25,940 --> 00:43:37,010 Isit la, eleman an ki estoke nan argv [1] se nil. 528 00:43:37,010 --> 00:43:45,220 Se konsa, nou ap eseye konpare nou "CS50 wòch" fisèl nan yon fisèl nil. 529 00:43:45,220 --> 00:43:48,130 Se konsa, dereferencing nil, ap eseye gen aksè a bagay sa yo nan nil, 530 00:43:48,130 --> 00:43:55,050 sa yo yo, se tipikman pral lakòz kèk sòt de fòt segmentation oswa lòt move bagay rive. 531 00:43:55,050 --> 00:43:59,350 Epi li sanble ke strkan pa tcheke wè 532 00:43:59,350 --> 00:44:04,340 si ou pa ou te ki te pase nan yon valè ki nan nil. 533 00:44:04,340 --> 00:44:06,370 Olye de sa, li jis ale pi devan, eseye fè bagay li yo, 534 00:44:06,370 --> 00:44:14,640 ak li si li segman fot, li segman fot, epi li pwoblèm ou. Ou gen ale fikse li. 535 00:44:14,640 --> 00:44:19,730 Vrèman byen vit, ki jan ta ka nou ranje pwoblèm sa a? Charlotte? 536 00:44:19,730 --> 00:44:23,540 [Charlotte] Ou ka tcheke lè l sèvi avèk si. 537 00:44:23,540 --> 00:44:32,240 Se konsa, si argv [1] se nil, == 0, Lè sa a, retounen 1, oswa yon bagay [enkonpreansibl]. 538 00:44:32,240 --> 00:44:34,590 >> Yeah. Se konsa, sa a, se yon sèl bon fason fè li, kòm nou ka tcheke yo wè, 539 00:44:34,590 --> 00:44:39,230 valè a nou ap sou yo pase nan strkan, argv [1], se li nil? 540 00:44:39,230 --> 00:44:45,830 Si nil li a, Lè sa a, nou ka di oke, avote. 541 00:44:45,830 --> 00:44:49,450 >> Yon fason ki pi komen fè sa a se sèvi ak valè a arg. 542 00:44:49,450 --> 00:44:52,040 Ou ka wè isit la nan kòmansman an nan prensipal yo, 543 00:44:52,040 --> 00:44:58,040 nou manke ki tès premye ke nou tipikman fè lè nou itilize agiman liy lòd, 544 00:44:58,040 --> 00:45:05,240 ki se li teste si wi ou non valè arg nou an, se sa nou atann. 545 00:45:05,240 --> 00:45:10,290 Nan ka sa a, nou ap tann omwen de agiman, 546 00:45:10,290 --> 00:45:13,660 non an nan pwogram nan plis yon lòt. 547 00:45:13,660 --> 00:45:17,140 Paske nou sou yo sèvi ak agiman nan dezyèm isit la menm. 548 00:45:17,140 --> 00:45:21,350 Se konsa, gen kèk sòt de tès davans, anvan rele strkan nou 549 00:45:21,350 --> 00:45:37,390 ke tès si ou pa argv se omwen 2, ta fè tou sòt nan menm nan bagay sa yo. 550 00:45:37,390 --> 00:45:40,620 Nou ka wè si ki travay pa kouri pwogram nan ankò. 551 00:45:40,620 --> 00:45:45,610 Ou ka toujou rekòmanse pwogram ou an nan lespas gdb, ki se reyèlman bèl. 552 00:45:45,610 --> 00:45:49,310 Ou ka kouri, ak ki lè ou pase nan agiman nan pwogram ou an, 553 00:45:49,310 --> 00:45:53,060 ou pase yo nan Lè ou rele kouri, pa lè ou bòt moute gdb. 554 00:45:53,060 --> 00:45:57,120 Nan fason sa a ou kapab kenbe envoke pwogram ou an ak agiman diferan chak fwa. 555 00:45:57,120 --> 00:46:08,080 Se konsa, kouri, oswa ankò, mwen ka tape r, e kite yo wè sa ki rive si nou tape "alo". 556 00:46:08,080 --> 00:46:11,140 Li ap toujou mande ou si ou vle kòmanse li depi nan konmansman an ankò. 557 00:46:11,140 --> 00:46:17,490 Anjeneral, ou vle kòmanse li depi nan konmansman an ankò. 558 00:46:17,490 --> 00:46:25,010 Ak nan pwen sa a, li rdemaraj l 'ankò, li simagri soti 559 00:46:25,010 --> 00:46:28,920 pwogram lan ke nou ap kouri, buggy1, ak agiman sa hello, 560 00:46:28,920 --> 00:46:32,720 epi li simagri sa a soti estanda; li di, "Ou jwenn yon D," tris fas. 561 00:46:32,720 --> 00:46:37,610 Men, nou pa t 'segman fay. Li te di ke pwosesis soti nan nòmalman. 562 00:46:37,610 --> 00:46:39,900 Se konsa, ki sanble trè bon. 563 00:46:39,900 --> 00:46:43,050 San se pa fòt plis segman, nou te fè li sot pase yo, 564 00:46:43,050 --> 00:46:48,190 Se konsa li sanble nou te depoze pinèz la fòt segman ki nou te resevwa. 565 00:46:48,190 --> 00:46:51,540 Malerezman, li di nou ke nou ap vin yon D. 566 00:46:51,540 --> 00:46:54,090 >> Nou kapab ale retounen lakay yo epi gade nan kòd la ak wè sa ki te pral sou la 567 00:46:54,090 --> 00:46:57,980 konnen sa ki te - pou ki sa li te vle di nou ke nou te resevwa yon D. 568 00:46:57,980 --> 00:47:03,690 Ann gade pou wè, isit la sa a te printf di ke ou te resevwa yon D. 569 00:47:03,690 --> 00:47:08,540 Si nou tape lis, jan ou kenbe ou tape lis, li kenbe iteration desann nan pwogram ou an, 570 00:47:08,540 --> 00:47:10,940 se konsa li pral montre w premye liy ki kèk nan pwogram ou an. 571 00:47:10,940 --> 00:47:15,450 Lè sa a, li pral montre w pwochen liy yo kèk, ak moso nan pwochen ak moso nan pwochen. 572 00:47:15,450 --> 00:47:18,240 Epi li pral kontinye eseye desann ale. 573 00:47:18,240 --> 00:47:21,180 Epi, koulye a nou pral jwenn nan "liy nimerik 16 se deyò limit yo,." 574 00:47:21,180 --> 00:47:23,940 Paske li sèlman gen 15 liy yo. 575 00:47:23,940 --> 00:47:30,310 Si w ap resevwa pwen sa a ak ou mande, "Ki sa m 'fè?" ou ka itilize yo lòd, ki èd. 576 00:47:30,310 --> 00:47:34,340 Sèvi ak ede ak Lè sa a, bay li non an nan yon lòd. 577 00:47:34,340 --> 00:47:36,460 Epi ou wè gdb a ap ban nou tout sa a sòt de bagay. 578 00:47:36,460 --> 00:47:43,870 Li di, "Ki pa gen okenn agiman, bay lis dis plis liy apre oswa alantou lis la anvan yo. 579 00:47:43,870 --> 00:47:47,920 Lis - bay lis liy ki dis anvan - " 580 00:47:47,920 --> 00:47:52,960 Se konsa, kite a eseye lè l sèvi avèk mwens lis. 581 00:47:52,960 --> 00:47:57,000 E ke bay lis liy ki 10 anvan; ou ka jwe otou ak lis yon ti jan. 582 00:47:57,000 --> 00:48:02,330 Ou kapab fè lis, lis -, ou ka menm bay lis yon nimewo, tankou lis 8, 583 00:48:02,330 --> 00:48:07,500 epi li pral lis liy ki alantou 10 liyn 8. 584 00:48:07,500 --> 00:48:10,290 Epi ou ka wè sa k ap pase sou isit la se ou te gen yon senp si lòt bagay. 585 00:48:10,290 --> 00:48:13,980 Si ou tape nan CS50 wòch, li simagri soti "Ou jwenn yon A." 586 00:48:13,980 --> 00:48:16,530 Otreman li simagri soti "Ou jwenn yon D." 587 00:48:16,530 --> 00:48:23,770 Bummer lavil la. Tout dwa. Wi? 588 00:48:23,770 --> 00:48:26,730 >> [Danyèl] Se konsa, lè Mwen te eseye fè CS50 wòch san yo pa quotes yo, 589 00:48:26,730 --> 00:48:29,290 li di "Ou ka resevwa yon D." 590 00:48:29,290 --> 00:48:32,560 Mwen te bezwen quotes yo jwenn li nan travay; poukisa se sa? 591 00:48:32,560 --> 00:48:38,490 >> Yeah. Li sanble ke lè - sa a se yon lòt kroustiyan plezi ti kras - 592 00:48:38,490 --> 00:48:47,900 lè ou kouri pwogram nan, si nou kouri li epi nou tape nan CS50 wòch, 593 00:48:47,900 --> 00:48:50,800 jis tankou Danyèl te di li te fè, epi ou frape Antre, 594 00:48:50,800 --> 00:48:52,870 li toujou ap di nou jwenn yon D. 595 00:48:52,870 --> 00:48:55,580 Ansanm ak kesyon an se, poukisa sa a ye? 596 00:48:55,580 --> 00:49:02,120 Epi li vire soti ke tou de tèminal nou yo ak gdb analizan sa yo kòm de prèv ki apa a. 597 00:49:02,120 --> 00:49:04,800 Paske lè gen nan yon espas, ki nan enplisit kòm 598 00:49:04,800 --> 00:49:08,730 agiman an premye te fini; agiman nan pwochen se sou yo kòmanse. 599 00:49:08,730 --> 00:49:13,260 Fason a konbine sa yo nan de, oswa regrèt sa, nan yon sèl agiman, 600 00:49:13,260 --> 00:49:18,510 se sèvi ak quotes yo. 601 00:49:18,510 --> 00:49:29,560 Se konsa, koulye a, si nou mete l 'nan quotes epi kouri l' ankò, nou jwenn yon A. 602 00:49:29,560 --> 00:49:38,780 Se konsa, jis rezume, pa gen okenn quotes, CS50 ak wòch yo parcouru kòm de prèv ki apa a. 603 00:49:38,780 --> 00:49:45,320 Avèk quotes, li te parcouru kòm youn agiman tout ansanm. 604 00:49:45,320 --> 00:49:53,070 >> Nou ka wè sa a ak yon breakpoint. 605 00:49:53,070 --> 00:49:54,920 Se konsa, lwen nou te te kouri pwogram nou an, ak li a te kouri 606 00:49:54,920 --> 00:49:58,230 jiskaske swa li segman fot oswa frape yon erè 607 00:49:58,230 --> 00:50:05,930 oswa jiskaske li te soti nan ak tout te gen totalman amann. 608 00:50:05,930 --> 00:50:08,360 Sa a se pa nesesèman bagay ki pi itil, paske pafwa 609 00:50:08,360 --> 00:50:11,840 ou gen yon erè nan pwogram ou an, men li pa nan sa ki lakòz yon fay segmentation. 610 00:50:11,840 --> 00:50:16,950 Li pa nan sa ki lakòz pwogram ou yo sispann oswa yon bagay tankou sa. 611 00:50:16,950 --> 00:50:20,730 Chemen an jwenn gdb poz pwogram ou an nan yon pwen an patikilye 612 00:50:20,730 --> 00:50:23,260 se yo mete yon breakpoint. 613 00:50:23,260 --> 00:50:26,520 Ou kapab swa fè sa a pa fikse yon breakpoint sou yon non fonksyon 614 00:50:26,520 --> 00:50:30,770 oswa ou ka mete yon breakpoint sou yon liy patikilye nan kòd. 615 00:50:30,770 --> 00:50:34,450 Mwen renmen yo mete breakpoints sou non fonksyon, paske - fasil a sonje, 616 00:50:34,450 --> 00:50:37,700 epi si ou ale aktyèlman nan epi chanje kòd sous ou a moute yon ti jan, 617 00:50:37,700 --> 00:50:42,020 Lè sa a, breakpoint ou a pral aktyèlman rete nan plas la menm nan kòd ou a. 618 00:50:42,020 --> 00:50:44,760 Lè nou konsidere ke si w ap itilize nimewo liy, ak nimewo yo liy chanje 619 00:50:44,760 --> 00:50:51,740 paske ou ajoute oswa efase kèk kòd, lè sa a breakpoints nou, yo tout totalman vise yo. 620 00:50:51,740 --> 00:50:58,590 Youn nan bagay ki mwen fè ki pi komen se mete yon breakpoint sou fonksyon prensipal la. 621 00:50:58,590 --> 00:51:05,300 Souvan mwen pral bòt moute gdb, mwen pral tape b prensipal yo, frape Antre, e ke pral mete yon breakpoint 622 00:51:05,300 --> 00:51:10,630 sou fonksyon prensipal ki jis di, "pran yon poz pwogram nan le pli vit ke ou kòmanse kouri," 623 00:51:10,630 --> 00:51:17,960 ak fason sa a, lè m 'kouri pwogram mwen an avèk, di, CS50 wòch kòm de prèv 624 00:51:17,960 --> 00:51:24,830 ak frape Antre, li vin fonksyon prensipal epi li sispann dwa nan liy an trè premye, 625 00:51:24,830 --> 00:51:30,620 dwa anvan li evalye fonksyon an strkan. 626 00:51:30,620 --> 00:51:34,940 >> Depi mwen Sarepta, koulye a mwen ka kòmanse mucking otou ak wè sa k ap pase sou 627 00:51:34,940 --> 00:51:40,250 ak tout nan varyab yo diferan ke yo te pase nan pwogram mwen an. 628 00:51:40,250 --> 00:51:43,670 Men mwen ka enprime soti arg ak wè sa ki ap pase. 629 00:51:43,670 --> 00:51:50,030 Wè ke arg se 3, paske li te resevwa nan 3 valè diferan nan li. 630 00:51:50,030 --> 00:51:54,060 Li nan te resevwa non an nan pwogram nan, li nan te resevwa agiman an premye epi bay agiman, dezyèm lan. 631 00:51:54,060 --> 00:52:09,330 Nou ka enprime sa yo soti nan gade argv [0], argv [1], ak argv [2]. 632 00:52:09,330 --> 00:52:12,030 Se konsa, kounye a ou ka tou wè poukisa sa a rele strkan ki pral echwe, 633 00:52:12,030 --> 00:52:21,650 paske ou wè ke li t 'fann moute CS50 a ak wòch yo nan de agiman ki apa a. 634 00:52:21,650 --> 00:52:27,250 Nan pwen sa a, yon fwa ou te frape yon breakpoint, ou ka kontinye nan etap nan pwogram ou an 635 00:52:27,250 --> 00:52:32,920 liy pa liy, kòm opoze a kòmanse pwogram ou an ankò. 636 00:52:32,920 --> 00:52:35,520 Se konsa, si ou pa vle kòmanse pwogram ou an ankò, li jis kontinye sou soti isit la, 637 00:52:35,520 --> 00:52:41,970 ou ka itilize lòd yo kontinye epi kontinye ap kouri pwogram nan nan fen an. 638 00:52:41,970 --> 00:52:45,010 Jis tankou li te fè isit la. 639 00:52:45,010 --> 00:52:54,880 Men tou, si mwen rekòmanse pwogram nan, CS50 wòch, li frape breakpoint mwen ankò, 640 00:52:54,880 --> 00:52:59,670 ak tan sa a, si mwen pa vle jis ale tout wout la nan rès la nan pwogram nan, 641 00:52:59,670 --> 00:53:08,040 M ka sèvi ak yo lòd, ki pwochen, ki mwen menm mwen te abreje avèk n. 642 00:53:08,040 --> 00:53:12,960 Ak sa a pral etap nan liy lan pwogram nan liy. 643 00:53:12,960 --> 00:53:17,530 Se konsa, ou ka gade kòm bagay sa yo egzekite, kòm varyab chanjman, kòm bagay sa yo jwenn ajou. 644 00:53:17,530 --> 00:53:21,550 Ki se trè bèl. 645 00:53:21,550 --> 00:53:26,570 Bagay a lòt fre se olye ke repete lòd la menm sou yo ak sou yo ak sou ankò, 646 00:53:26,570 --> 00:53:30,670 si ou jis frape Antre nan - se konsa isit la ou wè mwen pa t 'tape nan anyen - 647 00:53:30,670 --> 00:53:33,780 si mwen jis frape Antre, li pral repete yo lòd, ki anvan, 648 00:53:33,780 --> 00:53:36,900 oswa yo lòd, ki gdb anvan ke mwen jis mete pous 649 00:53:36,900 --> 00:53:56,000 Mwen kapab kenbe frape Antre epi li pral kenbe kite nan liy kòd mwen pa liy. 650 00:53:56,000 --> 00:53:59,310 Mwen ta ankouraje w nèg ale tcheke deyò pwogram yo buggy lòt yo tou. 651 00:53:59,310 --> 00:54:01,330 Nou pa gen tan jwenn nan tout nan yo jodi a nan seksyon. 652 00:54:01,330 --> 00:54:05,890 Kòd la sous ki gen la, se konsa ou kapab kalite wè sa k ap pase sou 653 00:54:05,890 --> 00:54:07,730 dèyè sèn nan, si ou jwenn vrèman kole, 654 00:54:07,730 --> 00:54:11,940 men omwen nan anpil, jis pratike Demarest moute gdb, 655 00:54:11,940 --> 00:54:13,940 kouri pwogram nan jiskaske li kraze sou ou, 656 00:54:13,940 --> 00:54:18,260 ap resevwa baktras a, lè n ap kalkile konnen ki sa ki fonksyone aksidan an te nan, 657 00:54:18,260 --> 00:54:24,450 sa ki liy li te sou li a, enprime soti kèk valè varyab, 658 00:54:24,450 --> 00:54:30,140 jis konsa ou jwenn yon santi yo pou li, paske ki pral reyèlman ede ou pwal pi devan. 659 00:54:30,140 --> 00:54:36,340 Nan pwen sa a, nou ap ale nan kite soti nan gdb, ki ou lè l sèvi avèk kite oswa jis q. 660 00:54:36,340 --> 00:54:40,460 Si pwogram ou a se nan mitan an nan kouri toujou, epi li pa te soti nan, 661 00:54:40,460 --> 00:54:43,510 l ap toujou mande ou, "Èske ou w ke ou reyèlman vle kite fimen?" 662 00:54:43,510 --> 00:54:48,770 Ou ka jis frape wi. 663 00:54:48,770 --> 00:54:55,250 >> Koulye a, nou pwal fè yon gade nan pwoblèm nan pwochen nou gen, ki se pwogram nan chat. 664 00:54:55,250 --> 00:54:59,880 Si ou gade kout la sou Redireksyon ak tiyo, ou pral wè ke Tommy itilize pwogram sa a 665 00:54:59,880 --> 00:55:07,540 ki fondamantalman simagri tout randman de yon fichie nan yon ekran an. 666 00:55:07,540 --> 00:55:12,660 Se konsa, si mwen kouri chat, sa a se aktyèlman yon pwogram bati-an aparèy la, 667 00:55:12,660 --> 00:55:16,860 epi si w gen Macs ou ka fè sa sou Mac ou twò, si ou louvri moute tèminal. 668 00:55:16,860 --> 00:55:25,630 E nou - chat, kite la di, cp.c, ak frape Mete. 669 00:55:25,630 --> 00:55:29,640 Ki sa sa te fè, si nou woulo liv moute yon ti jan epi wè ki kote nou kouri liy lan, 670 00:55:29,640 --> 00:55:40,440 oswa kote nou kouri yo lòd, ki chat, li literalman jis enprime deyò sa ki nan cp.c ekran nou an. 671 00:55:40,440 --> 00:55:44,140 Nou ka kouri l 'ankò, epi ou ka mete nan dosye miltip yo ansanm. 672 00:55:44,140 --> 00:55:49,880 Se konsa, ou ka fè cp.c chat, ak Lè sa a, nou ka tou anchene dosye a cat.c, 673 00:55:49,880 --> 00:55:53,250 ki se pwogram lan nou ap sou yo ekri, 674 00:55:53,250 --> 00:55:58,140 epi li pral enprime tou de dosye tounen nan Retounen nan ekran nou an. 675 00:55:58,140 --> 00:56:05,490 Se konsa, si nou woulo liv moute yon ti jan, nou wè ke lè nou kouri sa a cp.c chat, cat.c, 676 00:56:05,490 --> 00:56:17,110 premye li soti enprime dosye a cp, ak Lè sa a, pi ba a li, li soti enprime dosye a cat.c dwa desann isit la. 677 00:56:17,110 --> 00:56:19,650 Nou pral itilize sa-a jis jwenn pye nou, mouye. 678 00:56:19,650 --> 00:56:25,930 Jwe otou ak enprime senp yo tèminal la, al wè ki jan ki travay. 679 00:56:25,930 --> 00:56:39,170 Si ou nèg louvri moute ak jdi cat.c, frape Antre, 680 00:56:39,170 --> 00:56:43,760 ou ka wè pwogram nan ke nou se sou ekri. 681 00:56:43,760 --> 00:56:48,980 Nou te enkli sa a plak kasrol bèl, konsa nou pa bezwen pase tan ou tape tout sa ki soti. 682 00:56:48,980 --> 00:56:52,310 Nou menm tou nou tcheke ki kantite agiman pase pous 683 00:56:52,310 --> 00:56:56,910 Nou enprime soti yon mesaj l 'bèl. 684 00:56:56,910 --> 00:57:00,950 >> Sa a se sòt nan nan bagay ki, ankò, tankou nou ve yo te ap pale de, 685 00:57:00,950 --> 00:57:04,490 li nan prèske tankou memwa nan misk. 686 00:57:04,490 --> 00:57:07,190 Senpleman sonje kenbe ap fè sòt nan menm nan bagay 687 00:57:07,190 --> 00:57:11,310 ak toujou enprime soti kèk sòt de mesaj itil 688 00:57:11,310 --> 00:57:17,670 pou ke moun yo konnen ki jan yo kouri pwogram ou an. 689 00:57:17,670 --> 00:57:21,630 Avèk chat, li la trè senp; nou ap jis pral ale nan tout nan agiman yo diferan 690 00:57:21,630 --> 00:57:24,300 ki te pase nan pwogram nou an, epi nou pral enprime 691 00:57:24,300 --> 00:57:29,950 sa yo soti nan ekran an yon sèl nan yon moman. 692 00:57:29,950 --> 00:57:35,670 Yo nan lòd yo enprime dosye soti nan ekran an, nou pwal fè yon bagay trè menm jan 693 00:57:35,670 --> 00:57:38,120 nan sa nou te fè sa nan fen egzamen an. 694 00:57:38,120 --> 00:57:45,350 Nan fen egzamen an, ki anboche pwogram nan, nou te louvri moute yon dosye li an, 695 00:57:45,350 --> 00:57:48,490 ak Lè sa a, nou te enprime li. 696 00:57:48,490 --> 00:57:54,660 Nan ka sa a, nou ap ale nan louvri moute yon dosye yo, epi nou ap ale nan li soti nan li olye. 697 00:57:54,660 --> 00:58:00,630 Lè sa a, nou pral enprime, olye pou yo nan yon dosye li an, nou pral enprime ekran an. 698 00:58:00,630 --> 00:58:05,830 Se konsa, enprime ekran an ou te fè anvan tout ak printf. 699 00:58:05,830 --> 00:58:08,290 Se konsa, sa a, se pa twò fou. 700 00:58:08,290 --> 00:58:12,190 Men, lekti yon dosye se kalite etranj. 701 00:58:12,190 --> 00:58:17,300 Nou pral pase nan ki ti jan yon ti kras nan yon tan. 702 00:58:17,300 --> 00:58:20,560 Si ou nèg tounen nan pwoblèm dènye sou egzamen ou an, pwoblèm 33, 703 00:58:20,560 --> 00:58:27,280 liy nan premye ke nou ap ale nan fè isit la, louvri dosye a, se trè menm jan ak sa nou te fè a. 704 00:58:27,280 --> 00:58:36,370 Se konsa, Stella, sa ki fè ke gade liy tankou, lè nou louvri yon dosye? 705 00:58:36,370 --> 00:58:47,510 [Stella] Kapital DOSYE *, dosye - >> Okay. >> - Ki egal a fopen. >> Wi. 706 00:58:47,510 --> 00:58:55,980 Ki nan ka sa a se? Li nan nan kòmantè a. 707 00:58:55,980 --> 00:59:06,930 >> Li nan nan kòmantè a? argv [mwen] epi r? 708 00:59:06,930 --> 00:59:11,300 >> Egzakteman. Dwa sou. Se konsa, Stella a totalman dwa. 709 00:59:11,300 --> 00:59:13,720 Sa a se sa liy lan sanble. 710 00:59:13,720 --> 00:59:19,670 Nou pwal yo ka resevwa yon varyab kouran ranpli, sere l 'nan yon * DOSYE, se konsa tout kaskèt, 711 00:59:19,670 --> 00:59:25,720 DOSYE, *, ak non sa a varyab pral dosye-a. 712 00:59:25,720 --> 00:59:32,250 Nou te ka rele li tou sa nou renmen. Nou te ka rele li first_file, oswa file_i, kèlkeswa sa nou ta renmen. 713 00:59:32,250 --> 00:59:37,590 Lè sa a, te non an nan dosye a ki te pase nan sou liy lan bay lòd nan pwogram sa a. 714 00:59:37,590 --> 00:59:44,450 Se konsa li ki estoke nan argv [mwen, a] ak Lè sa a, nou ap pral ouvè sa a dosye ki nan li mòd. 715 00:59:44,450 --> 00:59:48,100 Kounye a ke nou te louvri dosye a, sa ki nan bagay la ke nou toujou gen sonje fè 716 00:59:48,100 --> 00:59:52,230 chak fwa nou te louvri yon dosye? Fèmen li. 717 00:59:52,230 --> 00:59:57,220 Se konsa, Missy, ki jan nou fèmen yon dosye? 718 00:59:57,220 --> 01:00:01,020 [Missy] fkloz (ranpli) >> fkloz (ranpli). Egzakteman. 719 01:00:01,020 --> 01:00:05,340 Great. Oke. Si nou gade nan sa a fè kòmantè dwa isit la, 720 01:00:05,340 --> 01:00:11,940 li di, "Open argv [mwen] epi enprime sa li yo stdou." 721 01:00:11,940 --> 01:00:15,460 >> Creole soti se yon non etranj. Stdou se jis fason nou nan li di 722 01:00:15,460 --> 01:00:22,880 nou vle enprime li nan tèminal la; nou vle enprime li nan kouran an pwodiksyon estanda. 723 01:00:22,880 --> 01:00:26,450 Nou ka aktyèlman debarase m de sa a kòmantè dwa isit la. 724 01:00:26,450 --> 01:00:36,480 Mwen pral kopi li ak keratin li depi lè sa a sa nou te fè sa. 725 01:00:36,480 --> 01:00:41,290 Nan pwen sa a, kounye a nou gen li ti jan nan dosye pa ti jan. 726 01:00:41,290 --> 01:00:46,300 Nou te diskite yon koup nan fason nan lekti dosye. 727 01:00:46,300 --> 01:00:51,830 Kilès kòmandman sa yo yo se favorites ou a byen lwen tèlman? 728 01:00:51,830 --> 01:00:57,960 Ki fason ou wè oswa ou sonje, li dosye? 729 01:00:57,960 --> 01:01:04,870 [Danyèl] frèd? >> Frèd? Se konsa, frèd a se youn. Jimmy, ou konnen nenpòt lòt moun? 730 01:01:04,870 --> 01:01:12,150 [Jimmy] No >> Okay. Non. Charlotte? Alexander? Nenpòt lòt moun? Oke. 731 01:01:12,150 --> 01:01:20,740 Se konsa, yo menm ki lòt yo fgetc, se yon sèl ki nou pral sèvi ak yon anpil. 732 01:01:20,740 --> 01:01:26,410 Genyen tou fskanf; ou nèg wè yon modèl isit la? 733 01:01:26,410 --> 01:01:29,170 Yo tout yo kòmanse avèk f. Anyen fè ak yon dosye. 734 01:01:29,170 --> 01:01:35,260 Genyen nan frèd, fgetc, fskanf. Sa yo se tout nan fonksyon li yo. 735 01:01:35,260 --> 01:01:49,120 Pou ekri nou gen fwrite, nou gen fputc olye pou yo fgetc. 736 01:01:49,120 --> 01:01:58,250 Nou menm tou nou te fprintf renmen nou te wè sou egzamen an. 737 01:01:58,250 --> 01:02:01,680 Depi sa a se yon pwoblèm ki enplike nan lekti ki sòti nan yon dosye li an, 738 01:02:01,680 --> 01:02:04,940 nou pral sèvi ak youn nan twa sa yo fonksyon. 739 01:02:04,940 --> 01:02:10,890 Nou pa pwal yo sèvi ak sa yo fonksyon desann isit la. 740 01:02:10,890 --> 01:02:14,880 Fonksyon sa yo, yo tout yo te jwenn nan bibliyotèk la estanda mwen / O. 741 01:02:14,880 --> 01:02:17,510 Se konsa, si ou gade nan tèt la nan pwogram sa a, 742 01:02:17,510 --> 01:02:24,110 ou ka wè ke nou te deja enkli dosye a header pou bibliyotèk la estanda mwen / O. 743 01:02:24,110 --> 01:02:27,120 Si nou vle konnen ki youn nou vle itilize, 744 01:02:27,120 --> 01:02:29,690 nou ka toujou louvri moute paj sa yo moun. 745 01:02:29,690 --> 01:02:34,350 Se konsa, nou ka tape stdio nonm 746 01:02:34,350 --> 01:02:43,180 pou li epi li tout sou D 'a stdio ak fonksyon pwodiksyon nan C. 747 01:02:43,180 --> 01:02:49,870 Epi nou ka deja wè oh, gade. Li nan mansyone fgetc, li te mansyone fputc. 748 01:02:49,870 --> 01:02:57,220 Se konsa, ou ka fè egzèsis desann yon ti jan ak gade nan, di, fgetc 749 01:02:57,220 --> 01:03:00,060 ak gade nan paj nonm li yo. 750 01:03:00,060 --> 01:03:03,430 Ou ka wè ke li ale ansanm ak yon pakèt antye nan lòt fonksyon: 751 01:03:03,430 --> 01:03:12,640 fgetc, fje, getc, getchar, ap resevwa, ungetc, ak D 'li yo nan karaktè ak fisèl. 752 01:03:12,640 --> 01:03:19,180 Se konsa, sa a se ki jan nou li nan karaktè ak fisèl nan dosye soti nan opinyon estanda, 753 01:03:19,180 --> 01:03:21,990 ki se esansyèlman soti nan itilizatè lan. 754 01:03:21,990 --> 01:03:24,780 Ak sa a se jan nou fè li nan aktyèl C. 755 01:03:24,780 --> 01:03:30,850 Se konsa, sa a se pa sa lè l sèvi avèk GetString la ak fonksyon GetChar 756 01:03:30,850 --> 01:03:36,840 ke nou te itilize nan bibliyotèk la CS50. 757 01:03:36,840 --> 01:03:39,710 Nou pwal fè pwoblèm sa a nan yon koup nan fason 758 01:03:39,710 --> 01:03:43,430 pou ke ou ka wè de fason diferan nan fè li. 759 01:03:43,430 --> 01:03:48,490 Tou de fonksyon an frèd ki Danyèl mansyone ak fgetc se yon bon fason fè li. 760 01:03:48,490 --> 01:03:53,790 Mwen panse ke fgetc se yon ti kras pi fasil, paske li gen sèlman, jan ou wè la a, 761 01:03:53,790 --> 01:03:59,660 yon sèl agiman, a * DOSYE ke nou ap eseye li karaktè ki soti nan, 762 01:03:59,660 --> 01:04:02,740 ak valè retounen li yo se yon int. 763 01:04:02,740 --> 01:04:05,610 Ak sa a se yon ti kras konfizyon, dwa? 764 01:04:05,610 --> 01:04:11,450 >> Paske nou ap vin yon karaktè, konsa poukisa pa fè sa a retounen yon Char? 765 01:04:11,450 --> 01:04:18,700 Ou nèg gen nenpòt lide sou poukisa sa a pa ta ka retounen yon Char? 766 01:04:18,700 --> 01:04:25,510 [Missy repons, enkonpreansibl] >> Yeah. Se konsa, Missy nan totalman dwa. 767 01:04:25,510 --> 01:04:31,570 Si li nan ASCII, lè sa a ta ka sa a nonm antye dwe mappé nan yon Char vrè. 768 01:04:31,570 --> 01:04:33,520 Te kapab yon karaktè ASCII, ak sa a, se dwa. 769 01:04:33,520 --> 01:04:36,220 Sa a se egzakteman sa k ap pase. 770 01:04:36,220 --> 01:04:39,190 Nou ap sèvi ak yon int tou senpleman paske li gen plis miyèt moso. 771 01:04:39,190 --> 01:04:44,750 Li nan pi gwo pase yon Char; Char nou yo sèlman gen 8 Bits, ki 1 multiple sou 32-bit machin nou yo. 772 01:04:44,750 --> 01:04:48,520 Ak yon int gen vo tout bytes 4 'nan espas. 773 01:04:48,520 --> 01:04:50,940 Epi li vire soti nan fason sa a nan fgetc travay, 774 01:04:50,940 --> 01:04:53,940 si nou desann nan Rezime nou yo nan paj sa a nonm yon ti jan, 775 01:04:53,940 --> 01:05:05,000 woulo liv tout wout la desann. Li sanble ke yo itilize sa a valè espesyal ki rele èof. 776 01:05:05,000 --> 01:05:09,640 Li se yon konstan espesyal kòm valè a retounen nan fonksyon an fgetc 777 01:05:09,640 --> 01:05:14,570 chak fwa ou frape nan fen dosye a, oswa si ou jwenn yon erè. 778 01:05:14,570 --> 01:05:18,170 Epi li sanble ke yo fè konparezon sa yo ak èof byen, 779 01:05:18,170 --> 01:05:24,060 ou vle gen ki kantite lajan siplemantè nan enfòmasyon ki di ou gen nan yon int 780 01:05:24,060 --> 01:05:28,420 kòm opoze a lè l sèvi avèk yon varyab Char. 781 01:05:28,420 --> 01:05:32,130 Menm si fgetc se efektivman jwenn yon karaktè ki sòti nan yon dosye li an, 782 01:05:32,130 --> 01:05:38,450 ou vle sonje ke li ap retounen yon bagay ki nan int kalite ba ou. 783 01:05:38,450 --> 01:05:41,360 Sa te di, li nan jistis fasil yo itilize. 784 01:05:41,360 --> 01:05:44,960 Li nan pral bay nou yon karaktè, konsa tou tout sa nou dwe fè se kontinye mande dosye a, 785 01:05:44,960 --> 01:05:48,440 "Ban mwen karaktè kap vini an, ban m 'karaktè kap vini an, ban m' karaktè nan pwochen," 786 01:05:48,440 --> 01:05:51,400 jiskaske nou jwenn nan fen a nan dosye a. 787 01:05:51,400 --> 01:05:54,730 Ak ki pral rale nan yon karaktè nan yon moman nan dosye nou an, 788 01:05:54,730 --> 01:05:56,250 ak Lè sa a, nou ka fè tou sa nou renmen ak li. 789 01:05:56,250 --> 01:06:00,160 Nou ka magazen li, nou ka ajoute li nan yon fisèl, nou ka enprime li. 790 01:06:00,160 --> 01:06:04,630 Fè nenpòt nan sa. 791 01:06:04,630 --> 01:06:09,600 >> Zoum tounen soti ak pral tounen nan pwogram cat.c nou an, 792 01:06:09,600 --> 01:06:16,170 si nou ap ale nan sèvi ak fgetc, 793 01:06:16,170 --> 01:06:21,710 ki jan ta ka nou ap apwoche liy sa a pwochen nan kòd? 794 01:06:21,710 --> 01:06:26,020 Nou pral sèvi ak - frèd ap fè yon bagay yon ti kras diferan. 795 01:06:26,020 --> 01:06:32,600 Ak tan sa a, nou jis ap pwal itilize fgetc jwenn yon karaktè nan yon tan. 796 01:06:32,600 --> 01:06:40,910 Nan pwosesis yon dosye tout, ki sa ki ta ka nou dwe fè? 797 01:06:40,910 --> 01:06:44,030 Konbyen karaktè enprimri ki gen nan yon dosye? 798 01:06:44,030 --> 01:06:47,390 Gen yon anpil. Se konsa, ou pwobableman vle jwenn youn 799 01:06:47,390 --> 01:06:49,860 ak Lè sa a, jwenn yon lòt epi pou yo jwenn yon lòt epi pou yo jwenn yon lòt. 800 01:06:49,860 --> 01:06:53,330 Ki kalite algorithm ou panse nou ta ka gen yo sèvi ak isit la? 801 01:06:53,330 --> 01:06:55,470 Ki kalite -? [Alexander] A pou riban? >> Egzakteman. 802 01:06:55,470 --> 01:06:57,500 Gen kèk kalite riban. 803 01:06:57,500 --> 01:07:03,380 A pou riban se aktyèlman gwo, nan ka sa a. 804 01:07:03,380 --> 01:07:08,620 Li te tankou ou tap di, li son tankou ou vle yon riban sou dosye a tout antye, 805 01:07:08,620 --> 01:07:11,820 jwenn yon karaktè nan yon tan. 806 01:07:11,820 --> 01:07:13,850 Nenpòt sijesyon sou sa ki ki ta ka sanble? 807 01:07:13,850 --> 01:07:22,090 [Aleksann, enkonpreansibl] 808 01:07:22,090 --> 01:07:30,050 >> Okay, jis fè m 'konnen nan lang angle ki sa ou ap eseye fè? [Aleksann, enkonpreansibl] 809 01:07:30,050 --> 01:07:36,270 Se konsa, nan ka sa a, li son tankou nou ap jis ap eseye riban sou dosye a tout antye. 810 01:07:36,270 --> 01:07:45,330 [Alexander] Se konsa, mwen > Gwosè a nan -? 811 01:07:45,330 --> 01:07:49,290 Mwen devine gwosè a nan dosye a, dwa? Gwosè a - we'll jis ekri li tankou sa a. 812 01:07:49,290 --> 01:07:57,470 Kantite moun ki nan dosye pou tan an ke yo te, mwen + +. 813 01:07:57,470 --> 01:08:04,610 Se konsa, li sanble ke nan fason ou sa a lè l sèvi avèk fgetc, e sa se nouvo, 814 01:08:04,610 --> 01:08:10,460 se ke gen nan pa gen fason fasil jis jwenn gwosè a nan yon dosye 815 01:08:10,460 --> 01:08:16,979 ak sa a "sizof" di ki kalite konstwi ke ou te wè anvan. 816 01:08:16,979 --> 01:08:20,910 Lè nou itilize ki fonksyon fgetc, nou ap entwodwi kèk kalite 817 01:08:20,910 --> 01:08:29,069 nouvo, fenki sentaks sa a pou riban, kote olye pou yo lè l sèvi avèk jis yon kontwa debaz 818 01:08:29,069 --> 01:08:33,920 ale karaktè pa karaktè yo, nou ap ale nan rale yon karaktè nan yon moman, 819 01:08:33,920 --> 01:08:37,120 yon karaktè nan yon moman, ak wout la nou konnen nou se nan fen a 820 01:08:37,120 --> 01:08:41,290 se pa sa lè nou te konte yon sèten kantite karaktè, 821 01:08:41,290 --> 01:08:49,939 Men, lè pèsonaj la nou rale mete deyò se ke fen espesyal nan karaktè dosye-a. 822 01:08:49,939 --> 01:08:58,689 Se konsa, nou ka fè sa lè - Mwen rele sa a ch, epi nou ap ale nan inisyalize li 823 01:08:58,689 --> 01:09:08,050 ak premye rele nou jwenn karaktè nan premye soti nan dosye a. 824 01:09:08,050 --> 01:09:14,979 Se konsa, nan pati sa a isit la, sa a se pral jwenn yon karaktè soti nan dosye a 825 01:09:14,979 --> 01:09:20,840 epi estoke l 'nan ch la varyab. 826 01:09:20,840 --> 01:09:25,420 Nou pwal kontinye ap fè sa jiskaske nou jwenn nan fen a nan dosye a, 827 01:09:25,420 --> 01:09:41,170 ki nou fè nan fè tès pou pèsonaj la pa te egal a ki karaktè èof espesyal. 828 01:09:41,170 --> 01:09:48,750 Lè sa a, olye de fè ch + +, ki ta jis kantite valè a, 829 01:09:48,750 --> 01:09:52,710 Se konsa, si nou li yon soti A nan dosye a, yon kapital A, di, 830 01:09:52,710 --> 01:09:56,810 ch + + ap ban nou b, ak Lè sa a, nou ta jwenn c ak Lè sa a, d. 831 01:09:56,810 --> 01:09:59,310 Sa a se klèman pa ki sa nou vle. Ki sa nou vle isit la 832 01:09:59,310 --> 01:10:05,830 nan sa a ti jan pase a se nou vle jwenn karaktè nan pwochen nan dosye a. 833 01:10:05,830 --> 01:10:09,500 >> Se konsa, kouman ta ka nou jwenn karaktè nan pwochen nan dosye a? 834 01:10:09,500 --> 01:10:13,470 Ki jan nou jwenn karaktè nan premye nan dosye a? 835 01:10:13,470 --> 01:10:17,200 [Elèv] fgetfile? >> Fgetc, oswa, regrèt, ou yo te totalman dwa. 836 01:10:17,200 --> 01:10:20,470 Mwen mal ekri li dwa a. Se konsa, yeah. 837 01:10:20,470 --> 01:10:26,240 Isit la olye pou yo fè ch + +, 838 01:10:26,240 --> 01:10:29,560 nou ap jis pral rele fgetc (ranpli) ankò 839 01:10:29,560 --> 01:10:39,180 epi estoke rezilta a nan varyab menm ch nou an. 840 01:10:39,180 --> 01:10:43,730 [Kesyon elèv, enkonpreansibl] 841 01:10:43,730 --> 01:10:52,390 >> Sa a se kote mesye sa yo * DOSYE se espesyal. 842 01:10:52,390 --> 01:10:59,070 Chemen an, yo travay se yo - lè w ou fèk louvri - lè w ou fèk fè ki rele fopen, 843 01:10:59,070 --> 01:11:04,260 a * DOSYE efektivman sèvi kòm yon konsèy nan konmansman an nan dosye a. 844 01:11:04,260 --> 01:11:12,830 Lè sa a, chak fwa ou rele fgetc, l ap deplase yon karaktè nan dosye a. 845 01:11:12,830 --> 01:11:23,280 Se konsa, chak fwa ou rele sa a, w ap incrementing konsèy la dosye pa youn karaktè. 846 01:11:23,280 --> 01:11:26,210 Ak ki lè ou fgetc ankò, w ap deplase li yon lòt karaktè 847 01:11:26,210 --> 01:11:28,910 ak yon lòt karaktè ak yon lòt karaktè ak karaktè lòt. 848 01:11:28,910 --> 01:11:32,030 [Kesyon elèv, enkonpreansibl] >> Epi that's - yeah. 849 01:11:32,030 --> 01:11:34,810 Li nan kalite sa a majik anba kapo machin lan. 850 01:11:34,810 --> 01:11:37,930 Ou jis kenbe incrementing nan. 851 01:11:37,930 --> 01:11:46,510 Nan pwen sa a, ou ap kapab aktyèlman travay avèk yon karaktè. 852 01:11:46,510 --> 01:11:52,150 Se konsa, kouman ta ka nou enprime sa a soti nan ekran an, kounye a? 853 01:11:52,150 --> 01:11:58,340 Nou ka sèvi ak menm bagay la printf ke nou itilize anvan. 854 01:11:58,340 --> 01:12:00,330 Ke nou ve yo te lè l sèvi avèk tout semès la. 855 01:12:00,330 --> 01:12:05,450 Nou ka rele printf, 856 01:12:05,450 --> 01:12:21,300 epi nou ka pase nan pèsonaj la jis tankou sa. 857 01:12:21,300 --> 01:12:27,430 Yon lòt fason fè li se olye ke lè l sèvi avèk printf epi ki gen fè sa fisèl fòma, 858 01:12:27,430 --> 01:12:29,490 nou ka tou itilize youn nan fonksyon yo lòt. 859 01:12:29,490 --> 01:12:40,090 Nou ka sèvi ak fputc, ki simagri yon karaktè ekran an, 860 01:12:40,090 --> 01:12:52,580 eksepte si nou gade nan fputc - kite m 'rale soti yon ti jan. 861 01:12:52,580 --> 01:12:56,430 Nou wè sa ki nan bon se li pran nan pèsonaj la ke nou li soti lè l sèvi avèk fgetc, 862 01:12:56,430 --> 01:13:05,100 men Lè sa a, nou gen bay li yon kouran nan enprime a. 863 01:13:05,100 --> 01:13:11,850 Nou ka tou itilize fonksyon an putchar, ki pral mete dirèkteman nan soti estanda. 864 01:13:11,850 --> 01:13:16,070 Se konsa, gen yon pakèt antye nan opsyon diferan ke nou ka itilize pou enprime. 865 01:13:16,070 --> 01:13:19,580 Yo ap tout nan bibliyotèk la estanda mwen / O. 866 01:13:19,580 --> 01:13:25,150 Nenpòt lè ou vle enprime - pou printf, pa default, pral enprime estanda a espesyal soti kouran, 867 01:13:25,150 --> 01:13:27,910 ki se ki stdou. 868 01:13:27,910 --> 01:13:41,300 Se konsa, nou ka jis gade nan li kòm kalite sa a valè majik, stdou nan isit la. 869 01:13:41,300 --> 01:13:48,410 Wouch. Mete virgules deyò a. 870 01:13:48,410 --> 01:13:52,790 >> Sa a se yon anpil nan nouvo, enfòmasyon fenki nan isit la. 871 01:13:52,790 --> 01:13:58,600 Yon anpil nan sa a se trè idyomatik an, nan sans ke sa a se kòd 872 01:13:58,600 --> 01:14:05,700 sa ki ekri nan fason sa a jis paske li nan pwòp li, fasil li. 873 01:14:05,700 --> 01:14:11,520 Gen anpil fason diferan nan fè l ', anpil fonksyon diferan ou ka itilize, 874 01:14:11,520 --> 01:14:14,680 men nou yo gen tandans jis swiv sa yo modèl menm sou yo ak sou. 875 01:14:14,680 --> 01:14:20,180 Se konsa, pa dwe etone si ou wè kòd tankou sa a k'ap moute ankò epi ankò. 876 01:14:20,180 --> 01:14:25,690 Tout dwa. Nan pwen sa a, nou bezwen kraze pou jounen an. 877 01:14:25,690 --> 01:14:31,300 Mèsi pou vini yo. Mèsi pou l ap gade si ou se sou entènèt. Epitou, n ap wè ou an semèn pwochèn. 878 01:14:31,300 --> 01:14:33,890 [CS50.TV]