💡 Fundamentos da Programação

O que é Programar?

Antes de escrever qualquer código, vale entender o que está acontecendo por baixo dos panos. Programar é dar instruções para um computador. Simples assim — e profundamente poderoso.

O que é Programar?

Programar é escrever instruções que um computador consegue entender e executar. O computador é incrivelmente rápido e preciso, mas é completamente burro: ele faz exatamente o que você mandar — nem mais, nem menos. A habilidade do programador está em traduzir um problema do mundo real em uma sequência de passos que a máquina consiga seguir.

👨‍🍳

Analogia da receita de bolo: programar é como escrever uma receita. Você especifica os ingredientes (dados), a ordem dos passos (lógica) e o resultado esperado (saída). Se você esquecer um passo ou errar a ordem, o bolo não sai como deveria. O computador é o cozinheiro que segue a receita à risca — sem improvisar, sem usar o bom senso.

Linguagem de programação — o idioma do computador

Computadores entendem apenas zeros e uns (código binário). Mas ninguém programa em binário — seria como montar um site digitando 01001000 01100101.... Por isso existem as linguagens de programação: uma ponte entre a linguagem humana e o código binário que a máquina executa.

🧠
Humano
ideia / problema
📝
Código-fonte
JavaScript, Python…
⚙️
Compilador / Interpretador
traduz o código
💻
Máquina
executa em binário
Resultado
na tela / no sistema

Por que aprender JavaScript primeiro?

Existem centenas de linguagens de programação. Neste material, usamos JavaScript para os exemplos de lógica e algoritmos porque:

🌐
Acessibilidade

Roda direto no browser

Você não precisa instalar nada. Abra o navegador, pressione F12, vá no Console e já pode escrever código.

🔁
Feedback

Retorno imediato

O resultado aparece na hora, na tela, com alert() e console.log(). Perfeito para aprender.

📈
Relevância

Linguagem do mercado

JavaScript é a linguagem mais usada no mundo. O que você aprende aqui vale direto na prática profissional.

🔀
Transferência

Conceitos universais

Variáveis, condicionais e loops funcionam igual em Python, PHP, Java, C. Aprenda uma vez, leve para qualquer lugar.

Algoritmos — O Mapa do Problema

Um algoritmo é uma sequência finita de passos bem definidos para resolver um problema. Antes de escrever qualquer código, um bom programador pensa no algoritmo — no raciocínio — depois traduz para código.

🗺️

Algoritmo não é código. É a lógica por trás do código. Você pode escrever um algoritmo em português simples (chamado de pseudocódigo), num diagrama de fluxo, ou numa lista de passos. O código vem depois.

Exemplo: fazer café

Vamos descrever um algoritmo para fazer café — algo que qualquer pessoa faz no piloto automático, mas que exige uma sequência exata de passos para funcionar:

Pseudocódigo — Fazer Café
INÍCIO
  1. Pegar a cafeteira
  2. Encher com água até a marcação
  3. Colocar o filtro
  4. Adicionar o pó de café (2 colheres por xícara)
  5. Ligar a cafeteira

  ENQUANTO o café não terminar de passar FAÇA
      Aguardar

  6. Desligar a cafeteira
  7. Servir na xícara
  FIM

As três estruturas fundamentais de qualquer algoritmo

Todo algoritmo, por mais complexo que seja, é construído com apenas três peças básicas. Dominar essas três estruturas é dominar a lógica de programação:

Estrutura 1
Sequência
Passos executados um após o outro, em ordem. A linha 1 roda antes da linha 2, que roda antes da linha 3. A ordem importa muito.
Estrutura 2
Decisão (Condicionais)
O programa escolhe um caminho com base numa condição. "SE está chovendo, pegar guarda-chuva. SENÃO, não precisa."
Estrutura 3
Repetição (Loops)
Um bloco de código se repete enquanto uma condição for verdadeira. "ENQUANTO houver louça suja, lavar uma peça."

Fluxograma — visualizando o algoritmo

