Differenze tra le versioni di "Input"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
L'istruzione '''Input''' legge una stringa in un file di testo <SPAN style="text-decoration:underline">fino</span> all'interruzione dello spazio o al carattere di "''nuova linea''" (''ritorno a capo''), e le immette ciascuna in una variabile.
+
L'istruzione '''INPUT''' legge una stringa in un file di testo <SPAN style="text-decoration:underline">fino</span> all'interruzione dello spazio o al carattere di ''nuova linea ritorno a capo'' (&h0A, "\n") e immette quanto letto in una variabile di tipo Stringa.
<BR>Se non viene definito nessuno stream, allora viene utilizzato lo standard input.
+
<BR>Se non viene definito nessuno ''stream'', allora viene utilizzato lo standard input.
  
 
Esempio.
 
Esempio.
 
<BR>Poniamo di avere un file, creato con un editor di testo, contenente la seguente stringa di caratteri: ''gallo gatto ratto''.
 
<BR>Poniamo di avere un file, creato con un editor di testo, contenente la seguente stringa di caratteri: ''gallo gatto ratto''.
<BR>Leggendo con ''Input'':
+
<BR>Leggendo con "Input":
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 18: Riga 18:
 
   Print s
 
   Print s
 
   
 
   
  '''End'''
+
  End
sarà letta soltanto la sottostringa "gallo", poiché "Input" leggerà la stringa fino al primo carattere dello spazio, e sarà inserita nella variabile "a$".
+
sarà letta soltanto la sottostringa "gallo", poiché "Input" leggerà la stringa fino al primo carattere dello spazio, e sarà inserita nella variabile "s".
  
  
Con ''Input'' possiamo inserire anche più variabili, ove caricare i valori, ossia le varie sottostringhe presenti nel file di testo e separate ciascuna dall'altra da uno spazio o da un carattere di "nuova riga":
+
===Usare più variabili per volta===
  '''Public''' Sub Main()
+
Con "Input" possiamo inserire anche più variabili, ove caricare i valori (ossia le varie sottostringhe presenti nel file di testo e separate ciascuna dall'altra da uno spazio o da un carattere di "nuova riga"):
 +
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
   Dim a$, b$, c$ As String
+
   Dim s1, s2, s3 As String
 
    
 
    
 
   fl = Open "<FONT color=gray>''/percorso/del/file/da/aprire''</font>" For Input
 
   fl = Open "<FONT color=gray>''/percorso/del/file/da/aprire''</font>" For Input
 
   
 
   
   <FONT color=#B22222>Input</font> #fl, a$, b$, c$
+
   <FONT color=#B22222>Input</font> #fl, s1, s2, s3
 
   
 
   
 
   fl.Close
 
   fl.Close
 
   
 
   
   Print a$, b$, c$
+
   Print s1, s2, s3
 
   
 
   
  '''End'''
+
  End
saranno lette: gallo gatto ratto, che saranno poste rispettivamente nelle variabili a$, b$, c$.
+
saranno lette: ''gallo gatto ratto'' e saranno poste rispettivamente nelle variabili "s1", "s2" e "s3".
  
  
Volendo usare un ciclo "For", si potrà, per leggere ogni sottostringa, usare invece ovviamente una sola variabile stringa:
+
===Usare un ciclo===
  '''Public''' Sub Main()
+
Volendo usare un ciclo "For...Next", si potrà, per leggere ogni sottostringa, usare invece ovviamente una sola variabile stringa:
 +
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 49: Riga 51:
 
   fl = Open "<FONT color=gray>''/percorso/del/file/da/aprire''</font>" For Input
 
   fl = Open "<FONT color=gray>''/percorso/del/file/da/aprire''</font>" For Input
 
   
 
   
  For b = 0 to 2
+
  For b = 0 to 2
 
     <FONT color=#B22222>Input</font> #fl, s
 
     <FONT color=#B22222>Input</font> #fl, s
 
     Print s
 
     Print s
  Next
+
  Next
 
   
 
   
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
 
Avremo in console:
 
Avremo in console:
 
<BR>gallo
 
<BR>gallo
Riga 62: Riga 64:
 
<BR>ratto
 
<BR>ratto
  
 
+
Possiamo usare, per compiere il ciclo, ovviamente anche il ciclo "While...Wend" (o anche di altro tipo):
Possiamo usare, per compiere il ciclo, ovviamente anche il ciclo "While...Wend":
+
  Public Sub Main()
  '''Public''' Sub Main()
 
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 78: Riga 79:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
  
  
Con ''Input'' possiamo usare anche la funzione "Seek" per spostare il puntatore all'interno del File di testo:
+
===Usare l'istruzione "Seek"===
  '''Public''' Sub Main()
+
Con "Input" possiamo usare anche l'istruzione "Seek" per spostare il puntatore all'interno del file di testo:
 +
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 96: Riga 98:
 
   Print s
 
   Print s
 
   
 
   
  '''End'''
+
  End
 
in console avremo:  lo
 
in console avremo:  lo
<BR>La lettura anche con l'utilizzo della funzione ''Seek'' si arresterà al primo spazio, oppure al carattere ''ritorno a capo nuova riga'', che incontrerà nel file di testo.
+
<BR>La lettura anche con l'utilizzo dell'istruzione "Seek" si arresterà al primo spazio, oppure al carattere ''ritorno a capo nuova riga'' ("\n"), che incontrerà nel file di testo.
  
 
Con il seguente codice:
 
Con il seguente codice:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 115: Riga 117:
 
   Print s
 
   Print s
 
   
 
   
  '''End'''
+
  End
avremo in console: ratto
+
avremo in console: ratto
  
  
 
==Uso di INPUT per porre il programma in attesa sino alla pressione del tasto "Invio"==
 
==Uso di INPUT per porre il programma in attesa sino alla pressione del tasto "Invio"==
L'istruzione ''Input'' può essere utile per porre il programma in attesa sino alla pressione del tasto "Invio" della tastiera da parte dell'utente. In tal caso il programma proseguirà nel processo del proprio codice, solo quando l'utente avrà premuto il tasto "Invio" della tastiera.
+
L'istruzione "Input" può essere utile per porre il programma in attesa sino alla pressione del tasto "Invio" della tastiera da parte dell'utente. In tal caso il programma proseguirà nel processo del proprio codice, solo quando l'utente avrà premuto il tasto "Invio" della tastiera.
  
 
Esempio pratico:
 
Esempio pratico:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim s As String
 
   Dim s As String
Riga 133: Riga 135:
 
   Print "E' stato premuto il tasto \"Invio\" della tastiera.\n"
 
   Print "E' stato premuto il tasto \"Invio\" della tastiera.\n"
 
    
 
    
  '''End'''
+
  End
  
 
===Porre in attesa il programma con Input e inserire un carattere dalla tastiera===
 
===Porre in attesa il programma con Input e inserire un carattere dalla tastiera===
Posto in attesa il programma con l'istruzione ''Input'', e prima di premere il tasto "Invio" della tastiera per sbloccarlo, è possibile inserire in una variabile di tipo ''String'' uno o più caratteri dalla tastiera.
+
Posto in attesa il programma con l'istruzione "Input", e prima di premere il tasto "Invio" della tastiera per sbloccarlo, è possibile inserire in una variabile di tipo ''String'' uno o più caratteri dalla tastiera.
 
<BR>Al riguardo riprendiamo il codice precedente:
 
<BR>Al riguardo riprendiamo il codice precedente:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim s As String
 
   Dim s As String
Riga 148: Riga 150:
 
   Print "Sono stati inseriti i seguenti caratteri: "; s
 
   Print "Sono stati inseriti i seguenti caratteri: "; s
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 07:26, 29 ott 2023

L'istruzione INPUT legge una stringa in un file di testo fino all'interruzione dello spazio o al carattere di nuova linea ritorno a capo (&h0A, "\n") e immette quanto letto in una variabile di tipo Stringa.
Se non viene definito nessuno stream, allora viene utilizzato lo standard input.

Esempio.
Poniamo di avere un file, creato con un editor di testo, contenente la seguente stringa di caratteri: gallo gatto ratto.
Leggendo con "Input":

Public Sub Main()

 Dim fl As File
 Dim s As String

 fl = Open "/percorso/del/file/da/aprire" For Input

 Input #fl, s

 fl.Close

 Print s

End

sarà letta soltanto la sottostringa "gallo", poiché "Input" leggerà la stringa fino al primo carattere dello spazio, e sarà inserita nella variabile "s".


Usare più variabili per volta

Con "Input" possiamo inserire anche più variabili, ove caricare i valori (ossia le varie sottostringhe presenti nel file di testo e separate ciascuna dall'altra da uno spazio o da un carattere di "nuova riga"):

Public Sub Main()

 Dim fl As File
 Dim s1, s2, s3 As String
 
 fl = Open "/percorso/del/file/da/aprire" For Input

 Input #fl, s1, s2, s3

 fl.Close

 Print s1, s2, s3

End

saranno lette: gallo gatto ratto e saranno poste rispettivamente nelle variabili "s1", "s2" e "s3".


Usare un ciclo

Volendo usare un ciclo "For...Next", si potrà, per leggere ogni sottostringa, usare invece ovviamente una sola variabile stringa:

Public Sub Main()

 Dim fl As File
 Dim s As String
 Dim b As Byte

 fl = Open "/percorso/del/file/da/aprire" For Input

 For b = 0 to 2
   Input #fl, s
   Print s
 Next

 fl.Close

End

Avremo in console:
gallo
gatto
ratto

Possiamo usare, per compiere il ciclo, ovviamente anche il ciclo "While...Wend" (o anche di altro tipo):

Public Sub Main()

 Dim fl As File
 Dim s As String

 fl = Open "/percorso/del/file/da/aprire" For Input

 While Not Eof(fl)
   Input #fl, s
   Print s
 Wend

 fl.Close

End


Usare l'istruzione "Seek"

Con "Input" possiamo usare anche l'istruzione "Seek" per spostare il puntatore all'interno del file di testo:

Public Sub Main()

 Dim fl As File
 Dim s As String

 fl = Open "/percorso/del/file/da/aprire" For Input

 Seek #fl, 3
 Input #fl, s

 fl.Close

 Print s

End

in console avremo: lo
La lettura anche con l'utilizzo dell'istruzione "Seek" si arresterà al primo spazio, oppure al carattere ritorno a capo nuova riga ("\n"), che incontrerà nel file di testo.

Con il seguente codice:

Public Sub Main()

 Dim fl As File
 Dim s As String
 
 fl = Open "/percorso/del/file/da/aprire" For Input

 Seek #fl, 12
 Input #fl, s
 
 fl.Close

 Print s

End

avremo in console: ratto


Uso di INPUT per porre il programma in attesa sino alla pressione del tasto "Invio"

L'istruzione "Input" può essere utile per porre il programma in attesa sino alla pressione del tasto "Invio" della tastiera da parte dell'utente. In tal caso il programma proseguirà nel processo del proprio codice, solo quando l'utente avrà premuto il tasto "Invio" della tastiera.

Esempio pratico:

Public Sub Main()
 
 Dim s As String
 
 Print "In attesa della pressione del tasto \"Invio\" della tastiera......"
 
 Input s
 
 Print "E' stato premuto il tasto \"Invio\" della tastiera.\n"
 
End

Porre in attesa il programma con Input e inserire un carattere dalla tastiera

Posto in attesa il programma con l'istruzione "Input", e prima di premere il tasto "Invio" della tastiera per sbloccarlo, è possibile inserire in una variabile di tipo String uno o più caratteri dalla tastiera.
Al riguardo riprendiamo il codice precedente:

Public Sub Main()
 
 Dim s As String

 Print "Scrivere nella console/terminale uno o più carattteri mediante la tastiera e successivamente premere il tasto \"Invio\" della tastiera:"

 Input s

 Print "Sono stati inseriti i seguenti caratteri: "; s
 
End