🚀 Capítulo 01: O que é um Paradigma? Imperativo vs Declarativo (Tema: Matrix)

NOTE

Este capítulo utiliza a temática de Matrix para explicar os Paradigmas. Seguir as regras passo a passo ou simplesmente reescrever a realidade? Escolha a sua pílula!


1. 🎯 Objetivo da Aula

Compreender o conceito de Paradigma de Programação e a grande divisão entre as duas maiores famílias de pensamento: o Paradigma Imperativo e o Paradigma Declarativo.

2. 🏢 O Cenário Prático (Seu Desafio)

Neo está tentando entender como a Matrix funciona.

  • A Pílula Azul (Imperativo): Você segue as regras do sistema. Para fazer um café, você precisa dar as instruções exatas: “Pegue a caneca, coloque água, ligue a cafeteira, espere 5 minutos…“. Você diz ao computador o COMO fazer, passo a passo.
  • A Pílula Vermelha (Declarativo): Você enxerga o código verde caindo. Você não se importa com o passo a passo. Você simplesmente diz à Matrix: “Quero um café”. O sistema se encarrega de fazer o café aparecer. Você diz ao computador o O QUE fazer.

Seu desafio é aprender a identificar esses dois modos de pensar e saber quando usar cada um!

3. 🧠 Fundamentos: A Teoria Traduzida

Um Paradigma de Programação não é uma linguagem, mas uma forma de pensar sobre como resolver problemas usando código.

📜 1. Paradigma Imperativo (Foco no “Como”)

Você dita uma sequência de comandos que alteram o estado do programa.

  • Características: Uso intenso de variáveis (estado), laços de repetição (for, while) e condicionais (if).
  • Exemplo: Para somar os números de um array, você cria uma variável soma = 0, faz um loop e vai somando um por um.

🎨 2. Paradigma Declarativo (Foco no “O Que”)

Você descreve o resultado desejado, sem detalhar os passos para chegar lá.

  • Características: Uso de funções de alta ordem, imutabilidade e ausência de loops explícitos.
  • Exemplo: Para somar os números de um array, você usa uma função pronta como reduce() ou uma consulta SQL SUM().

4. 📖 Exemplo Guiado: Filtrando Números

Imagine que queremos filtrar apenas os números pares de uma lista.

Abordagem Imperativa (Pílula Azul):

const numeros = [1, 2, 3, 4, 5, 6];
const pares = [];
 
for (let i = 0; i < numeros.length; i++) {
    if (numeros[i] % 2 === 0) {
        pares.push(numeros[i]);
    }
}
console.log(pares); // [2, 4, 6]

Abordagem Declarativa (Pílula Vermelha):

const numeros = [1, 2, 3, 4, 5, 6];
 
const pares = numeros.filter(n => n % 2 === 0);
 
console.log(pares); // [2, 4, 6]

Repare como no declarativo nós não dissemos COMO percorrer a lista, apenas O QUE queríamos (filtrar os pares).


5. 🛠️ Prática Obrigatória 1: Identificando o Paradigma

Diga se as situações abaixo são mais Imperativas ou Declarativas:

  1. Você pede uma pizza pelo aplicativo digitando apenas o sabor.
  2. Você vai para a cozinha e faz a pizza passo a passo (massa, molho, forno).
  3. Uma consulta ao banco de dados usando SQL: SELECT * FROM usuarios WHERE idade > 18.

6. 🛠️ Prática Obrigatória 2: O Custo de cada Pílula

A abordagem declarativa parece muito mais limpa e bonita. Mas o que acontece por baixo dos panos na função .filter() do JavaScript? Ela não precisa fazer um loop de qualquer jeito? Vale a pena usar o declarativo mesmo sabendo disso?


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 01 Paradigmas) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_10_paradigmas_e_padroes_de_projeto/
├── capitulos/
│   ├── capitulo_01_paradigma.md
│   └── codigos/
│       └── cap01/
│           └── pílula_azul.js
│           └── pílula_vermelha.js

9. 💡 Checkpoint de Lógica

Se você estivesse construindo um sistema que precisa de extrema performance em hardware limitado, qual pílula você escolheria? Por quê?

10. 🔥 Desafio de Fixação

Pesquise quais linguagens de programação são consideradas puramente declarativas (Dica: Lembre-se do SQL e do HTML).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Declarativo (Você só disse o que queria).
  2. Imperativo (Você fez o passo a passo).
  3. Declarativo (O SQL é uma linguagem declarativa clássica).

Capitulo Anterior | Proximo Capitulo