JavaScript 1: variáveis e contas de negócio

Hoje começas a programar a sério: vais guardar dados em variáveis e pôr o computador a fazer contas de empresa, como o IVA e os descontos.

🎯 No fim desta aula vais conseguir

🧰 Antes de começar

  1. Abre a pasta meu-crm no VS Code (File → Open Folder…).
  2. Hoje não mexemos no CRM: vamos treinar numa página à parte, o treino.html, com o código no treino.js. Os dois já estão na tua pasta.
  3. Confirma que o teu CRM tem as cores da tua empresa (aula 3).

😕 Faltaste à aula 3 ou o teu projeto não funciona? Descarrega o ponto de controlo da aula 3, descompacta-o e trabalha a partir dele.

Parte A — Conhecer o JavaScript e a Consola (≈ 20 min)

1 O “cérebro” da página

Já conheces duas linguagens: o HTML diz o que existe na página e o CSS diz como se vê. Falta a terceira: o JavaScript diz o que acontece. É o cérebro: faz contas, toma decisões e reage quando carregas num botão.

Antes de usar o JavaScript no CRM (aula 6), vamos treinar. Como num ginásio: primeiro aquece-se, depois joga-se.

A) Abrir o treino e a Consola

  1. No VS Code, clica com o botão direito no treino.html e escolhe Open with Live Server.
  2. No browser, carrega F12 e escolhe o separador Consola (ou Console). É aqui que o JavaScript escreve os resultados.
  3. Clica na linha vazia ao fundo da Consola (ao lado do sinal >), escreve 2 + 2 e carrega Enter.
  4. Experimenta também 10 * 3 (o asterisco é o “vezes”), 100 / 4 (a barra é o “a dividir”) e 'Olá' + ' turma'.

✅ Deves ver: 4, 30, 25 e 'Olá turma'. A Consola é uma calculadora… que também percebe texto!

B) A primeira linha de código num ficheiro

O que escreves na Consola perde-se quando recarregas a página. Por isso, os programas escrevem-se em ficheiros. Abre o treino.js no VS Code. As linhas que começam por // são comentários (o JavaScript ignora-as, como os <!-- --> do HTML).

A instrução console.log(…) quer dizer «escreve isto na Consola». O texto vai sempre entre aspas (plicas '…') e cada instrução acaba com ;, como uma frase acaba com um ponto final.

Grava (Ctrl+S). O Live Server recarrega a página sozinho; se não estiveres a usar o Live Server, carrega F5 no browser.

✅ Deves ver na Consola: Olá! O JavaScript está a funcionar.

😕 Não aparece nada na Consola
  • Estás a ver o treino.html? (Olha para a barra de endereço: tem de terminar em treino.html, não em index.html.)
  • Gravaste o treino.js? Não pode haver um círculo branco no separador do VS Code.
  • Por cima das mensagens da Consola há um filtro de níveis: confirma que não está escolhido só «Erros».
  • Aparece um erro vermelho com Invalid or unexpected token? Falta fechar uma aspa. Volta a copiar com o botão.

Parte B — Variáveis e contas de negócio (≈ 45 min)

2 Variáveis: caixas com etiqueta

Uma variável é como uma caixa com uma etiqueta: a etiqueta é o nome, e lá dentro guardas um valor. Quando escreves const nomeCliente = 'Ana Silva'; estás a dizer: «cria uma caixa chamada nomeCliente e guarda lá dentro o texto 'Ana Silva'». Aqui, o = quer dizer guarda, não «é igual».

Há duas formas de criar uma variável:

E há três tipos de dados que vais usar muito:

TipoEm inglêsComo se escreveExemplo
Textostringsempre entre aspas'Ana Silva'
Númeronumbersem aspas; as casas decimais levam ponto34, 19.90
Verdadeiro / falsobooleansem aspastrue, false

💡 Regras para os nomes: sem espaços e sem acentos; começam por letra minúscula; quando há várias palavras, cada palavra nova começa por maiúscula (nomeCliente, precoComIva). E atenção: nomeCliente e nomecliente são nomes diferentes!

🤔 Prevê antes de executar: o que vai aparecer em Que tipo é a idade? E em Idade no próximo ano? Escreve no caderno.

💡 Repara: dentro do console.log, a vírgula separa as coisas a mostrar (o texto entre aspas e o valor da variável). A linha idade = idade + 1; lê-se da direita para a esquerda: «pega na idade, soma 1 e guarda o resultado outra vez na idade».

✅ Deves ver na Consola: Cliente: Ana Silva, Idade: 34, Ativo? true, Que tipo é a idade? number e Idade no próximo ano: 35.

😕 Aparece um erro vermelho
  • … is not defined → um nome está escrito de forma diferente (maiúsculas contam!). Compara letra a letra.
  • Unexpected identifier ou Unexpected string → colaste o bloco no meio de outra linha. O bloco tem de ficar por baixo da linha console.log('Olá! …');, numa linha nova.

3 Contas de negócio: o IVA

Qualquer programa de faturação calcula o IVA (o imposto sobre o valor acrescentado) de milhares de faturas por dia. Em Portugal continental, a taxa normal é de 23%. Para fazer contas com percentagens, divide-se por 100: 23% = 0.23.

OperaçãoEm JavaScriptExemploResultado
Somar+100 + 23123
Subtrair-100 - 1585
Multiplicar*100 * 0.2323
Dividir/100 / 425

🤔 Prevê: um artigo custa 100 € sem IVA. Quanto é o IVA? E o preço com IVA?

