3. Perguntar ao usuário
input(): ler o que a pessoa digita, converter em número, e o fim da entrada.
Um programa fica interessante quando responde a quem o usa. input(pergunta) mostra a pergunta, espera a pessoa digitar e apertar Enter, e devolve o texto digitado.
saudacao.df
nome := input("Qual e o seu nome? ")
out $"Ola, {nome}!"text
$ dataforge run saudacao.df
Qual e o seu nome? Ana
Ola, Ana!idade.df
// '?? "0"': se a entrada acabar, input devolve void, e int(void) seria erro.
idade := int(input("Sua idade: ") ?? "0")
out $"daqui a 10 anos voce tera {idade + 10}"Quando a pessoa digita algo que não é número#
dataforge
action ler_inteiro(texto):
monitor:
yield int(texto)
handle Error:
yield void
assert ler_inteiro("42") is 42
assert ler_inteiro("quarenta") is void
out "o texto que nao e numero vira void, e o programa nao cai"Ler até acabar#
Quando a entrada termina — Ctrl+D no terminal, ou o fim de um arquivo redirecionado —, input devolve void. É isso que deixa um laço de leitura terminar sozinho:
soma.df
total := 0
linha := input()
persist linha isnt void:
total += int(linha)
linha := input()
out $"soma: {total}"text
$ printf '10\n20\n12\n' | dataforge run soma.df
soma: 42Próximo: 4. Decidir.