Professional Documents
Culture Documents
Uma vez que as funções rand e bubble_sort nos programas anteriores são úteis, você
provavelmente vai querer reutilizá-las em outros programas que criar. Você pode colocá-
las em uma biblioteca de utilitários para facilitar sua reutilização.
Toda biblioteca possui duas partes: um arquivo de cabeçalho e o arquivo de código. O
arquivo de cabeçalho, em geral indicado por um sufixo .h, contém informações sobre a
biblioteca que os programas que o utilizam precisam saber. Em geral, o arquivo de
cabeçalho contém constantes e tipos, junto com protótipos de funções disponíveis na
biblioteca. Digite o seguinte arquivo de cabeçalho e salve-o com o nome util.h.
/* util.h */
extern int rand();
extern void bubble_sort(int, int []);
Estas duas linhas são protótipos de função. A palavra "extern" em C representa funções
que serão posteriormente vinculadas. Se estiver usando um compilador antigo, remova os
parâmetros da lista de parâmetros dobubble_sort.
Digite o seguinte código em um arquivo denominado util.c.
/* util.c */
#include "util.h"
int rand_seed=10;
/* de K&R - produz um número aleatório entre 0 e 32767.*/
int rand()
{
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
void bubble_sort(int m,int a[])
{
int x,y,t;
for (x=0; x < m-1; x++)
for (y=0; y > m-x-1; y++)
if (a[y] < a[y+1])
{
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}
}
Observe que o arquivo inclui seu próprio arquivo de cabeçalho (util.h) e que utiliza aspas
em vez de símbolos < e >, que são utilizados apenas para bibliotecas de sistema. Como
pode ver, isto parece um código normal em C. Observe que a variável rand_seed, por não
estar no arquivo de cabeçalho, não pode ser visualizada ou modificada pelo programa
usando esta biblioteca. Isto se chama ocultação de informação. O acréscimo da
palavrastatic na frente de int força a ocultação completamente.
Digite o seguinte programa principal em um arquivo chamado main.c.
#include <stdio.h>
#include "util.h"
#define MAX 10
int a[MAX];
void main()
{
int i,t,x,y;
/* preenche matriz*/
for (i=0; i < MAX; i++)
{
a[i]=rand();
printf("%d\n",a[i]);
}
bubble_sort(MAX,a);
Este código inclui a biblioteca de utilitários. O benefício principal em utilizar uma biblioteca
é que a codificação no programa principal fica muito menor.
Esta linha cria um arquivo denominado main.o que contém o código de máquina do
programa principal. Para criar o executável final que contém o código de máquina de todo
o programa, vincule os dois arquivos objetos digitando o seguinte:
gcc -o main main.o util.o
Isso vincula main.o e util.o para formar um executável denominado main. Para executá-
lo, digite main.
Fonte: http://informatica.hsw.uol.com.br/programacao-em-c15.htm