02 — Primeiro Programa
Meta do capítulo: escrever, rodar e entender o menor programa Aura. Exemplo:
../../examples/hello.aura.
O programa
Crie um arquivo hello.aura:
def main() {
print("Hello, Aura!")
}
Rode-o:
aura run hello.aura
Saída:
Hello, Aura!
Esse é um programa Aura completo. Cada peça importa:
| Peça | Significado |
|---|---|
def | declara uma função; é a única keyword de função |
main | o ponto de entrada — o runtime o chama para você |
() | main não recebe parâmetros |
{ ... } | o corpo da função, um bloco de statements |
print(...) | escreve seu argumento na saída padrão |
"..." | um literal de string |
Por que não há uma chamada main()
Em muitas linguagens você escreve main() ou if __name__ == "__main__":. Em Aura, o runtime invoca main por conta própria. Escrever uma chamada main() à direita é desnecessário, e omitir main em um arquivo executado é o erro E310.
Um arquivo importado como módulo (capítulo 13) não precisa de main algum.
Statements e quebras de linha
Statements são separados pela gramática de Aura, e um ; de terminação é opcional. Quebras de linha não têm significado sintático, então estes dois são o mesmo programa:
def main() {
print("one")
print("two")
}
def main() { print("one"); print("two") }
Escolha um estilo e seja consistente; aura format normaliza para indentação de dois espaços e chaves na mesma linha.
Comentários
// a line comment
/* a block comment
spanning lines */
// sempre inicia um comentário de linha — Aura deliberadamente não tem o operador // de divisão inteira. Use int(a / b) para um quociente inteiro.
Imprimindo mais
print aceita vários argumentos (eles são impressos separados por espaço):
def main() {
let name = "world"
print("Hello,", name)
print(f"Hello, {name}!")
}
Hello, world
Hello, world!
A forma f"..." é uma f-string: {...} embute uma expressão. F-strings também suportam especificadores de formato e conversões !r/!s/!a:
def main() {
let pi = 3.14159
print(f"pi is about {pi:.2f}")
}
pi is about 3.14
Um primeiro programa um pouco maior
def greet(name, punctuation = "!") -> str {
return "Hello, " + name + punctuation
}
def main() {
print(greet("world"))
print(greet("Aura", "?"))
}
Hello, world!
Hello, Aura?
Duas ideias novas aparecem aqui: uma segunda função e um parâmetro default (punctuation = "!", usado quando o chamador o omite). -> str é a anotação de tipo de retorno. Funções são o capítulo 06; por ora, note que o código Aura se lê de cima para baixo e toda construção é explícita.
Vendo o Python gerado
Como Aura transpila, você pode inspecionar o target:
aura transpile hello.aura
A saída é Python comum. É uma forma útil de confirmar o que uma construção faz — e um lembrete de que o runtime é CPython.
O que você aprendeu
def main() { ... }é o ponto de entrada; o runtime o chama.printescreve saída; f-strings interpolam expressões.- Statements terminam em fronteiras da gramática;
;é opcional. //e/* ... */são comentários.aura runexecuta,aura transpilemostra o Python.