1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Hardison: Ohjelmoinnissa kirjasto on kokoelma 2 00:00:09,470 --> 00:00:11,380 liittyvien prewritten koodi. 3 00:00:11,380 --> 00:00:14,350 Kirjastot ovat miten me ohjelmoijat, yhteisiä ja 4 00:00:14,350 --> 00:00:16,930 hyödyllinen koodi toistensa kanssa, ja eri ohjelmien me 5 00:00:16,930 --> 00:00:19,470 kirjoittaa, ja jopa eri prosessit käynnissä 6 00:00:19,470 --> 00:00:21,380 Samalla meidän tietokoneissa. 7 00:00:21,380 --> 00:00:23,000 >> Tutkitaan hieman. 8 00:00:23,000 --> 00:00:25,070 Yksi yleisempiä tehtäviä, että olet luultavasti 9 00:00:25,070 --> 00:00:27,500 käyttänyt on printf toiminto. 10 00:00:27,500 --> 00:00:29,820 Nyt, printf ei ole mikään maaginen toiminto, joka on ollut 11 00:00:29,820 --> 00:00:31,670 koodattu tietokoneeseen - 12 00:00:31,670 --> 00:00:34,320 Pikemminkin se on osa C Standard Kirjastot, jotka ovat 13 00:00:34,320 --> 00:00:36,080 kokoelma toimintoja mukana 14 00:00:36,080 --> 00:00:38,050 C-ohjelmointikieli. 15 00:00:38,050 --> 00:00:40,920 Koska printf ei rakennettu tietokone, se tarkoittaa, että 16 00:00:40,920 --> 00:00:43,520 siellä oli joitakin ohjelmoija, joka todellisuudessa meni ja kirjoitti 17 00:00:43,520 --> 00:00:46,310 printf toiminto ja mukana on muun standardin 18 00:00:46,310 --> 00:00:48,880 kirjastot jotta tulevien ohjelmoijien ei tarvitse 19 00:00:48,880 --> 00:00:50,310 kahtena vaivaa. 20 00:00:50,310 --> 00:00:52,620 Ja olemme varmoja kiitollisia, että näin on, koska tarkistaa 21 00:00:52,620 --> 00:00:54,710 kuinka paljon koodia se todellisuudessa vie toteuttaa printf. 22 00:00:59,590 --> 00:01:02,860 >> C Standard kirjastoja, joista printf kuuluu, ovat 23 00:01:02,860 --> 00:01:04,480 yksi tärkeimmistä työkalut 24 00:01:04,480 --> 00:01:06,770 on torjunnassa CS50. 25 00:01:06,770 --> 00:01:08,780 Lisäksi panos-tuotos-kirjasto, jossa 26 00:01:08,780 --> 00:01:11,370 printf elämää, on olemassa joukko muita kirjastoja 27 00:01:11,370 --> 00:01:14,230 luultavasti käyttää aikana CS50. 28 00:01:14,230 --> 00:01:16,730 Esimerkiksi merkkijono kirjastossa on toimintoja 29 00:01:16,730 --> 00:01:20,960 vertaa C jouset, saavat pituutta, ja liität ne. 30 00:01:20,960 --> 00:01:22,410 Ja matemaattisen kirjaston saat hyödyllistä 31 00:01:22,410 --> 00:01:25,062 vakiot, kuten pi ja e.. 32 00:01:25,062 --> 00:01:27,650 Nyt, verrattuna tavanomaiseen kirjastojen muiden ohjelmien 33 00:01:27,650 --> 00:01:31,190 kielet, C Standard Kirjastot ovat todella pieniä, 34 00:01:31,190 --> 00:01:34,060 mutta ne on vielä huomattava määrä tavaraa. 35 00:01:34,060 --> 00:01:36,370 Ja se ei ole sanoa, että Standard Kirjastot ovat 36 00:01:36,370 --> 00:01:39,020 Vain C-kirjastot, on paljon enemmän siellä 37 00:01:39,020 --> 00:01:42,460 maailman voit käyttää myös CS50 kirjasto, 38 00:01:42,460 --> 00:01:45,150 kartografia kirjastot salaus ja salauksen 39 00:01:45,150 --> 00:01:48,000 toimintoihin, kirjastoja, joilla on toimintoja koodaamaan ja 40 00:01:48,000 --> 00:01:50,970 toistaa video-, ja niin edelleen. 41 00:01:50,970 --> 00:01:53,190 >> Tästä pääsemmekin tärkeän syrjään. 42 00:01:53,190 --> 00:01:55,500 Yksi keskeinen osaaminen suunnittelu on tietää 43 00:01:55,500 --> 00:01:58,090 työkaluja oman työkalupakin, jotta voit käyttää 44 00:01:58,090 --> 00:01:59,850 ne ja välttämään pyörän keksimistä uudelleen, ellei 45 00:01:59,850 --> 00:02:01,510 sinun täytyy tehdä niin. 46 00:02:01,510 --> 00:02:04,120 Kuten ohjelmoijat, kirjastot ovat yksi tärkeimmistä 47 00:02:04,120 --> 00:02:05,520 työkaluja meillä. 48 00:02:05,520 --> 00:02:08,520 Kun löydät itsesi edessään tehtävä, joka näyttää ikävä tai 49 00:02:08,520 --> 00:02:11,940 tavallisia, kuten löytää pituus C merkkijono, et 50 00:02:11,940 --> 00:02:14,020 pitäisi kysyä itseltäsi, jos se voisi olla, että 51 00:02:14,020 --> 00:02:16,520 joku on jo tehnyt saman aiemmin. 52 00:02:16,520 --> 00:02:17,760 Mahdollisuudet ovat, että voit löytää joitakin 53 00:02:17,760 --> 00:02:20,110 auttaa sisällä kirjastossa. 54 00:02:20,110 --> 00:02:23,260 >> Joten teknisesti ottaen kirjasto on binaaritiedosto, joka 55 00:02:23,260 --> 00:02:26,210 on tuotettu yhdistämällä kokoelma 56 00:02:26,210 --> 00:02:28,880 objektin tiedostoja työkalu nimeltään, voit 57 00:02:28,880 --> 00:02:31,010 Arvasit oikein, linkkeri. 58 00:02:31,010 --> 00:02:33,830 Object-tiedostot ovat. O tiedostot saat kun 59 00:02:33,830 --> 00:02:35,860 kääntää C lähdekoodi. 60 00:02:35,860 --> 00:02:38,420 Kun ohjelmoijat kirjoittaa kirjastot, he yleensä 61 00:02:38,420 --> 00:02:41,560 erottaa niiden C-koodin kahteen tiedostotyyppejä: 62 00:02:41,560 --> 00:02:44,880 header-tiedostot ja täytäntöönpanon tiedostoja. 63 00:02:44,880 --> 00:02:49,820 Header tiedosto yleissopimuksessa annetaan. H tiedostopääte, 64 00:02:49,820 --> 00:02:51,940 ja se sisältää koodin, joka ilmoittaa kirjaston 65 00:02:51,940 --> 00:02:55,120 resurssit, jotka ovat käytettävissä voit käyttää. 66 00:02:55,120 --> 00:02:58,830 Nämä resurssit ovat funktioita, muuttujia, tietueet, 67 00:02:58,830 --> 00:03:01,980 tyypin määritelmät, ja niin edelleen, ja yhdessä ne ovat 68 00:03:01,980 --> 00:03:04,620 kutsutaan yleisesti rajapinnan. 69 00:03:04,620 --> 00:03:07,280 Itse asiassa, jos olet joskus miettinyt mitä on kirjasto, 70 00:03:07,280 --> 00:03:09,580 header tiedostot ovat paikka etsiä. 71 00:03:09,580 --> 00:03:14,030 >> Esimerkiksi, voit vetää ylös usr / include / stdio.h ja tarkista 72 00:03:14,030 --> 00:03:16,210 ulos kaikki mitä olet halunnut tietää 73 00:03:16,210 --> 00:03:18,570 standardin io kirjastoon. 74 00:03:18,570 --> 00:03:20,610 Siellä on paljon tavaraa täällä, ja se voi kestää hieman 75 00:03:20,610 --> 00:03:22,420 aikaa kahlata läpi. 76 00:03:22,420 --> 00:03:25,840 Kuitenkin yhdessä Googlen ja ohjesivut, tämä on 77 00:03:25,840 --> 00:03:28,060 paikka mennä, jos mietit miten tavallinen I / O 78 00:03:28,060 --> 00:03:30,460 Kirjasto toimii. 79 00:03:30,460 --> 00:03:33,910 Joten yksi keskeinen asia huomata tässä on kuitenkin se, että header tiedostot 80 00:03:33,910 --> 00:03:36,740 tyypillisesti eivät sisällä toimintoa määritelmät - 81 00:03:36,740 --> 00:03:40,020 , joka on todellinen toiminto toteutuksia. 82 00:03:40,020 --> 00:03:42,470 Tämä on esimerkki tärkeästä tietojenkäsittelytiede 83 00:03:42,470 --> 00:03:45,700 periaatetta kutsutaan tiedonpiilotus myös viitattu 84 00:03:45,700 --> 00:03:48,960 kertaa kuin kapselointi. 85 00:03:48,960 --> 00:03:52,630 >> Koska käyttäjä tai asiakas kirjasto, sinun ei tarvitse 86 00:03:52,630 --> 00:03:54,230 tietää sisäosat kirjasto 87 00:03:54,230 --> 00:03:55,380 velvoittaa käyttämään sitä. 88 00:03:55,380 --> 00:03:57,800 Muistan nähneeni printf vain hieman sitten? 89 00:03:57,800 --> 00:04:00,275 Olitko koskaan nähnyt todellista koodia ennen? 90 00:04:00,275 --> 00:04:02,535 No, oletan, että et ole, vaikka saatat 91 00:04:02,535 --> 00:04:05,090 ovat käyttäneet printf tonnia kertaa. 92 00:04:05,090 --> 00:04:08,110 Kaikki sinun piti tietää oli tehtävä ilmoitus esillä 93 00:04:08,110 --> 00:04:10,940 vuonna stdio.h otsikkotiedosto. 94 00:04:10,940 --> 00:04:14,010 Joka tapauksessa hyötyä hyvän tiedonpiilotus on, että 95 00:04:14,010 --> 00:04:16,820 ja ohjelmat kirjoitetaan eristettynä muutokset 96 00:04:16,820 --> 00:04:20,209 koodi täytäntöönpanon kirjaston toimintoja. 97 00:04:20,209 --> 00:04:22,880 Jos täytäntöönpanon printf muutoksia, sinun ei tarvitse 98 00:04:22,880 --> 00:04:26,310 mennä ja muuttaa kaikki ohjelmat, jotka käyttävät printf. 99 00:04:26,310 --> 00:04:28,450 >> Joten mistä täytäntöönpanoa mennä? 100 00:04:28,450 --> 00:04:31,020 No, jälleen Sopimuksen mukaan täytäntöönpanosta menee 101 00:04:31,020 --> 00:04:34,310 tiedosto. C tiedostotunniste. 102 00:04:34,310 --> 00:04:36,820 Yleensä header-tiedostot ja täytäntöönpano tiedostot kulkevat käsi 103 00:04:36,820 --> 00:04:39,380 kädessä, joten jos olet julistettu joukko uusia merkkijonon 104 00:04:39,380 --> 00:04:42,950 toimintoja mystring.h, niin sinun määrittää kaikki 105 00:04:42,950 --> 00:04:46,960 nämä toiminnot mystring. c. 106 00:04:46,960 --> 00:04:49,230 Joten sitten header ja täytäntöönpanoon tiedostot sitten 107 00:04:49,230 --> 00:04:52,230 kootaan, luodaan objekti tiedostot ovat sitten linkitetty 108 00:04:52,230 --> 00:04:55,360 yhdessä tuottavat binary kirjaston tiedoston. 109 00:04:55,360 --> 00:04:58,520 Kirjasto kirjailija sitten lähettää binaaritiedosto pitkin 110 00:04:58,520 --> 00:05:00,720 kanssa header tiedostot ohjelmoijia, jotka haluavat käyttää 111 00:05:00,720 --> 00:05:02,280 kirjastoon. 112 00:05:02,280 --> 00:05:04,640 Tässä vaiheessa. C toteuttamiseen tiedostot eivät ole 113 00:05:04,640 --> 00:05:07,840 tarvitaan, paitsi kääntää kirjastoon tyhjästä, joten 114 00:05:07,840 --> 00:05:10,270 he usein jätetään pois. 115 00:05:10,270 --> 00:05:13,670 >> Voit käyttää C kirjasto, sinun täytyy tehdä kaksi asiaa. 116 00:05:13,670 --> 00:05:16,890 Ensinnäkin, sinun täytyy # include kirjaston header-tiedostot ja 117 00:05:16,890 --> 00:05:18,700 lähdekooditiedostoa missä haluat käyttää 118 00:05:18,700 --> 00:05:20,530 kirjaston koodi. 119 00:05:20,530 --> 00:05:23,200 Tämä ilmoittaa kääntäjä kaikkien ilmoitusten 120 00:05:23,200 --> 00:05:26,890 funktioita, muuttujia, tietueet, jne., läsnä 121 00:05:26,890 --> 00:05:30,510 header tiedostot niin, että kääntäjä voi yksi, vakuuttaa, että 122 00:05:30,510 --> 00:05:33,280 käytät kirjaston resurssien oikealla tavalla, 123 00:05:33,280 --> 00:05:37,120 ja kaksi, tuottaa sopiva kokoonpano koodi. 124 00:05:37,120 --> 00:05:38,910 Riippuen siitä, missä kirjaston header-tiedostot ovat 125 00:05:38,910 --> 00:05:42,720 sijaitsee, # include syntaksi vaihtelee. 126 00:05:42,720 --> 00:05:44,880 Jos otsikko tiedostot sijaitsevat järjestelmän 127 00:05:44,880 --> 00:05:46,690 Oletuksena ovat hakemisto - 128 00:05:46,690 --> 00:05:48,780 tyypillisesti, usr/include-- 129 00:05:48,780 --> 00:05:52,200 Sitten kulmarautojen syntaksia käytetään, kuten # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Kuitenkin, jos otsikko tiedostot sijaitsevat samassa 132 00:05:59,540 --> 00:06:02,960 hakemistoon oman koodin, lainausmerkki syntaksi on 133 00:06:02,960 --> 00:06:04,870 käytetään, kuten # include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Toinen asia mitä sinun tarvitsee tehdä on yhdistää vuonna binary 135 00:06:11,220 --> 00:06:13,760 Kirjaston tiedostoa kun kääntää koodin. 136 00:06:13,760 --> 00:06:15,810 Tämä on erittäin tärkeä askel. 137 00:06:15,810 --> 00:06:17,540 Muista meidän aikaisempi keskustelumme siitä, miten otsikko 138 00:06:17,540 --> 00:06:20,200 tiedostot eivät sisällä täytäntöönpanon koodia? 139 00:06:20,200 --> 00:06:22,200 Jos unohdat tämän vaiheen, saat virheitä, 140 00:06:22,200 --> 00:06:24,990 määrittelemätön symbolit viitataan koodissa. 141 00:06:24,990 --> 00:06:29,580 Voit ratkaista tämän, käytä-l lipun seuraa välittömästi 142 00:06:29,580 --> 00:06:32,320 ilman tilaa, jonka nimi kirjaston. 143 00:06:32,320 --> 00:06:35,410 Monissa järjestelmissä, kuten laite-C Standard 144 00:06:35,410 --> 00:06:38,350 Kirjastot automaattisesti linkitetty sinulle. 145 00:06:38,350 --> 00:06:41,700 Kuitenkin matematiikan kirjasto on joskus mukana erikseen 146 00:06:41,700 --> 00:06:44,600 ja ehkä liittyy-lm. 147 00:06:44,600 --> 00:06:47,760 Laitteeseen, me hoidamme tämän sinulle, ja me myös 148 00:06:47,760 --> 00:06:52,170 linkittää CS50 kirjasto-lcs50. 149 00:06:52,170 --> 00:06:54,540 Voit nähdä kaikki tämä laite kun ajaa tekemään. 150 00:06:57,620 --> 00:06:59,130 >> Nyt sinulla pitäisi olla tietoa sinun täytyy käyttää 151 00:06:59,130 --> 00:07:02,150 kirjastoissa C. On hauskaa tutkia. 152 00:07:02,150 --> 00:07:05,880 Nimeni on Nate Hardison, ja tämä on CS50.