Immissione di dati dalla tastiera durante l'esecuzione di un programma

Da Gambas-it.org - Wikipedia.

Durante l'esecuzione (runtime) di un programma, può essere necessario che si introducano via tastiera uno o più dati, affinché il programma medesimo li elabori per i propri scopi. Quando ciò avviene, si ha un arresto dell'esecuzione del programma (ma non il suo termine !). Tale stato di attesa continuerà sino a quando l'immissione e l'invio del dato dalla tastiera non sarà avvenuta.

L'invio dei dati dalla tastiera al programma durante la sua esecuzione deve essere ovviamente debitamente previsto con specifiche funzioni. Le modalità di invio variano a seconda del tipo di applicazione utilizzata.


Invio di dati dalla tastiera in un'applicazione grafica

Qualora l'applicazione si sviluppi in ambiente grafico, possiamo utilizzare l'apposita funzionalità prevista: InputBox() . Quando l'esecuzione del codice incontra detta funzione, viene aperta una finestra con un apposito spazio per l'immissione di uno o più caratteri. L'InputBox ritorna quanto immesso come vaore di tipo Stringa; pertanto, se il valore immesso da utilizzare è un numero, dovrà chiaramente essere convertito in valore numerico.


Mostriamo un esempio generico:

Public Sub Form_Open()
 
 Dim s As String
 
  s = InputBox("Immettere un testo:")
  
  Print "Testo immesso: "; Quote(s)
  
End


Invio di dati dalla tastiera in un'applicazione a riga di comando

Qualora, invece, l'applicazione sia a riga di comando, possiamo utilizzare [nota 1] alcune particolari funzioni, che prevedono l'immissione dei dati nell'apposito spazio presente al di sotto della console. Qualora si utilizzi un programma eseguibile, l'immissione avverrà ovviamente dal Terminale.


Uso di Input e di Line Input

Utilizzando la funzione Input potremo inviare al programma solo caratteri non frammezzati dal carattere dello spazio. Se dunque immetteremo due gruppi di caratteri divisi da almeno un carattere dello spazio (esempio: abc def), verrà raccolto da Input solo il primo gruppo.

Se, invece, si intende raccogliere una riga di caratteri, tra i quali siano presenti uno o più caratteri dello spazio, si dovrà utilizzare la risorsa Line Input.

In entrambi i casi basterà prevedere l'uso di una variabile di tipo Stringa per memorizzare e dunque poter utilizzare i dati immessi da console/terminale.

Esempio:

 Public Sub Main()
 
 Dim s As String
 
  Input s
  
  Print "Testo immesso: "; Quote(s)
  
End

Sull'uso di Input e di Line Input relativamente all'argomento in oggetto rinviamo anche a questa pagina della WIKI.


Uso della funzione esterna scanf() della libreria stdio.h

Possiamo utilizzare, volendo, anche la funzione esterna scanf() della libreria stdio.h. In tal caso il codice è un po' più complesso e rinviamo alla specifica pagina su scanf() di questa WIKI.


Inviare dati dalla tastiera senza interruzione dell'esecuzione del programma

Può rendersi necessario inviare dati al programma, affinché li elabori, senza dover bloccare temporaneamente l'esecuzione del programma medesimo.

Questo può essere fatto in un programma in ambiente grafico con gli Eventi degli appositi oggetti che permettono l'invio di dati (esempio: ValueBox, TextBox, Slider, etc).

In un'aplicazione a riga di comando, invece, ciò può essere fatto mediante l'evento _Read() della Classe Application, alla cui specifica pagina di questa WIKI rinviamo.



Note

[1] Le funzioni esposte nel presente paragrafo possono essere ovviamente utilizzate anche in applicazione grafiche.