Pular para o conteúdo

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: 42

Próximo: 4. Decidir.