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.
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:
Roda direto no browser
Você não precisa instalar nada. Abra o navegador, pressione F12, vá no Console e já pode escrever código.
Retorno imediato
O resultado aparece na hora, na tela, com alert() e console.log(). Perfeito para aprender.
Linguagem do mercado
JavaScript é a linguagem mais usada no mundo. O que você aprende aqui vale direto na prática profissional.
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:
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:
Fluxograma — visualizando o algoritmo
Fluxogramas representam o algoritmo como um diagrama. Cada forma tem um significado:
| Símbolo | Significado | Quando 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
// 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
| Regra | Exemplo válido | Exemplo 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.
'João Silva'
3.14
-100
false
// 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ção | Tipo | O que faz | Retorna |
|---|---|---|---|
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 |
// 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.
<!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
| Linha | Significado |
|---|---|
<!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:
// 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
Exemplo:
alet("Olá") → alet não é uma função
Exemplo: calcular
2025 + idade em vez de 2025 - idade
Usando o Console para depurar
// 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.
📋 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/falseprompt()sempre retorna string — useNumber()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