A linguagem C é uma das mais importantes e influentes da história da computação. Mesmo tendo sido criada na década de 1970, ela continua sendo amplamente utilizada, servindo como base para muitas outras linguagens modernas, como C++, Java e até Python. Compreender a estrutura de um programa em C é fundamental não apenas para quem deseja aprender essa linguagem, mas também para quem quer dominar os princípios fundamentais da programação.
Por que a linguagem C é importante ?
Aprender a estrutura de um programa em C é importante porque ela ajuda o programador a entender como o computador executa instruções de forma organizada e eficiente. A linguagem C se comunica diretamente com o hardware por meio de instruções de baixo nível, mas ainda mantém características de uma linguagem de alto nível. Assim, o estudo da linguagem ensina conceitos essenciais, como tipos de dados, funções, controle de fluxo e manipulação de memória.
Além disso, muitos sistemas operacionais, compiladores e softwares de alto desempenho são escritos em C. Portanto, compreender como um programa em C é estruturado fornece uma base sólida para entender como as máquinas realmente funcionam e como o software se conecta ao hardware.
Estrutura de um programa em C
Um programa em C segue uma estrutura simples, porém lógica. Ele normalmente é composto por quatro partes principais: bibliotecas, funções, variáveis e instruções. A espinha dorsal de qualquer programa é a função principal, chamada main(), pois é nela que a execução realmente começa. Vejamos o exemplo abaixo.
#include
int main() {
printf("Olá, mundo!\n");
return 0;
}
Esse é o exemplo clássico do “Olá, mundo!” e é o primeiro programa que a maioria dos alunos escreve ao aprender qualquer linguagem de programação.
Inclusão de bibliotecas
A primeira linha do programa utiliza #include <stdio.h>. Ela indica ao compilador que deve incluir o conteúdo da biblioteca padrão de entrada e saída, responsável por funções como printf() e scanf(). O uso do símbolo # mostra que se trata de uma diretiva de pré-processamento, ou seja, algo que é executado antes mesmo da compilação.
Sem bibliotecas, o C seria bem limitado, pois grande parte das suas funcionalidades vem dessas coleções de funções prontas. Existem várias bibliotecas disponíveis, como math.h (para funções matemáticas), string.h (para manipulação de strings) e stdlib.h (para gerenciamento de memória e utilidades diversas).
A função principal main
Todo programa em C deve conter uma função chamada main. É nela que a execução começa.
Quando o sistema operacional carrega o programa na memória, ele procura essa função para saber onde iniciar.
A função main pode ser escrita de duas formas válidas
int main() { ... }
int main(void) { ... }
Ambas são equivalentes na maioria dos casos.
Declarando variáveis
Dentro de main(), podemos criar variáveis para armazenar informações da seguinte forma
int idade = 25;
float altura = 1.75;
char inicial = 'M';
As variáveis precisam ser declaradas com um tipo (como int, float, char, etc.). Uma das características do C é que o tipo deve ser conhecido no momento da compilação, pois o compilador precisa saber quanto espaço reservar na memória.
Comandos e instruções
O corpo de uma função em C é formado por comandos e instruções que são executados linha a linha.
Cada instrução precisa terminar com um ponto e vírgula (;). Isso é obrigatório e ajuda o compilador a identificar onde um comando termina. Abaixo temos um exemplo de soma de dois valores
int x = 10;
int y = 20;
int soma = x + y;
printf("A soma é: %d\n", soma);
Estruturas de controle
As estruturas de controle são elementos fundamentais em C, pois permitem alterar o fluxo de execução de um programa, ou seja, decidir quais instruções serão executadas e quantas vezes. Sem elas, o código seguiria sempre uma sequência linear, de cima para baixo, o que limitaria sua utilidade. Podemos dividir essas estruturas em dois grandes grupos: estruturas condicionais e estruturas de repetição.
Estruturas condicionais
Existem três principais estruturas condicionais são elas: if, else e switch. Sendo que as duas primeiras dependendo do problemas a ser solucionado trabalham juntas.
O IF ELSE e ELSE IF
As estruturas condicionais, como if, else if e else, permitem que o programa execute blocos de código diferentes conforme certas condições sejam verdadeiras ou falsas.
int nota = 7;
if (nota >= 6) {
printf("Aprovado!\n");
} else {
printf("Reprovado!\n");
}
Nesse trecho, se a variável nota for maior ou igual a 6, a mensagem exibida será “Aprovado!”. Caso contrário, será impressa a palavra “Reprovado!”.
O comando SWITCH
A estrutura switch, usada quando há várias condições possíveis para um mesmo valor. Veja!
int opcao = 2;
switch (opcao) {
case 1:
printf("Opção 1 selecionada\n");
break;
case 2:
printf("Opção 2 selecionada\n");
break;
default:
printf("Opção inválida\n");
}
O switch compara o valor de opcao com cada case. Quando encontra uma correspondência, executa aquele bloco. O comando break evita que o programa continue executando os casos seguintes.
Estruturas de repetição
As estruturas de repetição, ou laços, permitem executar um mesmo bloco de código várias vezes, até que uma condição seja satisfeita.
O comando FOR
O comando for é bastante utlizado quando o número de repetições é conhecido. No exemplo abaixo, a variável i inicia em 1 e é incrementada até que chegue a 5. O resultado é a impressão dos números de 1 a 5 na tela.
for (int i = 1; i <= 5; i++) {
printf("Contagem: %d\n", i);
}
O comando WHILE
O laço while repete um bloco enquanto uma condição for verdadeira. No exemplo apresentado abaixo note que enquanto o contador for menor que 3 uma mensagem é mostrada na tela após isso, o programa encerra.
int contador = 0;
while (contador < 3) {
printf("Repetição %d\n", contador);
contador++;
}
Essas estruturas dão poder e flexibilidade à linguagem, permitindo que programas realizem tomadas de decisão, percorram dados, processem listas e executem tarefas complexas de forma controlada e eficiente.
Comentários de código
Os comentários não são executados. Servem para explicar o código, tornando-o mais legível. Existem duas formas de adicionar comentários.
// Comentário de linha única
/*
Comentário de múltiplas linhas
*/
Usar comentários de forma inteligente é uma boa prática, especialmente em códigos mais longos e complexos.
Funções em C
Além da função principal main(), podemos definir outras funções para organizar melhor o código e evitar repetições. Cada função realiza uma tarefa específica e pode receber parâmetros e retornar um valor.
#include
int somar(int a, int b) {
return a + b;
}
int main() {
int x = 5;
int y = 3;
int resultado = somar(x, y);
printf("O resultado é: %d\n", resultado);
return 0;
}
Explicação
O código mostrado realiza a soma de dois números e exibe o resultado na tela. Tudo começa com a linha #include <stdio.h>, que indica ao compilador que deve incluir a biblioteca padrão de entrada e saída, necessária para utilizar a função printf().
Em seguida, é declarada a função somar(int a, int b), que recebe dois parâmetros inteiros chamados a e b. Dentro dessa função, há apenas uma linha: return a + b;, que devolve ao chamador a soma dos dois valores. Essa função é um exemplo de modularidade em vez de fazer a soma diretamente em main(), as operações são separadas em funções reutilizáveis, o que torna o código mais organizado e fácil de entender.
Logo depois, inicia-se a função main(), que é o ponto de entrada do programa, isto é, o local onde sua execução começa. Nela, são declaradas as variáveis x e y, ambas do tipo int, que recebem os valores 5 e 3. A linha int resultado = somar(x, y); chama a função definida anteriormente, passando x e y como argumentos, e armazena o valor retornado pela função (neste caso, 8) na variável resultado.
Adiante, o comando printf("O resultado é: %d\n", resultado); imprime na tela a frase “O resultado é: 8”, substituindo o especificador de formato %d pelo valor armazenado em resultado. Por fim, o comando return 0; encerra a função main() informando ao sistema operacional que a execução do programa foi bem-sucedida.
Conclusão
A linguagem C possui inúmeros recursos que a torna uma ferramenta extremante poderosa e eficiente para resolver problemas da computação. Diante disso, esse artigo teve como objetivo expor alguns conceitos elementares para o estudo e compreensão da linguagem. Por isso, para executar os códigos que foram apresentados acima e ter uma experiência prática, recomendo a leitura do artigo Como instalar o CodeBlocks tanto no Windows como no Linux. Além disso, caso prefira é possível assistir vídeos da playlist "Linguagem C" do canal Descomplicando Algoritmos.
