Nesta aula, vamos escrever nosso primeiro programa em C: o clássico "Olá, mundo!". Esse programa simples é o ponto de partida para aprender a sintaxe básica da linguagem, o processo de compilação e execução. Vamos entender cada parte do código e como ele funciona.

O "Olá, mundo!" em C é um programa que exibe uma mensagem na tela. Embora pareça trivial, ele introduz conceitos fundamentais como a função principal (main), a inclusão de bibliotecas (#include), e a saída formatada (printf). Ao final, você será capaz de compilar e executar seu primeiro programa C.

Estrutura mínima

Todo programa em C precisa de uma estrutura básica para ser executado. A estrutura mínima consiste em uma função main que é o ponto de entrada do programa. Veja o exemplo mais simples possível:

int main() {
    return 0;
}

Esse programa não faz nada além de retornar 0 para o sistema operacional, indicando que terminou com sucesso. A função main é obrigatória em programas executáveis. Ela pode ter parâmetros (argc e argv), mas na forma mais simples não recebe argumentos. O tipo de retorno int significa que a função retorna um valor inteiro. O return 0; é a instrução que encerra o programa.

É importante notar que o código deve estar dentro de chaves { } e cada instrução termina com ponto e vírgula (;). A indentação não é obrigatória, mas melhora a legibilidade.

#include e main

Para usar funções da biblioteca padrão, como printf, precisamos incluir cabeçalhos (headers) que declaram essas funções. A diretiva #include insere o conteúdo de um arquivo de cabeçalho no programa antes da compilação. O mais comum é #include <stdio.h>, que fornece funções de entrada e saída padrão.

#include <stdio.h>

int main() {
    printf("Olá, mundo!\n");
    return 0;
}

A função main é chamada pelo sistema operacional quando o programa é executado. Ela pode ser declarada de várias formas, mas a mais comum é int main(void) ou simplesmente int main(). O parâmetro void indica explicitamente que a função não recebe argumentos. O corpo da função contém as instruções que serão executadas.

Note que #include é uma diretiva de pré-processador, não uma instrução C. Ela não termina com ponto e vírgula. O pré-processador processa essas diretivas antes da compilação propriamente dita.

printf

A função printf (print formatted) é usada para exibir texto na saída padrão (geralmente o terminal). Ela é declarada no cabeçalho stdio.h. O primeiro argumento é uma string de formato, que pode conter caracteres de escape e especificadores de formato.

printf("Olá, mundo!\n");

Neste exemplo, a string "Olá, mundo!" é exibida, e o \n insere uma nova linha (equivalente a Enter). Outros caracteres de escape comuns são \t (tabulação), \\ (barra invertida) e \" (aspas duplas).

printf também pode exibir valores de variáveis usando especificadores como %d (inteiro), %f (float), %c (caractere), %s (string). Exemplo:

int idade = 25;
printf("Idade: %d\n", idade);

Isso exibirá "Idade: 25". A função retorna o número de caracteres impressos, mas esse retorno é frequentemente ignorado.

Compilando e executando

Para transformar o código-fonte C em um programa executável, precisamos de um compilador. O mais comum é o GCC (GNU Compiler Collection). Suponha que o arquivo se chame ola.c. No terminal, compile com:

gcc ola.c -o ola

Isso gera um executável chamado ola (no Windows, ola.exe). A opção -o especifica o nome do arquivo de saída. Se omitido, o padrão é a.out.

Para executar, no Linux/macOS:

./ola

No Windows:

ola.exe

O programa então exibirá a mensagem no terminal. Se houver erros de compilação, o GCC os listará, indicando linha e tipo de erro. É importante corrigir todos os erros antes de executar.

Exemplo completo do programa:

#include <stdio.h>

int main() {
    printf("Olá, mundo!\n");
    return 0;
}

Salve em um arquivo ola.c, compile com gcc ola.c -o ola e execute.

Boas práticas

Sempre inclua \n no final da string do printf para garantir que a saída seja exibida imediatamente (alguns sistemas bufferizam a saída). Use nomes de arquivos com extensão .c. Mantenha o código organizado com indentação consistente. Comente seu código para explicar partes importantes, usando // para comentários de linha ou /* */ para blocos.

Exercícios

  1. Escreva um programa que exiba seu nome na tela.
  2. ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        printf("João\n");
        return 0;
    }
  3. Modifique o programa anterior para exibir seu nome e sobrenome em duas linhas separadas.
  4. ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        printf("João\n");
        printf("Silva\n");
        return 0;
    }
  5. Escreva um programa que declare uma variável inteira com sua idade e a exiba usando printf.
  6. ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        int idade = 30;
        printf("Idade: %d\n", idade);
        return 0;
    }
  7. O que acontece se você esquecer de incluir #include <stdio.h> e usar printf? Explique e teste.
  8. ✓ Resposta:O compilador emitirá um aviso (warning) ou erro (error) dizendo que a função printf não foi declarada implicitamente. Em C moderno, isso é tratado como erro. O programa pode não compilar ou, se compilar, pode ter comportamento indefinido. Sempre inclua stdio.h para usar printf.
  9. Escreva um programa que exiba uma mensagem de boas-vindas e, em seguida, o resultado da expressão 2 + 2.
  10. ✓ Resposta:
    #include <stdio.h>
    
    int main() {
        printf("Bem-vindo!\n");
        printf("2 + 2 = %d\n", 2 + 2);
        return 0;
    }

Referências