Na linguagem C, todo algoritmo deve ser traduzido para uma função. Uma função nada mais é do que um conjunto de expressões da linguagem C (possivelmente incluindo invocações ou chamadas para outras funções) com um nome e argumentos associados. Em geral, a definição de uma função C tem a forma
tipo nome(lista de argumentos) { declaracoes; comandos; }
O tipo indica o valor de retorno de uma função, podendo assumir qualquer valor válido da linguagem C (que serão vistos adiante). O tipo da função pode ser omitido, sendo que neste caso o compilador irá assumir que o tipo int (inteiro) será retornado.
Nome é o rótulo dado à função, que em geral deve expressar de alguma forma o que a função realiza. Nos compiladores mais antigos, o número de caracteres em um nome era limitado (em geral, a 6 ou 8 caracteres). Atualmente, não há restrições ao comprimento de um nome, de forma que nomes significativos devem ser preferencialmente utilizados. Em C, todo nome que estiver seguido por parênteses será reconhecido como o nome de uma função. A lista de argumentos que fica no interior dos parênteses indica que valores a função precisa para realizar suas tarefas. Quando nenhum valor é necessário para a função, a lista será vazia, como em ( ).
O que se segue na definição da função, delimitado entre chaves { e }, é o corpo da função. Declarações correspondem às variáveis internas que serão utilizadas pela função, e comandos implementam o algoritmo associado à função.
Todo algoritmo (e consequentemente todo programa) deve ter um ponto de início e um ponto de fim de execução. Na Figura C.1, esta estrutura básica de um algoritmo é ilustrada -- onde há uma ``nuvem'' faz alguma coisa, deve ser inserido o corpo do algoritmo que descreve a função a ser realizada.
Um programa C é basicamente um conjunto de funções. O ponto de início e término de execução de um programa C está associado com uma função com um nome especial: a função main (principal). O menor programa C que pode ser compilado corretamente é um programa que nada faz (Figura C.2). Este programa C é:
main( ) { }
Neste caso, a função de nome main é definida sem nenhum comando. Neste ponto, algumas observações devem ser feitas:
Ao contrário do que ocorre em Pascal ou FORTRAN, que diferenciam procedimentos (subrotinas) de funções, em C há apenas funções; mesmo que elas não retornem nenhum valor, o valor de retorno especial void é utilizado.