Fluxogramas representam o algoritmo como um diagrama. Cada forma tem um significado:

SímboloSignificadoQuando usar
⬭ Oval Início / Fim Marcar onde o algoritmo começa e termina
▭ Retângulo Processo / Instrução Qualquer operação: calcular, atribuir, escrever
◇ Losango Decisão Uma pergunta com resposta Sim/Não (bifurcação)
▱ Paralelogramo Entrada / Saída Leitura de dado do usuário ou exibição de resultado
→ Seta Fluxo de controle Indica a direção e sequência dos passos

Variáveis — Caixas para Guardar Valores

Uma variável é um espaço na memória do computador onde você guarda um valor para usar depois. Pense como uma caixa com uma etiqueta: você coloca algo dentro, dá um nome à caixa, e pode pegar o conteúdo a qualquer momento pelo nome.

📬

Analogia da caixa de correio: cada caixa (variável) tem um endereço (nome) e um conteúdo (valor). Você pode verificar o conteúdo a qualquer hora, substituir por outro, ou usar em cálculos. A caixa continua existindo até você a descartar.

Declarando variáveis em JavaScript

JavaScript — Variáveis
// Criar uma variável com "let" (pode mudar o valor depois)
let nome = "Ana"
let idade = 25
let altura = 1.68

// Usar a variável
alert(nome)      // mostra: Ana
alert(idade)     // mostra: 25

// Mudar o valor da variável
idade = 26
alert(idade)     // mostra: 26

// "const" → valor não muda nunca (constante)
const PI = 3.14159
const PAISES_DO_MUNDO = 195

// Variáveis podem guardar expressões calculadas
let anoNascimento = 2024 - idade  // → 1998
let mensagem = "Olá, " + nome + "!"  // → "Olá, Ana!"

Regras para nomear variáveis

RegraExemplo válidoExemplo inválido
Começa com letra, _ ou $ nomeCliente, _valor 1nome, -preco
Sem espaços nomeCompleto nome completo
Sem acentos ou ç totalPedido totalPedidção
Não pode ser palavra reservada valorTotal let, if, for
Use camelCase por convenção dataNascimento data_nascimento (funciona, mas não é JS)
💡

Nomeie variáveis de forma descritiva. x e a não dizem nada. idadeUsuario e totalCompra se explicam sozinhos. Código é lido muito mais vezes do que é escrito — nomeie para o humano que vai ler depois, não para economizar digitação.

Tipos de Dados — Que tipo de coisa estou guardando?

Nem tudo é a mesma coisa. Um nome, uma idade, um preço e um valor "sim ou não" são tipos de informação diferentes. As linguagens de programação organizam isso em tipos de dados. Entender tipos evita erros bobos como tentar somar texto com número.

string
Texto
"Olá, mundo!"
'João Silva'
Qualquer sequência de caracteres entre aspas.
number
Número
42
3.14
-100
Inteiros e decimais. Sem aspas.
boolean
Verdadeiro/Falso
true
false
Só dois valores possíveis. Muito usado em condições.
null
Vazio intencional
null
Variável existe, mas não tem valor por decisão.
undefined
Não definido
undefined
Variável foi criada mas nenhum valor foi atribuído.
array
Lista de valores
["Ana", "Bia", "Carlos"]
Vários valores em sequência, entre colchetes.
object
Objeto
{nome: "Ana", idade: 25}
Conjunto de propriedades com nome e valor.
JavaScript — Exemplos de cada tipo
// String (texto) — sempre entre aspas simples ou duplas
let nome      = "Maria"
let cidade    = 'São Paulo'
let mensagem  = `Olá, ${nome}!`   // template literal

// Number (número) — sem aspas!
let idade  = 30
let preco  = 49.90
let saldo  = -150

// Boolean (verdadeiro ou falso)
let logado     = true
let maiorIdade = idade >= 18   // true ou false dependendo do valor

// Array (lista)
let frutas  = ["maçã", "banana", "uva"]
let numeros = [10, 20, 30, 40]

