Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender a saída de dados
  2. Entender a entrada de dados
  3. Formatação básica de dados

Antes de continuarmos nosso estudo sobre a linguagem precisamos aprender a exibir informações para os usuários de nossos programas. Nesta parte vamos estudar as funções: print , read e format.

Para a impressão de dados na saída padrão, vamos utilizar a função print que é semelhante a printf utilizada pela linguagem C em Tutorial C: Entrada e Saída.

Sintaxe
print(valor)
print(valor,valor2,valor3)
Onde
valor: variável ou valor que desejamos imprimir
Exemplo 1
local x = 10 
print(10)
print(x)
print("uma string lunática")

É possível utilizar mais de uma valor como argumento da função. Nesse caso, os valores são exibidos em forma tabular.

Sintaxe
print(valor1, valor2, valor3)
Exemplo 1
print(1,2,3,4)
Saída
1	2	3	4

Além da exibição em forma tabular, print nos permite utilizar os caracteres de escape para uma formatação básica.

Sequência de escape Significado
\b Backspace
\n Nova linha
\r Retorno de carro
\t Tabulação
\\ Barra invertida
\" Aspas duplas
\' Aspas simples
\[ Colchete à esquerda
\] Colchetes à direita
Exemplo 2
print("Hello\nWorld!")
print("Hello\tWorld!")
print("\"H\"ello \"W\"orld!")
Saída
Hello
World!
Hello	World!
"H"ello "W"orld!

A função print não possui recursos para formatação de valores, apenas a exibição de valores como são e a impressão é sempre feita em uma nova linha ou com uso de caracteres de escape.

O processamento de entrada de dados do usuário em Lua é feito utilizando a função read do módulo io. A leitura dos dados é feita na entrada padrão(teclado) e o valor lido é atribuído à uma variável.

Sintaxe
io.read([format])
io.read(number)

Onde
format: formato suportado para leitura
*n: lê um número
*l: lê um string. Formato padrão se format não especificado
number: quantidade de bytes lidos da entrada de dados
Exemplo 3

Lendo entrada numérica

numero = io.read("*n") -- tanto float quanto inteiro
print(numero)

Entrada
120
Saída
120
Exemplo 4

Lendo entrada de texto

nome = io.read("*l")
print(nome)

Entrada
um nome qualquer
Saída
um nome qualquer
Exemplo 5

Lendo quantidade fixa de bytes

nome = io.read(7)
print(nome)
Entrada
apenas sete bytes serão lidos
Saída
apenas 

Mais sobre módulo será vistos em Módulo onde vamos aprender a criar nossos próprios módulos.

Em exemplos anteriores utilizamos a print para impressão de dados, mas essa função não possui suporte a formatação além da impressão em forma tabular.

Para exibição de dados formatados, Lua possui a função format que permite a utilização de caracteres de escape, identificadores de formatação e outros.

Sintaxe
string.format(formatstring,...)
Onde
formatstring: string com identificadores de formatação
...: lista de argumentos que serão formatados
*l: lê um string. Formato padrão se format não especificado
number: quantidade de bytes lidos da entrada de dados
Identificadores básicos para formatação:
  1. %d: inteiro
  2. %f: float
  3. %s: string
  4. %x: hexadecimal
  5. %o: octal
  6. %q: valor entre aspas
Exemplo 6
--char
print(string.format("Char: %sello World",'H'))

-- string
print(string.format("Hello %s","World"))
--string entre aspas duplas
print(string.format("Hello %q","World"))

--inteiro
print(string.format("inteiro: %d",7))
--inteiro justificado a direita com 7 dígitos
print(string.format("%7d",7))
--inteiro justificado a esquerda com 7 dígitos
print(string.format("%-7d outras informações",7))
--inteiro justificado a direita com 0
print(string.format("%08d",7))

--octal
print(string.format("%o",8))

--hexadecimal
print(string.format("%x", 255))
print(string.format("%02X", 10))
print(string.format("%04X", 256))

--float
print(string.format("%f", 7.777))
--arredondamento : 2 casas decimais
print(string.format("%.2f", 7.777))
Saída
Hello World
Hello World
Hello "World"
7
      7
7       outras informações
00000007
10
ff
0A
0100
7.777000
7.78
  1. 12/09/2024 - revisão 2 - ajustes gramaticais
  2. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
  3. 26/05/2023 - versão inicial