Olá, Ricardo.
Existe uma questão funcional em microcomputadores. O buffer do teclado. É comum ocorrer uma falha operacional quando da entrada de dados alfabéticos ou alfanuméricos. O problema é o seguinte quando se faz uma entrada de valor numérico e aciona-se a tecla <Enter>, este <Enter> faz duas coisas, retorna o cursor para a posição inicial da linha e muda o cursor. Ao fazer esta ação o buffer (memória) do teclado é limpo e fica disponível para outra entrada. No entanto quando se faz a entrada de um valor alfabético ao alfanumérico não ocorre a limpeza do buffer após o acionamento da tecla <Enter> o que gera o erro relatado por você.
Este efeito desastroso não é culpa da linguagem Lua e sim do computador, pois a mesma ocorrência é registrada em outras linguagens como Pascal, C, entre outras. Por exemplo, na linguagen Pascal o efeito é neutralizado quando se usa tanto para entrada numéricas como alfanuméricas a instrução readln(). No caso da linguagem C usa-se após as entradas a função fflush(stdio).
Assim sendo é melhor fazer a entrada numérica primeiro e a alfanumérica em seguida. Ainda não descobri como fazer na linguagem Lua a limpeza do buffer do teclado.
A*e
SW-Fly
Primeiramente, desculpem-me pela dúvida iniciante.
Porque um io.read("*number") seguido por um io.read(), o segundo io.read é ignorado? Por exemplo:
io.write("\nDigite uma palavra: ")
palavra = io.read()
io.write("\nPalavra digitada: ", palavra)
io.write("\nDigite um numero: ")
numero = io.read("*number")
io.write("\nNumero digitado: ", numero)
Nesse exemplo, os dois io.read() consomem o que é digitado. Porém, se inverter a ordem:
io.write("\nDigite um numero: ")
numero = io.read("*number")
io.write("\nNumero digitado: ", numero)
io.write("\nDigite uma palavra: ")
palavra = io.read()
io.write("\nPalavra digitada: ", palavra)
O processamento nâo pára para ler o segundo io.read().
Alguém poderia me dizer o porquê?
Obrigado antecipadamente,