1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate HARDISON: Dalam pengaturcaraan, perpustakaan adalah koleksi 2 00:00:09,470 --> 00:00:11,380 kod prewritten berkaitan. 3 00:00:11,380 --> 00:00:14,350 Perpustakaan adalah bagaimana kita, sebagai pengaturcara, saham biasa dan 4 00:00:14,350 --> 00:00:16,930 kod membantu antara satu sama lain, dengan program-program yang berbeza kita 5 00:00:16,930 --> 00:00:19,470 menulis, dan walaupun dengan proses yang berbeza berjalan di 6 00:00:19,470 --> 00:00:21,380 masa yang sama pada komputer kita. 7 00:00:21,380 --> 00:00:23,000 >> Mari kita meneroka sedikit. 8 00:00:23,000 --> 00:00:25,070 Salah satu fungsi yang lebih biasa yang anda telah mungkin 9 00:00:25,070 --> 00:00:27,500 telah menggunakan fungsi printf. 10 00:00:27,500 --> 00:00:29,820 Sekarang, printf tidak beberapa fungsi sihir itu telah 11 00:00:29,820 --> 00:00:31,670 keras dikodkan ke dalam komputer - 12 00:00:31,670 --> 00:00:34,320 sebaliknya, ia adalah sebahagian daripada C Standard Perpustakaan, yang 13 00:00:34,320 --> 00:00:36,080 koleksi fungsi yang datang dengan 14 00:00:36,080 --> 00:00:38,050 C bahasa pengaturcaraan. 15 00:00:38,050 --> 00:00:40,920 Sejak printf tidak dibina ke dalam komputer, ini bermakna bahawa 16 00:00:40,920 --> 00:00:43,520 terdapat beberapa pengaturcara yang sebenarnya pergi dan menulis 17 00:00:43,520 --> 00:00:46,310 fungsi printf dan digabungkan dengan lain standard 18 00:00:46,310 --> 00:00:48,880 perpustakaan supaya masa depan pengaturcara tidak perlu 19 00:00:48,880 --> 00:00:50,310 pendua usaha. 20 00:00:50,310 --> 00:00:52,620 Dan kami pasti bersyukur bahawa kes itu, kerana periksa 21 00:00:52,620 --> 00:00:54,710 keluar berapa banyak kod ia sebenarnya diperlukan untuk melaksanakan printf. 22 00:00:59,590 --> 00:01:02,860 >> C Standard Perpustakaan, yang printf adalah sebahagian, 23 00:01:02,860 --> 00:01:04,480 salah satu alat yang paling penting anda 24 00:01:04,480 --> 00:01:06,770 ada dalam menangani CS50. 25 00:01:06,770 --> 00:01:08,780 Di samping perpustakaan input-output di mana 26 00:01:08,780 --> 00:01:11,370 kehidupan printf, terdapat sekumpulan perpustakaan lain yang 27 00:01:11,370 --> 00:01:14,230 anda mungkin akan menggunakan lebih kursus CS50. 28 00:01:14,230 --> 00:01:16,730 Sebagai contoh, perpustakaan rentetan mempunyai fungsi untuk 29 00:01:16,730 --> 00:01:20,960 membandingkan tali C, dapatkan panjang mereka, dan menyatukan mereka. 30 00:01:20,960 --> 00:01:22,410 Dan perpustakaan matematik memberikan anda membantu 31 00:01:22,410 --> 00:01:25,062 pemalar, seperti pi dan e. 32 00:01:25,062 --> 00:01:27,650 Sekarang, berbanding dengan perpustakaan standard pengaturcaraan lain 33 00:01:27,650 --> 00:01:31,190 bahasa, C Standard Perpustakaan adalah benar-benar kecil, 34 00:01:31,190 --> 00:01:34,060 tetapi mereka masih mempunyai sejumlah besar barangan. 35 00:01:34,060 --> 00:01:36,370 Dan itu bukan untuk mengatakan bahawa Perpustakaan Standard 36 00:01:36,370 --> 00:01:39,020 sahaja C perpustakaan; terdapat banyak lagi di luar sana dalam 37 00:01:39,020 --> 00:01:42,460 dunia untuk anda gunakan, termasuk Perpustakaan CS50, 38 00:01:42,460 --> 00:01:45,150 kartografi perpustakaan dengan penyulitan dan penyahsulitan 39 00:01:45,150 --> 00:01:48,000 fungsi, perpustakaan dengan fungsi untuk mengekod dan 40 00:01:48,000 --> 00:01:50,970 memainkan kembali video, dan sebagainya. 41 00:01:50,970 --> 00:01:53,190 >> Ini membawa kita kepada selain penting. 42 00:01:53,190 --> 00:01:55,500 Salah satu kemahiran yang penting dalam kejuruteraan mengetahui 43 00:01:55,500 --> 00:01:58,090 alat yang tersedia dalam toolbox anda supaya anda boleh menggunakan 44 00:01:58,090 --> 00:01:59,850 mereka dan mengelakkan Reinventing roda kecuali 45 00:01:59,850 --> 00:02:01,510 anda perlu untuk berbuat demikian. 46 00:02:01,510 --> 00:02:04,120 Sebagai pengaturcara, perpustakaan adalah salah satu yang paling penting 47 00:02:04,120 --> 00:02:05,520 alat yang kita ada. 48 00:02:05,520 --> 00:02:08,520 Apabila anda mendapati diri anda menghadapi satu tugas yang seolah-olah membosankan atau 49 00:02:08,520 --> 00:02:11,940 perkara biasa, seperti mencari panjang tali C, anda 50 00:02:11,940 --> 00:02:14,020 perlu tanya diri anda jika ia mungkin kes yang 51 00:02:14,020 --> 00:02:16,520 seseorang sudah melakukan perkara yang sama sebelum ini. 52 00:02:16,520 --> 00:02:17,760 Kemungkinan bahawa anda boleh menemui beberapa 53 00:02:17,760 --> 00:02:20,110 membantu dalam perpustakaan. 54 00:02:20,110 --> 00:02:23,260 >> Jadi, dari segi teknikal, perpustakaan adalah fail binari yang 55 00:02:23,260 --> 00:02:26,210 telah dihasilkan oleh menghubungkan bersama-sama koleksi 56 00:02:26,210 --> 00:02:28,880 fail objek menggunakan alat yang dipanggil, anda 57 00:02:28,880 --> 00:02:31,010 fikirkan, pemaut. 58 00:02:31,010 --> 00:02:33,830 Fail objek adalah mereka o fail yang anda dapat apabila anda 59 00:02:33,830 --> 00:02:35,860 menyusun C kod sumber. 60 00:02:35,860 --> 00:02:38,420 Apabila pengaturcara menulis perpustakaan, mereka biasanya 61 00:02:38,420 --> 00:02:41,560 memisahkan kod C mereka kepada dua jenis fail: 62 00:02:41,560 --> 00:02:44,880 header fail dan fail pelaksanaan. 63 00:02:44,880 --> 00:02:49,820 Satu fail header oleh konvensyen diberikan lanjutan fail. H, 64 00:02:49,820 --> 00:02:51,940 dan ia mengandungi kod yang mengisytiharkan perpustakaan 65 00:02:51,940 --> 00:02:55,120 sumber-sumber yang tersedia untuk anda gunakan. 66 00:02:55,120 --> 00:02:58,830 Sumber-sumber ini termasuk fungsi, pembolehubah, structs, 67 00:02:58,830 --> 00:03:01,980 definisi jenis, dan sebagainya, dan bersama-sama, mereka 68 00:03:01,980 --> 00:03:04,620 biasanya dirujuk sebagai antara muka. 69 00:03:04,620 --> 00:03:07,280 Malah, jika anda pernah tertanya-tanya apa yang di perpustakaan, 70 00:03:07,280 --> 00:03:09,580 fail header adalah tempat untuk melihat. 71 00:03:09,580 --> 00:03:14,030 >> Sebagai contoh, anda boleh tarik sehingga usr / termasuk / stdio.h dan memeriksa 72 00:03:14,030 --> 00:03:16,210 keluar semua yang anda pernah ingin tahu tentang 73 00:03:16,210 --> 00:03:18,570 io perpustakaan standard. 74 00:03:18,570 --> 00:03:20,610 Terdapat banyak barangan di sini, dan ia boleh mengambil sedikit 75 00:03:20,610 --> 00:03:22,420 masa untuk mengharungi melalui. 76 00:03:22,420 --> 00:03:25,840 Walau bagaimanapun, bersama-sama dengan Google dan manpages, ini adalah 77 00:03:25,840 --> 00:03:28,060 tempat untuk pergi jika anda tertanya-tanya bagaimana standard I / O 78 00:03:28,060 --> 00:03:30,460 fungsi perpustakaan bekerja. 79 00:03:30,460 --> 00:03:33,910 Jadi, salah satu perkara utama yang perlu diperhatikan di sini, walaupun, adalah bahawa fail header 80 00:03:33,910 --> 00:03:36,740 biasanya tidak termasuk definisi fungsi - 81 00:03:36,740 --> 00:03:40,020 yang, pelaksanaan fungsi sebenar. 82 00:03:40,020 --> 00:03:42,470 Ini adalah ilustrasi sains komputer penting 83 00:03:42,470 --> 00:03:45,700 prinsip dipanggil menyembunyikan maklumat, juga dirujuk di 84 00:03:45,700 --> 00:03:48,960 kali sebagai pengkapsulan. 85 00:03:48,960 --> 00:03:52,630 >> Sebagai pengguna atau pelanggan perpustakaan, anda tidak perlu 86 00:03:52,630 --> 00:03:54,230 tahu tentang dalaman perpustakaan di 87 00:03:54,230 --> 00:03:55,380 memerintahkan untuk menggunakannya. 88 00:03:55,380 --> 00:03:57,800 Ingat printf melihat hanya sedikit yang lalu? 89 00:03:57,800 --> 00:04:00,275 Sekiranya anda pernah melihat kod sebenar sebelum ini? 90 00:04:00,275 --> 00:04:02,535 Well, saya menganggap bahawa anda tidak mempunyai, walaupun anda mungkin 91 00:04:02,535 --> 00:04:05,090 telah digunakan tan printf kali. 92 00:04:05,090 --> 00:04:08,110 Apa yang anda telah tahu adalah fungsi yang hadir pengisytiharan 93 00:04:08,110 --> 00:04:10,940 dalam fail header stdio.h. 94 00:04:10,940 --> 00:04:14,010 Bagaimanapun, manfaat menyembunyikan maklumat yang baik adalah bahawa anda 95 00:04:14,010 --> 00:04:16,820 dan program yang anda menulis terlindung daripada sebarang perubahan dalam 96 00:04:16,820 --> 00:04:20,209 kod pelaksanaan fungsi perpustakaan. 97 00:04:20,209 --> 00:04:22,880 Jika pelaksanaan perubahan printf, anda tidak perlu 98 00:04:22,880 --> 00:04:26,310 untuk pergi dan menukar semua program anda yang menggunakan printf. 99 00:04:26,310 --> 00:04:28,450 >> Jadi di manakah pelaksanaan pergi? 100 00:04:28,450 --> 00:04:31,020 Nah, sekali lagi, mengikut konvensyen, pelaksanaan pergi dalam 101 00:04:31,020 --> 00:04:34,310 fail dengan lanjutan fail. c. 102 00:04:34,310 --> 00:04:36,820 Biasanya, fail header dan fail pelaksanaan pergi tangan 103 00:04:36,820 --> 00:04:39,380 dalam tangan, jadi jika anda telah mengisytiharkan sekumpulan rentetan baru 104 00:04:39,380 --> 00:04:42,950 fungsi di mystring.h, maka anda akan menentukan semua 105 00:04:42,950 --> 00:04:46,960 fungsi-fungsi di mystring. c. 106 00:04:46,960 --> 00:04:49,230 Jadi maka fail header dan pelaksanaan maka 107 00:04:49,230 --> 00:04:52,230 disusun, mewujudkan fail objek yang kemudiannya dikaitkan 108 00:04:52,230 --> 00:04:55,360 bersama-sama untuk menghasilkan fail binari perpustakaan. 109 00:04:55,360 --> 00:04:58,520 Penulis perpustakaan kemudian akan menghantar fail binari bersama-sama 110 00:04:58,520 --> 00:05:00,720 dengan fail pengepala kepada pengaturcara yang ingin menggunakan 111 00:05:00,720 --> 00:05:02,280 perpustakaan. 112 00:05:02,280 --> 00:05:04,640 Pada ketika ini, pelaksanaan fail c tidak 113 00:05:04,640 --> 00:05:07,840 diperlukan, kecuali untuk susun semula perpustakaan dari awal, jadi 114 00:05:07,840 --> 00:05:10,270 mereka sering ketinggalan. 115 00:05:10,270 --> 00:05:13,670 >> Untuk menggunakan perpustakaan C, anda perlu melakukan dua perkara. 116 00:05:13,670 --> 00:05:16,890 Pertama, anda # mesti termasuk fail header perpustakaan dan 117 00:05:16,890 --> 00:05:18,700 fail kod sumber di mana anda ingin menggunakan 118 00:05:18,700 --> 00:05:20,530 kod perpustakaan. 119 00:05:20,530 --> 00:05:23,200 Ini memberitahu pengkompil semua pengisytiharan 120 00:05:23,200 --> 00:05:26,890 fungsi, pembolehubah, structs, et cetera, hadir dalam 121 00:05:26,890 --> 00:05:30,510 fail header supaya pengkompil boleh satu, memastikan bahawa 122 00:05:30,510 --> 00:05:33,280 anda menggunakan sumber-sumber perpustakaan dalam cara yang betul, 123 00:05:33,280 --> 00:05:37,120 dan dua, menjana kod pemasangan yang sesuai. 124 00:05:37,120 --> 00:05:38,910 Bergantung kepada di mana fail header perpustakaan 125 00:05:38,910 --> 00:05:42,720 terletak, sintaks # include berbeza. 126 00:05:42,720 --> 00:05:44,880 Jika fail header terletak dalam sistem 127 00:05:44,880 --> 00:05:46,690 lalai termasuk direktori - 128 00:05:46,690 --> 00:05:48,780 biasanya, usr/include-- 129 00:05:48,780 --> 00:05:52,200 maka kurungan sudut sintaksis digunakan, seperti dalam # termasuk 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Walau bagaimanapun, jika fail header terletak dalam yang sama 132 00:05:59,540 --> 00:06:02,960 direktori sebagai kod anda sendiri, sintaks quote double 133 00:06:02,960 --> 00:06:04,870 digunakan, seperti dalam # termasuk "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> Perkara kedua yang anda perlu lakukan adalah untuk menghubungkan dalam binari 135 00:06:11,220 --> 00:06:13,760 perpustakaan fail apabila anda menyusun kod anda. 136 00:06:13,760 --> 00:06:15,810 Ini adalah langkah penting super. 137 00:06:15,810 --> 00:06:17,540 Ingat perbincangan awal kami tentang bagaimana header 138 00:06:17,540 --> 00:06:20,200 fail tidak mengandungi kod pelaksanaan? 139 00:06:20,200 --> 00:06:22,200 Jika anda terlupa langkah ini, anda akan mendapat kesilapan tentang 140 00:06:22,200 --> 00:06:24,990 simbol undefined dirujuk dalam kod anda. 141 00:06:24,990 --> 00:06:29,580 Untuk menyelesaikan masalah ini, gunakan-l bendera diikuti segera 142 00:06:29,580 --> 00:06:32,320 tanpa ruang dengan nama perpustakaan. 143 00:06:32,320 --> 00:06:35,410 Pada banyak sistem, termasuk perkakas, Standard C 144 00:06:35,410 --> 00:06:38,350 Perpustakaan secara automatik dikaitkan untuk anda. 145 00:06:38,350 --> 00:06:41,700 Walau bagaimanapun, perpustakaan matematik kadang-kadang digabungkan secara berasingan 146 00:06:41,700 --> 00:06:44,600 dan mungkin perlu dikaitkan dengan lm-. 147 00:06:44,600 --> 00:06:47,760 Perkakas, kita menjaga ini untuk anda, dan kita juga 148 00:06:47,760 --> 00:06:52,170 menghubungkan perpustakaan CS50 dengan lcs50. 149 00:06:52,170 --> 00:06:54,540 Anda boleh melihat semua ini pada perkakas apabila anda menjalankan membuat. 150 00:06:57,620 --> 00:06:59,130 >> Sekarang anda perlu mempunyai pengetahuan yang anda perlukan untuk digunakan 151 00:06:59,130 --> 00:07:02,150 perpustakaan di C. Bersenang-senang meneroka. 152 00:07:02,150 --> 00:07:05,880 Nama saya adalah Nate Hardison, dan ini adalah CS50.