// Object (objeto)
let pessoa = {
    nome:   "Carlos",
    idade:  28,
    ativo:  true
}

// Cuidado: número em string NÃO é número!
let a = "5"   // string
let b = 5    // number
alert(a + b)  // → "55" (concatenou, não somou!)
alert(+a + b) // → 10  (+ antes converte string para número)

Entrada e Saída — Comunicando com o Usuário

Todo programa precisa se comunicar com o mundo: receber informações de alguém (entrada) e mostrar resultados (saída). Em JavaScript, dentro do browser, fazemos isso com funções simples que aparecem em caixas de diálogo na tela.

FunçãoTipoO que fazRetorna
alert("mensagem") Saída Exibe uma caixa com a mensagem undefined
prompt("pergunta") Entrada Exibe caixa onde o usuário digita algo string ou null
confirm("pergunta?") Entrada Caixa com botões OK e Cancelar true ou false
console.log(valor) Saída (debug) Exibe no Console do DevTools (F12) undefined
JavaScript — Entrada e saída na prática
// Saída simples — mostra mensagem ao usuário
alert("Bem-vindo ao Dev Atlas!")

// Entrada — pede o nome ao usuário e guarda na variável
let nome = prompt("Qual é o seu nome?")

// Combina entrada com saída
alert("Olá, " + nome + "! Seja bem-vindo!")

// Entrada numérica — prompt SEMPRE retorna string, precisa converter
let idadeTexto = prompt("Quantos anos você tem?")
let idade      = Number(idadeTexto)  // converte "25" → 25

let anoAtual       = 2025
let anoNascimento  = anoAtual - idade
alert("Você nasceu em " + anoNascimento)

// Confirmação — retorna true (OK) ou false (Cancelar)
let confirmado = confirm("Deseja continuar?")
alert(confirmado)  // true ou false

// console.log — aparece no DevTools (F12 → Console)
console.log("Nome:", nome)
console.log("Idade:", idade)
console.log("Nasceu em:", anoNascimento)

Seu Primeiro Código — Estrutura Básica HTML

Para rodar JavaScript no browser sem precisar de nenhuma instalação, basta um arquivo HTML simples com uma tag <script>. Crie um arquivo com a extensão .html, cole o código abaixo, abra no browser e está funcionando.

📋

Como criar o arquivo: abra o VS Code, crie um novo arquivo chamado script.html, cole o modelo abaixo e salve. Depois dê dois cliques no arquivo para abrir no browser — ou use a extensão Live Server para ter recarregamento automático ao salvar.

script.html — Estrutura mínima para rodar JavaScript
<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <title>Meu Script</title>
</head>
<body>

  <!-- Todo o seu JavaScript fica aqui dentro -->
  <script>

    // ← escreva seu código JavaScript a partir daqui
    alert("Olá, mundo!")

  </script>

</body>
</html>

O que cada parte faz

LinhaSignificado
<!DOCTYPE html> Diz ao browser que é um arquivo HTML5
<html lang="pt-BR"> Início da página; define idioma como português
<meta charset="UTF-8"> Permite caracteres especiais (acentos, ç etc.)
<title>...</title> Texto que aparece na aba do browser
<body>...</body> Corpo da página — o conteúdo visível
<script>...</script> Onde o JavaScript é escrito e executado

Primeiro programa completo

Vamos criar um programa que pergunta o nome e a idade do usuário e calcula o ano de nascimento. Copie, cole na estrutura acima e execute:

JavaScript — Primeiro programa
// 1. Pedir o nome ao usuário
let nome = prompt("Qual é o seu nome?")

// 2. Pedir a idade (e converter para número)
let idade = Number( prompt("Quantos anos você tem?") )

// 3. Calcular o ano de nascimento
let anoNascimento = 2025 - idade

// 4. Montar a mensagem de resposta
let resposta = "Olá, " + nome + "!\n"
             + "Você tem " + idade + " anos.\n"
             + "Você nasceu em " + anoNascimento + "."

