1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON HIRSCHHORN: Welcome të A5, të gjithë. 3 00:00:07,820 --> 00:00:11,270 Ne kemi një javë emocionuese përpara nesh, kryesisht për shkak se ka kaq shumë të reja 4 00:00:11,270 --> 00:00:12,350 përballet në këtë dhomë. 5 00:00:12,350 --> 00:00:12,920 Është e mrekullueshme. 6 00:00:12,920 --> 00:00:15,740 Një shumë prej jush jeni këtu rastësisht, e cila është edhe më mirë. 7 00:00:15,740 --> 00:00:18,220 Kështu që shpresojmë se ju do të mbani t'u bashkuar me ne. 8 00:00:18,220 --> 00:00:20,220 >> Këtë javë ne jemi duke shkuar për të shpenzuar pjesa më e madhe e seksionit 9 00:00:20,220 --> 00:00:21,870 përgatitur për quiz. 10 00:00:21,870 --> 00:00:26,580 Pra, për agjendën tonë, ne do të flasim pak për burime për klasë, 11 00:00:26,580 --> 00:00:30,350 por edhe për të quiz, dhe pastaj, përsëri, shpenzojnë pjesën më të madhe të klasit të folur 12 00:00:30,350 --> 00:00:31,390 për pyetje. 13 00:00:31,390 --> 00:00:33,900 Pasi ne jemi duke bërë përgjigjur tuaj pyetje, ose në qoftë se pyetjet tuaja 14 00:00:33,900 --> 00:00:39,010 natyrshëm na çojë në disa kodim, unë kanë probleme mostër nga midterms 15 00:00:39,010 --> 00:00:43,180 kaluara që ne do të kodojnë jetojnë në nenin së bashku që të sjellë deri disa të tjera 16 00:00:43,180 --> 00:00:45,420 Tema të mira për të mbuluar. 17 00:00:45,420 --> 00:00:48,280 >> Pra, së pari, siç e kemi kaluar nëpër të dy javëve të shkuara për të ju kujtoj 18 00:00:48,280 --> 00:00:51,700 djema, ka një ton të burimeve në dispozicion për këtë kurs. 19 00:00:51,700 --> 00:00:55,020 Shumë prej tyre do të jetë tepër e dobishme për ju si ju vazhdoni të 20 00:00:55,020 --> 00:00:57,280 studiuar për quiz 0, sepse kjo është të martën pasdite. 21 00:00:57,280 --> 00:00:59,630 Pra, të gjithë ju kanë qenë studiuar për një grimë. 22 00:00:59,630 --> 00:01:02,640 >> Ka shënime leksion dhe burimi kodin që ju duhet 23 00:01:02,640 --> 00:01:04,050 patjetër të shikoni. 24 00:01:04,050 --> 00:01:05,019 Watch pantallona të shkurtra. 25 00:01:05,019 --> 00:01:07,470 Kontrolloni study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 Dhe pastaj, të shënuara më poshtë, një numër e burimeve të tjera. 27 00:01:11,770 --> 00:01:14,020 >> Përsëri, quiz 0 është nesër në ora 1. 28 00:01:14,020 --> 00:01:18,230 Nëse ju nuk e keni bërë deri tani, kontrolloni jashtë Rreth Quiz 0 dokumentit për 29 00:01:18,230 --> 00:01:21,370 homepage kurs për të kuptoj se ku ju jeni duke marrë quiz. 30 00:01:21,370 --> 00:01:25,770 Quiz fillon at 1:10 dhe përfundon 70 minuta më vonë. 31 00:01:25,770 --> 00:01:29,610 Pra, nëse ju të tregojë deri pas 1:10 ju jeni do të merrni se shumë pak minuta 32 00:01:29,610 --> 00:01:30,940 shumë se 70 për të marrë quiz. 33 00:01:30,940 --> 00:01:33,570 Pra, sigurohuni që ju jeni atje në kohë. 34 00:01:33,570 --> 00:01:38,690 Nëse ju jeni një student zgjerim ose kanë disa konsiderata të tjera të testimit, ajo 35 00:01:38,690 --> 00:01:40,400 mund të mos jetë në 1:00 nesër. 36 00:01:40,400 --> 00:01:43,540 Por përsëri, kontrolloni Rreth Quiz 0 dokumentojnë për t'u siguruar që ju e dini kur 37 00:01:43,540 --> 00:01:44,760 ju jeni duke marrë quiz. 38 00:01:44,760 --> 00:01:46,440 I shkroi 75 minuta deri këtu. 39 00:01:46,440 --> 00:01:48,580 Unë mendoj se është e drejtë jo, 70. 40 00:01:48,580 --> 00:01:53,420 >> Ai mbulon të gjithë materialin nga një javë 0 në leksionin e javës së kaluar të mërkurën. 41 00:01:53,420 --> 00:01:59,350 Dhe përsëri, për këtë quiz, per se dokument, ju merrni një dy anë dhe 8 42 00:01:59,350 --> 00:02:03,770 1/2 nga 11 fletë letre që ju të merrni për të përdorur si shënime gjatë quiz. 43 00:02:03,770 --> 00:02:08,570 Shumë njerëz, në mos shumica e njerëzve, kanë gjetur se mënyra e vetme më e dobishme 44 00:02:08,570 --> 00:02:11,970 për të studiuar për quiz është që të të bëjë një fletë studim, një 45 00:02:11,970 --> 00:02:13,730 një-sider, e tyre. 46 00:02:13,730 --> 00:02:17,710 Pra, shikoni në ato të fundit, nëse ju keni parë ato të kaluara. 47 00:02:17,710 --> 00:02:19,960 Të arritur deri te miqtë për të parë atë ata janë vënë në tyre. 48 00:02:19,960 --> 00:02:23,610 >> Por duart-down, mënyra më e mirë që ju mund të Studimi është që të kalojnë nëpër çdo gjë dhe 49 00:02:23,610 --> 00:02:26,530 pres me thikë atë poshtë për atë që duhet apo duhet nuk i përkasin në atë fletë të 50 00:02:26,530 --> 00:02:30,570 letër, sepse kjo është vetëm një të vërtetë mënyrë e dobishme për ju për të siguruar 51 00:02:30,570 --> 00:02:33,620 ju jeni do me çdo gjë dhe kanë disa familjaritet me të. 52 00:02:33,620 --> 00:02:36,690 Shumica e njerëzve, ne gjejmë, edhe pse ata kanë fletë letre ulur të drejtë 53 00:02:36,690 --> 00:02:39,840 pranë tyre në quiz, nuk do të kthehet për të, për shkak se, përsëri, se shumë 54 00:02:39,840 --> 00:02:43,290 Procesi i kalon informacionit i ka ndihmuar ata të mësojnë atë. 55 00:02:43,290 --> 00:02:45,370 >> A ka dikush ndonjë pyetje rreth quiz 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 Ka të gjithë - 58 00:02:51,450 --> 00:02:53,230 Unë nuk jam duke shkuar për të bërë një shfaqje e duarve. 59 00:02:53,230 --> 00:02:53,550 S'ka gjë 60 00:02:53,550 --> 00:02:54,790 Unë do të pyes kush filloi duke studiuar. 61 00:02:54,790 --> 00:02:58,360 Por unë nuk dua të bëj ty të gjithë nuk ngrenë duart tuaja. 62 00:02:58,360 --> 00:03:01,290 Pra, si i tha - po, Avi, të shkojnë përpara. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Çfarë do të ishte një gjë e dobishme për të vënë në një të pager? 64 00:03:04,205 --> 00:03:05,875 >> STUDENT: Kjo është deri te ju. 65 00:03:05,875 --> 00:03:08,210 >> JASON HIRSCHHORN: Ju merrni për të përdorur gjykimin tuaj. 66 00:03:08,210 --> 00:03:13,220 Gjëra të dobishme për të vënë në një të pager, në qoftë se jeni të hutuar në lidhje me e madhe O 67 00:03:13,220 --> 00:03:17,510 Runtime të llojeve të ndryshme të kërkimeve dhe llojet, që vënë në atje në një 68 00:03:17,510 --> 00:03:18,760 Grafiku i dobishëm i shkëlqyer. 69 00:03:18,760 --> 00:03:22,250 Në këtë mënyrë, nëse ju jeni duke kërkuar që në quiz, ju nuk keni nevojë që të përpiqen dhe figura 70 00:03:22,250 --> 00:03:23,560 ajo jashtë apo arsye nëpërmjet duhur. 71 00:03:23,560 --> 00:03:24,730 Ju vetëm mund të kopjoni atë. 72 00:03:24,730 --> 00:03:28,320 Nëse ju shikoni në kuize kaluarën, shumë herë, nuk është drejtimin e pyetjeve në kohë. 73 00:03:28,320 --> 00:03:34,150 Kështu që do të ishte një shembull i një të mirë gjë për të vënë në tuaj një të pager. 74 00:03:34,150 --> 00:03:37,450 >> Gjëra të tjera të mira për të vënë në, në qoftë se ju jeni hutuar për mënyrën se si për të deklaruar një 75 00:03:37,450 --> 00:03:40,570 funksioni ose çfarë pjesë të ndryshme të Deklarata funksioni janë, shkruani 76 00:03:40,570 --> 00:03:43,400 që atje, një version generic dhe pastaj ndoshta një shembull. 77 00:03:43,400 --> 00:03:47,290 Nëse jeni të hutuar për pointers, një diagram se si pointers puna është 78 00:03:47,290 --> 00:03:48,660 ndoshta me të vërtetë të dobishme. 79 00:03:48,660 --> 00:03:52,440 Nëse jeni të hutuar për recursion, a mostrës funksion gjithkund rekursive në atje 80 00:03:52,440 --> 00:03:54,980 mund të provojë të jetë me të vërtetë të dobishme. 81 00:03:54,980 --> 00:03:57,290 A do të ju jap disa ide? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Ju duhet të kuptoni gjithë procesi që përpiluan, si 83 00:04:01,820 --> 00:04:03,220 se si të gjitha veprat? 84 00:04:03,220 --> 00:04:06,620 >> JASON HIRSCHHORN: Çdo gjë që ka qenë e mbuluar mund të 85 00:04:06,620 --> 00:04:08,060 shfaqen në quiz. 86 00:04:08,060 --> 00:04:08,930 Pyetje - 87 00:04:08,930 --> 00:04:11,300 por përsëri, disa gjëra do të jetë i peshuar rëndë se të tjerët. 88 00:04:11,300 --> 00:04:14,330 Disa gjëra kanë dalë përsëri dhe përsëri në klasë, në 89 00:04:14,330 --> 00:04:15,590 leksion, dhe seksioni. 90 00:04:15,590 --> 00:04:17,220 Gjëra të tjera nuk kanë dalë që shpesh. 91 00:04:17,220 --> 00:04:22,900 >> Ne kemi folur shumë për # përfshijnë dhe -L diçka dhe atë që ata do të thotë në 92 00:04:22,900 --> 00:04:24,390 proces hartimi. 93 00:04:24,390 --> 00:04:29,120 Ne kemi folur shumë për gdb, kapem, ato flamuj të ndryshme që ne përdorim kur 94 00:04:29,120 --> 00:04:33,100 ne përpilojnë diçka, dhe çfarë make15, për shembull, me të vërtetë 95 00:04:33,100 --> 00:04:34,510 do të thotë dhe të vërtetë ka. 96 00:04:34,510 --> 00:04:38,110 Ne nuk flasim sa më shumë rreth çdo hap të vetëm në 97 00:04:38,110 --> 00:04:39,240 proces hartimi. 98 00:04:39,240 --> 00:04:40,410 Ne kemi folur ende për të. 99 00:04:40,410 --> 00:04:42,550 Pra, kjo është ende diçka që ju duhet të jenë të njohur me të. 100 00:04:42,550 --> 00:04:44,610 Por përsëri, ne nuk do të jetë - 101 00:04:44,610 --> 00:04:49,140 gjëra që dalin më shpesh në klasë kanë më shumë gjasa për të dalë më shumë 102 00:04:49,140 --> 00:04:52,495 shpesh dhe të jetë më i rëndë ponderuar në quiz. 103 00:04:52,495 --> 00:04:53,280 >> Ftohtë. 104 00:04:53,280 --> 00:04:54,580 Çdo pyetje të tjera rreth quiz 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, kështu që kam vënë një listë të Temat në bord. 107 00:05:00,050 --> 00:05:01,550 Unë shkova me planin mësimor. 108 00:05:01,550 --> 00:05:07,340 Unë shkova përmes seksionit të shqyrtimit nga natën e kaluar dhe ato slides për të dalë 109 00:05:07,340 --> 00:05:13,710 me një listë jo shterruese e temave që ne kemi mbuluar deri më tani në CS50 110 00:05:13,710 --> 00:05:16,800 dhe gjëra që mund shfaqen në quiz. 111 00:05:16,800 --> 00:05:19,900 Kështu që unë nuk jam do të kalojnë nëpër çdo një të vetme prej tyre. 112 00:05:19,900 --> 00:05:22,370 Kjo do të marrë shumë më tepër kohë sesa që kemi tani. 113 00:05:22,370 --> 00:05:26,880 Por unë vënë këtë deri këtu për shpresë goditje e lehtë kujtesën tuaj, si për të gjëra që mund të 114 00:05:26,880 --> 00:05:28,420 ose nuk mund të jetë aq i njohur me ju. 115 00:05:28,420 --> 00:05:32,850 >> Dhe unë do të të duan të shpenzojnë më të madhe të Seksioni përgjigjur pyetjeve tuaja në lidhje me 116 00:05:32,850 --> 00:05:35,130 këto tema, tema që nuk janë të përfshira këtu. 117 00:05:35,130 --> 00:05:36,130 Ne mund të shkruani pseudo kodin. 118 00:05:36,130 --> 00:05:40,010 Ne mund të shkruani kodin e vërtetë për të siguruar që ju të - 119 00:05:40,010 --> 00:05:44,280 Unë mund të përgjigjem pyetjes tuaj dhe për të ndihmuar të gjithë e kuptojnë krejtësisht një 120 00:05:44,280 --> 00:05:48,330 Shumë nga këto tema kështu që ju do të ndiheni përgatitur dhe të rehatshme duke shkuar në 121 00:05:48,330 --> 00:05:50,150 nesër quiz. 122 00:05:50,150 --> 00:05:52,300 Pra, lexoni mbi listën. 123 00:05:52,300 --> 00:05:54,780 Ju shpresojmë se keni ardhur në nenin me disa pyetje si. 124 00:05:54,780 --> 00:05:58,480 Kur të jeni gati, ngrini dorën dhe ne do të ketë filluar. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Mbani në mend, pyetjet që ju keni, nuk ka pyetje budallaqe. 127 00:06:05,200 --> 00:06:06,250 Ne e kemi dëgjuar se shumë. 128 00:06:06,250 --> 00:06:09,490 Dhe pyetjet që ju keni, unë jam i gatshëm për bast, shumë njerëz të tjerë të dy 129 00:06:09,490 --> 00:06:11,740 ulur këtu dhe shikuar Online kanë si. 130 00:06:11,740 --> 00:06:13,770 Kështu që ju mund të ndihmojë vetëm njerëzit duke bërë pyetje. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: Në mes të rafte dhe tog, a ka një para-ndarë 133 00:06:18,040 --> 00:06:22,880 përqindja e kujtesës që është definuar si kjo eshte per pirg ose për grumbull? 134 00:06:22,880 --> 00:06:25,010 Ose si e bën atë punë, saktësisht? 135 00:06:25,010 --> 00:06:26,230 >> JASON HIRSCHHORN: pyetje e Madhe. 136 00:06:26,230 --> 00:06:28,640 Unë jam duke shkuar për të mbështetur pak gjurmë. 137 00:06:28,640 --> 00:06:30,910 A të gjithë - 138 00:06:30,910 --> 00:06:31,660 ju lutem jetë i sinqertë këtu. 139 00:06:31,660 --> 00:06:34,130 Unë e di unë jam duke kërkuar që ju të rritur tuaj dora para kolegët tuaj. 140 00:06:34,130 --> 00:06:38,510 Por a ka njerëz që ndihen pakëndshme me rafte dhe tog 141 00:06:38,510 --> 00:06:42,980 dhe do të donte për të shqyrtuar se dhe çfarë ata do të thotë? 142 00:06:42,980 --> 00:06:43,880 Ngritja dorën tuaj nëse - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Falemnderit. 145 00:06:45,120 --> 00:06:48,420 Pra, ne jemi duke shkuar për të shkuar mbi rafte dhe grumbull të vërtetë shpejt dhe më pas 146 00:06:48,420 --> 00:06:50,370 të shkojë në përgjigjur pyetjes tuaj. 147 00:06:50,370 --> 00:06:58,250 >> Pra, në qoftë se ne të nxjerrë një kuti për të përfaqësuar kujtesës në kompjuterin tuaj, cilat janë disa 148 00:06:58,250 --> 00:07:02,160 gjëra që shkojnë në këtë kuti? 149 00:07:02,160 --> 00:07:03,630 Kryesor. 150 00:07:03,630 --> 00:07:04,020 Një funksion kryesor. 151 00:07:04,020 --> 00:07:05,890 Ku kryesor të shkojnë? 152 00:07:05,890 --> 00:07:08,090 >> STUDENT: [padëgjueshme]. 153 00:07:08,090 --> 00:07:09,390 >> JASON HIRSCHHORN: Pra, ne do të vënë poshtë këtu kryesor. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Çfarë tjetër shkon në këtë kuti? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> STUDENT: Funksionet që ju telefononi. 158 00:07:18,140 --> 00:07:19,020 >> Jason Hirschhorn: Funksionet që ne e quajmë. 159 00:07:19,020 --> 00:07:20,440 Dhe ku mund ata të shkojnë? 160 00:07:20,440 --> 00:07:21,300 >> STUDENT: Në rafte. 161 00:07:21,300 --> 00:07:22,380 >> JASON HIRSCHHORN: Ata shkojnë në rafte. 162 00:07:22,380 --> 00:07:27,350 Pra, ne jemi duke shkuar për të thirrur këtë gjë e poshtë këtu rafte. 163 00:07:27,350 --> 00:07:31,880 Dhe deri të lartë, ne kemi tog. 164 00:07:31,880 --> 00:07:35,450 Pra, kujtesa nuk është një kuti të vetëm si kjo. 165 00:07:35,450 --> 00:07:37,330 Por në fakt është shumë e ngjashme. 166 00:07:37,330 --> 00:07:40,840 Ajo do të jetë një shumë e kutive mbi dhe mbi, në varësi se si e madhe tuaj 167 00:07:40,840 --> 00:07:43,730 kompjuteri është apo sa i madh është kujtesën tuaj. 168 00:07:43,730 --> 00:07:46,950 >> Në quote-mbyll thonjëzat "fund" është pirg. 169 00:07:46,950 --> 00:07:50,880 Dhe ka gjëra të shumta që shkojnë në rafte. 170 00:07:50,880 --> 00:07:53,840 Dhe ata të varet nga funksionet ju keni në kodin tuaj. 171 00:07:53,840 --> 00:07:57,780 Ju gjithmonë kanë një funksion në tuaj Kodi quajtur kryesor, kështu që ka gjithmonë një 172 00:07:57,780 --> 00:08:00,480 Seksioni poshtë këtu në rafte të përkushtuar për të kryesore. 173 00:08:00,480 --> 00:08:03,980 >> Këto seksione në rafte quhen korniza rafte. 174 00:08:03,980 --> 00:08:09,580 Kur ju telefononi një funksion tjetër, thonë kryesore e quan një funksion kërkimi binar, 175 00:08:09,580 --> 00:08:11,075 ne kemi vënë një tjetër kornizë në rafte. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Më konkretisht, ne do të dhurojë një pjesë të kujtesës mbi tona 178 00:08:17,320 --> 00:08:22,960 kompjuter për të ruajtur binar kërkim të lokale variablave dhe për të drejtuar binare 179 00:08:22,960 --> 00:08:24,150 Kodi kërko. 180 00:08:24,150 --> 00:08:26,810 >> Kështu që ne e quajmë kërko binar. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Në këtë copë të kujtesës, ne jemi duke shkuar për të ruajtur e saj variablat lokale. 183 00:08:33,340 --> 00:08:35,270 Ne jemi duke shkuar për të ruajtur thirrjet e saj printf. 184 00:08:35,270 --> 00:08:38,159 Çfarëdo që të ndodhë, se funksioni është do të ruhen të drejtë atje. 185 00:08:38,159 --> 00:08:40,350 Kërko binar është duke shkuar për të ekzekutuar. 186 00:08:40,350 --> 00:08:42,210 Ajo është duke shkuar për të përfunduar ekzekutimin. 187 00:08:42,210 --> 00:08:47,450 Çfarë është fjala në C që nënkupton që një funksion duhet 188 00:08:47,450 --> 00:08:49,306 të përfunduar zbatimin e tij? 189 00:08:49,306 --> 00:08:50,040 >> STUDENT: Kthimi. 190 00:08:50,040 --> 00:08:50,870 >> JASON HIRSCHHORN: Kthehu. 191 00:08:50,870 --> 00:08:53,230 Pra, sa herë që ju të shihni një deklaratë të kthimit, skajet funksion 192 00:08:53,230 --> 00:08:54,350 kur ajo godet atë. 193 00:08:54,350 --> 00:08:56,740 Kërko Pra binar do të goditur kthimin e tij. 194 00:08:56,740 --> 00:09:01,360 Kjo pjesë e kujtesës do të në thelb të lirohen deri. 195 00:09:01,360 --> 00:09:03,510 Dhe kryesor do të kthehem në ekzekutimin. 196 00:09:03,510 --> 00:09:07,240 Pra kryesor do të bëj një pauzë kudo që ishte, thirrje kërko binar, të merrni disa kthimi i vlerës, 197 00:09:07,240 --> 00:09:08,700 dhe vazhdojnë ekzekutimin. 198 00:09:08,700 --> 00:09:10,840 Kjo kornizë pirg do të shkojnë larg. 199 00:09:10,840 --> 00:09:14,810 >> Nëse ne e quajmë një funksion gjithkund rekursive, të cilat është një funksion që e quan veten mbi 200 00:09:14,810 --> 00:09:18,480 dhe mbi, ne mund të merrni - thonë se ne bëri kërko binar Recursively. 201 00:09:18,480 --> 00:09:21,520 Ne mund të merrni versionin e kërkimit binar një, kërko binar dy, kërko binar 202 00:09:21,520 --> 00:09:24,090 tre, kërko binar katër, kërko binar pesë. 203 00:09:24,090 --> 00:09:27,950 Dhe pastaj këtë kërkim përfundimtar binar pesë do të goditur rastin bazë, dhe rafte 204 00:09:27,950 --> 00:09:31,010 korniza do të shkojnë prapa dhe për të mbajtur mbylljen derisa ne të kthehemi në kryesore. 205 00:09:31,010 --> 00:09:32,530 Ne mund të shkojë mbi recursion në një grimë. 206 00:09:32,530 --> 00:09:35,530 Por e gjithë kjo do të thotë, nëse ju jeni duke e quajtur funksione të shumta në një kohë, 207 00:09:35,530 --> 00:09:39,250 do të ketë rafte të shumta korniza në rafte. 208 00:09:39,250 --> 00:09:42,900 >> Grumbull, nga ana tjetër, deri këtu, nuk është për funksionet, 209 00:09:42,900 --> 00:09:44,380 jo për variablat lokale. 210 00:09:44,380 --> 00:09:48,920 Është e ndarë në mënyrë dinamike variablave. 211 00:09:48,920 --> 00:09:57,210 Pra, këto janë variablat që mund të jenë initialized në qoftë kryesor ose një 212 00:09:57,210 --> 00:09:58,640 funksionojnë që thirrjet kryesore. 213 00:09:58,640 --> 00:10:00,790 Kudo në kodin tuaj, ata mund të niset. 214 00:10:00,790 --> 00:10:04,360 Dhe nisja e një dinamike ndarë ndryshueshme. 215 00:10:04,360 --> 00:10:06,970 Ajo që funksion në C i përdorim? 216 00:10:06,970 --> 00:10:07,600 >> STUDENT: malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON HIRSCHHORN: malloc. 218 00:10:09,240 --> 00:10:10,800 Ju telefononi malloc. 219 00:10:10,800 --> 00:10:12,260 Ju merrni një hapësirë ​​të kujtesës. 220 00:10:12,260 --> 00:10:15,020 Dhe kjo hapësirë ​​e kujtesës është në grumbull. 221 00:10:15,020 --> 00:10:18,840 Dhe kjo hapësirë ​​e kujtesës qëndron aty derisa të telefononi pa pagesë. 222 00:10:18,840 --> 00:10:22,670 >> Variablat Pra alokuara dinamike në grumbull do të ekzistojnë për aq kohë sa ju 223 00:10:22,670 --> 00:10:25,250 duam që ata të ekzistojnë, dhe ata nuk do të të shkojë larg deri në ju në mënyrë të qartë 224 00:10:25,250 --> 00:10:26,760 tregoni atyre për të shkuar larg. 225 00:10:26,760 --> 00:10:29,670 Ju mund të krijoni ato në një funksion. 226 00:10:29,670 --> 00:10:31,930 Rafte atë funksion-së kornizë do të shkojnë larg. 227 00:10:31,930 --> 00:10:35,490 Por kjo ndryshore do të ekzistojnë ende në grumbull deri sa ajo është e liruar, 228 00:10:35,490 --> 00:10:39,650 potencialisht nga funksioni që quhet kërko binar apo çfarëdo. 229 00:10:39,650 --> 00:10:42,580 >> Pra, këto variabla grumbull të qëndrojnë atje për aq kohë sa të doni 230 00:10:42,580 --> 00:10:43,490 ata të qëndrojnë atje. 231 00:10:43,490 --> 00:10:46,090 Dhe ata marrin të vënë këtu. 232 00:10:46,090 --> 00:10:47,450 Dhe pastaj një tjetër merr vënë atje. 233 00:10:47,450 --> 00:10:50,210 Ata mbajnë duke u plotësuar, dhe ata rrini aty derisa të telefononi pa pagesë. 234 00:10:50,210 --> 00:10:52,870 >> Dhe në thelb, grumbull dhe rafte, marrjen në pyetje Marcus-së, 235 00:10:52,870 --> 00:10:54,500 rritet ndaj njëri-tjetrit. 236 00:10:54,500 --> 00:10:57,730 Dhe në qoftë se ata të drejtuar në një tjetër, ju keni përdorur të gjithë kujtesën e në tuaj 237 00:10:57,730 --> 00:11:01,330 kompjuter, dhe programi juaj do të lë sepse ju nuk keni ndonjë memorie më shumë 238 00:11:01,330 --> 00:11:02,420 lënë për t'u përdorur. 239 00:11:02,420 --> 00:11:07,290 Në mes tyre, ka gjëra të potencialisht të tjera. 240 00:11:07,290 --> 00:11:10,980 Por për qëllimin e këtij kursi, ju nuk kanë nevojë të shqetësohen për këtë. 241 00:11:10,980 --> 00:11:12,020 >> Pra, kjo ishte përgjigja në pyetjen tuaj. 242 00:11:12,020 --> 00:11:13,520 Mos u shqetësoni. 243 00:11:13,520 --> 00:11:15,550 Por kjo ishte përgjigja e gjatë. 244 00:11:15,550 --> 00:11:17,800 Të gjithë ju duhet të dini është grumbull dhe rafte do të - 245 00:11:17,800 --> 00:11:18,900 një fillon në fund. 246 00:11:18,900 --> 00:11:19,570 Rafte bën. 247 00:11:19,570 --> 00:11:20,790 Tog është deri atje. 248 00:11:20,790 --> 00:11:21,990 Do rritet pranë njëri-tjetrit. 249 00:11:21,990 --> 00:11:23,110 >> Dhe në qoftë se të kontaktojnë, ky është një problem. 250 00:11:23,110 --> 00:11:24,500 Ju u jashtë kujtesës. 251 00:11:24,500 --> 00:11:28,760 Por gjithashtu, përveç ditur se ku ata janë, ajo që është ruajtur në të dy 252 00:11:28,760 --> 00:11:30,512 rafte dhe tog. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: Kur ata përplasen, është se një overflow rafte? 255 00:11:33,570 --> 00:11:35,670 >> JASON HIRSCHHORN: Kur ata përplasen, kjo nuk është një pirg del nga shtrati. 256 00:11:35,670 --> 00:11:38,340 A del nga shtrati rafte është një zonë të ndryshme që ne mund të shkojë mbi në qoftë se ju doni të. 257 00:11:38,340 --> 00:11:40,020 OK, ne do të vijnë përsëri në se në një grimë. 258 00:11:40,020 --> 00:11:42,730 >> STUDENT: Çfarë është fjala e quajtur kur ata goditur njëri tjetrin, 259 00:11:42,730 --> 00:11:44,450 rafte dhe tog? 260 00:11:44,450 --> 00:11:46,640 >> JASON HIRSCHHORN: Tani për tani, mos u shqetësoni për. 261 00:11:46,640 --> 00:11:47,750 Vetëm e di - 262 00:11:47,750 --> 00:11:50,530 Unë do të përgjigjem kësaj pyetje pas klasës. 263 00:11:50,530 --> 00:11:52,680 Nëse ata të drejtuar në njëri-tjetrin, ju u jashtë e kujtesës, sepse nuk ka më shumë 264 00:11:52,680 --> 00:11:53,330 hapësirë ​​atje. 265 00:11:53,330 --> 00:11:55,450 >> STUDENT: Na vjen keq, çfarë është një faj seg? 266 00:11:55,450 --> 00:11:58,710 >> JASON HIRSCHHORN: Një segment faji mund të quhet për - 267 00:11:58,710 --> 00:12:02,240 kjo varet se pse quhet faji seg-së. 268 00:12:02,240 --> 00:12:06,260 Ndonjëherë, del nga shtrati juaj rafte, ajo do të thonë seg faji si gabim. 269 00:12:06,260 --> 00:12:08,180 >> STUDENT: Po në lidhje me dereferencing një variabël null? 270 00:12:08,180 --> 00:12:10,040 A është ky një gabim seg? 271 00:12:10,040 --> 00:12:11,480 >> JASON HIRSCHHORN: Dereferencing një tregues null - 272 00:12:11,480 --> 00:12:17,850 OK, kështu që nëse ju keni një tregues që ju vendosur barabartë me null, pointers, risjell, 273 00:12:17,850 --> 00:12:20,270 adresat dyqan kujtesës si vlerat e tyre. 274 00:12:20,270 --> 00:12:23,660 Dhe një akrep null është në thelb ruajtjen 0, 0-të 275 00:12:23,660 --> 00:12:26,670 adresuar në atë variabël. 276 00:12:26,670 --> 00:12:30,010 Pra 0x, 0, 0, 0, 0, e të tjera. 277 00:12:30,010 --> 00:12:35,030 Kjo adresë 0-të në kujtim se nuk është e në foto tonë, kjo është deri atje 278 00:12:35,030 --> 00:12:38,800 diku, që është rezervuara për kompjuter. 279 00:12:38,800 --> 00:12:40,130 Ne nuk jemi të lejuar për të prekur atë. 280 00:12:40,130 --> 00:12:44,680 >> Pra, kur programi juaj është ekzekutuar, në qoftë se diçka është duke u përpjekur për të shkuar në kujtesë 281 00:12:44,680 --> 00:12:48,990 Adresa 0, ajo e di se që është një vlerë bosh. 282 00:12:48,990 --> 00:12:50,820 Ajo e di se asgjë nuk duhet të jetë atje. 283 00:12:50,820 --> 00:12:53,420 Pra, nëse ju provoni dhe të përdorni diçka atje dhe të trajtojnë si diçka atje apo 284 00:12:53,420 --> 00:12:58,355 duke u përpjekur për të shkuar në atë vend, ju jeni do të merrni një gabim seg apo një gabim. 285 00:12:58,355 --> 00:13:00,520 A do të përgjigjem pyetjes tuaj? 286 00:13:00,520 --> 00:13:03,170 >> Dhe tani ne do të kthehemi për të rafte del nga shtrati. 287 00:13:03,170 --> 00:13:09,560 Gjërat në rafte, si ju djema kanë parë më parë, në - le të nxjerrë një të ngushtë 288 00:13:09,560 --> 00:13:11,966 përbërë nga një kornizë rafte. 289 00:13:11,966 --> 00:13:15,050 A mund të shohim se të gjithë? 290 00:13:15,050 --> 00:13:16,650 Pra, ne kemi natyrën tonë rafte. 291 00:13:16,650 --> 00:13:23,260 Ne jeni të shpëtuar një grup në si një lokal ndryshueshme në këtë funksion. 292 00:13:23,260 --> 00:13:29,510 Pra, thonë koleksion tona ka pesë pika të. 293 00:13:29,510 --> 00:13:33,230 Të pesë nga ato do të ruhen në atë kornizë rafte. 294 00:13:33,230 --> 00:13:37,540 >> Nëse do të filloni të shkruani përtej caqeve të kësaj grup - 295 00:13:37,540 --> 00:13:43,990 kështu që nëse ne filloni të shkruani në, le të themi se është 0. 296 00:13:43,990 --> 00:13:46,800 Ata janë pesë indekseve e array tonë. 297 00:13:46,800 --> 00:13:50,980 Nëse do të filloni të shkruani në indeksin 5, e cila ne nuk kemi kur ne kemi një 298 00:13:50,980 --> 00:13:55,900 Grup i madhësisë 5, ne filloni të shkruani në Indeksi 6, 7, 8, 9, ne mund të merrni një Stack 299 00:13:55,900 --> 00:13:57,960 Error del nga shtrati. 300 00:13:57,960 --> 00:14:00,510 >> Në përgjithësi kjo nuk është - 301 00:14:00,510 --> 00:14:04,910 ju ndoshta do të merrni në telashe në qoftë se ju shkoni mbi nga një. 302 00:14:04,910 --> 00:14:08,640 Por në përgjithësi, ju do të merrni në më probleme në qoftë se ju shkoni mbi nga një shumë 303 00:14:08,640 --> 00:14:12,770 dhe ju shkoni deri më tani gjatë që ju të shkruani mbi adresën e kthimit e që 304 00:14:12,770 --> 00:14:16,080 funksion, e cila është vendosur në fund e kuadrit rafte. 305 00:14:16,080 --> 00:14:16,520 >> Sepse, e drejtë? 306 00:14:16,520 --> 00:14:17,670 Ju - në - sorry. 307 00:14:17,670 --> 00:14:18,550 Jo "për shkak të drejtë." 308 00:14:18,550 --> 00:14:20,470 >> Në kuadër rafte, ju keni variablave tuaj lokale. 309 00:14:20,470 --> 00:14:27,090 Në fund shumë të rafte kornizë është adresa e kthimit. 310 00:14:27,090 --> 00:14:28,790 Kjo është ku funksioni shkon kur është e gjatë. 311 00:14:28,790 --> 00:14:33,750 Dhe nëse ju prishësh se kthimi adresën, atëherë kur kjo kornizë rafte, 312 00:14:33,750 --> 00:14:36,680 kur ju jeni duke shkuar nëpër rafte kornizë dhe ekzekutimin e çdo linjë, ju jeni 313 00:14:36,680 --> 00:14:40,350 do të shkojnë të ri adresën tuaj të kthimit që është shkruar atje në vend të 314 00:14:40,350 --> 00:14:40,910 një aktuale. 315 00:14:40,910 --> 00:14:45,050 Dhe kjo është se si ne kemi parë disa shkelje të sigurisë 316 00:14:45,050 --> 00:14:46,780 mund të ndodhë me kompjutera. 317 00:14:46,780 --> 00:14:52,760 >> Del nga shtrati Pra rafte, me pak fjalë, është kur ju prishësh pjesë në rafte 318 00:14:52,760 --> 00:14:55,440 ju jeni duke menduar për të përdorur, lokal variabël jeni duke menduar për të përdorur, dhe 319 00:14:55,440 --> 00:14:58,070 veçanërisht kur ju filloni overwriting gjëra të rëndësishme si 320 00:14:58,070 --> 00:14:59,100 adresë të kthehen. 321 00:14:59,100 --> 00:15:00,090 Dhe kjo është ajo ku ju do të merrni një gabim. 322 00:15:00,090 --> 00:15:03,980 Apo ndoshta edhe ju mund të filloni edhe në shkrim - 323 00:15:03,980 --> 00:15:05,370 thonë se kërkimi binar ishte mbi të drejtën kryesore. 324 00:15:05,370 --> 00:15:07,790 Nëse ju mbikaloi një shumë, ju mund të shkruaj në kryesore. 325 00:15:07,790 --> 00:15:10,230 Por në përgjithësi, ju merrni një gabim para atëherë, sepse kompjuteri e di 326 00:15:10,230 --> 00:15:12,270 ju jeni duke bërë diçka që ju nuk duhet të jetë bërë. 327 00:15:12,270 --> 00:15:12,560 Po. 328 00:15:12,560 --> 00:15:13,910 >> STUDENT: Cila është diferenca në mes të një rafte del nga shtrati 329 00:15:13,910 --> 00:15:16,940 dhe një tampon del nga shtrati? 330 00:15:16,940 --> 00:15:19,420 >> JASON HIRSCHHORN: Buffer overflow është një lloj më të përgjithshme të 331 00:15:19,420 --> 00:15:20,395 ajo që unë kam përshkruar vetëm. 332 00:15:20,395 --> 00:15:22,610 >> STUDENT: Pra, a del nga shtrati rafte është një shembull i një tampon del nga shtrati. 333 00:15:22,610 --> 00:15:23,420 >> JASON HIRSCHHORN: Pikërisht. 334 00:15:23,420 --> 00:15:28,700 Ky është një koleksion që ne mund të mendoj si një tampon, një hapësirë ​​për gjëra për të shkuar in 335 00:15:28,700 --> 00:15:30,600 Kjo është një pirg tampon del nga shtrati. 336 00:15:30,600 --> 00:15:33,210 Ne mund të kemi një tampon del nga shtrati grumbull. 337 00:15:33,210 --> 00:15:36,870 Nëse ka pasur një tampon, i cili ka shpesh është një grup grumbull, dhe ne 338 00:15:36,870 --> 00:15:40,600 mbikaloi atyre caqeve, atëherë ne do të kanë një tampon del nga shtrati grumbull. 339 00:15:40,600 --> 00:15:44,870 >> Dhe përtej fushëveprimit të këtij kursi, ata janë duke zbuluar pak ndryshe. 340 00:15:44,870 --> 00:15:48,040 Përpilues ka të veçantë mënyrat e zbulimit të secilit. 341 00:15:48,040 --> 00:15:50,660 Por një tampon del nga shtrati është një më të përgjithshme Lloji i asaj që unë përshkruar, 342 00:15:50,660 --> 00:15:54,090 e cila ishte një pirg tampon del nga shtrati. 343 00:15:54,090 --> 00:15:56,240 A se përgjigjem pyetjes tuaj? 344 00:15:56,240 --> 00:15:57,910 Sweet. 345 00:15:57,910 --> 00:16:01,850 >> A kishte ndonjë pyetje të tjera të ngjashme në pirg ose pirgut? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Po. 348 00:16:05,510 --> 00:16:08,220 >> STUDENT: Unë e di që ju keni për të strings falas për shkak se ata janë në grumbull 349 00:16:08,220 --> 00:16:09,305 dhe ju nuk doni të rrjedhje kujtesës. 350 00:16:09,305 --> 00:16:12,240 Por ju keni për të liruar të ndryshueshmeve globale dhe stuff like that? 351 00:16:12,240 --> 00:16:14,335 Apo ata janë liruar automatikisht? 352 00:16:14,335 --> 00:16:15,700 >> JASON HIRSCHHORN: Pyetje e mirë. 353 00:16:15,700 --> 00:16:22,340 Pra në CS50.H, ne krijojmë këtë gjë për ju të quajtur një varg. 354 00:16:22,340 --> 00:16:23,800 Një string është me të vërtetë ajo? 355 00:16:23,800 --> 00:16:24,810 >> STUDENT: Char yll. 356 00:16:24,810 --> 00:16:29,180 >> JASON HIRSCHHORN: Një yll char, një akrep me një karakter, një tregues për 357 00:16:29,180 --> 00:16:30,650 një grup të karaktereve. 358 00:16:30,650 --> 00:16:32,210 Kjo është ajo që është string. 359 00:16:32,210 --> 00:16:36,050 Pra, ne kemi nevojë për të liruar atë, sepse getString, të cilën kemi përdorur një shumë - 360 00:16:36,050 --> 00:16:38,370 Emri string barabartë getString - 361 00:16:38,370 --> 00:16:43,560 që mallocs për ne disa kujtesës në të grumbullosh dhe pastaj kthehet një tregues për 362 00:16:43,560 --> 00:16:47,230 karakteri i parë i që string, një yll char. 363 00:16:47,230 --> 00:16:52,760 >> Pra, gjoja, në qoftë se ju nuk keni qenë shkrim i lirë në ndonjë nga vargjet tuaja 364 00:16:52,760 --> 00:16:55,600 që e keni quajtur deri më tani, ju keni bërë të rrjedhin disa kujtesës. 365 00:16:55,600 --> 00:16:57,430 Sigurisht që ne nuk kemi biseduar për ajo, kështu që askush nuk është marrë në 366 00:16:57,430 --> 00:16:58,520 probleme për të bërë atë. 367 00:16:58,520 --> 00:16:59,980 Por duke shkuar përpara, po. 368 00:16:59,980 --> 00:17:03,990 Kur ju telefononi getString, ju jeni mallocing një hapësirë ​​në grumbull. 369 00:17:03,990 --> 00:17:07,640 Dhe në qoftë se ju nuk e quajnë të lirë më vonë se string, ju keni një rrjedhje kujtesës. 370 00:17:07,640 --> 00:17:09,440 Kjo përgjigjem pyetjes tuaj? 371 00:17:09,440 --> 00:17:10,606 >> Vërtet 372 00:17:10,606 --> 00:17:15,020 >> STUDENT: Pra, për të bërë këtë, i përdorim drejtë të lirë para kthimit? 373 00:17:15,020 --> 00:17:18,510 Si, brenda fushës së, I guess nëse të themi, si, int kryesore, brenda 374 00:17:18,510 --> 00:17:24,410 Shtrirja e kodit që është brenda atyre formatimin e teksteve kaçurrel, e drejtë para - 375 00:17:24,410 --> 00:17:26,140 ju e dini se ku ju dëshironi zakonisht vënë kthimit. 376 00:17:26,140 --> 00:17:27,950 A keni vënë të lirë para se? 377 00:17:27,950 --> 00:17:31,000 >> JASON HIRSCHHORN: Kështu që ju mund të vënë falas kudo që ju dëshironi për të vënë pa pagesë. 378 00:17:31,000 --> 00:17:33,810 Për shkak se këto janë të ndarë në mënyrë dinamike variablave, sepse ata mund të 379 00:17:33,810 --> 00:17:39,170 jetojnë përtej fushëveprimit të një të veçantë funksion, në qoftë se ju e quani malloc në një 380 00:17:39,170 --> 00:17:44,140 funksion të veçantë, për shembull, getString, ju mund të telefononi pa pagesë në kryesore. 381 00:17:44,140 --> 00:17:46,050 Ju nuk keni nevojë për të thirrur atë në funksion specifik 382 00:17:46,050 --> 00:17:47,570 ku malloc është quajtur. 383 00:17:47,570 --> 00:17:50,340 Por ju keni nevojë për të thirrur atë para kthimit kryesore. 384 00:17:50,340 --> 00:17:51,120 >> Dhe kjo varet me të vërtetë. 385 00:17:51,120 --> 00:17:54,960 Kjo varet nga arsyeja pse ju malloced se hapësirë ​​në vendin e parë. 386 00:17:54,960 --> 00:17:57,320 Disa njerëz do të thërrasë të liruar shumë shpejt. 387 00:17:57,320 --> 00:17:59,220 Disa njerëz nuk do të thërrasë të lirë deri në fund të programit të tyre. 388 00:17:59,220 --> 00:18:00,660 Dhe ata do të shkojnë nëpër dhe çdo gjë falas. 389 00:18:00,660 --> 00:18:03,597 Kjo varet nga arsyeja pse ju të quajtur malloc. 390 00:18:03,597 --> 00:18:11,270 >> STUDENT: Dhe çfarë do të thoni në qoftë se ju e quajti përdorim getString? 391 00:18:11,270 --> 00:18:13,320 Ju do të thoni çfarë të lirë? 392 00:18:13,320 --> 00:18:20,040 >> JASON HIRSCHHORN: Pra, sintaksa falas është thjesht e lirë, Paren hapur, të ngushtë 393 00:18:20,040 --> 00:18:22,130 Paren, dhe emri i treguesin. 394 00:18:22,130 --> 00:18:26,410 Pra, nëse ju shkruani emrin string është e barabartë me getString, ju vënë emrin në këtu. 395 00:18:26,410 --> 00:18:27,760 Kjo është emri i treguesin. 396 00:18:27,760 --> 00:18:30,570 Dhe ai e di për këtë kujtesë. 397 00:18:30,570 --> 00:18:33,920 >> STUDENT: Pra, kur ai e çliron atë kujtesës, tregues ende tregon për atë vend 398 00:18:33,920 --> 00:18:34,970 ne memorien? 399 00:18:34,970 --> 00:18:39,020 Apo është tregues edhe i zbrazur adresa që tregon. 400 00:18:39,020 --> 00:18:40,290 >> JASON HIRSCHHORN: Ne duhet të përpiqemi që. 401 00:18:40,290 --> 00:18:41,430 Ne duhet kodin që. 402 00:18:41,430 --> 00:18:43,880 Le të kthehen kur kemi të kodim, dhe le të kodin që. 403 00:18:43,880 --> 00:18:46,000 Dhe në qoftë se ju doni të gjej përgjigje të kësaj, ju gjithashtu mund të kodin që 404 00:18:46,000 --> 00:18:46,690 në ndërkohë. 405 00:18:46,690 --> 00:18:49,100 Por kjo është një pyetje e madhe. 406 00:18:49,100 --> 00:18:53,480 >> STUDENT: A është e mundur që të diçka e lirë shumë shpejt? 407 00:18:53,480 --> 00:18:58,530 Pra, ju ende nevojë për programin tuaj, dhe ju liruar atë hapësirë ​​e kujtesës? 408 00:18:58,530 --> 00:18:59,200 >> JASON HIRSCHHORN: Po. 409 00:18:59,200 --> 00:19:03,020 Është e mundur, nëse ju diçka të lirë dhe pastaj ju përdorni atë përsëri, ju do të 410 00:19:03,020 --> 00:19:06,890 drejtuar në një gabim. 411 00:19:06,890 --> 00:19:10,810 Por kjo është në ju, sepse ju liruar diçka dhe më pas e quajti atë më vonë. 412 00:19:10,810 --> 00:19:13,940 Kështu që ishte gabim i një programues. 413 00:19:13,940 --> 00:19:14,780 Por po. 414 00:19:14,780 --> 00:19:17,760 Ju mund të shkruani se. 415 00:19:17,760 --> 00:19:19,240 >> Çdo më shumë pyetje në - 416 00:19:19,240 --> 00:19:19,760 po. 417 00:19:19,760 --> 00:19:22,820 >> STUDENT: Pra, nëse ju jeni duke menduar për të vetëm pa atë në përgjithësi para 418 00:19:22,820 --> 00:19:25,490 programi përfundon, nuk do të thotë në qoftë se Programi përfundon dhe ju nuk e pa atë, 419 00:19:25,490 --> 00:19:27,580 se kujtesa është ndarë ende? 420 00:19:27,580 --> 00:19:31,330 >> JASON HIRSCHHORN: Nëse programi juaj mbaron dhe ju harroni të diçka të lirë, atëherë 421 00:19:31,330 --> 00:19:34,390 se kujtesa është ndarë gjatë gjithë jetës e programit tuaj. 422 00:19:34,390 --> 00:19:37,670 Kur programi juaj mbyllet krejtësisht, se kujtesa nuk është duke shkuar 423 00:19:37,670 --> 00:19:39,490 të qëndrojnë aty përgjithmonë. 424 00:19:39,490 --> 00:19:42,080 Kompjuteri është i zgjuar sa të dijë që kur mbyllet program, ajo 425 00:19:42,080 --> 00:19:46,440 duhet të shpëtoj të gjithë kujtesën e që ishte e lidhur me atë program. 426 00:19:46,440 --> 00:19:51,240 >> Megjithatë, nuk janë mjete që ju mund të kandidojë në një program për të zbuluar nëse, kur 427 00:19:51,240 --> 00:19:54,720 Programi i përfunduar, keni harruar për të liruar disa kujtesës. 428 00:19:54,720 --> 00:19:57,960 Dhe për problemin tuaj të ardhshëm të vendosur ku ju do të jetë duke përdorur malloc dhe duke përdorur 429 00:19:57,960 --> 00:20:02,610 pointers, ju do të konkurrojnë këtë programit në programin tuaj për të parë nëse, 430 00:20:02,610 --> 00:20:06,530 kur kthimet kryesore, keni pasur disa gjëra që i kishin mbetur unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Pra, ata nuk do të qëndrojnë malloced përgjithmonë në kompjuterin tuaj. 432 00:20:09,130 --> 00:20:11,720 Kjo do të ishte e kota, sepse shumë shpejt, kompjutera 433 00:20:11,720 --> 00:20:12,960 do të dalë jashtë kujtesës. 434 00:20:12,960 --> 00:20:16,450 Por nëse ata të drejtuar deri në fund të tuaj programit dhe ata nuk janë të lirë dhe tuaj 435 00:20:16,450 --> 00:20:20,260 program daljet, kjo është ende një problem i se ky mjet do t'ju ndihmojë të trajtojë. 436 00:20:20,260 --> 00:20:21,520 >> STUDENT: A është kjo Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON HIRSCHHORN: Kjo është quajtur Valgrind. 438 00:20:22,910 --> 00:20:23,520 Dhe ju do të jetë - 439 00:20:23,520 --> 00:20:25,780 >> STUDENT: Por ne nuk duhet të dini se për quiz, pse? 440 00:20:25,780 --> 00:20:27,600 Unë do të thotë, është folur për pak në leksion. 441 00:20:27,600 --> 00:20:33,600 >> JASON HIRSCHHORN: Pra Valgrind është emri i atij mjeti. 442 00:20:33,600 --> 00:20:37,180 Duke ditur atë që nuk është mjaftueshme për quiz. 443 00:20:37,180 --> 00:20:40,200 Por ju nuk e kanë përdorur atë ende në tuaj Problemi vendosur sepse ne nuk kemi pasur një 444 00:20:40,200 --> 00:20:43,520 vendosur problem që e ka trajtuar në mënyrë të qartë me malloc ose ju përdorni malloc. 445 00:20:43,520 --> 00:20:45,330 Pra, ju nuk keni përdorur Valgrind ende. 446 00:20:45,330 --> 00:20:47,760 Por ju do të përdorin atë më shpejt se sa më vonë. 447 00:20:47,760 --> 00:20:48,710 >> STUDENT: A mund të përsëris çfarë Valgrind është? 448 00:20:48,710 --> 00:20:49,190 >> JASON HIRSCHHORN: Na vjen keq? 449 00:20:49,190 --> 00:20:51,240 >> STUDENT: A mund të përsëris atë qëllimi i Valgring është? 450 00:20:51,240 --> 00:20:53,100 >> JASON HIRSCHHORN: Valgrind është emri - 451 00:20:53,100 --> 00:20:59,890 si Gdb ju ndihmon të korrigjoj programin tuaj, Valgrind ju ndihmon të kuptoj se nëse 452 00:20:59,890 --> 00:21:03,210 gjërat nuk janë liruar kur programi juaj mbyllet. 453 00:21:03,210 --> 00:21:05,110 Pra, ju do të kandidojë atë në programin tuaj. 454 00:21:05,110 --> 00:21:09,230 Dhe programi juaj daljet, dhe kjo do të thotë programi juaj i quajtur malloc kjo shumë 455 00:21:09,230 --> 00:21:13,670 herë për këtë shumë bytes, dhe ju vetëm quajtur falas këtë shumë herë. 456 00:21:13,670 --> 00:21:16,520 Dhe kështu që ju la këto bytes shumë pa u liruar. 457 00:21:16,520 --> 00:21:18,050 Ose ajo do të thonë se ju keni liruar çdo gjë. 458 00:21:18,050 --> 00:21:19,070 Good job. 459 00:21:19,070 --> 00:21:19,480 >> STUDENT: OK. 460 00:21:19,480 --> 00:21:21,060 Dhe është quajtur Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON HIRSCHHORN: V-L-A-G-R-N-I-D. 462 00:21:24,940 --> 00:21:25,970 >> STUDENT: Një pyetje rreth pointers. 463 00:21:25,970 --> 00:21:30,080 Pra, thonë se ju keni n yll x është e barabartë me diçka. 464 00:21:30,080 --> 00:21:33,330 Kjo është e barabartë, çdo gjë që ju jeni duke ka, është se çfarë është duke u vënë brenda 465 00:21:33,330 --> 00:21:36,120 ajo që x është duke treguar për të, ose tregues i x? 466 00:21:36,120 --> 00:21:37,690 >> JASON HIRSCHHORN: A mund të përsëris pyetjen? 467 00:21:37,690 --> 00:21:39,340 A mund ta tërheqë atë ndërsa ju thonë se ai? 468 00:21:39,340 --> 00:21:42,710 >> STUDENT: Në quiz, në të vërtetë, një që ju na dërgoi, ai ishte si, char 469 00:21:42,710 --> 00:21:46,520 vërteta yll barabartë gurë CS50, e drejtë? 470 00:21:46,520 --> 00:21:52,190 Pra, a do të thotë se se shkëmbinj CS50 është ajo e vërteta është duke treguar për të? 471 00:21:52,190 --> 00:21:55,810 >> JASON HIRSCHHORN: Pra, ju jeni duke folur rreth një ylli char në një varg, si 472 00:21:55,810 --> 00:21:56,460 që punon? 473 00:21:56,460 --> 00:21:56,890 Po. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Le të nxjerrë këtë këtu. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE BISEDA] 477 00:22:07,100 --> 00:22:11,130 >> JASON HIRSCHHORN: Pra, ky variabël do të jetë e tipit char ylli. 478 00:22:11,130 --> 00:22:14,580 Sa i madh është një variabël i yllit Lloji char? 479 00:22:14,580 --> 00:22:15,510 Sa bytes? 480 00:22:15,510 --> 00:22:16,450 >> STUDENTËT: Katër. 481 00:22:16,450 --> 00:22:18,210 >> JASON HIRSCHHORN: Kjo është katër bytes. 482 00:22:18,210 --> 00:22:21,420 Sa të drejta është një variabël i yllit lloj int? 483 00:22:21,420 --> 00:22:22,210 >> STUDENTËT: Katër. 484 00:22:22,210 --> 00:22:24,910 >> JASON HIRSCHHORN: Katër bytes. 485 00:22:24,910 --> 00:22:28,280 Në qoftë se kjo është një akrep, atëherë ajo është gjithmonë katër bytes, sepse pointers, tyre 486 00:22:28,280 --> 00:22:30,070 Vlera është një adresë memorie. 487 00:22:30,070 --> 00:22:35,160 Dhe adresat e kujtesës në CS50 aplikim janë katër bytes të gjatë. 488 00:22:35,160 --> 00:22:42,900 Pra, kur ne e quajmë getString, ose kur të themi, stringname barabartë, dhe më pas në 489 00:22:42,900 --> 00:22:46,140 Kuotat e dyfishtë vënë një varg, ne jemi duke - 490 00:22:46,140 --> 00:22:46,920 mirë, kjo është pak më ndryshe. 491 00:22:46,920 --> 00:22:48,630 Ne do e getString si shembull. 492 00:22:48,630 --> 00:22:52,150 Apo yll char diçka është e barabartë me string. 493 00:22:52,150 --> 00:22:54,360 Na vjen keq, më jep shembullin që keni lexuar? 494 00:22:54,360 --> 00:22:57,590 >> STUDENT: char yll vërteta është e barabartë me "shkëmbinj CS50" në thonjëza të dyfishta. 495 00:22:57,590 --> 00:23:02,260 >> JASON HIRSCHHORN: Pra, ky yll, kjo ne do të quajmë këtë variabël x për tonë 496 00:23:02,260 --> 00:23:04,060 qëllime të përgjithshme. 497 00:23:04,060 --> 00:23:05,970 Ne kemi krijuar një ndryshore të quajtur x. 498 00:23:05,970 --> 00:23:07,610 Kjo është lloj char yll. 499 00:23:07,610 --> 00:23:10,950 Kjo është një tregues për një seri të karaktereve. 500 00:23:10,950 --> 00:23:12,200 Kështu që këtu - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Pra, kjo është se si kjo do të punojnë në kujtesën. 503 00:23:25,890 --> 00:23:27,410 Kjo do të ruajtur një adresë memorie. 504 00:23:27,410 --> 00:23:31,770 Ajo do të ruajë adresën e memories së karakteri i parë në rrjet. 505 00:23:31,770 --> 00:23:33,830 Dhe atëherë kur të ndjekur akrep, ju do 506 00:23:33,830 --> 00:23:35,200 të marrë karakterin e parë. 507 00:23:35,200 --> 00:23:38,780 >> Dhe në qoftë se jeni duke e lexuar këtë gjë si një varg, kompjuteri juaj është i zgjuar 508 00:23:38,780 --> 00:23:42,930 të mjaftueshme për të dini, lexoni këtë gjë të gjithë derisa ajo merr në një reagim 0. 509 00:23:42,930 --> 00:23:45,530 Por nëse ju jeni të lexuar atë një karakter në një kohë, kështu që ju jeni iterating përmes 510 00:23:45,530 --> 00:23:49,910 këtë varg, atëherë ju do të lexoni vetëm një karakter në një kohë deri sa ju të merrni për të 511 00:23:49,910 --> 00:23:50,850 backslash 0. 512 00:23:50,850 --> 00:23:52,335 Kjo nuk mund të përgjigjen tuaj pyetje, pse. 513 00:23:52,335 --> 00:23:55,610 >> STUDENT: Po, por ju nuk e keni malloced se hapësira 514 00:23:55,610 --> 00:23:58,400 ende për këtë tregues. 515 00:23:58,400 --> 00:24:02,510 >> JASON HIRSCHHORN: Kështu që unë nuk jam mjaft i sigurt pikërisht ajo që ju jeni duke kërkuar në, 516 00:24:02,510 --> 00:24:03,640 sepse nuk e kam bërë këtë quiz. 517 00:24:03,640 --> 00:24:06,370 Kjo është dashur të jetë një dobishme burimeve nga një tjetër TF. 518 00:24:06,370 --> 00:24:11,380 Nëse ju jeni duke krijuar një varg të rafte apo si një variabël lokale, ajo do të 519 00:24:11,380 --> 00:24:16,920 vetëm të jetë grup nga akuzat në vend se në përgjithësi një yll char duke treguar për 520 00:24:16,920 --> 00:24:18,600 një tjetër varg. 521 00:24:18,600 --> 00:24:20,550 Por unë nuk e di. 522 00:24:20,550 --> 00:24:25,065 Kjo mund të jetë një tregues për një tjetër string në rafte si. 523 00:24:25,065 --> 00:24:27,240 Po. 524 00:24:27,240 --> 00:24:31,116 >> STUDENT: Unë e di që ju keni nevojë për të përgatitja e kujtesës nëse akrep është 525 00:24:31,116 --> 00:24:33,360 duke u deklaruar brenda e një tjetër funksion. 526 00:24:33,360 --> 00:24:36,740 A ju duhet të bëni të njëjtën gjë nëse është e duke u deklaruar brenda kryesore, 527 00:24:36,740 --> 00:24:39,570 ju jeni duke e përdorur atë brenda kryesore? 528 00:24:39,570 --> 00:24:43,590 >> JASON HIRSCHHORN: Pra, po. 529 00:24:43,590 --> 00:24:46,670 Ju mund të deklarojë një tregues për ndonjë Adresa e kujtesës në kujtesën. 530 00:24:46,670 --> 00:24:51,440 Ajo mund të jetë adresa kujtesa e një lokal ndryshueshme, edhe pse shumë herë, 531 00:24:51,440 --> 00:24:55,760 njerëzit nuk e deklarojnë adresat e memories të variablave lokale për shkak se ata të shkojnë 532 00:24:55,760 --> 00:24:59,890 larg një herë se funksion të kthimit, e cila është arsyeja pse ne në përgjithësi malloc gjëra. 533 00:24:59,890 --> 00:25:04,630 Por po, ju mund të shpallë një tregues tjetër variable lokal. 534 00:25:04,630 --> 00:25:06,360 Ajo është vetëm në përgjithësi nuk bëhet. 535 00:25:06,360 --> 00:25:09,480 Por unë mund të marrë një sy në se gjë të veçantë pas klasës. 536 00:25:09,480 --> 00:25:10,650 Po. 537 00:25:10,650 --> 00:25:12,350 >> STUDENT: Unë mendoj se kjo është lloj e asaj që është duke u kërkuar. 538 00:25:12,350 --> 00:25:16,930 Ajo duket e çuditshme për të Initializing një tregues jo si një 539 00:25:16,930 --> 00:25:20,760 adresa, por si ajo që duket si një vlerë. 540 00:25:20,760 --> 00:25:25,970 Duket si CS50 është ajo që ka brenda gjë që vuri në dukje dhe të 541 00:25:25,970 --> 00:25:28,820 Nuk adresa aktuale, e drejtë? 542 00:25:28,820 --> 00:25:30,520 >> JASON HIRSCHHORN: Pra, kjo është nuk është rasti, pse. 543 00:25:30,520 --> 00:25:32,470 Kjo nuk është ajo që po ndodh. 544 00:25:32,470 --> 00:25:35,910 Kur ju të deklarojë një yll char, kjo është një adresë memorie. 545 00:25:35,910 --> 00:25:38,860 Pointers janë të gjitha adresat e memories duke treguar për diçka tjetër. 546 00:25:38,860 --> 00:25:41,480 Se diçka tjetër do të mund të jetë në rafte, por pothuajse gjithmonë është në 547 00:25:41,480 --> 00:25:43,440 të grumbullosh në mënyrën se si ne do të shohim të përdoret. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Por stringname është e barabartë me dy kuotë "GetString," ne mund të shohim se dhe ne 550 00:25:53,500 --> 00:25:55,010 mund të shikoni me se dhe kodin që. 551 00:25:55,010 --> 00:26:01,190 getString string nuk është duke u ruajtur në që variabël, ose çfarëdo string 552 00:26:01,190 --> 00:26:04,580 Emri i nuk është duke u ruajtur në atë variabël, jo sepse kjo është se si 553 00:26:04,580 --> 00:26:06,070 pointers të punuar. 554 00:26:06,070 --> 00:26:06,770 A ka kjo kuptim? 555 00:26:06,770 --> 00:26:07,170 >> STUDENT: Po. 556 00:26:07,170 --> 00:26:08,570 >> JASON HIRSCHHORN: OK. 557 00:26:08,570 --> 00:26:11,690 Shpresojmë, që nuk ishte i konfuze për të gjithë. 558 00:26:11,690 --> 00:26:15,732 Por në qoftë se ajo ishte, ne mund të shohim atë përsëri në pak, sepse ne jemi të vërtetë do 559 00:26:15,732 --> 00:26:19,240 të kodit diçka që do të shpresojmë se punojnë me vargjet dhe të ndihmojë të ndjeheni 560 00:26:19,240 --> 00:26:22,170 më të rehatshme me ta. 561 00:26:22,170 --> 00:26:24,869 >> Çdo pyetje të tjera në lidhje me këto tema apo tema të tjera që 562 00:26:24,869 --> 00:26:26,119 Unë do të vënë back up? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 Dhe - 565 00:26:34,840 --> 00:26:36,310 tani. 566 00:26:36,310 --> 00:26:37,630 Po, Alden. 567 00:26:37,630 --> 00:26:39,860 >> Alden: Pra, kjo është krejtësisht pa lidhje, por ne vetëm mund të shkojë mbi 568 00:26:39,860 --> 00:26:42,760 me të vërtetë shpejt ajo që ne duhet të dimë për dallimin në mes të një 32 dhe 569 00:26:42,760 --> 00:26:46,345 Makinë 64-bit? 570 00:26:46,345 --> 00:26:47,740 >> JASON HIRSCHHORN: Po. 571 00:26:47,740 --> 00:26:52,111 Kështu që 32 bit është se sa bytes? 572 00:26:52,111 --> 00:26:53,060 >> Alden: Kjo është katër bytes. 573 00:26:53,060 --> 00:26:54,360 >> JASON HIRSCHHORN: Kjo është katër bytes. 574 00:26:54,360 --> 00:26:58,420 Dhe 64 bit është se sa bytes? 575 00:26:58,420 --> 00:26:59,112 >> STUDENT: Tetë. 576 00:26:59,112 --> 00:27:00,610 >> JASON HIRSCHHORN: Tetë bytes. 577 00:27:00,610 --> 00:27:03,980 Pra, përsëri, tetë BITS është një bajt. 578 00:27:03,980 --> 00:27:08,340 Pajisja juaj është CS50 një makinë 32-bit. 579 00:27:08,340 --> 00:27:13,650 Pra, adresat e kujtesës janë katër bytes të gjatë. 580 00:27:13,650 --> 00:27:17,460 Ka 2 e 32 adresat e kujtesës. 581 00:27:17,460 --> 00:27:21,310 0 në 2 me minus 1 32. 582 00:27:21,310 --> 00:27:27,630 Dhe unë nuk jam pozitive, por kjo është ndoshta qëllimi i asaj që ju duhet për të 583 00:27:27,630 --> 00:27:35,230 e di për një makinë 32-bit, se kujtesa adresat janë, përsëri, katër bytes të gjatë, 584 00:27:35,230 --> 00:27:39,620 dhe kjo është shuma maksimale i adresave të kujtesës. 585 00:27:39,620 --> 00:27:41,680 >> Gjithashtu, lloje të të dhënave - 586 00:27:41,680 --> 00:27:45,020 kjo mund të jetë diçka si edhe kjo është me vlerë të përmendet. 587 00:27:45,020 --> 00:27:49,610 Madhësia e një lloji të dhënave varet nga makinë ju jeni duke punuar me të. 588 00:27:49,610 --> 00:27:56,760 Pra, një char, një karakter të vetëm, është se si shumë bytes për aplikim tonë CS50? 589 00:27:56,760 --> 00:27:57,980 Një bajt. 590 00:27:57,980 --> 00:28:02,310 Dhe kjo është në fakt një bajt si mirë në një makinë 64-bit. 591 00:28:02,310 --> 00:28:05,920 >> Dhe shumica e lloje të të dhënave janë të njëjta numër i bytes në të dy makina. 592 00:28:05,920 --> 00:28:11,620 Por disa lloje të të dhënave do të jenë të ndryshme në të dy makina. 593 00:28:11,620 --> 00:28:14,590 Kështu që do të ishte potencialisht vetmja gjë që ju duhet të dini. 594 00:28:14,590 --> 00:28:16,710 >> Por edhe që, unë mendoj se, është përtej kufijve - 595 00:28:16,710 --> 00:28:20,990 Unë jam gati pozitive, në qoftë se ju shikoni mbrapa në kuize vjetra, ai thotë se, për të marrë 596 00:28:20,990 --> 00:28:24,090 coding probleme ju jeni duke përdorur një makinë 32-bit. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Por ka, për të shkuar së bashku me atë në rast se ju jeni të interesuar, ka 599 00:28:30,620 --> 00:28:35,920 lloje të të dhënave që janë të njëjta Madhësia në të gjitha makinat. 600 00:28:35,920 --> 00:28:42,670 >> Nëse e keni parë diçka si uint32_t, ju mund ose mund të 601 00:28:42,670 --> 00:28:43,260 nuk e kanë parë këtë. 602 00:28:43,260 --> 00:28:44,290 Kjo është një lloj i të dhënave. 603 00:28:44,290 --> 00:28:47,570 Që është duke thënë, të jetë 32 bit pa marrë parasysh çfarë makine kjo është më. 604 00:28:47,570 --> 00:28:50,350 Pra, kur njerëzit janë shkruar portativ Kodi, ata ndoshta nuk do të përdorin ints. 605 00:28:50,350 --> 00:28:53,260 Ata në vend të kësaj do të përdorin këto të dhëna të tjera Llojet se ata e dinë do të jetë e njëjtë 606 00:28:53,260 --> 00:28:54,780 Madhësia në çdo makinë të vetme. 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: Unë kisha një pyetje rreth proces hartimi. 610 00:29:00,150 --> 00:29:04,110 Pra, nëse ju jeni duke shkruar një program që përdor një bibliotekë si CS50 apo diçka 611 00:29:04,110 --> 00:29:06,840 si kjo, unë e di se se biblioteka ka për të, në një pikë, të jetë 612 00:29:06,840 --> 00:29:08,590 hartuar dhe të lidhura in 613 00:29:08,590 --> 00:29:13,380 Por si shumë e që ndodh gjatë hartimin e programit tuaj? 614 00:29:13,380 --> 00:29:15,880 Cila pjesë e atij procesi të bibliotekës ndodh kur ju jeni 615 00:29:15,880 --> 00:29:18,560 hartimin e programit tuaj? 616 00:29:18,560 --> 00:29:24,020 >> JASON HIRSCHHORN: Pra, le të shkojë mbi përgjithësi hapat e këtij procesi. 617 00:29:24,020 --> 00:29:26,280 Ju shkruani file. Tuaj c. 618 00:29:26,280 --> 00:29:33,530 Në. Dosjen tuaj c, ju # përfshijë tuaj header bibliotekat, për shembull, cs50.h. 619 00:29:33,530 --> 00:29:39,480 Çfarë e bën këtë të mprehta përfshijnë Linja të bëni për programin tuaj? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Ajo shton prototipet e funksionet nga header 622 00:29:43,350 --> 00:29:45,120 fotografi në bibliotekat. 623 00:29:45,120 --> 00:29:45,600 >> JASON HIRSCHHORN: Pikërisht. 624 00:29:45,600 --> 00:29:49,870 Ajo shton ato prototypes funksion në kodin tuaj. 625 00:29:49,870 --> 00:29:55,230 Pra, kur kodi juaj është duke u hartuar në në fazat e para, përpiluesit e di 626 00:29:55,230 --> 00:29:59,250 se këto funksione të vërtetë ekziston, dhe se diku ata kanë qenë të përcaktuar. 627 00:29:59,250 --> 00:30:02,460 Dosjet. H nuk përfshijnë përkufizime për këto funksione ose se si 628 00:30:02,460 --> 00:30:03,950 ata në të vërtetë punojnë. 629 00:30:03,950 --> 00:30:07,960 Cs50.h vetëm përfshin diçka që thotë se getString është një gjë e vërtetë që 630 00:30:07,960 --> 00:30:09,270 mund të ndodhë. 631 00:30:09,270 --> 00:30:14,240 Dhe standardio.h thotë printf është një gjë e vërtetë që mund të ndodhë. 632 00:30:14,240 --> 00:30:23,190 >> Pra, gjuha juaj c me këtë. Header fotografi merr kthyer në disa 633 00:30:23,190 --> 00:30:27,750 makinë-i lexueshëm kodi, i cili përfundimisht merr kthyer në binar 634 00:30:27,750 --> 00:30:30,030 Kodi, 0 dhe 1 i. 635 00:30:30,030 --> 00:30:33,590 Dhe kjo është kodin që në fund të fundit merr ekzekutuar. 636 00:30:33,590 --> 00:30:38,550 -L CS50 linjë - për shembull, kur ju jeni me shkrim tingëllimë - 637 00:30:38,550 --> 00:30:41,830 dhe pastaj ju të përfshijë-l CS50, ju shkruani se in 638 00:30:41,830 --> 00:30:42,180 Dhe ju shihni se. 639 00:30:42,180 --> 00:30:43,890 Kur ju shkruani bëni, ju do të shihni këtë linjë deri këtu. 640 00:30:43,890 --> 00:30:47,740 Dhe ne do të shohim se në një të dytë, kur ne kodin ose më vonë kur ne kod. 641 00:30:47,740 --> 00:30:50,390 >> Por kjo-l linjë CS50 bën diçka pak më të ndryshme se 642 00:30:50,390 --> 00:30:52,440 # të përfshijnë cs50.h. 643 00:30:52,440 --> 00:30:56,300 Çfarë do të vijë se-l CS50 bëj? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Unë dua të them se ajo lidhje biblioteka të funksionit 646 00:31:00,310 --> 00:31:02,710 telefononi, si fotografi. o. 647 00:31:02,710 --> 00:31:08,200 >> JASON HIRSCHHORN: Pra, shumë ngushtë, nëse jo vend-on. 648 00:31:08,200 --> 00:31:16,220 -L CS50 merr file binar dhe bashkon atë me dosjen tuaj binar. 649 00:31:16,220 --> 00:31:21,410 Pra cs50.h, nuk ka asnjë pikë kthese në cs50.h nga gjuha C në binar çdo 650 00:31:21,410 --> 00:31:23,130 herë të vetme është duke u përdorur. 651 00:31:23,130 --> 00:31:26,650 Kjo do të ishte pa kuptim, sepse kjo do të mbeturinave shumë kohë. 652 00:31:26,650 --> 00:31:30,420 Pra, ajo tashmë është hartuar dhe u kthye në një ekzekutues. 653 00:31:30,420 --> 00:31:35,430 Dhe tani ajo do të bashkohen me dosjen tuaj në fund. 654 00:31:35,430 --> 00:31:38,370 Pra ato 1 dhe 0 do të bashkohen me ato tuaj 655 00:31:38,370 --> 00:31:39,150 dhe 0-së në fund. 656 00:31:39,150 --> 00:31:43,670 Deri tani ju do të duhet të vërtetë aktuale 1 dhe 0 se përcaktojnë se si getString, 657 00:31:43,670 --> 00:31:47,890 për shembull, punon, ose se si printf, për shembull, punon. 658 00:31:47,890 --> 00:31:52,750 >> Dhe për më shumë informacion, ka një Hartuesit e shkurtër se Nate jep se 659 00:31:52,750 --> 00:31:55,410 ju duhet të shikoni se shkon nëpër këto hapa. 660 00:31:55,410 --> 00:31:56,050 Por - 661 00:31:56,050 --> 00:31:56,560 po. 662 00:31:56,560 --> 00:32:01,700 >> STUDENT: A janë ata gjithmonë në o fotografi. kur ata janë në formën e bibliotekës, 663 00:32:01,700 --> 00:32:06,764 gati të bashkohen, të lidhura - si ata janë në kodin binar? 664 00:32:06,764 --> 00:32:07,600 >> JASON HIRSCHHORN: OK. 665 00:32:07,600 --> 00:32:08,420 Çfarë - 666 00:32:08,420 --> 00:32:11,780 >> STUDENT: A është ky gjithmonë rasti për bibliotekat kur lidhjen e tyre? 667 00:32:11,780 --> 00:32:12,500 >> JASON HIRSCHHORN: Po. 668 00:32:12,500 --> 00:32:17,300 Pra, nuk ka. S fotografi, të cilat do të jenë Kodi makine, e cila gjithashtu do të jenë të 669 00:32:17,300 --> 00:32:17,975 i fshehtë për ju. 670 00:32:17,975 --> 00:32:19,410 Ju nuk duhet të shqetësohen për ato. 671 00:32:19,410 --> 00:32:24,930 Por në përgjithësi, vërtet, ata do të të jetë në. o fotografi gati për të shkuar. 672 00:32:24,930 --> 00:32:27,170 >> STUDENT: Pra, kur ju anije në një bibliotekë, ju anije vetëm 673 00:32:27,170 --> 00:32:28,880 . h dhe. o? 674 00:32:28,880 --> 00:32:32,210 Ju nuk anije. C apo. S. 675 00:32:32,210 --> 00:32:33,070 >> JASON HIRSCHHORN: Pra, - 676 00:32:33,070 --> 00:32:36,260 dhe kjo është në këtë të shkurtër, si dhe, në qoftë se ky informacion duket se vjen një 677 00:32:36,260 --> 00:32:36,700 pak shpejt. 678 00:32:36,700 --> 00:32:39,870 Por short mbi hartuesit flet për këtë si. 679 00:32:39,870 --> 00:32:43,290 Kur ju anije një bibliotekë, në qoftë se ju anije . h, header fotografi, ata 680 00:32:43,290 --> 00:32:46,290 prototypes funksion, dhe 1-të dhe 0-së, që të gjithë ju duhet të jepni. 681 00:32:46,290 --> 00:32:50,640 Ju nuk keni nevojë për të dhënë se si funksion punon,. fotografi c. 682 00:32:50,640 --> 00:32:56,360 Për shkak se pika e abstraksionit, ose pikë e TV, pika në këtë SPL, 683 00:32:56,360 --> 00:32:59,650 biblioteka portativ Stanford, është e për ju të mos shqetësohen për mënyrën se si e re 684 00:32:59,650 --> 00:33:04,220 GRect punon, ose se si të shkojë vepra, apo se si të shtoni vepra. 685 00:33:04,220 --> 00:33:06,520 Të gjithë ju duhet të dini është se add është një funksion që ju mund të 686 00:33:06,520 --> 00:33:08,880 përdorur, dhe kjo e bën këtë. 687 00:33:08,880 --> 00:33:12,760 Pra, ju me të vërtetë nuk keni nevojë të dini se si është e shkruar në C. Ju vetëm duhet të 688 00:33:12,760 --> 00:33:15,460 e di, këtu janë funksionet, atë që ata bëni, dhe këtu janë të 1 dhe 0 689 00:33:15,460 --> 00:33:18,870 kur ju me të vërtetë dëshironi të përdorni ato. 690 00:33:18,870 --> 00:33:19,530 >> Ftohtë. 691 00:33:19,530 --> 00:33:26,980 Çdo më shumë pyetje mbi hartuesit ose tema të tjera në bord? 692 00:33:26,980 --> 00:33:30,300 >> STUDENT: Unë kam një pyetje të zbatuar funksionet gjithkund rekursive. 693 00:33:30,300 --> 00:33:31,170 Një pyetje në lidhje recursion. 694 00:33:31,170 --> 00:33:33,030 Unë kisha një ndjenjë se do të dalë. 695 00:33:33,030 --> 00:33:38,310 Pra, le të shkojë shpejt nëpër recursion me një të veçantë 696 00:33:38,310 --> 00:33:40,690 shembull, një funksion faktorial. 697 00:33:40,690 --> 00:33:44,920 Për shkak se ky është një shembull që shpesh vjen deri ose të përdoret 698 00:33:44,920 --> 00:33:46,170 për të ilustruar recursion. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Pra "4!" lexohet si 4 faktoriale. 701 00:33:56,410 --> 00:33:59,120 Dhe çfarë do të thotë 4 faktorial? 702 00:33:59,120 --> 00:34:00,696 Çfarë do të bëni? 703 00:34:00,696 --> 00:34:02,235 Si mund të llogaritur 4 faktoriale? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 herë 3 herë 2 herë 1. 706 00:34:07,960 --> 00:34:11,889 >> Pra, një mënyrë tjetër për të shkruar 4 faktoriale është për të shkruar këtë. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 herë 3 faktorial. 709 00:34:19,022 --> 00:34:22,080 Për shkak se 3 faktoriale është 3 herë 2 herë 1. 710 00:34:22,080 --> 00:34:27,580 Pra 4 herë 3 faktoriale është 4 herë 3 herë 2 herë 1. 711 00:34:27,580 --> 00:34:32,679 Kjo është arsyeja pse faktoriale është një e madhe kandidat për recursion, sepse është e 712 00:34:32,679 --> 00:34:36,630 qartë se ka diçka që ndodh mbi dhe mbi dhe mbi në një 713 00:34:36,630 --> 00:34:39,820 Numri më i vogël i gjërave deri të arrini në fund. 714 00:34:39,820 --> 00:34:42,570 Kur të keni arritur 1, 1 faktoriale është 1. 715 00:34:42,570 --> 00:34:43,719 Ju nuk mund të shkojnë shumë më tej. 716 00:34:43,719 --> 00:34:47,219 0 faktoriale është përcaktuar edhe si 1. 717 00:34:47,219 --> 00:34:50,679 Pra, kur ju të merrni në 1 ose 0, ju jeni në fund, dhe qe mund 718 00:34:50,679 --> 00:34:53,219 filloni kthim prapa deri. 719 00:34:53,219 --> 00:34:59,540 Pra, nëse ne të kërkuar për të shkruar një recursive Funksioni për të llogaritur një faktoriale, 720 00:34:59,540 --> 00:35:02,170 ne jemi duke shkuar për të shkruar disa pseudokod për këtë tani. 721 00:35:02,170 --> 00:35:03,300 Para se të shkruani se pseudokod - 722 00:35:03,300 --> 00:35:05,660 Unë do të jap ju djema disa minuta për të shkruar kodin pseudo ose thjesht mendoj 723 00:35:05,660 --> 00:35:09,600 në lidhje me të - ka dy gjëra çdo ka nevojë për funksion recursive. 724 00:35:09,600 --> 00:35:12,530 Cilat janë këto dy gjëra? 725 00:35:12,530 --> 00:35:13,220 >> JACK: Ajo ka për të thirrur vetë. 726 00:35:13,220 --> 00:35:13,680 >> JASON HIRSCHHORN: Noah? 727 00:35:13,680 --> 00:35:14,460 Oh, Jack. 728 00:35:14,460 --> 00:35:15,100 Shkoni përpara. 729 00:35:15,100 --> 00:35:16,640 >> JACK: Ajo ka për të thirrur vetë. 730 00:35:16,640 --> 00:35:19,220 >> JASON HIRSCHHORN: Pra a recursive funksion ka nevojë për një thirrje rekursive, një 731 00:35:19,220 --> 00:35:20,220 telefononi në vetvete. 732 00:35:20,220 --> 00:35:20,770 Kjo është një. 733 00:35:20,770 --> 00:35:21,510 Dhe çfarë është gjë tjetër? 734 00:35:21,510 --> 00:35:22,250 >> JACK: Një rast bazë. 735 00:35:22,250 --> 00:35:23,780 >> JASON HIRSCHHORN: Një rast bazë. 736 00:35:23,780 --> 00:35:26,940 Një rast bazë është, këtu është kur ne të ndaluar. 737 00:35:26,940 --> 00:35:29,510 Pra, funksioni juaj merr të quajtur. 738 00:35:29,510 --> 00:35:31,410 Rastit bazë vjen e para. 739 00:35:31,410 --> 00:35:33,710 Ju dëshironi të dini nëse ju jeni në fund. 740 00:35:33,710 --> 00:35:37,110 Dhe në qoftë se ju nuk jeni në fund, ju bëni thirrjen tuaj rekursive. 741 00:35:37,110 --> 00:35:39,880 Dhe ju shkoni nëpër këtë funksion përsëri, kontrolloni rastin tuaj bazë përsëri. 742 00:35:39,880 --> 00:35:42,575 Nëse ju nuk jeni në fund, ju bëni një tjetër thirrje rekursive, 743 00:35:42,575 --> 00:35:44,130 e të tjera, e të tjera. 744 00:35:44,130 --> 00:35:47,110 >> Kjo është arsyeja pse funksionet gjithkund rekursive gjithmonë nevojë për ato raste bazë dhe ato të 745 00:35:47,110 --> 00:35:48,210 thirrjet gjithkund rekursive. 746 00:35:48,210 --> 00:35:51,280 Nëse ju nuk keni një thirrje rekursive, ajo nuk do të jetë një funksion gjithkund rekursive. 747 00:35:51,280 --> 00:35:53,210 Nëse ju nuk e keni një rast bazë, ju do të shkoni në shekuj të 748 00:35:53,210 --> 00:35:54,780 nuk do të kishte dhënë fund. 749 00:35:54,780 --> 00:35:57,870 Dhe rasti baza gjithmonë vjen e para, sepse ju gjithmonë do të dëshironi të kontrolloni 750 00:35:57,870 --> 00:36:00,420 nëse ju jeni në fund të parë. 751 00:36:00,420 --> 00:36:04,770 Pra, para se të bëjmë disa pseudokod, pse nuk keni marrë një minutë për të menduar për 752 00:36:04,770 --> 00:36:09,360 se si një funksion recursive faktoriale do të jetë e shkruar? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Gjithashtu, sa më shumë që ju po bëni, shkrim ajo jashtë në një fletë letre është 755 00:36:26,010 --> 00:36:27,960 atë që ju jeni do të duhet të bëni në quiz nesër. 756 00:36:27,960 --> 00:36:32,160 Praktika Pra ndoshta e mirë për të bërë sigurt Kodi jeni të shkruar 757 00:36:32,160 --> 00:36:34,420 poshtë në fletë letre - 758 00:36:34,420 --> 00:36:35,160 ose ju mund ta bëjë këtë. 759 00:36:35,160 --> 00:36:36,710 Ti e di se ku janë pikpresje. 760 00:36:36,710 --> 00:36:37,660 Ju kujtohet sintaksë. 761 00:36:37,660 --> 00:36:40,400 Sepse ju nuk jeni të jetë në gjendje të ketë një përpilues thoni keni bërë një gabim. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Gjithashtu, në këto linja, nesër, kur ju keni kodim probleme, në qoftë se ju 764 00:37:07,240 --> 00:37:11,490 janë nxituan për kohën, ose në qoftë se ju jeni shumë të hutuar se si ju jeni duke menduar për të 765 00:37:11,490 --> 00:37:16,030 shkruaj gjë të veçantë në c, ajo do të behoove ju të shkruani pseudo-kod 766 00:37:16,030 --> 00:37:18,160 ose shkruani komente në si. 767 00:37:18,160 --> 00:37:21,940 Sepse nuk ka kredi të pjesshme për një Shumë prej pyetjeve në quiz. 768 00:37:21,940 --> 00:37:24,840 Kështu që ju mund të jenë të ngutshme, ose ju vetëm mund të ngatërrohet. 769 00:37:24,840 --> 00:37:28,030 Duke shkruar në komentet apo pseudo-kod janë shpesh mënyra që ju 770 00:37:28,030 --> 00:37:29,360 mund të merrni kredi të pjesshme. 771 00:37:29,360 --> 00:37:31,440 >> Pra, nuk do të lënë diçka bosh në quiz. 772 00:37:31,440 --> 00:37:33,490 Nuk ka dënime për vënë gjërat in 773 00:37:33,490 --> 00:37:37,650 Në fakt, duke vënë në pseudo-kod ose Komentet do të ndihmojë grader 774 00:37:37,650 --> 00:37:40,410 kuptoj se në qoftë se ju në të vërtetë e di se çfarë ju jeni duke folur për, dhe ndoshta çmimin 775 00:37:40,410 --> 00:37:42,030 ju disa kredi të pjesshme për këtë. 776 00:37:42,030 --> 00:37:44,510 >> Gjithashtu në këto linja, shkruar në mënyrë të qartë. 777 00:37:44,510 --> 00:37:47,650 Në qoftë se ne nuk mund të vërtetë atë që ju jeni me shkrim, ne nuk jemi duke shkuar për të thirrur ju 778 00:37:47,650 --> 00:37:49,900 në mesnatë nesër në figurë se çfarë keni shkruar. 779 00:37:49,900 --> 00:37:51,520 Ne jemi vetëm do të marrë off pikë. 780 00:37:51,520 --> 00:37:56,570 Shkruani në mënyrë të qartë kështu që ne mund të dëgjojmë, ose më mirë, ne mund të lexoni se çfarë keni shkruar. 781 00:37:56,570 --> 00:38:00,230 >> Dhe në qoftë se ajo thotë dy fjali, mos shkruani një paragraf. 782 00:38:00,230 --> 00:38:02,280 Ndiqni udhëzimet. 783 00:38:02,280 --> 00:38:03,500 Shkruani qartë. 784 00:38:03,500 --> 00:38:07,720 Dhe shkruani në këto komente apo pseudokod për pyetjet që mund të 785 00:38:07,720 --> 00:38:10,270 çmimin e kreditit pjesshëm. 786 00:38:10,270 --> 00:38:12,520 >> OK, le të shkojnë në faktoriale. 787 00:38:12,520 --> 00:38:15,000 Pra, ne kemi një faktoriale funksion. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Nëse unë do të të vërtetë të shkruar këtë në C, ajo që nuk kam nevojë për të vënë para emrit 790 00:38:21,550 --> 00:38:22,800 i funksionit? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 Lloji kthimit, e cila, në këtë rast, ne do të të jap int. 793 00:38:30,060 --> 00:38:35,450 Dhe pastaj brenda formatimin e teksteve kaçurrel, është çfarë shkon brenda formatimin e teksteve kaçurrel për 794 00:38:35,450 --> 00:38:36,850 një funksion? 795 00:38:36,850 --> 00:38:37,950 >> STUDENTËT: Lloji Argument. 796 00:38:37,950 --> 00:38:39,150 >> JASON HIRSCHHORN: argumentet e saj. 797 00:38:39,150 --> 00:38:42,680 Pra faktorial ndoshta do të të marrë një argument. 798 00:38:42,680 --> 00:38:44,500 Kjo ndoshta do të marrë vetëm një argument. 799 00:38:44,500 --> 00:38:49,450 Dhe ne do të thonë se kjo do të marrë nje integer quajtur X. 800 00:38:49,450 --> 00:38:52,770 Dhe përsëri, kur shkruani prototip të një funksion ose shkrim funksionin 801 00:38:52,770 --> 00:38:57,110 në kodin tuaj para e përcaktuar atë, ju shkruani llojin e të dhënave dhe emrin e 802 00:38:57,110 --> 00:39:01,370 që e ndryshueshme për atë funksion vetëm. 803 00:39:01,370 --> 00:39:06,350 Kështu që ju mund të kalojë një numër në këtë funksion, ai do t'i referohemi si x 804 00:39:06,350 --> 00:39:07,340 brenda vendit. 805 00:39:07,340 --> 00:39:08,755 >> Ne kemi funksionin faktorial tonë. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Ne kemi nevojë për dy gjëra, një rast bazë dhe një thirrje rekursive. 808 00:39:15,850 --> 00:39:20,900 Cila është rasti bazë për faktorial? 809 00:39:20,900 --> 00:39:24,850 Dikush që e ka shkruar atë dhe që nuk ka ende flitet, çfarë është baza 810 00:39:24,850 --> 00:39:26,100 rast për faktorial? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> STUDENT: Nëse n është më pak se 2, kthehen 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON HIRSCHHORN: Nëse n është më pak se 2, kthehen 1. 814 00:39:33,520 --> 00:39:37,216 Më pëlqen që, për shkak se kujdeset për 0 dhe 1. 815 00:39:37,216 --> 00:39:45,290 Pra, ne do të bëjmë x <2, kthehen 1. 816 00:39:45,290 --> 00:39:47,870 Nëse do të marrë kaluar 0, në qoftë se ne të merrni kaloi 1, ky funksion do të 817 00:39:47,870 --> 00:39:49,790 menjëherë të kthehen 1. 818 00:39:49,790 --> 00:39:54,020 Nëse do të marrë kaluar disa numër më të madh se ose e barabartë me 2, ne jemi duke shkuar për të 819 00:39:54,020 --> 00:39:55,370 kemi thirrjen tonë rekursive. 820 00:39:55,370 --> 00:39:57,855 >> Dhe kështu si është që do të punojë? 821 00:39:57,855 --> 00:40:01,070 A mund dikush tjetër i cili ka punuar në këtë i cili nuk ka folur ende më japë 822 00:40:01,070 --> 00:40:07,380 thirrje rekursive për këtë funksion në pseudokod? 823 00:40:07,380 --> 00:40:10,770 Nëse do të merrni kaluar në një numër x dhe është më i madh se 2, ajo 824 00:40:10,770 --> 00:40:13,370 duam të bëjmë? 825 00:40:13,370 --> 00:40:17,930 Ne gjithashtu kemi një shembull shkruar në pala që mund të ju jap një hint. 826 00:40:17,930 --> 00:40:20,770 >> STUDENT: Call x herë faktorial i x minus 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON HIRSCHHORN: Pikërisht drejtë. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Ne jemi do të kthehen x herë faktorial i x minus 1. 830 00:40:37,750 --> 00:40:41,810 Dhe kjo, edhe pse kam shkruar lart, në thelb, ajo që keni thënë në anglisht, 831 00:40:41,810 --> 00:40:44,580 ky funksion faktorial do të merrni të quajtur përsëri. 832 00:40:44,580 --> 00:40:46,320 Ajo do të ekzekutojë në x minus 1. 833 00:40:46,320 --> 00:40:49,320 Ajo do të kthehet me një numër të plotë, dhe atëherë ajo do të shumohen këto dy 834 00:40:49,320 --> 00:40:52,050 bashku, dhe se vlera do të jetë u kthye në çfarëdo quajtur këtë 835 00:40:52,050 --> 00:40:55,010 funksionin faktorial, të cilat mund të të jetë një tjetër shembull i 836 00:40:55,010 --> 00:40:58,420 ky funksion faktorial. 837 00:40:58,420 --> 00:41:01,360 >> Kështu që është një shembull i një rekurzive funksion, një shumë të 838 00:41:01,360 --> 00:41:02,530 funksion i thjeshtë recursive. 839 00:41:02,530 --> 00:41:04,530 Por shumica e tyre do të jetë si kjo. 840 00:41:04,530 --> 00:41:11,170 Nëse ju do të doja një gjithkund rekursive të mirë të sfiduar për të quiz, provoni coding 841 00:41:11,170 --> 00:41:13,230 kërko binar Recursively. 842 00:41:13,230 --> 00:41:18,950 Sepse në qoftë se keni kryer kërkim binar për Problemi vendosur tre, ju ndoshta e bëri atë 843 00:41:18,950 --> 00:41:21,730 iteratively në një lak kohë. 844 00:41:21,730 --> 00:41:23,700 >> Por ai gjithashtu mund të jetë e shkruar Recursively. 845 00:41:23,700 --> 00:41:26,310 Ju jeni do të duhet për të shkruar tuaj funksion të veçantë që merr disa 846 00:41:26,310 --> 00:41:29,020 argumente të ndryshme command-line - ose jo argumente command-line, disa 847 00:41:29,020 --> 00:41:30,910 argumente të ndryshme vetëm të rregullta. 848 00:41:30,910 --> 00:41:33,870 Por ju mund të shkruani kërko binar Recursively si. 849 00:41:33,870 --> 00:41:36,190 >> STUDENT: Pra, ju mund të ketë shkruar edhe, në vend të x minus 1, ju 850 00:41:36,190 --> 00:41:39,502 mund të kishte shkruar edhe x minus minus, ose ju mund të keni 851 00:41:39,502 --> 00:41:40,830 shkruar x minus minus. 852 00:41:40,830 --> 00:41:44,740 A mund të shpjegojë vetëm të vërtetë shpejt pse ata do të ishin gjëra të ndryshme, 853 00:41:44,740 --> 00:41:49,510 si se çfarë është dallimi në mes të x minus minus dhe minus minus x? 854 00:41:49,510 --> 00:41:51,320 >> JASON HIRSCHHORN: Jo, unë nuk jam do të shkojë në atë. 855 00:41:51,320 --> 00:41:55,500 Por unë do të flas me ju në lidhje me të pas klasë. x minus minus, minus minus x 856 00:41:55,500 --> 00:41:57,780 pakësim x me 1. 857 00:41:57,780 --> 00:41:59,090 Por ata e bëjnë atë pak ndryshe. 858 00:41:59,090 --> 00:42:00,340 Por unë nuk dua të shkoj në atë. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Pyetje të tjera rreth recursion apo ky funksion? 861 00:42:09,090 --> 00:42:10,140 Kjo nuk është e vërtetë edhe pseudokod. 862 00:42:10,140 --> 00:42:15,060 Kjo është në thelb kodi në C ju do të shkruaj për këtë. 863 00:42:15,060 --> 00:42:19,393 >> OK, çdo pyetje të tjera për tema deri këtu? 864 00:42:19,393 --> 00:42:19,864 Po. 865 00:42:19,864 --> 00:42:23,130 >> STUDENT: Unë kam një i dobët e shpejtë të lundrues pikë dhe saktësi. 866 00:42:23,130 --> 00:42:24,260 >> JASON HIRSCHHORN: Floating pikë dhe saktësi. 867 00:42:24,260 --> 00:42:26,920 A mund dikush të vërtetë shpejt më jepni një i lodhur të 868 00:42:26,920 --> 00:42:28,210 lundrues pikë dhe saktësi? 869 00:42:28,210 --> 00:42:30,420 Ju të gjithë e kishin për të bërë këtë për tuaja Problemi vendosur, kështu që ju jeni të gjithë 870 00:42:30,420 --> 00:42:31,700 njohur me të. 871 00:42:31,700 --> 00:42:35,090 Apo ndoshta jo të gjithë ju. 872 00:42:35,090 --> 00:42:36,602 Çdokush? 873 00:42:36,602 --> 00:42:39,530 Më jepni një vend të filluar. 874 00:42:39,530 --> 00:42:40,750 Lundrues pikë dhe saktësi. 875 00:42:40,750 --> 00:42:42,380 Çfarë është problemi? 876 00:42:42,380 --> 00:42:42,960 Po. 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 Më vjen keq. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: Ka vetëm një numër i caktuar e numrave që mund të përfaqësohen 882 00:42:51,550 --> 00:42:57,930 sepse ju jeni në një, në tonë rast, një sistem 32-bit. 883 00:42:57,930 --> 00:43:03,080 Pra, ju lloj i duhet të përbëjnë disa numra. 884 00:43:03,080 --> 00:43:03,910 >> JASON HIRSCHHORN: Pra, kjo është saktësisht e drejtë. 885 00:43:03,910 --> 00:43:08,110 Ka vetëm një sasi të caktuar të numrat që mund të përfaqësohen. 886 00:43:08,110 --> 00:43:11,770 Nëse ju të shumëzohen dy numra shumë të mëdha, ajo mund të del nga shtrati shumën 887 00:43:11,770 --> 00:43:13,950 e hapësirave që ju keni për të përfaqësuar një numër të plotë. 888 00:43:13,950 --> 00:43:17,930 Kjo është arsyeja pse nganjëherë ne i përdorim një kohë të gjatë në vend të një int. 889 00:43:17,930 --> 00:43:19,210 Kjo ka më shumë hapësira. 890 00:43:19,210 --> 00:43:21,210 Që mund të mbajë një numër më të madh. 891 00:43:21,210 --> 00:43:24,310 >> Floating pikë saktësi ka të bëjë me se, por gjithashtu ka të bëjë me 892 00:43:24,310 --> 00:43:29,300 Fakti që numrat decimal të jo përfaqësuar gjithmonë. 893 00:43:29,300 --> 00:43:29,540 Më vjen keq. 894 00:43:29,540 --> 00:43:31,280 Më lejoni të vënë këtë back up. 895 00:43:31,280 --> 00:43:36,610 Numri dhjetor 1.0 nuk është gjithmonë të përfaqësuara si ju do të presin, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Ajo është e përfaqësuar ndonjëherë si 1,000000001 ose ,999999999. 898 00:43:50,360 --> 00:43:52,780 Ajo mund të jetë edhe 89 hidhet në atje diku. 899 00:43:52,780 --> 00:43:56,560 Pra, ato numra decimal nuk janë përfaqësuar pikërisht si ju do 900 00:43:56,560 --> 00:43:58,430 presim që ata të jenë të përfaqësuara. 901 00:43:58,430 --> 00:44:00,010 >> Pra, në problemit të vendosur - 902 00:44:00,010 --> 00:44:00,860 ishte ajo dy? - 903 00:44:00,860 --> 00:44:05,290 Problemi vendosur dy, ku kemi trajtuar me Numrat pikë lundrues, kur donin 904 00:44:05,290 --> 00:44:08,690 ata për të përfaqësuar pikërisht ajo që kemi dashur ata të përfaqësojnë, numri 905 00:44:08,690 --> 00:44:12,860 i pennies, ose numri i cent, ne shumoj me 100. 906 00:44:12,860 --> 00:44:14,750 Ne rrumbullakuar ato. 907 00:44:14,750 --> 00:44:18,660 Dhe pastaj ne të prerë çdo gjë pas pikës dhjetore. 908 00:44:18,660 --> 00:44:22,020 Kjo ishte për të siguruar se ata do të në të vërtetë të barabartë pikërisht ajo që kemi dashur 909 00:44:22,020 --> 00:44:22,410 ata të barabartë. 910 00:44:22,410 --> 00:44:26,870 >> Sepse kur ju merrni diçka që është një noton dhe kthyer atë në një int, ju 911 00:44:26,870 --> 00:44:29,860 prerë çdo gjë në të djathtë e pikës dhjetore. 912 00:44:29,860 --> 00:44:33,900 Sepse ka disa pika lundrues pasaktësi, 100.000 mund të jetë 913 00:44:33,900 --> 00:44:37,440 të përfaqësuara si të 99,999999999. 914 00:44:37,440 --> 00:44:40,350 Dhe në qoftë se ju vetëm prerë çdo gjë për të e drejta menjëherë, ju jeni do të 915 00:44:40,350 --> 00:44:41,600 të marrë numrin e gabuar. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Po. 918 00:44:44,180 --> 00:44:45,290 >> STUDENT: Unë kisha një pyetje rreth hedh. 919 00:44:45,290 --> 00:44:47,500 Çfarë mënyrë e bën atë të ndodhë në? 920 00:44:47,500 --> 00:44:54,480 Nëse ju do të bëni noton, kllapa, 1 i ndarë me 10, e bën atë e 1 ndahet nga 10, 921 00:44:54,480 --> 00:44:58,910 pastaj të marrë 0.1, pastaj kthehet atë në një noton? 922 00:44:58,910 --> 00:45:01,470 >> JASON HIRSCHHORN: Nëse ju bëni noton me 1 ndahet nga 10 - 923 00:45:01,470 --> 00:45:02,550 >> STUDENT: Po, dhe pastaj të barabartë - 924 00:45:02,550 --> 00:45:04,240 mirë, kjo do të normalisht e kanë të barabartë në - 925 00:45:04,240 --> 00:45:04,690 Po. 926 00:45:04,690 --> 00:45:06,760 Ju dëshironi të bëni atë një noton, e drejtë? 927 00:45:06,760 --> 00:45:12,790 >> JASON HIRSCHHORN: OK, kështu që ne jemi duke shkuar për përdorin që të segue në zbulimin 928 00:45:12,790 --> 00:45:15,390 përgjigjet e këtyre pyetjeve përmes coding. 929 00:45:15,390 --> 00:45:18,180 Sepse ju do të keni një shumë të këto pyetje minutë, dhe një mënyrë e mirë 930 00:45:18,180 --> 00:45:19,100 për zgjidhjen e tyre është përmes coding. 931 00:45:19,100 --> 00:45:21,320 Pra, ne jemi duke shkuar për të koduar këtë të drejtë tani, dhe atëherë ne jemi duke shkuar për të shkuar mbrapa dhe 932 00:45:21,320 --> 00:45:24,020 kodojnë pyetjen keni pasur. 933 00:45:24,020 --> 00:45:24,950 >> Pra, linja e parë - 934 00:45:24,950 --> 00:45:29,390 Unë nuk duhet të ketë shkruar atë - çka është gjëja e parë që ne duam të bëjmë kur ne 935 00:45:29,390 --> 00:45:32,250 të hapur një skedë të re në gedit? 936 00:45:32,250 --> 00:45:34,190 >> STUDENT: Përfshini. 937 00:45:34,190 --> 00:45:35,920 >> JASON HIRSCHHORN: Përfshini çfarë? 938 00:45:35,920 --> 00:45:37,952 >> STUDENT: Biblioteka CS50. 939 00:45:37,952 --> 00:45:39,920 >> JASON HIRSCHHORN: OK. 940 00:45:39,920 --> 00:45:42,590 Çfarë tjetër duhet të përfshijë? 941 00:45:42,590 --> 00:45:46,820 Ne jemi vetëm do të shikoni se çfarë ndodh kur ju të hedhur diçka në një noton. 942 00:45:46,820 --> 00:45:48,605 Por ajo që na duhet për të përfshirë në qoftë se ne jemi do të shkruani një program C? 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 Ne në fakt nuk kemi nevojë, për këtë program, cs50.h, edhe pse kjo është 946 00:45:54,880 --> 00:45:55,920 gjithmonë e dobishme për të përfshirë atë. 947 00:45:55,920 --> 00:45:58,260 Por ne gjithmonë nevojë stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> STUDENT: Kur kodim në C? 949 00:45:59,660 --> 00:46:15,770 >> JASON HIRSCHHORN: Kur kodim në C. 950 00:46:15,770 --> 00:46:17,090 >> Kështu që unë të shpëtuar atë si kjo. Dosjen c. 951 00:46:17,090 --> 00:46:18,590 Kam marrë disa theksim i sintaksës bukur. 952 00:46:18,590 --> 00:46:22,890 Kam shkruar boshllëk brenda kryesor. 953 00:46:22,890 --> 00:46:24,792 Çfarë do të thotë të pavlefshme? 954 00:46:24,792 --> 00:46:26,740 >> STUDENT: A nuk të marrë asnjë argumente command-line. 955 00:46:26,740 --> 00:46:28,900 >> Jason Hirschhorn: mjetet e pavlefshme, në këtë rast, kryesore nuk merr asnjë 956 00:46:28,900 --> 00:46:29,700 argumente command-line. 957 00:46:29,700 --> 00:46:32,720 Në rastet e tjera, që do të thotë funksionin nuk merr argumente command-line. 958 00:46:32,720 --> 00:46:36,560 Ose funksion, nëse unë do të shkruaj zbrazëti kryesor (i pavlefshëm), që do të thotë-së kryesore 959 00:46:36,560 --> 00:46:38,460 nuk kthehen asgjë. 960 00:46:38,460 --> 00:46:39,960 Pra pavlefshme thjesht do të thotë asgjë. 961 00:46:39,960 --> 00:46:42,510 Çfarë do të shkruaj në qoftë se unë do të të marrë argumente command-line? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> STUDENT: int hark c v string hark 964 00:46:47,150 --> 00:46:49,055 >> JASON HIRSCHHORN: int argc string ARGV. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 A është kjo e drejtë? 967 00:46:55,572 --> 00:46:58,720 >> STUDENT: Kjo është char kllapa yll ARGV. 968 00:46:58,720 --> 00:47:01,730 >> JASON HIRSCHHORN: Pra, ju mund të shkruani kllapa string ARGV apo yll char ARGV 969 00:47:01,730 --> 00:47:03,710 kllapa, por ju duhet kllapa. 970 00:47:03,710 --> 00:47:06,290 Për shkak se ARGV është një koleksion e vargjet, mos harroni. 971 00:47:06,290 --> 00:47:07,360 Kjo nuk është vetëm një varg. 972 00:47:07,360 --> 00:47:10,350 Pra string ARGV është, këtu është një varg të quajtur ARGV. 973 00:47:10,350 --> 00:47:13,630 Kllapa String ARGV është, këtu është një koleksion të strings. 974 00:47:13,630 --> 00:47:17,865 Pra int kllapa ARGV argc string do të ishte diçka që unë 975 00:47:17,865 --> 00:47:18,810 ndoshta do të shkruaj. 976 00:47:18,810 --> 00:47:23,050 >> Kështu që ju të kërkuar për të ruajtur në një numër të plotë? 977 00:47:23,050 --> 00:47:24,285 >> STUDENT: Po, numër i plotë. 978 00:47:24,285 --> 00:47:25,840 Ose në një noton. 979 00:47:25,840 --> 00:47:26,710 >> JASON HIRSCHHORN: Në një noton? 980 00:47:26,710 --> 00:47:30,790 Si, float x është e barabartë me 1 ndahet nga 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 Si mund të shtypura nga një noton në printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Çfarë? 986 00:47:46,714 --> 00:47:47,560 >> STUDENT:% f. 987 00:47:47,560 --> 00:47:48,300 >> JASON HIRSCHHORN:% f. 988 00:47:48,300 --> 00:47:50,810 Çfarë është një numër i plotë? 989 00:47:50,810 --> 00:47:52,110 d ose i. 990 00:47:52,110 --> 00:47:53,000 Çfarë është një varg? 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 Si mund të merrni një linjë të re? 994 00:47:57,550 --> 00:47:58,800 >> STUDENT: Backslash n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON HIRSCHHORN: Çfarë mund të kthehen në qoftë se shkon kryesore në mënyrë korrekte? 997 00:48:07,100 --> 00:48:08,360 >> STUDENT: 0. 998 00:48:08,360 --> 00:48:09,430 A kam nevojë për të shkruar këtë linjë, pse? 999 00:48:09,430 --> 00:48:10,170 >> STUDENT: Jo. 1000 00:48:10,170 --> 00:48:11,513 OK, ne nuk do të shkruaj atë, atëherë. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 A mund të gjithë e lexuar këtë? 1003 00:48:17,190 --> 00:48:18,485 Ajo duket pak e vogël. 1004 00:48:18,485 --> 00:48:20,160 A mund të shihni të gjithë, ose duhet Unë e bëjnë atë më të mëdha? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Unë mendoj se për kamera, ne do të bëjnë atë pak më e madhe, edhe pse. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON HIRSCHHORN: Nëse unë dua të kthehet këtë . C paraqesë në një ekzekutues, çfarë 1009 00:48:38,410 --> 00:48:39,260 mund të shkruaj? 1010 00:48:39,260 --> 00:48:41,610 >> STUDENT: Bëni testin. 1011 00:48:41,610 --> 00:48:42,080 >> JASON HIRSCHHORN: Na vjen keq? 1012 00:48:42,080 --> 00:48:42,790 >> STUDENT: Bëni testin. 1013 00:48:42,790 --> 00:48:44,040 >> JASON HIRSCHHORN: Bëni testin. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Ne ishim duke folur për kjo vijë më parë. 1016 00:48:48,410 --> 00:48:49,140 Tingëllimë. 1017 00:48:49,140 --> 00:48:51,270 Çfarë është tingëllimë? 1018 00:48:51,270 --> 00:48:52,200 Emri i përpiluesit. 1019 00:48:52,200 --> 00:48:53,920 Ç'është kjo linjë? 1020 00:48:53,920 --> 00:48:55,580 >> STUDENT: vë atë për përdorim të gdb. 1021 00:48:55,580 --> 00:48:59,230 >> Jason Hirschhorn: Sets ajo për përdorim të gdb. 1022 00:48:59,230 --> 00:49:02,338 Kjo linjë, çfarë është kjo? 1023 00:49:02,338 --> 00:49:03,290 >> STUDENT: kodi burim. 1024 00:49:03,290 --> 00:49:06,010 >> JASON HIRSCHHORN: Kjo është fotografi burim,. fotografi c. 1025 00:49:06,010 --> 00:49:08,150 Çfarë bëjnë këto dy linja? 1026 00:49:08,150 --> 00:49:10,245 Ose këto dy linja jo. 1027 00:49:10,245 --> 00:49:12,300 >> STUDENT: Ajo emra të testuar. 1028 00:49:12,300 --> 00:49:15,410 >> JASON HIRSCHHORN: Pra dash o thotë, emërojë atë diçka ndryshe. 1029 00:49:15,410 --> 00:49:16,790 Dhe këtu ju jeni duke e quajtur atë provë. 1030 00:49:16,790 --> 00:49:18,900 Nëse unë nuk e kanë atë në, çfarë do atë emër kjo? 1031 00:49:18,900 --> 00:49:20,260 >> STUDENT: A.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON HIRSCHHORN: A.out. 1033 00:49:22,340 --> 00:49:25,366 Çfarë do të bëni këtë? 1034 00:49:25,366 --> 00:49:27,670 >> STUDENT: Links bibliotekën matematikë. 1035 00:49:27,670 --> 00:49:29,550 >> JASON HIRSCHHORN: Ajo lidh në bibliotekë matematikë. 1036 00:49:29,550 --> 00:49:32,880 Ne nuk përfshinte bibliotekën matematikë, por pasi kjo është aq e zakonshme, ata kanë 1037 00:49:32,880 --> 00:49:35,780 make shkruar për të gjithmonë të përfshirë biblioteka matematikë. 1038 00:49:35,780 --> 00:49:39,050 Dhe po kështu, kjo përfshin biblioteka CS50. 1039 00:49:39,050 --> 00:49:43,010 >> OK, kështu që nëse ne lista, ne tani kemi një ekzekutueshme quajtur provë. 1040 00:49:43,010 --> 00:49:45,150 Për ta ekzekutuar atë, unë shkruaj testin. 1041 00:49:45,150 --> 00:49:48,330 Unë shoh se pika ime lundrues, siç pritej, është e barabartë me 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 A do të - 1044 00:49:51,590 --> 00:49:52,060 kështu - 1045 00:49:52,060 --> 00:49:55,210 >> STUDENT: Pastaj në qoftë se ju vendosni noton tani, si ju hedhur atë si noton - 1046 00:49:55,210 --> 00:49:56,870 >> JASON HIRSCHHORN: Cast 1 për një noton? 1047 00:49:56,870 --> 00:49:59,180 >> STUDENT: Jo, hedhin gjë të plotë - 1048 00:49:59,180 --> 00:49:59,500 po. 1049 00:49:59,500 --> 00:50:02,460 Nëse ju vetëm e bëri atë, do të që e bëjnë të 0.1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON HIRSCHHORN: OK, kështu që me të vërtetë të shpejtë, 1 ndahet nga 10, ata janë 1051 00:50:07,170 --> 00:50:08,690 integers duke u ndarë. 1052 00:50:08,690 --> 00:50:13,580 Pra, kur ju ndani integers, ata janë 0, dhe ju jeni të shpëtuar se 0 në një 1053 00:50:13,580 --> 00:50:17,170 noton, sepse slash është vetëm ndarje numër i plotë. 1054 00:50:17,170 --> 00:50:19,180 Deri tani ne jemi kthyer diçka në një noton. 1055 00:50:19,180 --> 00:50:21,650 >> Le të shohim se çfarë ndodh. 1056 00:50:21,650 --> 00:50:22,900 Ne do të bëjë testin. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Deri tani ne shohim se se slash nuk ishte Ndarja numër i plotë, ajo u lundrues 1059 00:50:31,090 --> 00:50:32,640 ndarje pikë. 1060 00:50:32,640 --> 00:50:35,700 Për shkak se një prej argumenteve të saj ishte hedhur në një noton. 1061 00:50:35,700 --> 00:50:38,380 Deri tani ajo po thoshte, trajtuar kjo ndarje si ne jemi që kanë të bëjnë me 1062 00:50:38,380 --> 00:50:40,140 pikë lundrues, jo me integers. 1063 00:50:40,140 --> 00:50:42,760 Dhe kështu që ne të merrni përgjigje që ne presim. 1064 00:50:42,760 --> 00:50:44,620 >> Le të shohim se çfarë ndodh - 1065 00:50:44,620 --> 00:50:47,103 oops. 1066 00:50:47,103 --> 00:50:51,646 Në qoftë se unë të kërkuar për të shtypur më shumë decimal të spote, si mund ta bëj këtë? 1067 00:50:51,646 --> 00:50:55,550 >> STUDENT: Pika dot f, ose sa më shumë vende dhjetore e te. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON HIRSCHHORN: Kështu që unë të shtypura 10 spote dhjetore. 1070 00:51:04,440 --> 00:51:06,610 Dhe ne shohim tani ne jemi duke marrë disa sende të pazakontë. 1071 00:51:06,610 --> 00:51:09,650 Dhe kjo shkon prapa në pyetjen tuaj rreth lundrues pikë pasaktësi. 1072 00:51:09,650 --> 00:51:10,950 Ka një gjë e çuditshme ruajtur në këtu. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, bën që të përgjigjem pyetjes tuaj? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Çfarë tjetër e doni të kodit shpejt? 1077 00:51:20,200 --> 00:51:25,470 >> STUDENT: Unë vetëm të kërkuar për të parë nëse janë apo jo, në qoftë se ju të lirë deri disa tregues, 1078 00:51:25,470 --> 00:51:30,410 nëse ky tregues ende kishte ruajtur në ajo adresa e asaj që kishte qenë 1079 00:51:30,410 --> 00:51:32,170 duke treguar më parë. 1080 00:51:32,170 --> 00:51:34,100 >> JASON HIRSCHHORN: OK, kështu që le të bëjnë këtë. 1081 00:51:34,100 --> 00:51:38,030 Yll ptr char, kjo krijon një ndryshore quajtur ptr i tipit char ylli. 1082 00:51:38,030 --> 00:51:39,280 Si mund të shkruaj malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> Alden: Vetëm malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 Por pastaj ajo duhet të jetë madhësia e, dhe në këtë rast, unë mendoj që do të 1087 00:51:51,040 --> 00:51:52,465 të treguar char. 1088 00:51:52,465 --> 00:51:54,450 Pra, kjo do të jetë char. 1089 00:51:54,450 --> 00:51:57,520 >> JASON HIRSCHHORN: OK, kështu që më shumë përgjithësisht, Brenda - 1090 00:51:57,520 --> 00:51:58,770 le të redaktoni. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Brenda malloc, ju doni numrin i bytes në grumbull. 1093 00:52:09,260 --> 00:52:12,320 Në përgjithësi, ajo që ne kemi parë se ne jemi duke bërë është që ne jemi duke shkuar për malloc 1094 00:52:12,320 --> 00:52:14,940 vargjet, për shembull, ose vargjeve të numrave të plotë. 1095 00:52:14,940 --> 00:52:21,600 Pra, nëse ne duam 10 numra të plotë, ose 10 chars, 10 do të na japë 10. 1096 00:52:21,600 --> 00:52:24,370 Dhe pastaj madhësia e karaktere do të japë na se madhësia e karaktere, të cilat në 1097 00:52:24,370 --> 00:52:25,120 ky rast është 1 bajt. 1098 00:52:25,120 --> 00:52:26,250 Ne kemi marrë 10 bytes. 1099 00:52:26,250 --> 00:52:28,540 Nëse do të shkruani madhësinë e int, që do të na japë 40 bytes. 1100 00:52:28,540 --> 00:52:31,520 >> Pra, më përgjithësisht, në brendësi të malloc është numri i bytes ju dëshironi. 1101 00:52:31,520 --> 00:52:34,620 Në këtë rast, ne jemi duke marrë 1 bajt. 1102 00:52:34,620 --> 00:52:36,900 E cila duket si një përdorim të pazakontë e malloc, por për tonë 1103 00:52:36,900 --> 00:52:38,470 qëllime kuptim. 1104 00:52:38,470 --> 00:52:40,420 Pra, nuk është se. 1105 00:52:40,420 --> 00:52:43,420 >> Ne jemi duke shkuar për të thirrur të lirë. 1106 00:52:43,420 --> 00:52:47,040 Ne të shpëtoj prej tij dhe ne i përdorim PTR përsëri. 1107 00:52:47,040 --> 00:52:48,750 Dhe çfarë ju doni të kontrolloni? 1108 00:52:48,750 --> 00:52:50,550 >> STUDENT: Unë vetëm të kërkuar për të parë nëse apo nuk ka pasur asgjë 1109 00:52:50,550 --> 00:52:51,900 në brendësi të saj. 1110 00:52:51,900 --> 00:52:53,050 >> JASON HIRSCHHORN: Pra, nëse ai vuri në dukje çdo gjë? 1111 00:52:53,050 --> 00:52:57,740 >> STUDENT: Po, pikërisht, nëse ajo ende kishte një adresë memorie. 1112 00:52:57,740 --> 00:53:02,220 >> JASON HIRSCHHORN: Pra, ju doni për të kontrolluar vlerën e PTR? 1113 00:53:02,220 --> 00:53:03,470 >> STUDENT: Po, pikërisht. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON HIRSCHHORN: Çfarë unë shkruaj këtu në qoftë se unë dua të kontrolloni vlerën e 1116 00:53:10,160 --> 00:53:11,880 Pika - çfarë është, Jordan tha, vlera? 1117 00:53:11,880 --> 00:53:13,720 Apo çfarë është ruajtur brenda PTR? 1118 00:53:13,720 --> 00:53:14,620 >> STUDENT: Adresa e memories. 1119 00:53:14,620 --> 00:53:16,330 >> JASON HIRSCHHORN: Adresa e memories. 1120 00:53:16,330 --> 00:53:20,520 Pra, nëse unë shkruaj vetëm këtë, ajo do të më jepni vlerën e PTR. 1121 00:53:20,520 --> 00:53:22,800 Dhe si mund të shtypura nga një adresë memorie? 1122 00:53:22,800 --> 00:53:26,470 Çfarë është string format për një adresë memorie? 1123 00:53:26,470 --> 00:53:27,430 >> STUDENT:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON HIRSCHHORN:% p. 1125 00:53:28,050 --> 00:53:29,500 % S është një varg. 1126 00:53:29,500 --> 00:53:30,750 % P për treguesin. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 A është kjo e drejtë? 1129 00:53:43,540 --> 00:53:44,790 Kjo është e drejtë. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Pra, është e barabartë me ptr - 1132 00:53:51,040 --> 00:53:53,350 ajo ende ka diçka në të. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 Kjo është ndoshta një më të pyetje interesante. 1135 00:53:57,645 --> 00:53:59,198 Çfarë do të vijë të bëjë? 1136 00:53:59,198 --> 00:54:00,830 >> STUDENT: gabimet seg. 1137 00:54:00,830 --> 00:54:01,310 >> JASON HIRSCHHORN: Çfarë? 1138 00:54:01,310 --> 00:54:02,678 >> STUDENT: Mendoj se seg gabimet. 1139 00:54:02,678 --> 00:54:03,574 >> JASON HIRSCHHORN: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> STUDENT: Unë mendoj se kjo do të seg faj. 1141 00:54:04,920 --> 00:54:08,265 >> JASON HIRSCHHORN: Pra, kjo linjë Kodi i, yll PTR, çfarë 1142 00:54:08,265 --> 00:54:10,152 do të thotë yll? 1143 00:54:10,152 --> 00:54:11,240 >> STUDENT: Përmbajtja e. 1144 00:54:11,240 --> 00:54:11,560 >> JASON HIRSCHHORN: Po. 1145 00:54:11,560 --> 00:54:13,910 Shkoni për të marrë përmbajtjen e. 1146 00:54:13,910 --> 00:54:16,830 Pra, kjo do të shkojë në kujtesën adresojë atje dhe të më japë atë. 1147 00:54:16,830 --> 00:54:21,030 I përdorur për% c drejtë këtu, sepse nuk janë karaktere ruajtur atje. 1148 00:54:21,030 --> 00:54:23,390 Pra, ne jemi duke shkuar për të shkuar në atë të adresave ne vetëm e pa - apo ajo ndoshta do të jetë një 1149 00:54:23,390 --> 00:54:25,190 pak më ndryshe këtë herë që ne të drejtuar programin. 1150 00:54:25,190 --> 00:54:28,010 Por ne do të shkojnë në atë adresë të cilat ne e dimë ende ekziston 1151 00:54:28,010 --> 00:54:29,260 dhe të shohim se çfarë është atje. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Pra, ajo nuk ka faj seg. 1154 00:54:37,110 --> 00:54:38,970 Ajo thjesht nuk na ka dhënë asgjë. 1155 00:54:38,970 --> 00:54:43,350 Ajo mund të ketë na dhënë në të vërtetë diçka, ne thjesht nuk mund ta shohin atë. 1156 00:54:43,350 --> 00:54:45,110 Dhe kjo shkon prapa në këtë ide - 1157 00:54:45,110 --> 00:54:47,270 dhe ne nuk do të marrë shumë në kjo, sepse kjo është përtej 1158 00:54:47,270 --> 00:54:48,460 Qëllimi i këtij kursi. 1159 00:54:48,460 --> 00:54:51,260 Por kemi folur për këtu, në qoftë se ne shkoi përtej kufijve të array nga 1160 00:54:51,260 --> 00:54:54,890 1, ne nuk mund të merrni në telashe. 1161 00:54:54,890 --> 00:54:58,550 >> Ndonjëherë, kur ju thjesht shkoni jashtë me 1, ju jeni duke bërë diçka të gabuar, dhe ju 1162 00:54:58,550 --> 00:54:59,220 mund të merrni në telashe. 1163 00:54:59,220 --> 00:55:00,820 Por ju nuk gjithmonë të marrë në telashe. 1164 00:55:00,820 --> 00:55:05,170 Kjo varet se sa e një gjë e keqe që ju bëni, ju jeni do të merrni në telashe. 1165 00:55:05,170 --> 00:55:07,790 Cili nuk do të thotë, të jetë i lëngshëm me kodin tuaj. 1166 00:55:07,790 --> 00:55:12,080 Por është për të thënë, programi nuk do të gjithmonë të lë, edhe në qoftë se ju shkoni diku 1167 00:55:12,080 --> 00:55:14,130 ju nuk jemi duke menduar për të shkuar. 1168 00:55:14,130 --> 00:55:18,170 >> Një shembull i mirë i kësaj është, një shumë e njerëzit në problemin e tyre të vendosur 3, e cila 1169 00:55:18,170 --> 00:55:22,350 u 15, nuk e shikoni caqeve të bordit. 1170 00:55:22,350 --> 00:55:25,860 Kështu që ju shikuar në të majtë, dukej për të drejtë, dukej në krye, dukej 1171 00:55:25,860 --> 00:55:27,000 në fund. 1172 00:55:27,000 --> 00:55:31,540 Por ju nuk e kontrolloni për të parë nëse i lartë në të vërtetë do të ishte në bord. 1173 00:55:31,540 --> 00:55:35,220 Dhe shumë njerëz që bënë këtë dhe u kthye se në, programi i tyre ka punuar 1174 00:55:35,220 --> 00:55:38,960 të përkryer, sepse kur se bordi i ishte ruajtur në kujtesë, në qoftë se ju shkoi një të tillë 1175 00:55:38,960 --> 00:55:42,300 mbi të apo kontrolluar se kujtesa adresën, nuk pati asnjë gjë 1176 00:55:42,300 --> 00:55:44,870 veçanërisht të tmerrshme për këtë, kështu që programi juaj nuk ka qenë 1177 00:55:44,870 --> 00:55:45,970 do të bërtas në ju. 1178 00:55:45,970 --> 00:55:48,870 >> Por ne ende do të marrë off pikë në qoftë se ju nuk e kontrolloni atë, sepse ju 1179 00:55:48,870 --> 00:55:50,850 ishin duke bërë diçka që ju nuk ishin menduar për të bërë, dhe ju mund të ketë 1180 00:55:50,850 --> 00:55:51,860 marrë në telashe. 1181 00:55:51,860 --> 00:55:54,040 Shanset janë, megjithatë, ju ndoshta nuk e bëri. 1182 00:55:54,040 --> 00:55:57,790 Pra, kjo është për të treguar se, po, ne ende mund të shkojnë për të. 1183 00:55:57,790 --> 00:55:59,010 Dhe ne nuk jemi duke marrë në Problemi në këtë rast. 1184 00:55:59,010 --> 00:56:04,000 Nëse ne u përpoq të bëjë të lexuar 100 karaktere të ardhshëm, ne do të 1185 00:56:04,000 --> 00:56:06,000 ndoshta merrni në telashe. 1186 00:56:06,000 --> 00:56:09,400 Dhe ju mund të kodin leximin e ardhshëm 100 karaktere në qoftë se ju doni duke bërë disa 1187 00:56:09,400 --> 00:56:10,110 lloj për lak. 1188 00:56:10,110 --> 00:56:10,850 Po. 1189 00:56:10,850 --> 00:56:16,250 >> STUDENT: Që nga viti ne kemi qenë të caktuar që Hapësira një vlerë aktuale, ne nuk do të 1190 00:56:16,250 --> 00:56:17,050 në të vërtetë të jetë në gjendje për të parë asgjë. 1191 00:56:17,050 --> 00:56:21,740 A duhet të provoni me vendosjen që barabartë për të si c apo diçka? 1192 00:56:21,740 --> 00:56:22,640 >> JASON HIRSCHHORN: pyetje e Madhe. 1193 00:56:22,640 --> 00:56:25,340 Si mund të vendos se vlera - 1194 00:56:25,340 --> 00:56:28,980 çfarë linjë e kodit mund të shkruaj në linjë shtatë për të bërë atë që keni thënë? 1195 00:56:28,980 --> 00:56:34,040 >> STUDENT: Star ptr është e barabartë vetëm quote c përfundojë kuotë të vetme. 1196 00:56:34,040 --> 00:56:36,970 >> JASON HIRSCHHORN: Kështu që është vënë një karakter, c, në atë vend, 1197 00:56:36,970 --> 00:56:40,200 sepse përsëri, se yll do të thotë të shkojnë në atje. 1198 00:56:40,200 --> 00:56:43,320 Dhe kur përdoret në anën e majtë të një operator detyrë, që është e barabartë me 1199 00:56:43,320 --> 00:56:47,270 nënshkruajë, ne nuk jemi duke shkuar për të marrë atë vlera aq shumë sa të vendosur këtë vlerë. 1200 00:56:47,270 --> 00:56:48,520 Tani le të shohim se çfarë ndodh. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Ne kemi vënë diçka atje dhe ai ishte aty. 1203 00:56:56,770 --> 00:56:58,000 Ne quhet pa pagesë. 1204 00:56:58,000 --> 00:57:00,100 Disa sende ndodhur ndoshta në grumbull. 1205 00:57:00,100 --> 00:57:01,890 Pra, nuk është më atje. 1206 00:57:01,890 --> 00:57:07,440 Por përsëri, ne nuk jemi duke marrë në vështirësi për të shkuar atje. 1207 00:57:07,440 --> 00:57:10,260 >> Unë jam duke bërë këtë në kodin për të ilustruar se shumë prej këtyre 1208 00:57:10,260 --> 00:57:12,410 pyetje që ju duhet, ata janë me të vërtetë interesante 1209 00:57:12,410 --> 00:57:13,650 përgjigjet shumë kohë. 1210 00:57:13,650 --> 00:57:15,260 Dhe ata janë pyetje me të vërtetë të mirë. 1211 00:57:15,260 --> 00:57:19,010 Dhe ju mund të kuptoj ato në tuaj në qoftë se, për shembull, 1212 00:57:19,010 --> 00:57:19,990 ne nuk jemi në seksion. 1213 00:57:19,990 --> 00:57:20,940 Po. 1214 00:57:20,940 --> 00:57:24,430 >> STUDENT: Për shkak se ju nuk jeni dërguar treguesin kudo, ju duhet të 1215 00:57:24,430 --> 00:57:26,530 përdorin malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON HIRSCHHORN: Pra, kjo shkon prapa në pyetjen tuaj fillestare. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 A është kjo vetëm një variabël lokale? 1219 00:57:29,980 --> 00:57:32,280 Malloc këtu nuk është se bindëse. 1220 00:57:32,280 --> 00:57:35,260 Përdorimi i malloc këtu nuk është se bindëse sepse është e 1221 00:57:35,260 --> 00:57:36,500 vetëm një variabël lokale. 1222 00:57:36,500 --> 00:57:40,970 >> STUDENT: Pra, mund të bëni char yll ptr është e barabartë me përshëndetje? 1223 00:57:40,970 --> 00:57:41,400 >> JASON HIRSCHHORN: Oh. 1224 00:57:41,400 --> 00:57:43,300 Pra, ne jemi duke shkuar për tani të kthehet në pyetjen tuaj fillestare. 1225 00:57:43,300 --> 00:57:46,885 Unë mendoj se ju nuk janë të kënaqur me përgjigjen time. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Si kjo? 1228 00:57:49,226 --> 00:57:49,682 >> STUDENT: Po. 1229 00:57:49,682 --> 00:57:50,932 Prisni. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON HIRSCHHORN: Dhe ku nuk ju duan të shtypura nga? 1232 00:57:57,850 --> 00:58:00,026 Pra, ne do të shtypura nga një varg të tillë? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> STUDENT: Interesting. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON HIRSCHHORN: Pra, kjo thotë kjo Argumenti ka llojin e karakterit. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Pra, kjo duhet të jetë një karakter. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> STUDENT: Vetëm merr një të parë. 1241 00:58:26,280 --> 00:58:28,610 >> JASON HIRSCHHORN: Pra, kjo është ajo që kam thënë më parë. 1242 00:58:28,610 --> 00:58:34,240 Ashtu si thashë, kjo nuk është e ruajtjen string brenda akrep ndryshueshme. 1243 00:58:34,240 --> 00:58:35,120 Është ruajtjen - 1244 00:58:35,120 --> 00:58:36,350 >> STUDENT: Vlera e parë e vargut. 1245 00:58:36,350 --> 00:58:40,810 >> JASON HIRSCHHORN: adresa e vlera e parë e vargut. 1246 00:58:40,810 --> 00:58:46,940 Nëse ne do të shtypura nga kjo, ne jemi duke marrë vlera brenda akrep. 1247 00:58:46,940 --> 00:58:51,005 Dhe ne do të shohim se është, me të vërtetë, një adresë memorie. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> A ka kjo kuptim? 1250 00:58:56,440 --> 00:58:56,940 Më vjen keq. 1251 00:58:56,940 --> 00:58:58,996 Prisni, bën që të përgjigjen tuaj pyetja, pse? 1252 00:58:58,996 --> 00:58:59,790 >> STUDENT: Po. 1253 00:58:59,790 --> 00:59:05,830 >> JASON HIRSCHHORN: Kjo linjë e kodit është duke krijuar një varg dhe pastaj një tjetër 1254 00:59:05,830 --> 00:59:09,115 akrep variabël që është vënë në atë varg, se array. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Po. 1257 00:59:14,980 --> 00:59:19,200 >> STUDENT: Pra, nëse ne shkuam një memorie trajtuar më tej, do të kemi h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 A ka qenë e ruajtur si një varg? 1260 00:59:23,150 --> 00:59:24,400 >> JASON HIRSCHHORN: Si, ne e bëmë - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 kështu që kjo është e vlefshme për të bërë. 1263 00:59:30,790 --> 00:59:33,780 Kjo është pika aritmetike, e cila ju djema e kanë parë më parë dhe duhet të jetë 1264 00:59:33,780 --> 00:59:35,550 relativisht të kënaqur me të. 1265 00:59:35,550 --> 00:59:36,905 Kjo është e ngjashme me shkrim - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 nëse do të shkruaj këtë linjë të kodit, ne kemi parë array simbol para. 1268 00:59:46,350 --> 00:59:55,900 Kjo duhet të na japin të dytën vlera në këtë array, h. 1269 00:59:55,900 --> 01:00:05,010 >> Në qoftë se ne e bëmë këtë, kjo duhet të japin Na vlera e dytë në atë rrjet. 1270 01:00:05,010 --> 01:00:08,320 Për shkak se ajo nuk është duke shkuar në kujtesën Adresa e gjëja e parë, por 1271 01:00:08,320 --> 01:00:10,530 Adresa kujtim i sendit mbi një. 1272 01:00:10,530 --> 01:00:14,360 Dhe pastaj dereferences operatori yll që akrep. 1273 01:00:14,360 --> 01:00:16,940 Dhe përsëri, le të shohim. 1274 01:00:16,940 --> 01:00:18,664 Ne kemi marrë përsëri h. 1275 01:00:18,664 --> 01:00:20,980 >> STUDENT: Çfarë bën pikërisht dereference të thotë? 1276 01:00:20,980 --> 01:00:23,650 >> JASON HIRSCHHORN: dereference është një fjalë e zbukuruar për të shkuar në. 1277 01:00:23,650 --> 01:00:26,390 Shkoni tek kjo dhe për të marrë atë që është atje është që të dereference një akrep. 1278 01:00:26,390 --> 01:00:28,240 Është vetëm një fjalë për të zbukuruar atë. 1279 01:00:28,240 --> 01:00:29,986 >> STUDENT: Nëse do të donte të shtypura të vargut të tërë, mund të kemi 1280 01:00:29,986 --> 01:00:31,930 të bëjë treguesin ampersand? 1281 01:00:31,930 --> 01:00:33,490 >> JASON HIRSCHHORN: OK, ne jemi të do të bëj një pauzë këtu. 1282 01:00:33,490 --> 01:00:35,480 Ne do të përfundojnë këtu. 1283 01:00:35,480 --> 01:00:41,760 Simbol ju jep adresën e një vend, kështu që kur ju bëni zëvendësojeni me të 1284 01:00:41,760 --> 01:00:44,080 një variabël, kjo ju jep adresën ku që variabël është ruajtur. 1285 01:00:44,080 --> 01:00:48,580 Akrep simbol do të ju jap Adresa e PTR ku ptr është në kujtesën. 1286 01:00:48,580 --> 01:00:50,140 >> Ne nuk jemi duke shkuar për të shkuar në me këtë shembull. 1287 01:00:50,140 --> 01:00:52,640 Ju mund të kuptoj se këto gjëra në tuaj. 1288 01:00:52,640 --> 01:00:55,740 Por përsëri, kjo mund edhe të jetë një verging bit përtej asaj që ju duhet të dini për 1289 01:00:55,740 --> 01:00:58,000 Qëllimi i këtij termi-mes - 1290 01:00:58,000 --> 01:00:59,070 ose ky quiz, në vend. 1291 01:00:59,070 --> 01:01:00,270 Më vjen keq. 1292 01:01:00,270 --> 01:01:03,770 >> Ne do të lëvizin më, sepse unë do të si për të bërë një problem kodim 1293 01:01:03,770 --> 01:01:05,100 para se të koha është deri. 1294 01:01:05,100 --> 01:01:09,340 Dhe ne do të kodin atë që unë mendoj se është më bindëse e këtyre 1295 01:01:09,340 --> 01:01:11,020 shembuj, atoi. 1296 01:01:11,020 --> 01:01:14,520 Pra, kjo ishte një pyetje në një quiz dy vjet më parë. 1297 01:01:14,520 --> 01:01:17,810 Dhe unë kam atë në bord këtu. 1298 01:01:17,810 --> 01:01:20,680 >> Njerëzit u pyetën në quiz - 1299 01:01:20,680 --> 01:01:23,640 ata ishin të dhënë pak më shumë tesxt në pyetje, por unë eliminohen 1300 01:01:23,640 --> 01:01:26,640 Teksti sepse ajo ishte e panevojshme për qëllimet tona tani. 1301 01:01:26,640 --> 01:01:29,180 Ajo ishte vetëm disa sfond në atë që atoi bëri. 1302 01:01:29,180 --> 01:01:31,425 Por ju të gjithë e dimë dhe jemi shumë të njohur me atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Unë sugjeroj që ju të Kodit, ky në një fletë letre. 1304 01:01:35,620 --> 01:01:39,310 Unë gjithashtu sugjeroj që ju përdorni strategji se ne kemi shkuar mbi 1305 01:01:39,310 --> 01:01:41,040 shumë në seksionin tonë. 1306 01:01:41,040 --> 01:01:44,130 Së pari, sigurohuni që ju kuptoni çfarë atoi vepër. 1307 01:01:44,130 --> 01:01:47,580 Vizatoni një foto ose të dalë me disa imazhi mendor të tij në kokën tuaj. 1308 01:01:47,580 --> 01:01:51,120 Tjetra, shkruani nga pseudokod për këtë. 1309 01:01:51,120 --> 01:01:53,120 Në quiz, në qoftë se të gjithë ju merrni është pseudokod, të paktën ju 1310 01:01:53,120 --> 01:01:54,550 vënë diçka poshtë. 1311 01:01:54,550 --> 01:02:00,070 Dhe pastaj hartë që pseudokod onto C. Nëse ju keni një kontroll në tuaj 1312 01:02:00,070 --> 01:02:03,760 pseudokod, si kontrolloni nëse diçka është 1, se MAP nëse mbi një 1313 01:02:03,760 --> 01:02:05,750 Gjendja e kështu me radhë. 1314 01:02:05,750 --> 01:02:07,850 Dhe së fundi, kodin e programit në C. 1315 01:02:07,850 --> 01:02:15,000 >> Pra, të kthehemi në atoi dhe të marrë pesë minuta të kodit këtë në një fletë të 1316 01:02:15,000 --> 01:02:19,480 letër, e cila është ndoshta rreth sasinë e kohës që ju do të marrë në një 1317 01:02:19,480 --> 01:02:21,260 quiz për atoi kodit. 1318 01:02:21,260 --> 01:02:27,060 Pesë deri në 15 minuta, pesë deri në 12, për të pesë 10 minuta, është në lidhje me sasinë e 1319 01:02:27,060 --> 01:02:30,150 kohë ju do të shpenzojnë në këtë pyetje në quiz. 1320 01:02:30,150 --> 01:02:31,670 Pra, të marrë pesë minuta tani, ju lutem. 1321 01:02:31,670 --> 01:02:35,957 Dhe në qoftë se keni ndonjë pyetje, të rritur dora jote dhe unë do të vijnë rreth. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [biseda SIDE] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON HIRSCHHORN: OK, kështu që që ishte pesë minuta. 1326 01:08:37,580 --> 01:08:39,880 Kjo ishte ndoshta për sasinë e kohë ju do të shpenzojnë në se në një quiz, 1327 01:08:39,880 --> 01:08:42,120 ndoshta në fund të ulët të asaj kohe. 1328 01:08:42,120 --> 01:08:44,010 Ne do të radhitje në pak. 1329 01:08:44,010 --> 01:08:45,740 Le të fillojmë coding këtë. 1330 01:08:45,740 --> 01:08:49,479 Dhe në qoftë se ne nuk do të marrë të gjithë rrugën nëpër, përgjigjet për këtë dhe kjo 1331 01:08:49,479 --> 01:08:54,189 pyetje quiz janë në dispozicion, përsëri, Fall 2011 është kur kjo pyetje 1332 01:08:54,189 --> 01:08:54,913 u shfaq në quiz. 1333 01:08:54,913 --> 01:08:57,830 >> Dhe kjo ishte me vlerë tetë pikë në quiz pastaj. 1334 01:08:57,830 --> 01:09:01,140 Tetë pikë është në fund të lartë të Shuma e pikëve diçka vlen. 1335 01:09:01,140 --> 01:09:04,790 Shumica e pyetjeve janë në varg nje deri gjashte pika. 1336 01:09:04,790 --> 01:09:08,500 Pra, kjo është një më sfidues pyetje, me siguri. 1337 01:09:08,500 --> 01:09:09,750 A mund dikush merrni mua filloi? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Në përgjithësi, ajo që do të shkojmë të doni të bëni me këtë 1340 01:09:15,380 --> 01:09:17,550 funksionojë atoi, logjikisht? 1341 01:09:17,550 --> 01:09:19,569 Çfarë duam të bëjmë? 1342 01:09:19,569 --> 01:09:22,279 Pra, ne jemi duke shkuar për të shkruar disa pseudokod. 1343 01:09:22,279 --> 01:09:24,090 >> STUDENT: Convert karaktere në integers. 1344 01:09:24,090 --> 01:09:26,700 >> JASON HIRSCHHORN: Convert karaktere në integers. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Pra, sa karaktere jemi ne do të duhet të kalojnë nëpër? 1347 01:09:30,870 --> 01:09:32,295 >> STUDENT: Të gjithë ata. 1348 01:09:32,295 --> 01:09:34,100 >> STUDENT: Të gjitha personazhet në vargun. 1349 01:09:34,100 --> 01:09:35,540 >> JASON HIRSCHHORN: Të gjitha karaktere në vargun. 1350 01:09:35,540 --> 01:09:42,180 Pra, nëse kemi dashur të kalojnë nëpër çdo karakter në një varg, ajo është një gjë e 1351 01:09:42,180 --> 01:09:44,560 në C ne kemi parë se ka lejuar ne të kalojnë nëpër çdo 1352 01:09:44,560 --> 01:09:45,939 karakter në një varg? 1353 01:09:45,939 --> 01:09:46,819 >> STUDENTËT: Një për lak. 1354 01:09:46,819 --> 01:09:48,069 >> JASON HIRSCHHORN: Një për lak. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Pra, ne do të lak nëpër çdo karakter në s. 1357 01:09:55,330 --> 01:10:00,940 >> Atëherë çfarë do të shkojmë të dëshironi të bëni kur të kemi një karakter të veçantë? 1358 01:10:00,940 --> 01:10:02,480 Thuaj ne jemi duke kaluar një 90. 1359 01:10:02,480 --> 01:10:03,460 Ne kemi marrë 9. 1360 01:10:03,460 --> 01:10:04,240 Kjo është një karakter. 1361 01:10:04,240 --> 01:10:07,440 Çfarë duam të bëjmë me që karakteri 9? 1362 01:10:07,440 --> 01:10:10,082 >> STUDENT: Zbres atë nga karakteri 0? 1363 01:10:10,082 --> 01:10:11,860 >> STUDENT: Add 0? 1364 01:10:11,860 --> 01:10:13,350 >> JASON HIRSCHHORN: Zbres ajo nga karakteri 0? 1365 01:10:13,350 --> 01:10:13,800 >> STUDENT: Po. 1366 01:10:13,800 --> 01:10:15,573 >> JASON HIRSCHHORN: Pse ju doni të bëni këtë? 1367 01:10:15,573 --> 01:10:16,560 >> STUDENT: [padëgjueshme] 1368 01:10:16,560 --> 01:10:17,010 vlera. 1369 01:10:17,010 --> 01:10:18,380 Vlera e tij int. 1370 01:10:18,380 --> 01:10:21,580 >> JASON HIRSCHHORN: OK, kështu që ne të karakter 9, zbres atë nga 1371 01:10:21,580 --> 01:10:25,820 Karakteri 0 për të marrë një integer aktual 9. 1372 01:10:25,820 --> 01:10:27,070 Sweet. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 Dhe si nuk e dini që karakteri 9 minus 0 karakteri është 9? 1375 01:10:37,000 --> 01:10:39,222 Çfarë tabelë e ju duken? 1376 01:10:39,222 --> 01:10:43,130 >> STUDENT: Nuk logjikisht nëntë vende midis 9 dhe 0. 1377 01:10:43,130 --> 01:10:44,620 Ose ju mund të shikoni në tabelën ASCII. 1378 01:10:44,620 --> 01:10:45,120 >> JASON HIRSCHHORN: Tabela ASCII. 1379 01:10:45,120 --> 01:10:46,490 Por po, ju jeni të saktë si. 1380 01:10:46,490 --> 01:10:47,780 Pra, ne zbres 0. 1381 01:10:47,780 --> 01:10:49,010 Deri tani ne kemi numër i plotë 9. 1382 01:10:49,010 --> 01:10:49,970 Dhe ajo që duam të bëjmë me këtë? 1383 01:10:49,970 --> 01:10:54,970 Në qoftë se ne kemi 90, është numër i plotë i parë ne kemi, ajo që ne duam të bëjmë? 1384 01:10:54,970 --> 01:10:58,180 >> STUDENT: Unë do të vënë në një numër të plotë të përkohshme array, pastaj të bëjë matematikë në të 1385 01:10:58,180 --> 01:11:02,088 më vonë për ta bërë atë në fund. 1386 01:11:02,088 --> 01:11:03,020 >> JASON HIRSCHHORN: OK. 1387 01:11:03,020 --> 01:11:06,990 >> STUDENT: Ju mund të fillojnë në fund të array dhe më pas të shkojë përpara në mënyrë 1388 01:11:06,990 --> 01:11:10,350 se çdo herë që ju të ecur përpara, ju shumohen atë me 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON HIRSCHHORN: OK. 1390 01:11:10,830 --> 01:11:12,250 Kjo tingëllon si një shumë e ide bindëse. 1391 01:11:12,250 --> 01:11:16,040 Ne mund të fillojnë në fund të array tonë, dhe ne mund të përdorim strleng. 1392 01:11:16,040 --> 01:11:17,030 Ne mund të përdorim strleng në këtu. 1393 01:11:17,030 --> 01:11:18,870 Ne do të merrni gjatësinë e vargut tonë. 1394 01:11:18,870 --> 01:11:20,100 Ne të fillojë në fund. 1395 01:11:20,100 --> 01:11:29,170 Dhe + një të parë, ne vetëm të marrë atë numër i plotë, dhe ndoshta ne krijimin si një 1396 01:11:29,170 --> 01:11:32,270 variabël i ri numër i plotë deri të lartë, ku ne jemi ruajtjen e çdo gjë. 1397 01:11:32,270 --> 01:11:37,340 Pra, ne lak nëpër çdo char në s nga përsëri në front, zbresim 0, dhe 1398 01:11:37,340 --> 01:11:42,790 atëherë ne të marrë atë, dhe në varësi të ku është, ne e shumohen atë 1399 01:11:42,790 --> 01:11:45,860 me një fuqi prej 10. 1400 01:11:45,860 --> 01:11:50,644 Për shkak se e para, ajo që bëjmë ne shumohen karakterin rightmost nga? 1401 01:11:50,644 --> 01:11:51,440 >> STUDENT: 10 me 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON HIRSCHHORN: 10 me 0. 1403 01:11:53,170 --> 01:11:56,010 Çka shumohen i dyti Karakteri rightmost nga? 1404 01:11:56,010 --> 01:11:57,450 >> STUDENT: [padëgjueshme]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON HIRSCHHORN: Çfarë? 1406 01:11:57,960 --> 01:11:59,150 >> STUDENT: 10 me 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON HIRSCHHORN: 10 me 1. 1408 01:12:00,420 --> 01:12:03,754 Karakteri i tretë-rightmost? 1409 01:12:03,754 --> 01:12:04,580 >> STUDENT: 10 me 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON HIRSCHHORN: 10 me 2. 1411 01:12:05,350 --> 01:12:07,200 >> STUDENT: Na vjen keq, unë nuk e kuptoj ajo që ne po bëjmë këtu. 1412 01:12:07,200 --> 01:12:08,640 >> JASON HIRSCHHORN: OK, le të kthehemi, atëherë. 1413 01:12:08,640 --> 01:12:12,500 Pra, ne jemi duke shkuar për të marrë kaloi në një varg. 1414 01:12:12,500 --> 01:12:14,470 Sepse ne jemi me shkrim atoi. 1415 01:12:14,470 --> 01:12:15,260 Pra, ne të marrë kaluar në një varg. 1416 01:12:15,260 --> 01:12:17,640 Thuaj ne jemi duke kaluar në vargun 90. 1417 01:12:17,640 --> 01:12:19,930 >> Gjëja e parë që ne jemi duke shkuar për të bërë është vendosur një variabël i ri numër i plotë që ne jemi 1418 01:12:19,930 --> 01:12:22,150 vetëm do të krijojë si numër të plotë tonë të ri. 1419 01:12:22,150 --> 01:12:24,630 Kjo është ajo që ne jemi duke shkuar te kthyer ne fund. 1420 01:12:24,630 --> 01:12:30,110 Ne duhet të kalojnë nëpër çdo karakter në string sepse ne kemi vendosur 1421 01:12:30,110 --> 01:12:34,430 se ne kemi nevojë për të prekur çdo një dhe pastaj shtoni atë në numër të plotë tonë të ri. 1422 01:12:34,430 --> 01:12:36,330 >> Por ne nuk mund të shtoni atë si një numër. 1423 01:12:36,330 --> 01:12:38,270 Ne nuk mund të marrë vetëm 9 dhe shtoni 9 me numër të plotë tonë. 1424 01:12:38,270 --> 01:12:40,560 Kjo varet nga ajo që vendi ajo është në varg. 1425 01:12:40,560 --> 01:12:42,960 Ne do të duhet për të shumëfishohen ajo me një fuqi prej 10. 1426 01:12:42,960 --> 01:12:45,580 Sepse kjo është se si bazë 10 punon. 1427 01:12:45,580 --> 01:12:49,050 >> Pra, ne jemi duke shkuar për të marrë aktuale karakter, ose integer aktuale 1428 01:12:49,050 --> 01:12:53,860 numër, duke zbritur karakter 0 nga karakteri 9 si ne e bëmë me 1429 01:12:53,860 --> 01:12:57,560 zbritur kapitalit karakter A nga çfarëdo karakteri kemi pasur në një nga 1430 01:12:57,560 --> 01:12:58,120 ato probleme. 1431 01:12:58,120 --> 01:13:04,190 Pra, ne do të vërtetë të marrë një numër nga 0 deri 9 ruhen si një numër të vërtetë, dhe ne do të 1432 01:13:04,190 --> 01:13:07,590 shumohen atë me një fuqi prej 10 në varësi se ku ne jemi në vargun. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 Dhe pastaj ne do të shtoni atë në variabël integer tonë të ri. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Pra, çfarë do të duken si kjo do të të - ne do të tërheqë mbi këtu. 1437 01:13:37,890 --> 01:13:40,086 Nëse do të marrë kaluar në vargun 90 - 1438 01:13:40,086 --> 01:13:41,336 >> STUDENT: [padëgjueshme]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON HIRSCHHORN: Po atoi merr një varg. 1441 01:13:45,540 --> 01:13:46,350 Pra, ne jemi duke shkuar për të shkuar nëpërmjet mbajnë. 1442 01:13:46,350 --> 01:13:49,900 Ne do të marrë kaluar në 90. 1443 01:13:49,900 --> 01:13:51,540 Ne do të shkojmë nga mbrapa në front. 1444 01:13:51,540 --> 01:13:53,920 Ne të marrë 0. 1445 01:13:53,920 --> 01:13:55,080 >> STUDENT: Më vjen keq. 1446 01:13:55,080 --> 01:13:55,880 Ndoshta kjo është budalla. 1447 01:13:55,880 --> 01:13:59,440 Nëse ne jemi duke kaluar në një varg, pse është ajo që ne jemi 90 1448 01:13:59,440 --> 01:14:00,260 duke kaluar në? 1449 01:14:00,260 --> 01:14:03,160 Sepse 90 eshte nje numer i plote. 1450 01:14:03,160 --> 01:14:06,820 >> JASON HIRSCHHORN: Për shkak se atoi merr një string dhe e kthen atë në numër të plotë 1451 01:14:06,820 --> 01:14:08,320 përfaqësimin e atë varg. 1452 01:14:08,320 --> 01:14:13,650 Por vargu 90 nuk është numër i plotë 90 ose numri 90. 1453 01:14:13,650 --> 01:14:17,920 Vargu 90 është një grup i dy, apo tre karaktere, në vend, 9 1454 01:14:17,920 --> 01:14:22,740 Karakteri, karakteri 0, dhe backslash 0 karakteri. 1455 01:14:22,740 --> 01:14:26,260 >> Dhe ne jemi me shkrim atoi sepse, për shembull, kur ju keni marrë komandën 1456 01:14:26,260 --> 01:14:30,230 Argumenti line, dhe është e ruajtur në ARGV, është e ruajtur si një varg. 1457 01:14:30,230 --> 01:14:32,940 Por në qoftë se ju dëshironi për të trajtuar atë si një numër, ju keni nevojë për të kthyer atë në një 1458 01:14:32,940 --> 01:14:34,700 numër i plotë aktuale. 1459 01:14:34,700 --> 01:14:37,210 Të cilat ne e bëmë një nga grupe tona problemit. 1460 01:14:37,210 --> 01:14:38,800 Të cilat ne e bëmë në një numër e përcakton tonë me probleme. 1461 01:14:38,800 --> 01:14:41,690 Gjithkush që ka një numër të plotë si një argument command line. 1462 01:14:41,690 --> 01:14:46,490 Pra, kjo është arsyeja pse funksioni ynë atoi merr një varg. 1463 01:14:46,490 --> 01:14:51,910 >> Pra, përsëri, në shembullin tonë këtu, ne jemi do të marrë një të fundit. 1464 01:14:51,910 --> 01:14:55,050 Ne do të zbres karakterin 0 prej saj, sepse personazhet 0 1465 01:14:55,050 --> 01:14:58,810 zbritet nga karakteri 0 ju jep Numri aktual 0, sipas 1466 01:14:58,810 --> 01:15:00,950 ASCII math që ne bëjmë. 1467 01:15:00,950 --> 01:15:04,870 >> Sepse personazhet janë të përfaqësuara si të ndryshme se sa aktual i tyre - 1468 01:15:04,870 --> 01:15:08,830 karakter një, për shembull, vogle a është 97. 1469 01:15:08,830 --> 01:15:10,260 Nuk është - oops! 1470 01:15:10,260 --> 01:15:13,290 Kjo nuk është çdo gjë që ju do të presin ajo që të jetë, 0, per shembull. 1471 01:15:13,290 --> 01:15:16,200 Kështu që ju duhet të zbres karakter një për të marrë 0. 1472 01:15:16,200 --> 01:15:18,950 >> Pra, ne jemi duke shkuar për të bërë këtë këtu për të marrë numrin aktual. 1473 01:15:18,950 --> 01:15:22,560 Dhe pastaj ne do të shumohen atë me një fuqi prej 10 në varësi të ku të 1474 01:15:22,560 --> 01:15:27,030 është në varg, dhe pastaj të marrë atë dhe shtoni atë në mbajtës tonë vend 1475 01:15:27,030 --> 01:15:32,520 variabël kështu që ne mund të dalë me numër i plotë ynë final të ri. 1476 01:15:32,520 --> 01:15:35,080 A që ka kuptim për të gjithë? 1477 01:15:35,080 --> 01:15:37,730 >> Pra, ne nuk do të Kodit, ky tani për tani, sepse ne jemi 1478 01:15:37,730 --> 01:15:38,830 duke marrë të shkurtër në kohë. 1479 01:15:38,830 --> 01:15:40,860 Unë kërkoj falje për kohën e që. 1480 01:15:40,860 --> 01:15:44,620 Por kjo është ajo që, me shpresë, ju do të jetë në gjendje të bëjë në quiz - në 1481 01:15:44,620 --> 01:15:47,710 të fundit, të marrë këtë pseudokod shkruar jashtë. 1482 01:15:47,710 --> 01:15:50,840 >> Dhe pastaj, në qoftë se ne ishim për të shkruar pseudokod, në të vërtetë, ne mund të bëjmë këtë 1483 01:15:50,840 --> 01:15:51,490 shumë shpejt. 1484 01:15:51,490 --> 01:15:55,230 Çdo linjë e komenteve ne kemi shkruar këtu përkthehet në rreth 1485 01:15:55,230 --> 01:15:56,970 një linjë e kodit C. 1486 01:15:56,970 --> 01:16:01,780 Shpalljen e ndryshueshme të ri, shkrim një lak, disa zbritje, disa 1487 01:16:01,780 --> 01:16:07,070 shumëzim, dhe disa detyrë. 1488 01:16:07,070 --> 01:16:09,020 Ne ndoshta do të duan gjithashtu të shkruar një linjë të kthimit. 1489 01:16:09,020 --> 01:16:12,040 Ne gjithashtu mund të duan të vënë disa kontrolle në këtu. 1490 01:16:12,040 --> 01:16:12,655 Po. 1491 01:16:12,655 --> 01:16:15,720 >> STUDENT: Pra, mund të trajtojmë s si vargun aktual? 1492 01:16:15,720 --> 01:16:18,730 Sepse unë e di se është vetëm një adresë. 1493 01:16:18,730 --> 01:16:22,090 Si, si do ta merrni gjatësinë e string duke kaluar nëpër? 1494 01:16:22,090 --> 01:16:25,310 >> JASON HIRSCHHORN: Pra, si e bëri gjatësia e vargut? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> STUDENT: strlen, po. 1497 01:16:26,660 --> 01:16:30,550 Por mund të vendosni s si argument për këtë? 1498 01:16:30,550 --> 01:16:34,620 >> JASON HIRSCHHORN: Pra strlen merr një yll char. 1499 01:16:34,620 --> 01:16:38,090 Dhe ai vijon yllin char, dhe kjo mban numëruar deri sa ajo merr për një 1500 01:16:38,090 --> 01:16:41,865 backslash 0. strlen ishte në të vërtetë një nga programet e tjera ne 1501 01:16:41,865 --> 01:16:42,850 ishin duke shkuar për kodin. 1502 01:16:42,850 --> 01:16:44,560 Kjo është një tjetër e mirë për të kodit. 1503 01:16:44,560 --> 01:16:47,270 Se një është pak më e lehtë, sepse nëse ju jeni do të mendoni për atë 1504 01:16:47,270 --> 01:16:47,830 konceptualisht - 1505 01:16:47,830 --> 01:16:51,620 Unë vetëm tha me zë të lartë - strlen poshtë një tregues dhe mban sipër dhe 1506 01:16:51,620 --> 01:16:54,210 numërimin dhe regjistrimin deri keni arritur një 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: Pra, më të mirë të fat në quiz 0 nesër. 1509 01:17:00,200 --> 01:17:03,170 Nëse keni ndonjë pyetje, unë do të jetë jashtë pas kësaj. 1510 01:17:03,170 --> 01:17:05,610 Të ndjehen të lirë të email mua. 1511 01:17:05,610 --> 01:17:08,480 Arrijnë nga vetë TF tuaj nëse ju jeni jo në seksionin tim, ose të merrni tim 1512 01:17:08,480 --> 01:17:10,005 qoftë se ju e doni atë. 1513 01:17:10,005 --> 01:17:13,140 >> Nëse ju doni të trullos dhe të thjesht dërgoni mua një e-mail, një email freakout, unë do 1514 01:17:13,140 --> 01:17:16,710 të shkosh, si, një fytyrë smiley, apo, si, një shaka apo diçka. 1515 01:17:16,710 --> 01:17:18,190 Pra, të ndjehen të lirë për të bërë këtë si. 1516 01:17:18,190 --> 01:17:20,750 Fat të mirë përsëri, dhe unë do shoh se jeni të gjithë javën e ardhshme. 1517 01:17:20,750 --> 01:17:23,435