✅ Deves ver na Consola: Preço sem IVA: 100 €, IVA (23%): 23 € e Preço com IVA: 123 €.

💡 Experimenta: muda o precoSemIva para 250, grava e vê como todas as contas se atualizam. É essa a vantagem das variáveis.

4 Descontos, arredondamentos e frases

Agora um artigo de 49,90 € com 15% de desconto. Repara em três coisas novas:

💡 Onde está a crase no teclado português? É a tecla à direita do + (a do acento ´), com Shift. Depois carrega na barra de espaço para ela aparecer sozinha.

🤔 Prevê: quanto é 49,90 € com 15% de desconto? Faz a conta na calculadora do telemóvel. Que valor achas que vai aparecer com 2 casas decimais?

✅ Deves ver na Consola: Preço com desconto: 42.415, Arredondado a 2 casas: 42.41 € e, duas vezes, a frase O cliente Ana Silva paga 42.41 € (uma feita com +, a outra com crases).

😕 Não funciona?
  • Aparece literalmente ${nomeCliente} na frase → usaste aspas normais '…' em vez de crases `…`. O ${ } só funciona dentro de crases.
  • nomeCliente is not defined → o bloco do passo 2 (onde se cria o nomeCliente) não está no ficheiro ou está escrito de outra forma.
  • Unexpected number → escreveste um número com vírgula (49,90). Em JavaScript as casas decimais levam ponto: 49.90.

🔎 Investiga

  1. No fim do treino.js, acrescenta a linha nomeCliente = 'Rui Costa'; e grava. Que erro aparece na Consola? O que significa? (Depois apaga essa linha.)
  2. Na Consola, escreve '5' + 3 e depois 5 + 3. Porque é que os resultados são diferentes?
  3. Na Consola, escreve typeof '34' e depois typeof 34. O que concluis sobre as aspas?
  4. Pela Matemática, 42,415 arredondado a 2 casas devia dar 42,42. Porque é que o JavaScript dá 42,41? Escreve na Consola 42.415.toPrecision(20) e tenta explicar. (Curiosidade: é por isto que os programas de faturação costumam fazer as contas em cêntimos.)

✍️ Exercícios (fazem parte do teu projeto)

Estes exercícios não têm o código pronto: usa o que aprendeste hoje. Escreve-os no treino.js, por baixo do código da aula 4 (e por cima do comentário AULA 5: COLAR AQUI).

⚠️ Atenção aos nomes: não podes criar duas variáveis com o mesmo nome. Se usares um nome que já existe (por exemplo desconto ou precoFinal), aparece o erro Identifier '…' has already been declared e nada do ficheiro funciona. Inventa nomes novos.

E1 · A comissão do vendedor

Um vendedor fez uma venda de 2500 € e ganha uma comissão de 5%. Mostra na Consola a frase «Comissão do vendedor: 125.00 €», calculada pelo programa.

💡 Dica: cria uma variável para o valor da venda, outra para a taxa (quanto é 5% em número decimal?) e outra para a comissão. Para aparecerem os dois zeros dos cêntimos, lembra-te do .toFixed(2). Para a frase, usa crases e ${ }.

E2 · Uma encomenda com desconto e IVA

Um cliente compra 3 artigos a 19,90 € cada. Tem um desconto de 10% e, no fim, acresce o IVA de 23%. Mostra na Consola, numa ou em várias linhas: o subtotal (sem desconto), o valor com desconto e o total com IVA, todos com 2 casas decimais.

💡 Dica: faz as contas por esta ordem, cada uma na sua variável: subtotal = preço × quantidade; com desconto = subtotal menos 10% do subtotal; total = valor com desconto mais 23% desse valor (ou, mais curto, vezes 1.23). Para confirmares: o total com IVA tem de dar 66.09 €.

⭐ Desafio · Minutos em horas

Uma reunião com um cliente durou 135 minutos. Mostra na Consola «135 minutos = 2 h 15 min», com as horas e os minutos calculados pelo programa (se mudares o 135 para 200, tem de aparecer «200 minutos = 3 h 20 min»).

💡 Dica: Math.floor(x) arredonda para baixo (Math.floor(7.8) dá 7). O operador % dá o resto de uma divisão: 17 % 5 dá 2, porque 17 = 3 × 5 + 2. Quantos minutos tem uma hora?

📦 O que mostrar ao professor

⏱️ Se sobrar tempo

🤖 Pedir ajuda à IA (opcional)

Se tiveres um erro que não percebes, podes pedir a uma IA gratuita (Claude, ChatGPT…) que te explique o erro, sem te dar a solução. Copia este pedido, troca o texto entre [ ] e cola-o na IA:

📖 Palavras novas

JavaScript
Linguagem que dá “cérebro” à página: faz contas, decide e reage ao utilizador.
Consola
Separador das ferramentas de programador (F12) onde o JavaScript mostra mensagens e erros.
console.log(…)
Instrução que escreve na Consola.
Variável
“Caixa com etiqueta” que guarda um valor: let idade = 34;
let / const
Criam variáveis; a de let pode mudar, a de const não.
Texto (string)
Valor entre aspas: 'Ana Silva'.
Número (number)
Valor numérico, com ponto nas casas decimais: 19.90.
Booleano (boolean)
Verdadeiro ou falso: true / false.
typeof
Diz o tipo de um valor.
.toFixed(2)
Arredonda um número a 2 casas decimais (e transforma-o em texto).
Crases e ${ }
Forma de escrever uma frase com valores lá dentro: `Olá, ${nomeCliente}`.