// 5. Mostrar a resposta
alert(resposta)
💡

\n dentro de strings representa uma quebra de linha. Por isso a mensagem aparece em três linhas no alert. Outros caracteres especiais: \t (tabulação), \\ (barra invertida literal).

Erros e Debugging — Todo Programador Erra

Todo programador comete erros — do iniciante ao sênior com 20 anos de experiência. A diferença está em saber ler os erros e corrigi-los com calma. Erros não são fracasso, são parte do processo.

🐛

Por que chamamos de "bug"? Em 1947, a cientista Grace Hopper encontrou uma mariposa real presa nos circuitos do computador Harvard Mark II causando uma falha. Ela colou o inseto no registro e anotou "first actual case of bug being found". O termo pegou para sempre. 🦗

Os três tipos de erro

Tipo 1
Erro de Sintaxe
Você escreveu o código de forma errada — faltou uma aspas, parêntese, ou usou uma palavra reservada errada. O browser nem começa a executar.

Exemplo: alet("Olá")alet não é uma função
Tipo 2
Erro de Lógica
O código roda sem travar, mas o resultado está errado. Sua lógica ou conta está equivocada. É o mais difícil de encontrar.

Exemplo: calcular 2025 + idade em vez de 2025 - idade
Tipo 3
Erro de Execução (Runtime)
O código começa certo, mas em algum momento durante a execução algo inesperado acontece — como dividir por zero ou acessar uma variável que não existe.

Usando o Console para depurar

JavaScript — Técnicas de debug
// console.log — o melhor amigo do debugger
let x = 10
let y = 0
console.log("x =", x)   // mostre o valor antes do problema
let resultado = x / y
console.log("resultado =", resultado)  // → Infinity (divisão por zero!)

// console.error — destaca em vermelho no console
console.error("Algo deu errado!")

// typeof — descubra qual o tipo de um valor
let valor = prompt("Digite algo:")
console.log(typeof valor)  // sempre "string" — prompt retorna texto!

// Estratégia: imprima variáveis antes e depois de cada operação
let idades = [25, 30, 17, 22]
console.log("Lista original:", idades)

let soma = 0
for (let i = 0; i < idades.length; i++) {
    soma += idades[i]
    console.log("Após somar", idades[i], "→ soma =", soma)
}
alert("Soma total: " + soma)
💡

Método do pato de borracha: Quando travar num bug, explique o código linha por linha para um pato de borracha imaginário (ou qualquer objeto inanimado). Na maioria das vezes, você mesmo encontra o erro enquanto explica. É ridículo, mas funciona — e programadores sênior usam esse método sério.

O Caminho à Frente

Você acaba de aprender os blocos de construção fundamentais de toda programação. Agora é hora de montar esses blocos e ver a lógica de programação em ação.

Próximo passo
→ Lógica de Programação
Condicionais, loops, funções — os mecanismos que fazem o programa tomar decisões e repetir ações. Com exercícios práticos.
Depois
→ Fundamentos da Web
HTTP, DNS, cliente e servidor. Como a internet realmente funciona por baixo.
E então
→ JavaScript Completo
DOM, eventos, Fetch API, async/await. JavaScript no browser de verdade.

📋 Resumo — Fundamentos da Programação

  • Programar é dar instruções precisas ao computador — ele faz exatamente o que você manda
  • Linguagens de programação são a ponte entre a linguagem humana e o código binário
  • Um algoritmo é a sequência de passos para resolver um problema — pense antes de codar
  • Todo algoritmo usa três estruturas: sequência, decisão e repetição
  • Variáveis são "caixas" para guardar valores na memória do computador
  • Tipos de dados: string, number, boolean, array, object
  • alert() exibe mensagem • prompt() recebe texto • confirm() retorna true/false
  • prompt() sempre retorna string — use Number() para converter para número
  • Use console.log() para inspecionar variáveis e encontrar bugs
  • Erros são parte do processo — leia a mensagem, entenda o tipo, corrija com calma