1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Хардісон: У програмуванні, бібліотека являє собою набір 2 00:00:09,470 --> 00:00:11,380 пов'язаних Стандартна код. 3 00:00:11,380 --> 00:00:14,350 Бібліотеки, як ми, програмісти, загальні та 4 00:00:14,350 --> 00:00:16,930 Код корисними один з одним, з різними програмами ми 5 00:00:16,930 --> 00:00:19,470 писати, і навіть з різними процесами, запущеними на 6 00:00:19,470 --> 00:00:21,380 Водночас на наших комп'ютерах. 7 00:00:21,380 --> 00:00:23,000 >> Давайте розглянемо трохи. 8 00:00:23,000 --> 00:00:25,070 Один з найбільш поширених функцій, які ви, ймовірно, 9 00:00:25,070 --> 00:00:27,500 використовує це Е функція. 10 00:00:27,500 --> 00:00:29,820 Тепер, Printf це не якась магічна функція, яка була 11 00:00:29,820 --> 00:00:31,670 жорстко запрограмоване в комп'ютері - 12 00:00:31,670 --> 00:00:34,320 скоріше, це частина стандартної бібліотеки C, які є 13 00:00:34,320 --> 00:00:36,080 набір функцій, який поставляється з 14 00:00:36,080 --> 00:00:38,050 C мову програмування. 15 00:00:38,050 --> 00:00:40,920 З Printf не вбудований в комп'ютер, це означає, що 16 00:00:40,920 --> 00:00:43,520 було деякий програміста, який насправді пішов і написав 17 00:00:43,520 --> 00:00:46,310 Е функція і в комплекті з рештою стандартної 18 00:00:46,310 --> 00:00:48,880 Бібліотеки так, щоб майбутні програмісти не доведеться 19 00:00:48,880 --> 00:00:50,310 дублювання зусиль. 20 00:00:50,310 --> 00:00:52,620 І ми впевнені, що вдячна, що це так, тому що перевірити 21 00:00:52,620 --> 00:00:54,710 , Скільки коду насправді потрібно для здійснення Printf. 22 00:00:59,590 --> 00:01:02,860 >> C стандартні бібліотеки, які Printf є частиною є 23 00:01:02,860 --> 00:01:04,480 одним з найважливіших інструментів 24 00:01:04,480 --> 00:01:06,770 Тобто у вирішенні CS50. 25 00:01:06,770 --> 00:01:08,780 На додаток до введення-виведення бібліотеки, де 26 00:01:08,780 --> 00:01:11,370 Printf життя, є купа інших бібліотек, які 27 00:01:11,370 --> 00:01:14,230 Ви, ймовірно, використовувати протягом CS50. 28 00:01:14,230 --> 00:01:16,730 Наприклад, рядок бібліотека функцій 29 00:01:16,730 --> 00:01:20,960 C порівняти рядки, щоб їх довжина, і об'єднати їх. 30 00:01:20,960 --> 00:01:22,410 І математичні бібліотеки дає Вам корисними 31 00:01:22,410 --> 00:01:25,062 константи, як пі і е. 32 00:01:25,062 --> 00:01:27,650 Тепер, у порівнянні зі стандартними бібліотеками інших програм 33 00:01:27,650 --> 00:01:31,190 мови, C стандартні бібліотеки дуже невеликий, 34 00:01:31,190 --> 00:01:34,060 але вони все ще мають значну кількість матеріалу. 35 00:01:34,060 --> 00:01:36,370 І це не означає, що стандартні бібліотеки 36 00:01:36,370 --> 00:01:39,020 Тільки C бібліотеки, є ще багато там, в 37 00:01:39,020 --> 00:01:42,460 світ для вас використовувати, в тому числі CS50 бібліотеки, 38 00:01:42,460 --> 00:01:45,150 картографії бібліотеки шифрування і дешифрування 39 00:01:45,150 --> 00:01:48,000 Функції, бібліотек з функціями для кодування і 40 00:01:48,000 --> 00:01:50,970 відтворення відео, і так далі. 41 00:01:50,970 --> 00:01:53,190 >> Це підводить нас до важливої ​​стороні. 42 00:01:53,190 --> 00:01:55,500 Одним з найважливіших навичок інженерно знаючи, 43 00:01:55,500 --> 00:01:58,090 інструментів, доступних у вашій панелі інструментів, так що ви можете використовувати 44 00:01:58,090 --> 00:01:59,850 їх і не винаходити колесо, якщо 45 00:01:59,850 --> 00:02:01,510 Ви повинні зробити це. 46 00:02:01,510 --> 00:02:04,120 Як програмісти, бібліотеки є одним з найбільш важливих 47 00:02:04,120 --> 00:02:05,520 інструменти у нас є. 48 00:02:05,520 --> 00:02:08,520 Коли ви опинитеся перед завданням, яке здається втомливим або 49 00:02:08,520 --> 00:02:11,940 звичайною справою, як знайти довжину рядка C, ви 50 00:02:11,940 --> 00:02:14,020 Слід запитати себе, якщо він може бути так, що 51 00:02:14,020 --> 00:02:16,520 хтось вже зробив те ж саме раніше. 52 00:02:16,520 --> 00:02:17,760 Швидше за все, що ви могли б знайти деякі 53 00:02:17,760 --> 00:02:20,110 допомога в бібліотеці. 54 00:02:20,110 --> 00:02:23,260 >> Таким чином, з технічної точки зору, бібліотека являє собою бінарний файл, що 55 00:02:23,260 --> 00:02:26,210 була проведена шляхом зв'язування разом колекція 56 00:02:26,210 --> 00:02:28,880 Об'єкт файлів за допомогою інструменту під назвою, ви 57 00:02:28,880 --> 00:02:31,010 здогадалися, компонувальник. 58 00:02:31,010 --> 00:02:33,830 Об'єкт файли тих. Висновку файлів, які ви отримуєте, коли ви 59 00:02:33,830 --> 00:02:35,860 компіляції C вихідний код. 60 00:02:35,860 --> 00:02:38,420 Коли програмісти пишуть бібліотеки, вони зазвичай 61 00:02:38,420 --> 00:02:41,560 відокремити їх C код у файли двох типів: 62 00:02:41,560 --> 00:02:44,880 заголовні файли та файли реалізації. 63 00:02:44,880 --> 00:02:49,820 Заголовка файлу відповідно до угоди з урахуванням. Ч розширення файлу, 64 00:02:49,820 --> 00:02:51,940 і містить код, який оголошує бібліотеки 65 00:02:51,940 --> 00:02:55,120 ресурсів, які доступні для вас використовувати. 66 00:02:55,120 --> 00:02:58,830 Ці ресурси включають в себе функції, змінні, структури, 67 00:02:58,830 --> 00:03:01,980 визначення типу, і так далі, і разом вони 68 00:03:01,980 --> 00:03:04,620 зазвичай називають інтерфейс. 69 00:03:04,620 --> 00:03:07,280 У самому справі, якщо ви коли-небудь цікаво, що в бібліотеці, 70 00:03:07,280 --> 00:03:09,580 файли заголовків є місцем для пошуку. 71 00:03:09,580 --> 00:03:14,030 >> Наприклад, ви можете підтягти USR / вмикати / stdio.h і перевірити 72 00:03:14,030 --> 00:03:16,210 все, що ви коли-небудь хотіли знати про 73 00:03:16,210 --> 00:03:18,570 Стандартна бібліотека вводу-виводу. 74 00:03:18,570 --> 00:03:20,610 Там дуже багато речей тут, і це може зайняти трохи 75 00:03:20,610 --> 00:03:22,420 часу, щоб пробратися через. 76 00:03:22,420 --> 00:03:25,840 Однак, поряд з Google і сторінки довідки, це 77 00:03:25,840 --> 00:03:28,060 місце, щоб піти, якщо вам цікаво, як стандартний I / O 78 00:03:28,060 --> 00:03:30,460 бібліотечні функції працюють. 79 00:03:30,460 --> 00:03:33,910 Так що ключова річ, щоб відзначити тут, однак, є те, що файли заголовків 80 00:03:33,910 --> 00:03:36,740 як правило, не включають функцію визначення - 81 00:03:36,740 --> 00:03:40,020 тобто, фактична реалізація функції. 82 00:03:40,020 --> 00:03:42,470 Це ілюстрація з важливих комп'ютерних наук 83 00:03:42,470 --> 00:03:45,700 Принцип називається приховування інформації, також згадується в 84 00:03:45,700 --> 00:03:48,960 раз інкапсуляції. 85 00:03:48,960 --> 00:03:52,630 >> Як користувач або клієнт бібліотеки, ви не повинні 86 00:03:52,630 --> 00:03:54,230 знати про внутрішній бібліотеки в 87 00:03:54,230 --> 00:03:55,380 Для того щоб використовувати його. 88 00:03:55,380 --> 00:03:57,800 Пам'ятайте, бачачи Printf трохи назад? 89 00:03:57,800 --> 00:04:00,275 Якби ви коли-небудь бачили реальний код раніше? 90 00:04:00,275 --> 00:04:02,535 Ну, я припускаю, що у вас немає, хоча ви, можливо, 91 00:04:02,535 --> 00:04:05,090 використовували Printf тонн рази. 92 00:04:05,090 --> 00:04:08,110 Все, що ви повинні були знати була дана заява функції 93 00:04:08,110 --> 00:04:10,940 В заголовку файлу stdio.h. 94 00:04:10,940 --> 00:04:14,010 У всякому разі, на користь гарного приховування інформації є те, що 95 00:04:14,010 --> 00:04:16,820 і програм, які ви пишіть ізольовані від будь-яких змін в 96 00:04:16,820 --> 00:04:20,209 Код реалізації бібліотечних функцій. 97 00:04:20,209 --> 00:04:22,880 Якщо реалізація Printf зміни, вам не доведеться 98 00:04:22,880 --> 00:04:26,310 піти і змінити всі ваші програми, які використовують Printf. 99 00:04:26,310 --> 00:04:28,450 >> Так де ж реалізація йти? 100 00:04:28,450 --> 00:04:31,020 Ну, знову ж таки, за угодою, реалізація йде в 101 00:04:31,020 --> 00:04:34,310 Файл з розширенням. Файл с. 102 00:04:34,310 --> 00:04:36,820 Як правило, файли заголовків та файли реалізації йдуть рука 103 00:04:36,820 --> 00:04:39,380 в руці, так що якщо ви оголосили кілька нових рядків 104 00:04:39,380 --> 00:04:42,950 функції в mystring.h, то ви будете визначати всі 105 00:04:42,950 --> 00:04:46,960 ці функції в MyString. с. 106 00:04:46,960 --> 00:04:49,230 Таким чином, то заголовок і реалізація файли, то 107 00:04:49,230 --> 00:04:52,230 складений, створення об'єктних файлів, які потім зв'язуються 108 00:04:52,230 --> 00:04:55,360 разом для створення виконуваного файлу бібліотеки. 109 00:04:55,360 --> 00:04:58,520 У бібліотеці письменника буде вантажити двійковий файл разом 110 00:04:58,520 --> 00:05:00,720 з заголовка файлу для програмістів, які хочуть використовувати 111 00:05:00,720 --> 00:05:02,280 бібліотеки. 112 00:05:02,280 --> 00:05:04,640 На даний момент,. Файли з реалізації, не є 113 00:05:04,640 --> 00:05:07,840 необхідно, крім перекомпілювати бібліотеку з нуля, тому 114 00:05:07,840 --> 00:05:10,270 вони часто залишаються. 115 00:05:10,270 --> 00:05:13,670 >> Для використання бібліотеки C, що вам потрібно зробити дві речі. 116 00:05:13,670 --> 00:05:16,890 По-перше, ви повинні # включити заголовок бібліотеки файлів і 117 00:05:16,890 --> 00:05:18,700 вихідний код файлу, в якому ви хочете використовувати 118 00:05:18,700 --> 00:05:20,530 бібліотеки коду. 119 00:05:20,530 --> 00:05:23,200 Про це повідомляє компілятору всіх декларацій 120 00:05:23,200 --> 00:05:26,890 функції, змінні, структури, і так далі, присутніх в 121 00:05:26,890 --> 00:05:30,510 заголовні файли так, щоб компілятор можна, переконатися, що 122 00:05:30,510 --> 00:05:33,280 Ви використовуєте ресурси бібліотеки в належному порядку, 123 00:05:33,280 --> 00:05:37,120 і, по-друге, генерувати відповідний код збірки. 124 00:05:37,120 --> 00:05:38,910 В залежності від того, де заголовок бібліотеки файлів 125 00:05:38,910 --> 00:05:42,720 розташовані, # включити синтаксис розрізняється. 126 00:05:42,720 --> 00:05:44,880 Якщо заголовок файлу знаходяться в системі 127 00:05:44,880 --> 00:05:46,690 за замовчуванням включає каталог - 128 00:05:46,690 --> 00:05:48,780 Як правило, usr/include-- 129 00:05:48,780 --> 00:05:52,200 то кут синтаксису дужки використовуються, як в # включити 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Тим не менше, якщо заголовок файлу знаходяться в тому ж 132 00:05:59,540 --> 00:06:02,960 Каталог як свій власний код, подвійний синтаксису цитата 133 00:06:02,960 --> 00:06:04,870 використовувати, як в # включити "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Друге, що вам потрібно зробити, це перейти за посиланням у двійковому 135 00:06:11,220 --> 00:06:13,760 Файл бібліотеки при компіляції коду. 136 00:06:13,760 --> 00:06:15,810 Це супер важливий крок. 137 00:06:15,810 --> 00:06:17,540 Пам'ятайте, наших попередніх дискусій про те, заголовок 138 00:06:17,540 --> 00:06:20,200 файли не містять коду реалізації? 139 00:06:20,200 --> 00:06:22,200 Якщо ви забули цей крок, ви отримаєте помилки, про 140 00:06:22,200 --> 00:06:24,990 невизначені символи, вказані в коді. 141 00:06:24,990 --> 00:06:29,580 Щоб вирішити цю проблему, використовуйте прапор-L послідувала негайно 142 00:06:29,580 --> 00:06:32,320 без пробілу по імені бібліотеки. 143 00:06:32,320 --> 00:06:35,410 На багатьох системах, в тому числі прилад, C Standard 144 00:06:35,410 --> 00:06:38,350 Бібліотеки будуть автоматично пов'язані для вас. 145 00:06:38,350 --> 00:06:41,700 Тим не менш, математичні бібліотеки іноді в комплекті окремо 146 00:06:41,700 --> 00:06:44,600 і, можливо, повинні бути ув'язані з-лм. 147 00:06:44,600 --> 00:06:47,760 З приладом, ми подбаємо про це за вас, і ми також 148 00:06:47,760 --> 00:06:52,170 посилання CS50-бібліотеку з lcs50. 149 00:06:52,170 --> 00:06:54,540 Ви можете подивитися все це на прилад, коли ви запускаєте зробити. 150 00:06:57,620 --> 00:06:59,130 >> Тепер ви повинні мати знання, необхідні для використання 151 00:06:59,130 --> 00:07:02,150 бібліотеки в С. Удачі вивчення. 152 00:07:02,150 --> 00:07:05,880 Мене звати Нейт Хардісон, і це CS50.