1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] NATE Hardison: Na programação, uma biblioteca é uma coleção de 2 00:00:09,470 --> 00:00:11,380 código pré-escritos relacionados. 3 00:00:11,380 --> 00:00:14,350 As bibliotecas são como nós, programadores, ação ordinária e 4 00:00:14,350 --> 00:00:16,930 código útil com o outro, com os diferentes programas que 5 00:00:16,930 --> 00:00:19,470 escrever, e mesmo com os diferentes processos rodando a 6 00:00:19,470 --> 00:00:21,380 ao mesmo tempo em nossos computadores. 7 00:00:21,380 --> 00:00:23,000 >> Vamos explorar um pouco. 8 00:00:23,000 --> 00:00:25,070 Uma das funções mais comuns que você já deve ter 9 00:00:25,070 --> 00:00:27,500 vindo a utilizar é a função printf. 10 00:00:27,500 --> 00:00:29,820 Agora, printf não é uma função mágica que tem sido 11 00:00:29,820 --> 00:00:31,670 embutida no computador - 12 00:00:31,670 --> 00:00:34,320 antes, é parte das bibliotecas C padrão, que são 13 00:00:34,320 --> 00:00:36,080 uma coleção de funções que vem com o 14 00:00:36,080 --> 00:00:38,050 C linguagem de programação. 15 00:00:38,050 --> 00:00:40,920 Desde printf não é construído no computador, o que significa que 16 00:00:40,920 --> 00:00:43,520 houve algum programador que realmente entrou e escreveu o 17 00:00:43,520 --> 00:00:46,310 função printf e empacotado com o resto da norma 18 00:00:46,310 --> 00:00:48,880 bibliotecas para que futuros programadores não teria de 19 00:00:48,880 --> 00:00:50,310 duplicar o esforço. 20 00:00:50,310 --> 00:00:52,620 E temos certeza grato que esse é o caso, porque o check 21 00:00:52,620 --> 00:00:54,710 o quanto de código que realmente leva para implementar printf. 22 00:00:59,590 --> 00:01:02,860 >> As bibliotecas C padrão, dos quais printf é uma parte, são 23 00:01:02,860 --> 00:01:04,480 uma das ferramentas mais importantes que você 24 00:01:04,480 --> 00:01:06,770 têm no combate CS50. 25 00:01:06,770 --> 00:01:08,780 Em adição à biblioteca de entrada-saída, onde 26 00:01:08,780 --> 00:01:11,370 printf vidas, há um monte de outras bibliotecas que 27 00:01:11,370 --> 00:01:14,230 você provavelmente vai usar ao longo do CS50. 28 00:01:14,230 --> 00:01:16,730 Por exemplo, a biblioteca tem funções de cadeia 29 00:01:16,730 --> 00:01:20,960 comparar strings C, obter o seu comprimento, e concatená-las. 30 00:01:20,960 --> 00:01:22,410 E a biblioteca de matemática dá-lhe útil 31 00:01:22,410 --> 00:01:25,062 constantes, como pi e e. 32 00:01:25,062 --> 00:01:27,650 Agora, em comparação com as bibliotecas padrão de outra programação 33 00:01:27,650 --> 00:01:31,190 línguas, as bibliotecas C padrão são pequenos, 34 00:01:31,190 --> 00:01:34,060 mas eles ainda têm uma quantidade significativa de material. 35 00:01:34,060 --> 00:01:36,370 E isso não quer dizer que as bibliotecas padrão são o 36 00:01:36,370 --> 00:01:39,020 apenas bibliotecas C, há muitos mais lá fora, no 37 00:01:39,020 --> 00:01:42,460 mundo para você usar, incluindo a Biblioteca CS50, 38 00:01:42,460 --> 00:01:45,150 bibliotecas cartografia com criptografia e descriptografia 39 00:01:45,150 --> 00:01:48,000 funções, bibliotecas com funções para codificar e 40 00:01:48,000 --> 00:01:50,970 reproduzir o vídeo, e assim por diante. 41 00:01:50,970 --> 00:01:53,190 >> Isso nos leva a um aparte importante. 42 00:01:53,190 --> 00:01:55,500 Uma das habilidades essenciais de engenharia é saber o 43 00:01:55,500 --> 00:01:58,090 ferramentas disponíveis em sua caixa de ferramentas de modo que você pode usar 44 00:01:58,090 --> 00:01:59,850 eles e não reinventar a roda, a menos 45 00:01:59,850 --> 00:02:01,510 você tem que fazê-lo. 46 00:02:01,510 --> 00:02:04,120 Como programadores, bibliotecas são um dos mais importantes 47 00:02:04,120 --> 00:02:05,520 ferramentas que temos. 48 00:02:05,520 --> 00:02:08,520 Quando você se encontra diante de uma tarefa que parece tedioso ou 49 00:02:08,520 --> 00:02:11,940 comuns, como encontrar o comprimento de uma string C, você 50 00:02:11,940 --> 00:02:14,020 deve se perguntar se pode ser o caso de que 51 00:02:14,020 --> 00:02:16,520 alguém já fez a mesma coisa antes. 52 00:02:16,520 --> 00:02:17,760 As chances são de que você poderia encontrar alguma 53 00:02:17,760 --> 00:02:20,110 ajudar dentro de uma biblioteca. 54 00:02:20,110 --> 00:02:23,260 >> Portanto, em termos técnicos, uma biblioteca é um arquivo binário que 55 00:02:23,260 --> 00:02:26,210 foi produzido por ligação em conjunto uma colecção de 56 00:02:26,210 --> 00:02:28,880 arquivos objeto usando uma ferramenta chamada, você 57 00:02:28,880 --> 00:02:31,010 adivinhou, o vinculador. 58 00:02:31,010 --> 00:02:33,830 Arquivos objeto são aqueles. O arquivos que você começa quando você 59 00:02:33,830 --> 00:02:35,860 compilar C código fonte. 60 00:02:35,860 --> 00:02:38,420 Quando os programadores escrever bibliotecas, eles normalmente 61 00:02:38,420 --> 00:02:41,560 separar seu código C em dois tipos de arquivos: 62 00:02:41,560 --> 00:02:44,880 arquivos de cabeçalho e arquivos de implementação. 63 00:02:44,880 --> 00:02:49,820 Um arquivo de cabeçalho por convenção é dada a extensão de arquivo. H, 64 00:02:49,820 --> 00:02:51,940 e contém código que declara o da biblioteca 65 00:02:51,940 --> 00:02:55,120 recursos que estão disponíveis para você usar. 66 00:02:55,120 --> 00:02:58,830 Esses recursos incluem funções, variáveis, estruturas, 67 00:02:58,830 --> 00:03:01,980 definições de tipo, e assim por diante, e em conjunto, eles são 68 00:03:01,980 --> 00:03:04,620 geralmente referida como a interface. 69 00:03:04,620 --> 00:03:07,280 Na verdade, se você está sempre perguntando o que há em uma biblioteca, 70 00:03:07,280 --> 00:03:09,580 os arquivos de cabeçalho são o lugar para olhar. 71 00:03:09,580 --> 00:03:14,030 >> Por exemplo, você pode puxar para cima usr / include / stdio.h e verifique 72 00:03:14,030 --> 00:03:16,210 tudo o que você sempre quis saber sobre 73 00:03:16,210 --> 00:03:18,570 a biblioteca io padrão. 74 00:03:18,570 --> 00:03:20,610 Há um monte de coisas aqui, e isso pode levar um pouco de 75 00:03:20,610 --> 00:03:22,420 tempo para percorrer. 76 00:03:22,420 --> 00:03:25,840 No entanto, juntamente com o Google e as páginas de manual, este é o 77 00:03:25,840 --> 00:03:28,060 lugar para ir se você está se perguntando como o padrão de I / O 78 00:03:28,060 --> 00:03:30,460 funções da biblioteca trabalhar. 79 00:03:30,460 --> 00:03:33,910 Então, uma coisa fundamental notar aqui, no entanto, é que os arquivos de cabeçalho 80 00:03:33,910 --> 00:03:36,740 normalmente não incluem definições de funções - 81 00:03:36,740 --> 00:03:40,020 isto é, as implementações de funções reais. 82 00:03:40,020 --> 00:03:42,470 Esta é uma ilustração de uma computação importante 83 00:03:42,470 --> 00:03:45,700 princípio chamado de ocultação de informações, também referida no 84 00:03:45,700 --> 00:03:48,960 vezes como o encapsulamento. 85 00:03:48,960 --> 00:03:52,630 >> Como o usuário ou o cliente de uma biblioteca, você não precisa 86 00:03:52,630 --> 00:03:54,230 saber sobre os internos da biblioteca em 87 00:03:54,230 --> 00:03:55,380 a fim de usá-lo. 88 00:03:55,380 --> 00:03:57,800 Lembro de ter visto printf apenas um pouco atrás? 89 00:03:57,800 --> 00:04:00,275 Você já tinha visto o código real antes? 90 00:04:00,275 --> 00:04:02,535 Bem, eu suponho que você não tem, mesmo que você pode 91 00:04:02,535 --> 00:04:05,090 usaram toneladas printf de vezes. 92 00:04:05,090 --> 00:04:08,110 Tudo o que tinha de saber era o presente declaração da função 93 00:04:08,110 --> 00:04:10,940 no arquivo de cabeçalho stdio.h. 94 00:04:10,940 --> 00:04:14,010 De qualquer forma, o benefício de ocultação de informação boa é que você 95 00:04:14,010 --> 00:04:16,820 e os programas que você escreve são isoladas de quaisquer alterações 96 00:04:16,820 --> 00:04:20,209 o código da implementação de funções de biblioteca. 97 00:04:20,209 --> 00:04:22,880 Se a implementação de mudanças printf, você não tem 98 00:04:22,880 --> 00:04:26,310 para ir e mudar todos os seus programas que usam printf. 99 00:04:26,310 --> 00:04:28,450 >> Então onde é que a aplicação vai? 100 00:04:28,450 --> 00:04:31,020 Bem, mais uma vez, por convenção, a implementação vai em um 101 00:04:31,020 --> 00:04:34,310 arquivo com a extensão de arquivo. c. 102 00:04:34,310 --> 00:04:36,820 Normalmente, os arquivos de cabeçalho e arquivos de implementação andam 103 00:04:36,820 --> 00:04:39,380 na mão, por isso, se você declarou um monte de nova cadeia 104 00:04:39,380 --> 00:04:42,950 funções em mystring.h, então você vai definir todos 105 00:04:42,950 --> 00:04:46,960 essas funções em mystring. c. 106 00:04:46,960 --> 00:04:49,230 Então os arquivos de cabeçalho e implementação são, então, 107 00:04:49,230 --> 00:04:52,230 compilado, a criação de arquivos de objetos que são, então, ligados 108 00:04:52,230 --> 00:04:55,360 em conjunto para produzir o arquivo de biblioteca binário. 109 00:04:55,360 --> 00:04:58,520 O escritor biblioteca, então, enviar o arquivo binário ao longo 110 00:04:58,520 --> 00:05:00,720 com os arquivos de cabeçalho para programadores que desejam usar 111 00:05:00,720 --> 00:05:02,280 a biblioteca. 112 00:05:02,280 --> 00:05:04,640 Neste ponto, os arquivos. Implementação C não são 113 00:05:04,640 --> 00:05:07,840 necessário, exceto para recompilar a biblioteca do zero, então 114 00:05:07,840 --> 00:05:10,270 eles são muitas vezes deixados de fora. 115 00:05:10,270 --> 00:05:13,670 >> Para utilizar a biblioteca C, você tem que fazer duas coisas. 116 00:05:13,670 --> 00:05:16,890 Primeiro, você deve # incluir arquivos de cabeçalho da biblioteca e os 117 00:05:16,890 --> 00:05:18,700 arquivo de código fonte em que você deseja usar 118 00:05:18,700 --> 00:05:20,530 código da biblioteca. 119 00:05:20,530 --> 00:05:23,200 Isso informa o compilador de todas as declarações de 120 00:05:23,200 --> 00:05:26,890 funções, variáveis, estruturas, et cetera, presentes no 121 00:05:26,890 --> 00:05:30,510 arquivos de cabeçalho para que o compilador pode um, garantir que 122 00:05:30,510 --> 00:05:33,280 você está usando recursos da biblioteca de forma adequada, 123 00:05:33,280 --> 00:05:37,120 e dois, gerar o código de montagem apropriado. 124 00:05:37,120 --> 00:05:38,910 Dependendo de onde os arquivos da biblioteca de cabeçalho são 125 00:05:38,910 --> 00:05:42,720 localizado, a sintaxe # include varia. 126 00:05:42,720 --> 00:05:44,880 Se os arquivos de cabeçalho estão localizados no sistema de 127 00:05:44,880 --> 00:05:46,690 padrão incluem diretório - 128 00:05:46,690 --> 00:05:48,780 tipicamente, usr/include-- 129 00:05:48,780 --> 00:05:52,200 em seguida, a sintaxe de colchetes ângulo é usado, como em # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 No entanto, se os ficheiros de inclusão estão localizados na mesma 132 00:05:59,540 --> 00:06:02,960 diretório como seu próprio código, a sintaxe é aspas duplas 133 00:06:02,960 --> 00:06:04,870 usado, como em # incluir "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> A segunda coisa que você precisa fazer é ligar no binário 135 00:06:11,220 --> 00:06:13,760 biblioteca de arquivos quando você compilar o código. 136 00:06:13,760 --> 00:06:15,810 Este é um passo importante super. 137 00:06:15,810 --> 00:06:17,540 Lembre-se de nossa discussão anterior sobre como cabeçalho 138 00:06:17,540 --> 00:06:20,200 arquivos não contêm código de implementação? 139 00:06:20,200 --> 00:06:22,200 Se você esquecer esta etapa, você terá erros sobre 140 00:06:22,200 --> 00:06:24,990 símbolos indefinidos referenciado em seu código. 141 00:06:24,990 --> 00:06:29,580 Para resolver isso, use o sinalizador-L seguido imediatamente 142 00:06:29,580 --> 00:06:32,320 sem um espaço de pelo nome da biblioteca. 143 00:06:32,320 --> 00:06:35,410 Em muitos sistemas, incluindo o aparelho, o Standard C 144 00:06:35,410 --> 00:06:38,350 Bibliotecas são ligadas automaticamente para você. 145 00:06:38,350 --> 00:06:41,700 No entanto, a biblioteca matemática é muitas vezes empacotados separadamente 146 00:06:41,700 --> 00:06:44,600 e pode precisar de ser ligada com-lm. 147 00:06:44,600 --> 00:06:47,760 No aparelho, nós cuidamos disso para você, e nós também 148 00:06:47,760 --> 00:06:52,170 ligar a biblioteca com CS50-lcs50. 149 00:06:52,170 --> 00:06:54,540 Você pode ver tudo isso no aparelho quando você executar o make. 150 00:06:57,620 --> 00:06:59,130 >> Agora você deve ter o conhecimento necessário para usar 151 00:06:59,130 --> 00:07:02,150 bibliotecas em C. Divirta-se explorar. 152 00:07:02,150 --> 00:07:05,880 Meu nome é Nate Hardison, e este é o CS50.