1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate HARDISON: In programmering, 'n biblioteek is 'n versameling van 2 00:00:09,470 --> 00:00:11,380 verwante prewritten kode. 3 00:00:11,380 --> 00:00:14,350 Biblioteke is hoe ons as programmeerders, deel gemeenskaplike en 4 00:00:14,350 --> 00:00:16,930 nuttige kode met mekaar, met die verskillende programme wat ons 5 00:00:16,930 --> 00:00:19,470 skryf, en selfs met die verskillende prosesse wat 6 00:00:19,470 --> 00:00:21,380 dieselfde tyd op ons rekenaars. 7 00:00:21,380 --> 00:00:23,000 >> Laat ons 'n bietjie verken. 8 00:00:23,000 --> 00:00:25,070 Een van die meer algemene funksies wat jy het waarskynlik 9 00:00:25,070 --> 00:00:27,500 is met behulp van die printf funksie. 10 00:00:27,500 --> 00:00:29,820 Nou, is printf nie 'n magic funksie wat 11 00:00:29,820 --> 00:00:31,670 hard gekodeer in die rekenaar - 12 00:00:31,670 --> 00:00:34,320 maar eerder, dit is deel van die C Standard Biblioteke, wat 13 00:00:34,320 --> 00:00:36,080 'n versameling van funksies wat kom met die 14 00:00:36,080 --> 00:00:38,050 C-programmeertaal. 15 00:00:38,050 --> 00:00:40,920 Sedert printf is nie gebou in die rekenaar, wat beteken dat 16 00:00:40,920 --> 00:00:43,520 daar was 'n programmeerder wat eintlik gaan in en skryf die 17 00:00:43,520 --> 00:00:46,310 printf funksie en gebundelde dit met die res van die standaard 18 00:00:46,310 --> 00:00:48,880 biblioteke skakel sodat toekomstige programmeerders wil nie hê om 19 00:00:48,880 --> 00:00:50,310 tweevoud by die poging. 20 00:00:50,310 --> 00:00:52,620 En ons is seker dankbaar dat dit die geval is, want kyk 21 00:00:52,620 --> 00:00:54,710 uit hoeveel kode dit eintlik printf neem om te implementeer. 22 00:00:59,590 --> 00:01:02,860 >> Die C Standard Biblioteke, waarvan printf is 'n deel, 23 00:01:02,860 --> 00:01:04,480 een van die belangrikste instrumente wat jy 24 00:01:04,480 --> 00:01:06,770 in die aanpak CS50. 25 00:01:06,770 --> 00:01:08,780 In bykomend tot die input-output biblioteek waar 26 00:01:08,780 --> 00:01:11,370 printf lewe, daar kom 'n klomp van die ander biblioteke 27 00:01:11,370 --> 00:01:14,230 jy sal waarskynlik oor die loop van CS50. 28 00:01:14,230 --> 00:01:16,730 Byvoorbeeld, die tou biblioteek funksies te 29 00:01:16,730 --> 00:01:20,960 vergelyk C snare, kry hul lengte, en koppel hulle. 30 00:01:20,960 --> 00:01:22,410 En die wiskunde biblioteek gee jou nuttige 31 00:01:22,410 --> 00:01:25,062 konstantes, soos pi en e. 32 00:01:25,062 --> 00:01:27,650 Nou, in vergelyking met die standaard biblioteke van ander programmering 33 00:01:27,650 --> 00:01:31,190 tale, die C Standard Biblioteke is baie klein, 34 00:01:31,190 --> 00:01:34,060 maar hulle het nog steeds 'n aansienlike bedrag van die dinge. 35 00:01:34,060 --> 00:01:36,370 En dit is nie te sê dat die Standard Biblioteke is die 36 00:01:36,370 --> 00:01:39,020 net C biblioteke, daar is baie meer daar buite in die 37 00:01:39,020 --> 00:01:42,460 wêreld vir jou om te gebruik, met inbegrip van die CS50 Biblioteek, 38 00:01:42,460 --> 00:01:45,150 kartografie biblioteke met enkripsie en dekripsie 39 00:01:45,150 --> 00:01:48,000 funksies, biblioteke met funksies te enkodeer en 40 00:01:48,000 --> 00:01:50,970 speel video, en so aan. 41 00:01:50,970 --> 00:01:53,190 >> Dit bring ons by 'n belangrike eenkant. 42 00:01:53,190 --> 00:01:55,500 Een van die belangrikste vaardighede van ingenieurswese is om te weet van die 43 00:01:55,500 --> 00:01:58,090 gereedskap wat beskikbaar is in jou toolbox, sodat jy kan gebruik om 44 00:01:58,090 --> 00:01:59,850 hulle en vermy die wiel weer uitvind, tensy 45 00:01:59,850 --> 00:02:01,510 jy het om dit te doen. 46 00:02:01,510 --> 00:02:04,120 As programmeerders, biblioteke is een van die belangrikste 47 00:02:04,120 --> 00:02:05,520 instrumente wat ons het. 48 00:02:05,520 --> 00:02:08,520 Wanneer jy jouself die gesig staar 'n taak wat lyk vervelig of 49 00:02:08,520 --> 00:02:11,940 alledaags, soos om die lengte van 'n C-string, jy 50 00:02:11,940 --> 00:02:14,020 jouself moet vra indien dit die geval mag wees dat 51 00:02:14,020 --> 00:02:16,520 iemand reeds dieselfde ding gedoen voor. 52 00:02:16,520 --> 00:02:17,760 Kanse is dat jy sommige kon vind 53 00:02:17,760 --> 00:02:20,110 hulp in 'n biblioteek. 54 00:02:20,110 --> 00:02:23,260 >> So in tegniese terme, 'n biblioteek is 'n binêre lêer wat 55 00:02:23,260 --> 00:02:26,210 is vervaardig deur dit te koppel saam 'n versameling van 56 00:02:26,210 --> 00:02:28,880 voorwerp lêers met behulp van 'n instrument genoem, moet jy 57 00:02:28,880 --> 00:02:31,010 raai dit al, die koppelingshistoon. 58 00:02:31,010 --> 00:02:33,830 Object lêers o lêers wat jy kry as jy. 59 00:02:33,830 --> 00:02:35,860 Stel C bron-kode. 60 00:02:35,860 --> 00:02:38,420 Wanneer programmeerders skryf biblioteke, hulle gewoonlik 61 00:02:38,420 --> 00:02:41,560 skei hul C-kode in twee tipes lêers: 62 00:02:41,560 --> 00:02:44,880 header lêers en implementering lêers. 63 00:02:44,880 --> 00:02:49,820 'N header lêer deur konvensie is die h lêer uitbreiding, 64 00:02:49,820 --> 00:02:51,940 en dit bevat kode wat sê die biblioteek se 65 00:02:51,940 --> 00:02:55,120 hulpbronne wat beskikbaar is vir jou om te gebruik. 66 00:02:55,120 --> 00:02:58,830 Hierdie hulpbronne sluit in funksies, veranderlikes, structs, 67 00:02:58,830 --> 00:03:01,980 tipe definisies, en so aan, en hulle saam is 68 00:03:01,980 --> 00:03:04,620 algemeen na verwys as die koppelvlak. 69 00:03:04,620 --> 00:03:07,280 In werklikheid, as jy ooit wonder wat is in 'n biblioteek, 70 00:03:07,280 --> 00:03:09,580 die header lêers is die plek om te kyk. 71 00:03:09,580 --> 00:03:14,030 >> Byvoorbeeld, kan jy trek usr / include / stdio.h en kontroleer 72 00:03:14,030 --> 00:03:16,210 alles wat jy ooit wou weet oor die 73 00:03:16,210 --> 00:03:18,570 die standaard io-biblioteek. 74 00:03:18,570 --> 00:03:20,610 Daar is 'n baie van die dinge hier, en dit kan 'n bietjie van die 75 00:03:20,610 --> 00:03:22,420 tyd tot waden deur. 76 00:03:22,420 --> 00:03:25,840 Maar, saam met Google en die manpages, dit is die 77 00:03:25,840 --> 00:03:28,060 plek om te gaan as jy wonder hoe die standaard I / O 78 00:03:28,060 --> 00:03:30,460 biblioteek funksies werk. 79 00:03:30,460 --> 00:03:33,910 So een van die belangrikste ding om daarop te let, al is, is dat die header lêers 80 00:03:33,910 --> 00:03:36,740 tipies sluit nie funksie definisies - 81 00:03:36,740 --> 00:03:40,020 dit is die werklike funksie implementasies. 82 00:03:40,020 --> 00:03:42,470 Dit is 'n illustrasie van 'n belangrike rekenaarwetenskap 83 00:03:42,470 --> 00:03:45,700 beginsel geroep inligting wegkruip, ook soos na verwys in 84 00:03:45,700 --> 00:03:48,960 keer as inkapseling. 85 00:03:48,960 --> 00:03:52,630 >> As die gebruiker of die kliënt van 'n biblioteek, het jy nie nodig het om te 86 00:03:52,630 --> 00:03:54,230 weet van die werking van die biblioteek in 87 00:03:54,230 --> 00:03:55,380 om dit te gebruik. 88 00:03:55,380 --> 00:03:57,800 Onthou dat printf net 'n bietjie gelede? 89 00:03:57,800 --> 00:04:00,275 Het jy al ooit gesien hoe die werklike kode voor? 90 00:04:00,275 --> 00:04:02,535 Wel, ek neem aan dat jy nie het nie, selfs al het jy dalk 91 00:04:02,535 --> 00:04:05,090 gebruik printf ton van die tye. 92 00:04:05,090 --> 00:04:08,110 Al wat jy het om te weet, was die funksie verklaring teenwoordig 93 00:04:08,110 --> 00:04:10,940 in die stdio.h header-lêer. 94 00:04:10,940 --> 00:04:14,010 In elk geval, die voordeel van goeie inligting wegkruip is dat jy 95 00:04:14,010 --> 00:04:16,820 en die programme wat jy skryf is geïsoleer van enige veranderinge in 96 00:04:16,820 --> 00:04:20,209 die kode van die implementering van die biblioteek funksies. 97 00:04:20,209 --> 00:04:22,880 Indien die implementering van printf veranderinge, hoef jy nie 98 00:04:22,880 --> 00:04:26,310 om te gaan en verander al jou programme wat gebruik printf. 99 00:04:26,310 --> 00:04:28,450 >> So, waar implementering gaan? 100 00:04:28,450 --> 00:04:31,020 Wel, weer, deur konvensie, gaan die implementering in 'n 101 00:04:31,020 --> 00:04:34,310 lêer met die c-lêer uitbreiding. 102 00:04:34,310 --> 00:04:36,820 Gewoonlik header lêers en implementering lêers gaan hand 103 00:04:36,820 --> 00:04:39,380 in die hand, so as jy 'n klomp van die nuwe string verklaar 104 00:04:39,380 --> 00:04:42,950 funksies in mystring.h, dan sal jy definieer al 105 00:04:42,950 --> 00:04:46,960 daardie funksies in mystring c. 106 00:04:46,960 --> 00:04:49,230 So dan is die kop-en implementering lêers is dan 107 00:04:49,230 --> 00:04:52,230 saamgestel is, voorwerp lêers wat word dan gekoppel 108 00:04:52,230 --> 00:04:55,360 die binêre biblioteek lêer saam te produseer. 109 00:04:55,360 --> 00:04:58,520 Die biblioteek skrywer sal dan die binêre lêer langs skip 110 00:04:58,520 --> 00:05:00,720 met die header lêers vir programmeerders wat wil om te gebruik 111 00:05:00,720 --> 00:05:02,280 die biblioteek. 112 00:05:02,280 --> 00:05:04,640 Op hierdie punt, die c implementering. Lêers is nie 113 00:05:04,640 --> 00:05:07,840 benodig nie, behalwe om die biblioteek te hercompileren van nuuts af, so 114 00:05:07,840 --> 00:05:10,270 hulle dikwels uitgelaat. 115 00:05:10,270 --> 00:05:13,670 >> Die C-biblioteek te gebruik, moet jy twee dinge te doen. 116 00:05:13,670 --> 00:05:16,890 Eerstens moet jy # sluit die biblioteek se header lêers en die 117 00:05:16,890 --> 00:05:18,700 bronkode lêer waar jy wil gebruik 118 00:05:18,700 --> 00:05:20,530 die biblioteek se kode. 119 00:05:20,530 --> 00:05:23,200 Dit lig die samesteller van al die verklarings van 120 00:05:23,200 --> 00:05:26,890 funksies, veranderlikes, structs, ensovoorts, wat in die 121 00:05:26,890 --> 00:05:30,510 header lêers sodat die vertaler kan een, verseker dat 122 00:05:30,510 --> 00:05:33,280 jy die gebruik van die biblioteek se hulpbronne op die regte manier, 123 00:05:33,280 --> 00:05:37,120 en twee, die toepaslike vergadering kode genereer. 124 00:05:37,120 --> 00:05:38,910 Afhangende van waar die biblioteek se header lêers 125 00:05:38,910 --> 00:05:42,720 geleë is, die # sluit in sintaksis wissel. 126 00:05:42,720 --> 00:05:44,880 As die header lêers is geleë in die stelsel se 127 00:05:44,880 --> 00:05:46,690 default sluit directory - 128 00:05:46,690 --> 00:05:48,780 tipies, usr/include-- 129 00:05:48,780 --> 00:05:52,200 dan is die hoek tussen hakies sintaksis gebruik word, soos in # sluit 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Maar, as die header lêers is geleë in dieselfde 132 00:05:59,540 --> 00:06:02,960 gids as jou eie kode, die dubbele quote sintaksis 133 00:06:02,960 --> 00:06:04,870 gebruik word, soos in "mylib.h" sluit. 134 00:06:08,630 --> 00:06:11,220 >> Die tweede ding wat jy hoef te doen is om te skakel in die binêre 135 00:06:11,220 --> 00:06:13,760 biblioteek lêer wanneer jy jou kode stel. 136 00:06:13,760 --> 00:06:15,810 Dit is 'n super belangrike stap. 137 00:06:15,810 --> 00:06:17,540 Onthou ons vorige bespreking oor hoe header 138 00:06:17,540 --> 00:06:20,200 lêers bevat geen implementering-kode? 139 00:06:20,200 --> 00:06:22,200 As jy vergeet om hierdie stap, sal jy foute oor 140 00:06:22,200 --> 00:06:24,990 undefined simbole waarna verwys word in jou kode. 141 00:06:24,990 --> 00:06:29,580 Om dit op te los, gebruik die-l vlag onmiddellik gevolg 142 00:06:29,580 --> 00:06:32,320 sonder 'n ruimte deur die naam van die biblioteek. 143 00:06:32,320 --> 00:06:35,410 Op baie stelsels, met inbegrip van die toestel, die C Standard 144 00:06:35,410 --> 00:06:38,350 Biblioteke word outomaties gekoppel vir jou. 145 00:06:38,350 --> 00:06:41,700 Egter soms die wiskunde biblioteek gebundelde afsonderlik 146 00:06:41,700 --> 00:06:44,600 en dalk moet gekoppel word met lm. 147 00:06:44,600 --> 00:06:47,760 Op die toestel, ons sorg van hierdie vir jou, en ons het ook 148 00:06:47,760 --> 00:06:52,170 skakel die CS50 biblioteek met lcs50. 149 00:06:52,170 --> 00:06:54,540 Jy kan sien al hierdie dinge op die toestel wanneer jy loop maak. 150 00:06:57,620 --> 00:06:59,130 >> Nou moet jy die kennis wat jy nodig het om te gebruik 151 00:06:59,130 --> 00:07:02,150 biblioteke in C. Geniet dit. 152 00:07:02,150 --> 00:07:05,880 My naam is Nate Hardison, en dit is CS50.