1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate HARDISON: Sa programming, library ay isang koleksyon ng mga 2 00:00:09,470 --> 00:00:11,380 kaugnay prewritten code. 3 00:00:11,380 --> 00:00:14,350 Mga Aklatan ay kung paano namin, bilang programmer, ibahagi karaniwang at 4 00:00:14,350 --> 00:00:16,930 kapaki-pakinabang na code sa bawat isa, na may iba't ibang mga program namin 5 00:00:16,930 --> 00:00:19,470 magsulat, at kahit na ang iba't ibang mga proseso na tumatakbo sa 6 00:00:19,470 --> 00:00:21,380 sa parehong oras sa aming mga computer. 7 00:00:21,380 --> 00:00:23,000 >> Tuklasin natin ng kaunti. 8 00:00:23,000 --> 00:00:25,070 Isa ng mas karaniwang mga function na malamang 9 00:00:25,070 --> 00:00:27,500 na ginagamit ang printf function na. 10 00:00:27,500 --> 00:00:29,820 Ngayon, printf ay hindi ilang mga magic function na naging 11 00:00:29,820 --> 00:00:31,670 hard-code sa computer - 12 00:00:31,670 --> 00:00:34,320 sa halip, ito ay bahagi ng C Standard Aklatan, na 13 00:00:34,320 --> 00:00:36,080 isang koleksyon ng mga function na may 14 00:00:36,080 --> 00:00:38,050 C programming language. 15 00:00:38,050 --> 00:00:40,920 Dahil printf ay hindi binuo sa computer, na nangangahulugan na ang 16 00:00:40,920 --> 00:00:43,520 nagkaroon ng ilang mga programmer na aktwal na nagpunta sa at sinulat ni ang 17 00:00:43,520 --> 00:00:46,310 printf function at bundle na ito sa mga natitira sa mga karaniwang 18 00:00:46,310 --> 00:00:48,880 aklatan upang ang hinaharap programmer hindi mag- 19 00:00:48,880 --> 00:00:50,310 duplicate ang pagsusumikap. 20 00:00:50,310 --> 00:00:52,620 At sigurado kami nagpapasalamat na iyon ang kaso, dahil check 21 00:00:52,620 --> 00:00:54,710 out kung magkano ang code na ito aktwal na tumatagal ipatupad printf. 22 00:00:59,590 --> 00:01:02,860 >> Ang C Standard Aklatan, kung saan printf ay isang bahagi, ay 23 00:01:02,860 --> 00:01:04,480 isa ng ang pinaka-mahalagang mga tool na 24 00:01:04,480 --> 00:01:06,770 sa tackling CS50. 25 00:01:06,770 --> 00:01:08,780 Bilang karagdagan sa input-output library kung saan 26 00:01:08,780 --> 00:01:11,370 printf buhay, may mga ng grupo ng mga iba pang mga library na 27 00:01:11,370 --> 00:01:14,230 malamang gamitin sa kabuuan ng CS50. 28 00:01:14,230 --> 00:01:16,730 Halimbawa, ang string library ay may mga function sa 29 00:01:16,730 --> 00:01:20,960 ihambing ang string C, ang kanilang haba, at pagdugtungin ang mga ito. 30 00:01:20,960 --> 00:01:22,410 At ang matematika library ay nagbibigay sa iyo ng kapaki-pakinabang na 31 00:01:22,410 --> 00:01:25,062 constants, tulad ng pay at e. 32 00:01:25,062 --> 00:01:27,650 Ngayon, kumpara sa karaniwang aklatan ng iba pang mga programming 33 00:01:27,650 --> 00:01:31,190 wika, ang C Standard Aklatan ay talagang maliit, 34 00:01:31,190 --> 00:01:34,060 ngunit sila pa rin magkaroon ng isang makabuluhang halaga ng mga bagay-bagay. 35 00:01:34,060 --> 00:01:36,370 At ang hindi upang sabihin na ang Standard Aklatan ay ang 36 00:01:36,370 --> 00:01:39,020 lamang C library, may mga maraming iba pang mga out doon sa 37 00:01:39,020 --> 00:01:42,460 mundo para sa iyo na gamitin, kabilang ang CS50 Library, 38 00:01:42,460 --> 00:01:45,150 kartograpya ng mga aklatan na may encryption at decryption 39 00:01:45,150 --> 00:01:48,000 pagpapaandar, mga aklatan na may mga function upang i-encode at 40 00:01:48,000 --> 00:01:50,970 muling i-play ang video, at iba pa. 41 00:01:50,970 --> 00:01:53,190 >> Pinagsasama-amin sa isang mahalagang bukod. 42 00:01:53,190 --> 00:01:55,500 Ang isa sa mga mahahalagang kasanayan ng engineering ay alam ang 43 00:01:55,500 --> 00:01:58,090 tool na magagamit sa iyong toolbox sa gayon ay maaari mong gamitin ang 44 00:01:58,090 --> 00:01:59,850 mga ito at maiwasan ang reinventing ang wheel maliban kung 45 00:01:59,850 --> 00:02:01,510 mayroon ka na gawin ito. 46 00:02:01,510 --> 00:02:04,120 Bilang programmer, ang mga aklatan ay isa sa mga pinakamahalagang 47 00:02:04,120 --> 00:02:05,520 tool na mayroon kami. 48 00:02:05,520 --> 00:02:08,520 Kapag nahanap mo ang iyong sarili nakaharap ng isang gawain na mukhang nakakapagod o 49 00:02:08,520 --> 00:02:11,940 pangkaraniwan, tulad ng paghahanap ng haba ng isang string ng C, 50 00:02:11,940 --> 00:02:14,020 dapat itanong sa iyong sarili kung maaaring ito ay ang kaso na 51 00:02:14,020 --> 00:02:16,520 may pa nagagawa ang parehong bagay bago. 52 00:02:16,520 --> 00:02:17,760 Malamang na maaari mong mahanap ang ilang mga 53 00:02:17,760 --> 00:02:20,110 tulong sa loob ng library. 54 00:02:20,110 --> 00:02:23,260 >> Kaya sa mga teknikal na mga tuntunin, ang library ng isang binary file na 55 00:02:23,260 --> 00:02:26,210 ay ginawa sa pamamagitan ng pag-link nang sama-sama ng isang koleksyon ng mga 56 00:02:26,210 --> 00:02:28,880 bagay file gamit ang isang tool na tinatawag na, 57 00:02:28,880 --> 00:02:31,010 nahulaan mo, ang linker. 58 00:02:31,010 --> 00:02:33,830 Bagay file ay ang mga o file na makakakuha ka kapag ikaw ay 59 00:02:33,830 --> 00:02:35,860 makatipon C source code. 60 00:02:35,860 --> 00:02:38,420 Kapag ang mga programmer sumulat aklatan, karaniwang sila 61 00:02:38,420 --> 00:02:41,560 paghiwalayin ang kanilang C code sa dalawang mga uri ng mga file: 62 00:02:41,560 --> 00:02:44,880 header file at pagpapatupad ng mga file. 63 00:02:44,880 --> 00:02:49,820 Isang file ng header sa pamamagitan ng convention ay ibinigay sa. H file extension, 64 00:02:49,820 --> 00:02:51,940 at ito ay naglalaman ng code na declares sa library 65 00:02:51,940 --> 00:02:55,120 mga mapagkukunan na magagamit para sa iyo upang gamitin ang. 66 00:02:55,120 --> 00:02:58,830 Mga mapagkukunan na ito ay kinabibilangan ng mga function, variable, structs, 67 00:02:58,830 --> 00:03:01,980 kahulugan ng uri, at iba pa, at magkasama, ang mga ito ay 68 00:03:01,980 --> 00:03:04,620 karaniwang tinutukoy bilang ang interface. 69 00:03:04,620 --> 00:03:07,280 Sa katunayan, kung sakaling ikaw ay nagtataka kung ano ang sa isang library, 70 00:03:07,280 --> 00:03:09,580 header file ay ang lugar upang tumingin. 71 00:03:09,580 --> 00:03:14,030 >> Halimbawa, maaari mong makuha ang usr / isama / stdio.h at suriin 72 00:03:14,030 --> 00:03:16,210 out lahat mo kailanman nais malaman tungkol sa 73 00:03:16,210 --> 00:03:18,570 ang standard IO library. 74 00:03:18,570 --> 00:03:20,610 May ng maraming mga bagay-bagay in dito, at maaari itong tumagal ng kaunting 75 00:03:20,610 --> 00:03:22,420 oras sa Wade sa pamamagitan ng. 76 00:03:22,420 --> 00:03:25,840 Gayunpaman, kasama ang Google at ang mga manpages, ito ay ang 77 00:03:25,840 --> 00:03:28,060 ilagay pumunta kung ikaw ay nagtataka kung paano ang standard I / O 78 00:03:28,060 --> 00:03:30,460 library function gumagana. 79 00:03:30,460 --> 00:03:33,910 Kaya isang key bagay upang tandaan dito, bagaman, ay na header file 80 00:03:33,910 --> 00:03:36,740 karaniwang hindi isama ang mga kahulugan ng function na - 81 00:03:36,740 --> 00:03:40,020 iyon ay, ang aktwal na pagpapatupad ng function na. 82 00:03:40,020 --> 00:03:42,470 Ito ay isang paglalarawan ng isang mahalagang computer na agham 83 00:03:42,470 --> 00:03:45,700 prinsipyo na tinatawag na impormasyon nagtatago, din tinutukoy sa 84 00:03:45,700 --> 00:03:48,960 beses na mas encapsulation. 85 00:03:48,960 --> 00:03:52,630 >> Bilang ng gumagamit o ang client ng isang library, hindi mo kailangang mag- 86 00:03:52,630 --> 00:03:54,230 malaman tungkol sa internals ng library sa 87 00:03:54,230 --> 00:03:55,380 -order upang gamitin ito. 88 00:03:55,380 --> 00:03:57,800 Tandaan nakikita printf ng kaunti lamang ang nakalipas? 89 00:03:57,800 --> 00:04:00,275 Ay ka kailanman nakita ang aktwal na code bago? 90 00:04:00,275 --> 00:04:02,535 Well, ipinapalagay ko na mayroon kang hindi, kahit na maaari kang 91 00:04:02,535 --> 00:04:05,090 na gumamit ng printf ton ng beses. 92 00:04:05,090 --> 00:04:08,110 Lahat ng iyong ay malaman ang kasalukuyan ng deklarasyon ng function na 93 00:04:08,110 --> 00:04:10,940 sa stdio.h header ng file. 94 00:04:10,940 --> 00:04:14,010 Pa rin, ang benepisyo ng magandang impormasyon nagtatago na 95 00:04:14,010 --> 00:04:16,820 at ang mga programa na magsulat insulated mula sa anumang mga pagbabago sa 96 00:04:16,820 --> 00:04:20,209 code ng pagpapatupad ng mga function ng library. 97 00:04:20,209 --> 00:04:22,880 Kung ang pagpapatupad ng printf pagbabago, hindi mo na kailangang 98 00:04:22,880 --> 00:04:26,310 upang pumunta at baguhin ang lahat ng iyong mga programa na gumagamit ng printf. 99 00:04:26,310 --> 00:04:28,450 >> Kaya kung saan ay ang pagpapatupad pumunta? 100 00:04:28,450 --> 00:04:31,020 Well, muli, sa pamamagitan ng convention, pagpapatupad napupunta sa isang 101 00:04:31,020 --> 00:04:34,310 file na may. c file extension. 102 00:04:34,310 --> 00:04:36,820 Karaniwan, ang mga file ng header at pagpapatupad ng mga file pumunta kamay 103 00:04:36,820 --> 00:04:39,380 sa banda, kaya kung mo na ang ipinahayag ng isang grupo ng mga bagong string 104 00:04:39,380 --> 00:04:42,950 function sa mystring.h, pagkatapos makikita mo tukuyin ang lahat ng 105 00:04:42,950 --> 00:04:46,960 mga function sa mystring. c. 106 00:04:46,960 --> 00:04:49,230 Kaya ang header at pagpapatupad ng mga file ay pagkatapos 107 00:04:49,230 --> 00:04:52,230 pinagsama-sama, sa paglikha ng mga file sa bagay na ay naka-link 108 00:04:52,230 --> 00:04:55,360 nang sama-sama upang makabuo ng binary file library. 109 00:04:55,360 --> 00:04:58,520 Sa library ng manunulat ay nagpapadala binary file sa kahabaan 110 00:04:58,520 --> 00:05:00,720 sa ang mga file na header sa mga programmer na gusto mong gamitin 111 00:05:00,720 --> 00:05:02,280 sa aklatan. 112 00:05:02,280 --> 00:05:04,640 Sa puntong ito, ang. C pagpapatupad file ay hindi 113 00:05:04,640 --> 00:05:07,840 kinakailangan, maliban sa mag-recompile ang library mula sa simula, kaya 114 00:05:07,840 --> 00:05:10,270 kadalas sila pakaliwa out. 115 00:05:10,270 --> 00:05:13,670 >> Upang gamitin ang C library, kailangan mong gawin ang dalawang bagay. 116 00:05:13,670 --> 00:05:16,890 Una, kailangan mong # isama ang mga file ng header ang library at ang 117 00:05:16,890 --> 00:05:18,700 source code file na kung saan nais mong gamitin 118 00:05:18,700 --> 00:05:20,530 code ng library. 119 00:05:20,530 --> 00:05:23,200 Ito informs tagatala ng lahat ng mga pagdeklara ng 120 00:05:23,200 --> 00:05:26,890 andar, variable, structs, at iba pa, sa 121 00:05:26,890 --> 00:05:30,510 file header upang ang tagatala sa isa, insure na 122 00:05:30,510 --> 00:05:33,280 gumagamit ka ng mga mapagkukunan ng library sa tamang paraan, 123 00:05:33,280 --> 00:05:37,120 at dalawang, bumuo ng ang naaangkop na code ng pagpupulong. 124 00:05:37,120 --> 00:05:38,910 Depende sa kung saan ang mga file ng header sa library 125 00:05:38,910 --> 00:05:42,720 kinalalagyan, # include syntax ay nag-iiba-iba. 126 00:05:42,720 --> 00:05:44,880 Kung ang mga file ng header ay matatagpuan sa system 127 00:05:44,880 --> 00:05:46,690 default na isama direktoryo - 128 00:05:46,690 --> 00:05:48,780 karaniwan, usr/include-- 129 00:05:48,780 --> 00:05:52,200 ang anggulo bracket syntax ay ginagamit, sa # isama 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Gayunpaman, kung ang mga file ng header ay matatagpuan sa parehong 132 00:05:59,540 --> 00:06:02,960 direktoryo bilang iyong sariling code, ang double quote syntax 133 00:06:02,960 --> 00:06:04,870 ginamit, tulad ng sa # include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Ang ikalawang bagay na kailangan mong gawin ay i-link sa binary 135 00:06:11,220 --> 00:06:13,760 library file kapag ikaw makatipon iyong code. 136 00:06:13,760 --> 00:06:15,810 Ito ay isang napaka-mahalagang hakbang. 137 00:06:15,810 --> 00:06:17,540 Tandaan ang aming mas maaga na talakayan tungkol sa kung paano header 138 00:06:17,540 --> 00:06:20,200 mga file ay hindi naglalaman ng pagpapatupad code? 139 00:06:20,200 --> 00:06:22,200 Kung nakalimutan mo ang hakbang na ito, makakakuha ka ng error tungkol sa 140 00:06:22,200 --> 00:06:24,990 hindi natukoy na simbolo-reference sa iyong code. 141 00:06:24,990 --> 00:06:29,580 Upang malutas ito, gamitin ang-l-flag sinundan agad 142 00:06:29,580 --> 00:06:32,320 walang puwang sa pamamagitan ng ang pangalan ng library. 143 00:06:32,320 --> 00:06:35,410 Sa maraming mga sistema, kabilang ang appliance, ang C Standard 144 00:06:35,410 --> 00:06:38,350 Mga Aklatan ay awtomatikong naka-link para sa iyo. 145 00:06:38,350 --> 00:06:41,700 Gayunpaman, ang matematika library minsan bundle hiwalay 146 00:06:41,700 --> 00:06:44,600 at maaaring kailangan na naka-link sa may-lm. 147 00:06:44,600 --> 00:06:47,760 Sa appliance, alang namin ang pag-aalaga ng mga ito para sa iyo, at din namin 148 00:06:47,760 --> 00:06:52,170 link ang CS50 library may-lcs50. 149 00:06:52,170 --> 00:06:54,540 Maaari mong makita ang lahat ng ito sa appliance na kapag nagpatakbo ka gumawa. 150 00:06:57,620 --> 00:06:59,130 >> Ngayon dapat mong magkaroon ng kaalaman na kailangan mong gumamit 151 00:06:59,130 --> 00:07:02,150 aklatan sa C. Maglibang sa pagsisiyasat. 152 00:07:02,150 --> 00:07:05,880 Ang pangalan ko ay Nate Hardison, at ito ay CS50.