Programas em mais do que um ficheiro.
Quando se faz programas com uma certa dimensão, nunca se faz o código todo no mesmo ficheiro. Normalmente o programa é feito em vários ficheiros. Cada ficheiro é constituído por uma série de funções que tem um determinado fim. É precisamente isso que acontece com as bibliotecas do C. Por exemplo, o stdio.h tem uma série de funções para fazer input/output. O math.h tem uma série de funções matemáticas, etc.
Vocês também podem criar os vossos ficheiros qq_coisa.h (o h é de header). Estes ficheiros apenas têm definições. O código propriamente dito costuma ficar no ficheiro qq_coisa.c.
Exemplo: Vamos fazer um ficheiro chamado array.c que contém uma série de funções que são úteis para manipular arrays de inteiros. O conteúdo de array.c poderia ser o seguinte,
/* * Este ficheiro tem a implementação de uma série de * funções para manipular arrays de inteiros */ #include <stdio.h> #include "array.h" /* calcula o máximo elemento de um array de 'n' inteiros*/ int max_array( int *a, int n ) { int i, max; max = a[0]; for( i=1; i<n; i++ ) if( a[i] > max ) max = a[i]; return max; } /* escreve um array de 'n' inteiros no ecrã */ void escreve_array( int *a, int n ) { int i; for( i=0; i<n; i++ ) printf("%d ", a[i] ); printf("\n"); }
Reparem que o ficheiro array.c não tem a função main. Agora, podíamos fazer um ficheiro chamado array.h que contem apenas as definições das funções,
/* * Este ficheiro tem a definição de uma série de * funções para manipular arrays de inteiros */ /* calcula o máximo elemento de um array de 'n' inteiros */ int max_array( int *a, int n ); /* escreve um array de 'n' inteiros no ecrã */ void escreve_array( int *a, int n );
Os 2 ficheiros, array.h e array.c constituem uma espécie de biblioteca para manipular arrays. Uma vez feito isto, podem fazer um programa e utilizar as funções feitas em array.c. Para tal, basta fazer o include de "array.h". Reparem que o include dos ficheiros .h feitos por vocês vêm entre aspas. Aqueles que já fazem parte das bibliotecas do C devem ser incluídos entre os sinais de menor e maior. Aqui vai um exemplo de um programa que inclui o "array.h",
#include <stdlib.h> #include "array.h" main() { int x[5] = { 7, 4, 8, 9, 6 }; escreve_array( x, 5 ); printf("o maximo e: %d\n", max_array(x,5) ); }
Para compilarmos este programa temos de indicar todos os ficheiros com extensão .c. Utilizando o compilador gcc, faziam qualquer coisa deste estilo,
gcc prog.c array.c -o prog
Se acompanharam a disciplina desde o início, ficaram a dominar as bases da programação de computadores. Ainda vos resta muita coisa para aprenderem no que diz respeito à programação, mas isso ficará para as cadeiras de Programação II, Estrutura de Dados e Algoritmos.
Para se ser bom a programar é necessário algum jeito e muita prática. É um bocado como o desporto. O Figo é bom a jogar futebol mas se não suasse a camisola nos treinos não tinha chegado onde chegou.
Quem quiser aprender mais sobre programação em C, poderá comprar este livro:
É um livro excelente para quem já tem os conceitos básicos da programação bem assimilados. Kerninghan e Ritchie foram as pessoas que inventaram a linguagem C.
Divirtam-se a programar!