7. Conceitos básicos em 4 palavras
Variável - uma caixa com nome
Imagine que você precisa anotar a idade do herói em algum lugar. Você escreve em um pedaço de papel, cola um rótulo “idade” nesse papel, e guarda em uma caixa. Quando precisa lembrar a idade, abre a caixa que tem o rótulo “idade” e lê. Quando o herói faz aniversário, apaga o número antigo e escreve o novo no mesmo papel.
Variável é exatamente isso. Em Dart:
var nome = 'Aragorn';
int idade = 87;
A primeira linha cria uma caixa rotulada nome com o texto 'Aragorn' dentro. Como você usou var, o Dart infere o tipo (String, porque o que está dentro tem aspas). A segunda linha é mais explícita: você diz que idade vai guardar um int (número inteiro), e coloca 87.
Você pode mudar o valor depois:
nome = 'Bilbo';
idade = idade + 1; // 88
Mas se você usar final em vez de var, a caixa é selada após a primeira atribuição:
final aniversario = '12 de setembro';
aniversario = '13 de setembro'; // ERRO: cannot assign to a final variable
Use final quando souber que o valor nunca vai mudar. Ajuda o leitor (e o Dart) a entender sua intenção.
Condicional - se isso, então aquilo
Pense num porteiro do prédio: se você é morador, ele te deixa entrar. Se não, ele pergunta com quem você vai falar. Se ninguém atender, ele te manda embora. Cada decisão é um galho diferente.
Em Dart:
if (hp > 0) {
print('Vivo. Continue lutando.');
} else if (hp == 0) {
print('Caindo. Use uma poção!');
} else {
print('Game over.');
}
Três coisas a observar:
- A condição vai entre parênteses depois do
if. É uma expressão que resulta em verdadeiro ou falso. - Comparadores comuns:
>(maior),<(menor),>=,<=,==(igual),!=(diferente). - Cuidado com
=(atribuição) vs==(comparação).hp = 0zera o HP;hp == 0checa se o HP é zero. Erro clássico.
else if é só uma forma de encadear: o Dart testa a primeira condição, se falsa testa a próxima, e assim por diante. O else final captura todos os outros casos.
Loop - repetir até
Imagine girar uma manivela: você gira, gira, gira, até a corda subir ao topo. Cada giro é uma iteração. A condição para parar é “a corda chegou no topo”.
Em Dart, o jeito mais direto é o while:
var i = 0;
while (i < 5) {
print(i);
i = i + 1;
}
Saída:
0
1
2
3
4
O loop executa enquanto a condição (i < 5) for verdadeira. A cada iteração, i aumenta de 1. Quando i chega a 5, a condição vira falsa, e o loop para.
Atenção ao loop infinito. Se você esquecer de aumentar i, ele fica sempre 0, e o programa imprime 0 para sempre. Para parar manualmente, aperte Ctrl+C no terminal. Sempre garanta que a condição vai eventualmente virar falsa.
O for é uma forma mais compacta de fazer o mesmo:
for (var i = 0; i < 5; i = i + 1) {
print(i);
}
Tem três partes: inicialização (var i = 0), condição (i < 5), e o que fazer a cada iteração (i = i + 1). Resultado idêntico ao while acima, escrito mais conciso.
Função - bloco com nome
Imagine uma receita arquivada. Você abre o caderno, lê os passos, faz o bolo. Quando precisa de outro bolo, abre a mesma receita - não reescreve do zero. Função é receita arquivada do código.
Exemplo:
int dobrar(int x) {
return x * 2;
}
void main() {
print(dobrar(7)); // imprime 14
print(dobrar(15)); // imprime 30
print(dobrar(100)); // imprime 200
}
Estrutura da função dobrar:
int- tipo do que a função vai devolver (um número inteiro).dobrar- nome da função. Escolha você.(int x)- parâmetro. A função vai receber uminte chamar dexenquanto estiver rodando.return x * 2;- o resultado da função. Quem chama a função recebe esse valor de volta.
Funções servem para encapsular operações que você usa várias vezes. Em vez de escrever x * 2 em três lugares diferentes, você escreve uma vez na função e chama a função em três lugares. Se um dia decidir que dobrar deve ser x * 2 + 1, muda só na função.
Combinando os quatro
Cinco linhas, quatro conceitos juntos. Um “adivinhe o número” simplificado:
import 'dart:math';
int rolarDado() {
return 1 + Random().nextInt(6); // sorteia 1..6
}
void main() {
var sorteado = rolarDado();
var palpite = 4;
if (palpite == sorteado) {
print('Acertou! O dado caiu em $palpite.');
} else {
print('Errou. Caiu $sorteado, não $palpite.');
}
}
Cinco conceitos em ação:
- Função (
rolarDado) que devolve um inteiro - Variáveis (
sorteado,palpite) - Condicional (
if/else) - Comparação (
==) - Interpolação de string (
$palpitedentro da string)
Não é jogo ainda. Mas é programa de verdade. O livro principal vai expandir cada um desses conceitos por capítulos inteiros. Aqui, só queremos garantir que você reconhece os quatro pilares quando aparecerem.