C é uma linguagem minimalista. Ele fornece os fundamentos da programação. Você obtém variáveis, loops e fluxo de controle. É isso. Se você quiser ler em um teclado ou imprimir em uma tela, C não possui essas funções integradas. Você tem que escrevê-los ou usar uma biblioteca.
É por isso que bibliotecas em C são tão críticas. São pedaços de código que os programadores extraem de seus projetos para torná-los reutilizáveis. Você provavelmente já usou a biblioteca de E/S padrão, ou stdio, sem pensar nisso. Mas, além disso, existem bibliotecas para matemática, strings e tempo. Você pode construir o seu próprio.
Dividir seu código em módulos facilita o teste, a depuração e a compreensão. Também permite reutilizar a lógica em diferentes programas. Vejamos como pegar um script monolítico e transformar uma parte dele em uma função portátil.
Extraindo lógica de um monólito
Considere este programa C. Ele preenche uma matriz com números aleatórios, classifica-os usando um algoritmo de classificação por bolha e imprime os resultados.
A lógica de classificação aqui está enterrada em main. Para tornar isso reutilizável, precisamos extrair o tipo de bolha.
Criando uma função básica
A matriz a e a constante MAX são globais neste exemplo. Isso significa que a função de classificação não precisa estritamente de parâmetros para acessá-los. No entanto, as boas práticas determinam o uso de variáveis locais para os contadores de loop (x, y, t ) para manter a função independente.
Aqui está o código refatorado. Isolamos a lógica de classificação em bubble_sort.
Você passa o número de elementos para bubble_sort em vez de codificar MAX. Funciona. Mas ainda está vinculado ao array global a.
Generalizando para uma verdadeira reutilização
Uma função só é verdadeiramente reutilizável se não depender do estado global. Podemos generalizar ainda mais bubble_sort passando o próprio array como parâmetro.
Altere a assinatura da função para:
Isso diz ao compilador para aceitar um array inteiro de qualquer tamanho. O corpo de bubble_sort não muda. Você acabou de atualizar a chamada em main :
Observe que não usamos &a na chamada de função. Você pode esperar passar o endereço porque a classificação modifica o array, mas em C, os arrays se transformam em ponteiros quando

















