PROGRAMAÇÃO EM C

GUSTAVO AMARAL

Aprenda C do Zero ao Avançado

Domine a Linguagem
C com Algoritmos

Resolva problemas reais, entenda estruturas fundamentais e desenvolva sua lógica de programação com exemplos práticos em C.

Fundamentos

Introdução à Linguagem C

C é uma linguagem de programação poderosa, eficiente e a base para muitas tecnologias modernas

Performance

C oferece controle direto sobre memória e hardware, resultando em programas extremamente rápidos e eficientes.

Portabilidade

Código C pode ser compilado em praticamente qualquer plataforma, desde microcontroladores até supercomputadores.

Base Sólida

Aprender C constrói uma base forte para entender C++, Java, Python e praticamente qualquer linguagem moderna.

Por que aprender C em 2026?

  • Sistemas operacionais como Linux e Windows são escritos em C
  • Essencial para desenvolvimento embarcado e IoT
  • Usado em compiladores, bancos de dados e game engines
  • Desenvolve raciocínio lógico e pensamento algorítmico
  • Ensina gerenciamento manual de memória
  • Alta demanda em vagas de sistemas e drivers
Conceitos

Estruturas Básicas

Os pilares fundamentais para construir qualquer programa em C

Variáveis e Tipos

C possui tipos primitivos: int, float, double, char.

int idade = 25;
float altura = 1.75;
char letra = 'A';

Condicionais

Estruturas if/else e switch controlam o fluxo do programa.

if (idade >= 18) {
    printf("Maior de idade");
} else {
    printf("Menor de idade");
}

Loops

Repita ações com for, while e do-while.

for (int i = 0; i < 10; i++) {
    printf("%d ", i);
}

Vetores e Arrays

Armazene múltiplos valores do mesmo tipo em sequência.

int numeros[5] = {10, 20, 30, 40, 50};
printf("%d", numeros[0]); // Imprime 10
Prática

Exemplos de Algoritmos Resolvidos

Soluções comentadas passo a passo para fixar o aprendizado

1

Hello World

Nível: Iniciante

Básico

Problema:

Escreva um programa em C que exiba a mensagem "Olá, Mundo!" na tela. Este é o primeiro programa tradicional ao aprender uma nova linguagem.

main.c
#include <stdio.h>

/* 
 * Função principal do programa
 * Todo programa C começa pela função main
 */
int main() {
    // Imprime a mensagem na tela
    printf("Olá, Mundo!\n");
    
    // Retorna 0 indicando sucesso
    return 0;
}

Saída esperada:

Olá, Mundo!
2

Cálculo de Fatorial

Nível: Intermediário

Loops

Problema:

Crie um programa que calcule o fatorial de um número inteiro positivo. O fatorial de n (n!) é o produto de todos os inteiros de 1 até n. Ex: 5! = 5 × 4 × 3 × 2 × 1 = 120.

fatorial.c
#include <stdio.h>

int main() {
    int numero, i;
    long long fatorial = 1; // long long para números grandes
    
    printf("Digite um número inteiro positivo: ");
    scanf("%d", &numero);
    
    // Validação de entrada
    if (numero < 0) {
        printf("Erro: Fatorial não existe para números negativos!\n");
        return 1;
    }
    
    // Cálculo do fatorial usando loop for
    for (i = 1; i <= numero; i++) {
        fatorial *= i; // fatorial = fatorial * i
    }
    
    printf("O fatorial de %d é %lld\n", numero, fatorial);
    
    return 0;
}

Exemplo de execução:

Digite um número inteiro positivo: 5 O fatorial de 5 é 120
3

Busca Linear em Vetor

Nível: Intermediário

Arrays

Problema:

Implemente um algoritmo que busque um valor específico em um vetor de inteiros. O programa deve informar se o valor foi encontrado e em qual posição (índice). Este é o algoritmo de busca linear ou sequencial.

busca_vetor.c
#include <stdio.h>
#define TAMANHO 10

int main() {
    int vetor[TAMANHO] = {15, 23, 8, 42, 16, 4, 77, 29, 11, 50};
    int valor, i;
    int encontrado = 0; // Flag: 0 = não encontrado, 1 = encontrado
    
    printf("Vetor: ");
    for (i = 0; i < TAMANHO; i++) {
        printf("%d ", vetor[i]);
    }
    printf("\n\n");
    
    printf("Digite o valor a ser buscado: ");
    scanf("%d", &valor);
    
    // Busca linear: percorre o vetor elemento por elemento
    for (i = 0; i < TAMANHO; i++) {
        if (vetor[i] == valor) {
            printf("Valor %d encontrado na posição %d\n", valor, i);
            encontrado = 1;
            break; // Para a busca ao encontrar
        }
    }
    
    // Verifica se não foi encontrado
    if (!encontrado) {
        printf("Valor %d não encontrado no vetor\n", valor);
    }
    
    return 0;
}

Exemplo de execução:

Vetor: 15 23 8 42 16 4 77 29 11 50 Digite o valor a ser buscado: 42 Valor 42 encontrado na posição 3
Desafios

Exercícios Práticos

Teste seus conhecimentos com estes desafios propostos

Fácil

Calculadora Simples

Crie um programa que leia dois números e uma operação (+, -, *, /) e exiba o resultado.

Dica: Use switch-case para as operações
Médio

Números Primos

Desenvolva um programa que verifique se um número digitado é primo e liste todos os primos até N.

Dica: Um primo só é divisível por 1 e por ele mesmo
Médio

Ordenação Bubble Sort

Implemente o algoritmo Bubble Sort para ordenar um vetor de 10 números em ordem crescente.

Dica: Use loops aninhados e troque elementos adjacentes
Difícil

Matriz Transposta

Leia uma matriz 3x3, calcule e exiba sua transposta. Depois verifique se é simétrica.

Dica: Transposta: linha[i][j] = coluna[j][i]
Difícil

Fibonacci Recursivo

Implemente a sequência de Fibonacci usando recursão. Compare com a versão iterativa.

Dica: fib(n) = fib(n-1) + fib(n-2)
Difícil

Lista Encadeada

Crie uma estrutura de lista ligada com funções para inserir, remover e buscar elementos.

Dica: Use struct com ponteiros e malloc()