Este roteiro conduz quem nunca escreveu uma linha de Lua do zero ao
primeiro programa próprio, em três sessões curtas de estudo. Cada passo
diz o que abrir e o que executar — sem decisões para tomar.
Ao terminar, siga para a trilha completa em
guia_de_estudos.md.
Pré-requisito: Lua 5.4 instalado. No Linux:
sudo apt install lua5.4(outras distribuições e macOS: sigainstalacao_linux_macos.md). No Windows: sigainstalacao_lua_win10.md(lá o comando final élua; neste roteiro usamoslua5.4— são o mesmo interpretador).
Confirme a instalação. No terminal:
lua5.4 -v
Deve aparecer Lua 5.4.x. Sem isso, nada abaixo funciona — resolva
a instalação primeiro.
Execute o primeiro programa. A partir da raiz do repositório:
cd basico
lua5.4 ola_mundo.lua
Abra e leia basico/ola_mundo.lua.
Uma linha. Modifique a mensagem, execute de novo. Você acabou de
editar um programa Lua.
Dica — o REPL: além de executar arquivos, o interpretador tem
um modo interativo: lua5.4 -i abre um prompt em que cada linha
digitada roda na hora — experimente print(2^10); para sair,
os.exit() (ou Ctrl+D). E para testar uma linha única sem abrir
nada: lua5.4 -e 'print(1+1)'. Use o REPL como rascunho ao longo
destes 3 dias: copie uma linha de qualquer lição, varie e veja o
resultado.
Faça o tour da linguagem. Execute e depois leia por inteiro
basico/lua_introducao_rapida.lua:
lua5.4 lua_introducao_rapida.lua
Ele mostra, em ~160 linhas, quase tudo que os próximos dias aprofundam. Não precisa entender tudo — precisa ver tudo.
Termine o dia com os tipos. Leia
basico/tipos.md e execute
basico/tipos.lua. Guarde uma ideia-chave:
em Lua, nil e false são os únicos valores falsos.
Encerre voltando à raiz do repositório — cada dia deste roteiro começa a partir dela:
cd ..
Condicionais e laços. Leia
controle_de_fluxo/controle_de_fluxo.md
e execute, um a um, a partir da raiz do repositório:
cd controle_de_fluxo
lua5.4 valores_verdadeiros.lua
lua5.4 lacos.lua
Funções. Execute a partir da pasta funcoes/:
cd ../funcoes
lua5.4 funcoes.lua
lua5.4 argumentos.lua
Repare no padrão dos arquivos: cada afirmação termina num assert.
Se o arquivo rodou sem erro, tudo que ele afirma é verdade — use
isso a seu favor: quebre um assert de propósito e veja o erro.
Primeiro exercício. Abra o exercício 1 da lista no fim desta página e tente resolver sem olhar a solução.
Encerre voltando à raiz do repositório:
cd ..
Tabelas são TUDO em Lua (listas, dicionários, objetos, módulos). Execute, a partir da raiz do repositório:
cd tabelas
lua5.4 tabelas.lua
lua5.4 vetores.lua
Um clássico completo. Leia e execute
basico/fizzbuzz.lua — repare que a
lógica vive numa função testável, e os asserts no fim provam que
ela funciona:
cd ../basico
lua5.4 fizzbuzz.lua
Seu primeiro programa. Faça os exercícios 2 e 3 abaixo. Eles
usam apenas o que você viu nos três dias. Ao terminar, volte à raiz
do repositório (cd ..).
Tente cada um por conta própria antes de comparar com as soluções em
projetos/exercicios/ — elas seguem o padrão
do repositório (funções + asserts) e rodam na CI como qualquer lição.
Par ou ímpar — escreva uma função parOuImpar(n) que devolve a
string "par" ou "impar". (Dica: operador %.)
Solução: projetos/exercicios/par_ou_impar.lua
Maior da lista — escreva maiorDaLista(numeros) que devolve o
maior número de uma lista, sem usar math.max. (Dica: ipairs.)
Solução: projetos/exercicios/maior_da_lista.lua
Contador de palavras — escreva contarPalavras(frase) que
devolve quantas palavras há numa frase separada por espaços.
(Dica: string.gmatch(frase, "%S+").)
Solução: projetos/exercicios/contar_palavras.lua
Inverter tabela — escreva inverter(lista) que devolve uma
lista nova com os elementos na ordem contrária, sem modificar a
original. Solução: projetos/exercicios/inverter_tabela.lua
guia_de_estudos.mdroteiro_de_estudos.yml../projetos/