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

  1. Saída de dados
  2. Entrada de dados
  3. Formatação básica de dados
  4. Formatação com alinhamento
  5. Formatação com precisão
  6. entrada formatada

Os tópicos listados acima sobre entrada e saída são referentes a aplicações Console em ambiente desktop. Esses tópicos podem não ser válidos para outros tipos de aplicações em que Lua é utilizada como extensão.

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 que foi visto em Tutorial C: Entrada e Saída.

Sintaxe
print(valor)
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, ... , valorN)
Exemplo 2
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 3
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. 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: número
*l: string. Formato padrão se format não especificado
number: quantidade de bytes lidos
Exemplo 3: entrada númerica
numero = io.read("*n") -- tanto float quanto inteiro
print(numero)
Entrada
120
Saída
120
Exemplo 4: entrada textual
nome = io.read("*l")
print(nome)
Entrada
um nome qualquer
Saída
um nome qualquer
Exemplo 5: quantidade
nome = io.read(7)
print(nome)
Entrada
apenas? sete bytes serão lidos
Saída
apenas?

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 para formatação
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("%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))

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

--hexadecimal
print(string.format("%x", 255))
print(string.format("%02X", 10))
print(string.format("%04X", 256))
Saída
Hello World
Hello World
Hello "World"
7
10
ff
0A
0100

O alinhamento de dados pode ser feito utilizando informações de tamanho de campo e alinhamento à esquerda ou direita.

Sintaxe
%[-]PNidentificador
Onde
[-]: Alinhamento à esquerda. Se não usado, torna-se à direita.
N: tamanho do campo onde o valor será alinhado
P: caractere de preenchimento
identificador: identificador de formatação
Exemplo 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("%07d",7))

Saída
      7
7       outras informações
0000007

Os valores que utilizem tipo de dado ponto flutuante podem ter ser dígitos controlados para exibição de acordo com à sintaxe abaixo:

Sintaxe
%.N
Onde
N: número de dígitos de precisão para exibição
Exemplo 8
--float
print(string.format("%f", 7.777))
--arredondamento : 2 casas decimais
print(string.format("%.2f", 7.777))
Saída
7.777000
7.78
  1. 15/09/2025 - revisão 3 - Ajustes: objetivos, pontuais e sintaxes; Adição: alinhamento e precisão
  2. 12/09/2024 - revisão 2 - ajustes gramaticais
  3. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
  4. 26/05/2023 - versão inicial