1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Hardison: En programación, una biblioteca es una colección de 2 00:00:09,470 --> 00:00:11,380 código relacionado previamente escrito. 3 00:00:11,380 --> 00:00:14,350 Las bibliotecas son como nosotros, como programadores, acción común y 4 00:00:14,350 --> 00:00:16,930 código útil entre sí, con los diferentes programas 5 00:00:16,930 --> 00:00:19,470 escribir, e incluso con los distintos procesos en marcha 6 00:00:19,470 --> 00:00:21,380 mismo tiempo en nuestros ordenadores. 7 00:00:21,380 --> 00:00:23,000 >> Vamos a explorar un poco. 8 00:00:23,000 --> 00:00:25,070 Una de las funciones más comunes que usted probablemente ha 9 00:00:25,070 --> 00:00:27,500 estado usando es la función printf. 10 00:00:27,500 --> 00:00:29,820 Ahora, printf no es una función mágica que ha sido 11 00:00:29,820 --> 00:00:31,670 en forma fija en la computadora - 12 00:00:31,670 --> 00:00:34,320 más bien, es parte de las bibliotecas C estándar, que son 13 00:00:34,320 --> 00:00:36,080 una colección de funciones que viene con el 14 00:00:36,080 --> 00:00:38,050 C lenguaje de programación. 15 00:00:38,050 --> 00:00:40,920 Desde printf no está integrada en el ordenador, lo que significa que 16 00:00:40,920 --> 00:00:43,520 hubo algún programador que realmente fue y escribió el 17 00:00:43,520 --> 00:00:46,310 función printf y liado con el resto de la norma 18 00:00:46,310 --> 00:00:48,880 bibliotecas para que los futuros programadores no tienen que 19 00:00:48,880 --> 00:00:50,310 duplicar el esfuerzo. 20 00:00:50,310 --> 00:00:52,620 Y estamos seguros de agradecer que ese es el caso, debido a verificar 21 00:00:52,620 --> 00:00:54,710 por la cantidad de código que realmente se necesita para implementar printf. 22 00:00:59,590 --> 00:01:02,860 >> Las bibliotecas C estándar, de los cuales printf es una parte, son 23 00:01:02,860 --> 00:01:04,480 una de las herramientas más importantes que 24 00:01:04,480 --> 00:01:06,770 tener en la lucha contra CS50. 25 00:01:06,770 --> 00:01:08,780 Además de la biblioteca de entrada-salida donde 26 00:01:08,780 --> 00:01:11,370 printf vidas, hay un montón de otras bibliotecas que 27 00:01:11,370 --> 00:01:14,230 es probable que utilice en el transcurso de CS50. 28 00:01:14,230 --> 00:01:16,730 Por ejemplo, la biblioteca de cadenas tiene funciones para 29 00:01:16,730 --> 00:01:20,960 comparar cadenas de C, obtenga su longitud, y concatenar ellos. 30 00:01:20,960 --> 00:01:22,410 Y la biblioteca de matemáticas le da útil 31 00:01:22,410 --> 00:01:25,062 constantes, como pi y e. 32 00:01:25,062 --> 00:01:27,650 Ahora, en comparación con las bibliotecas estándar de programación de otra 33 00:01:27,650 --> 00:01:31,190 idiomas, las bibliotecas C estándar son muy pequeñas, 34 00:01:31,190 --> 00:01:34,060 pero todavía tienen una gran cantidad de cosas. 35 00:01:34,060 --> 00:01:36,370 Y eso no quiere decir que las bibliotecas estándar son la 36 00:01:36,370 --> 00:01:39,020 Sólo bibliotecas de C, hay muchos más por ahí en la 37 00:01:39,020 --> 00:01:42,460 mundo para su uso, incluyendo la Biblioteca CS50, 38 00:01:42,460 --> 00:01:45,150 bibliotecas de cartografía con el cifrado y el descifrado 39 00:01:45,150 --> 00:01:48,000 funciones, las bibliotecas con funciones para codificar y 40 00:01:48,000 --> 00:01:50,970 reproducir video, y así sucesivamente. 41 00:01:50,970 --> 00:01:53,190 >> Esto nos lleva a un aparte importante. 42 00:01:53,190 --> 00:01:55,500 Una de las habilidades esenciales de la ingeniería es conocer el 43 00:01:55,500 --> 00:01:58,090 herramientas disponibles en su caja de herramientas para que pueda utilizar 44 00:01:58,090 --> 00:01:59,850 ellos y evitar reinventar la rueda a menos que 45 00:01:59,850 --> 00:02:01,510 usted tiene que hacerlo. 46 00:02:01,510 --> 00:02:04,120 Como programadores, las bibliotecas son uno de los más importantes 47 00:02:04,120 --> 00:02:05,520 herramientas que tenemos. 48 00:02:05,520 --> 00:02:08,520 Cuando usted se encuentra frente a una tarea que parece aburrido o 49 00:02:08,520 --> 00:02:11,940 común, como encontrar la longitud de una cadena C, 50 00:02:11,940 --> 00:02:14,020 debe preguntarse si puede darse el caso de que 51 00:02:14,020 --> 00:02:16,520 alguien ya ha hecho lo mismo antes. 52 00:02:16,520 --> 00:02:17,760 Lo más probable es que usted puede encontrar algunos 53 00:02:17,760 --> 00:02:20,110 ayuda dentro de una biblioteca. 54 00:02:20,110 --> 00:02:23,260 >> Así que en términos técnicos, una biblioteca es un archivo binario que 55 00:02:23,260 --> 00:02:26,210 Se ha producido uniendo una colección de 56 00:02:26,210 --> 00:02:28,880 archivos de objetos utilizando una herramienta llamada, usted 57 00:02:28,880 --> 00:02:31,010 adivinado, el enlazador. 58 00:02:31,010 --> 00:02:33,830 Archivos de objetos son esos. Archivos o que se obtiene cuando se 59 00:02:33,830 --> 00:02:35,860 compilar código C fuente. 60 00:02:35,860 --> 00:02:38,420 Cuando los programadores escribir bibliotecas, por lo general 61 00:02:38,420 --> 00:02:41,560 separar su código C en dos tipos de archivos: 62 00:02:41,560 --> 00:02:44,880 archivos de cabecera y los archivos de implementación. 63 00:02:44,880 --> 00:02:49,820 Un archivo de encabezado, por convención, se le da la extensión. H archivo, 64 00:02:49,820 --> 00:02:51,940 y contiene código que declare la biblioteca de 65 00:02:51,940 --> 00:02:55,120 recursos que están disponibles para su uso. 66 00:02:55,120 --> 00:02:58,830 Estos recursos incluyen funciones, variables, estructuras, 67 00:02:58,830 --> 00:03:01,980 definiciones de tipo, y así sucesivamente, y juntos, son 68 00:03:01,980 --> 00:03:04,620 comúnmente se conoce como la interfaz. 69 00:03:04,620 --> 00:03:07,280 De hecho, si alguna vez se preguntan qué hay en una biblioteca, 70 00:03:07,280 --> 00:03:09,580 los archivos de cabecera son el lugar para buscar. 71 00:03:09,580 --> 00:03:14,030 >> Por ejemplo, usted puede levantar usr / include / stdio.h y comprobar 72 00:03:14,030 --> 00:03:16,210 todo lo que usted siempre quiso saber acerca de 73 00:03:16,210 --> 00:03:18,570 la biblioteca estándar de io. 74 00:03:18,570 --> 00:03:20,610 Hay un montón de cosas aquí, y puede tomar un poco de 75 00:03:20,610 --> 00:03:22,420 tiempo para revisar. 76 00:03:22,420 --> 00:03:25,840 Sin embargo, junto con Google y las páginas de manual, este es el 77 00:03:25,840 --> 00:03:28,060 lugar para ir si usted se está preguntando cómo el estándar de E / S 78 00:03:28,060 --> 00:03:30,460 funciones de la biblioteca funcione. 79 00:03:30,460 --> 00:03:33,910 Así que una cosa clave a destacar aquí, sin embargo, es que los archivos de cabecera 80 00:03:33,910 --> 00:03:36,740 por lo general no incluyen la definición de funciones - 81 00:03:36,740 --> 00:03:40,020 es decir, las implementaciones de la función reales. 82 00:03:40,020 --> 00:03:42,470 Esta es una ilustración de una ciencia de la computación importante 83 00:03:42,470 --> 00:03:45,700 principio llamado ocultamiento de información, también se hace referencia en 84 00:03:45,700 --> 00:03:48,960 veces como encapsulación. 85 00:03:48,960 --> 00:03:52,630 >> A medida que el usuario o el cliente de una biblioteca, no es necesario 86 00:03:52,630 --> 00:03:54,230 conocer el funcionamiento interno de la biblioteca en 87 00:03:54,230 --> 00:03:55,380 para poder utilizarlo. 88 00:03:55,380 --> 00:03:57,800 Recuerdo haber visto printf sólo un poco atrás? 89 00:03:57,800 --> 00:04:00,275 ¿Habías visto alguna vez el código real antes? 90 00:04:00,275 --> 00:04:02,535 Bueno, supongo que usted no tiene, a pesar de que podría 91 00:04:02,535 --> 00:04:05,090 han utilizado printf toneladas de veces. 92 00:04:05,090 --> 00:04:08,110 Todo lo que tenía que saber era la declaración de la función actual 93 00:04:08,110 --> 00:04:10,940 en el archivo de cabecera stdio.h. 94 00:04:10,940 --> 00:04:14,010 De todos modos, el beneficio de ocultación de información buena es que usted 95 00:04:14,010 --> 00:04:16,820 y los programas que escriben están aislados de cualquier cambio en 96 00:04:16,820 --> 00:04:20,209 el código de la aplicación de funciones de la biblioteca. 97 00:04:20,209 --> 00:04:22,880 Si la implementación de los cambios printf, usted no tiene 98 00:04:22,880 --> 00:04:26,310 ir y cambiar todos los programas que utilizan printf. 99 00:04:26,310 --> 00:04:28,450 >> Entonces, ¿dónde implementación ir? 100 00:04:28,450 --> 00:04:31,020 Bueno, de nuevo, por convenio, la ejecución va en un 101 00:04:31,020 --> 00:04:34,310 archivo con la extensión. c. 102 00:04:34,310 --> 00:04:36,820 Por lo general, los archivos de cabecera y los archivos de aplicación van 103 00:04:36,820 --> 00:04:39,380 en la mano, así que si usted ha declarado un montón de nueva cadena 104 00:04:39,380 --> 00:04:42,950 funciones en mystring.h, entonces usted definir todos 105 00:04:42,950 --> 00:04:46,960 esas funciones en micadena. c. 106 00:04:46,960 --> 00:04:49,230 Así que los archivos de cabecera y la ejecución son entonces 107 00:04:49,230 --> 00:04:52,230 compilado, la creación de archivos de objetos que luego son unidos 108 00:04:52,230 --> 00:04:55,360 juntos para producir el archivo de biblioteca binaria. 109 00:04:55,360 --> 00:04:58,520 El escritor biblioteca entonces se enviará el archivo binario a lo largo de 110 00:04:58,520 --> 00:05:00,720 con los archivos de cabecera para los programadores que desean utilizar 111 00:05:00,720 --> 00:05:02,280 la biblioteca. 112 00:05:02,280 --> 00:05:04,640 En este punto, los archivos. C de implementación no son 113 00:05:04,640 --> 00:05:07,840 es necesario, salvo que recompilar la biblioteca a partir de cero, por lo que 114 00:05:07,840 --> 00:05:10,270 están a menudo dejados de lado. 115 00:05:10,270 --> 00:05:13,670 >> Para utilizar la biblioteca C, lo que tienes que hacer dos cosas. 116 00:05:13,670 --> 00:05:16,890 En primer lugar, usted debe incluir # archivos de la biblioteca de cabecera y los 117 00:05:16,890 --> 00:05:18,700 archivo de código fuente que desea utilizar 118 00:05:18,700 --> 00:05:20,530 de la biblioteca de código. 119 00:05:20,530 --> 00:05:23,200 Esto informa al compilador de todas las declaraciones de 120 00:05:23,200 --> 00:05:26,890 funciones, variables, estructuras, etcétera, presentes en la 121 00:05:26,890 --> 00:05:30,510 archivos de cabecera para que el compilador puede uno, asegúrese de que 122 00:05:30,510 --> 00:05:33,280 que está utilizando recursos de la biblioteca en la manera adecuada, 123 00:05:33,280 --> 00:05:37,120 y dos, generar el código ensamblador correspondiente. 124 00:05:37,120 --> 00:05:38,910 Dependiendo de donde los archivos de la biblioteca de cabecera son 125 00:05:38,910 --> 00:05:42,720 localizado, la sintaxis # include varía. 126 00:05:42,720 --> 00:05:44,880 Si los archivos de cabecera se encuentra en el sistema de 127 00:05:44,880 --> 00:05:46,690 defecto include - 128 00:05:46,690 --> 00:05:48,780 típicamente, usr/include-- 129 00:05:48,780 --> 00:05:52,200 la sintaxis se utiliza paréntesis angulares, como en # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Sin embargo, si los archivos de cabecera se encuentra en el mismo 132 00:05:59,540 --> 00:06:02,960 directorio como su propio código, la sintaxis de comillas dobles es 133 00:06:02,960 --> 00:06:04,870 utilizado, como en # include "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> La segunda cosa que hay que hacer es vincular en el binario 135 00:06:11,220 --> 00:06:13,760 biblioteca de archivos al compilar el código. 136 00:06:13,760 --> 00:06:15,810 Este es un paso importante super. 137 00:06:15,810 --> 00:06:17,540 Recuerde nuestra discusión anterior sobre cómo cabecera 138 00:06:17,540 --> 00:06:20,200 archivos no contienen el código de implementación? 139 00:06:20,200 --> 00:06:22,200 Si se olvida este paso, recibirá errores sobre 140 00:06:22,200 --> 00:06:24,990 símbolos no definidos referencia en el código. 141 00:06:24,990 --> 00:06:29,580 Para resolver este problema, utilice la opción-l seguido inmediatamente 142 00:06:29,580 --> 00:06:32,320 sin espacio por el nombre de la biblioteca. 143 00:06:32,320 --> 00:06:35,410 En muchos sistemas, incluyendo el aparato, el estándar de C 144 00:06:35,410 --> 00:06:38,350 Las bibliotecas se vinculan automáticamente por usted. 145 00:06:38,350 --> 00:06:41,700 Sin embargo, la biblioteca matemática es a veces incluido por separado 146 00:06:41,700 --> 00:06:44,600 y es posible que se enlaza con-lm. 147 00:06:44,600 --> 00:06:47,760 En el dispositivo, nosotros nos encargamos de esto para usted, y también nos 148 00:06:47,760 --> 00:06:52,170 vincular la biblioteca con CS50-lcs50. 149 00:06:52,170 --> 00:06:54,540 Puedes ver todo esto en el aparato cuando se ejecuta make. 150 00:06:57,620 --> 00:06:59,130 >> Ahora usted debería tener los conocimientos necesarios para utilizar 151 00:06:59,130 --> 00:07:02,150 bibliotecas en C. Que se diviertan explorando. 152 00:07:02,150 --> 00:07:05,880 Mi nombre es Nate Hardison, y esto es CS50.