QUICK BASIC
CIAO!!!
IN questo momento in informatica stiamo facendo il Quick Basic,però vorrei avere delle informazioni più chiare sulla programmazione e i comandi..
Qualcuno mi sa consigliare un sito chiaro??
Oppure ha del materiale da passarmi??
Grazie tante!!


IN questo momento in informatica stiamo facendo il Quick Basic,però vorrei avere delle informazioni più chiare sulla programmazione e i comandi..
Qualcuno mi sa consigliare un sito chiaro??
Oppure ha del materiale da passarmi??
Grazie tante!!


Risposte
READ e DATA.
Sono istruzioni che servono per memorizzare variabili:
DATA appende in memoria dei dati
mentre READ associa questi dati appesi in una variabile.
Ad esempio:
DATA 12.1
READ VAL
e' equivalente a scrivere
VAL = 12.1
Ora ti scrivo in forma corretta l'esempio che hai proposto:
DIM A(10) AS INTEGER
DATA 3,1,2,5,6,7,8,9,4
FOR I = 1 TO 10
READ A(I - 1) '' Per 10 elementi gli indici vanno da 0 a 9
NEXT I
'' Questo programma e' equivalente ad
A(0) = 3
A(1) = 1
A(2) = 2
A(3) = 5
A(4) = 6
...ETC...ETC...
Come facevi tu, sovrascrivevi in a(10) [che non e' accettabile] tutti i valori appesi da DATA.
-----------------------
FINE SECONDA PARTE
-----------------------
Sono istruzioni che servono per memorizzare variabili:
DATA appende in memoria dei dati
mentre READ associa questi dati appesi in una variabile.
Ad esempio:
DATA 12.1
READ VAL
e' equivalente a scrivere
VAL = 12.1
Ora ti scrivo in forma corretta l'esempio che hai proposto:
DIM A(10) AS INTEGER
DATA 3,1,2,5,6,7,8,9,4
FOR I = 1 TO 10
READ A(I - 1) '' Per 10 elementi gli indici vanno da 0 a 9
NEXT I
'' Questo programma e' equivalente ad
A(0) = 3
A(1) = 1
A(2) = 2
A(3) = 5
A(4) = 6
...ETC...ETC...
Come facevi tu, sovrascrivevi in a(10) [che non e' accettabile] tutti i valori appesi da DATA.
-----------------------
FINE SECONDA PARTE
-----------------------
Manca solo TYPE.
TYPE serve per creare un tipo variabile ad esempio un contatto telefonico
raggruppando 3 elementi sotto un solo nome:
TYPE TIPOCONTATTO
DIM Cognome AS STRING * 25
DIM Nome AS STRING * 25
DIM Telefono AS SRTRING * 20
END TYPE
A questo punto posso dichiarare variabili di tipo TIPOCONTATTO
DIM Contatto AS TIPOCONTATTO
E posso memorizzare dati attraverso READ e DATA
Ad esempio
DATA "Amitrano", "Eugenio", "1234/12345678"
READ Contatto.Cognome, Contatto.Nome, Contatto.Telefono
Spero che sia tutto chiaro.
Se hai bisogno scrivi.
A presto,
EugenioA
TYPE serve per creare un tipo variabile ad esempio un contatto telefonico
raggruppando 3 elementi sotto un solo nome:
TYPE TIPOCONTATTO
DIM Cognome AS STRING * 25
DIM Nome AS STRING * 25
DIM Telefono AS SRTRING * 20
END TYPE
A questo punto posso dichiarare variabili di tipo TIPOCONTATTO
DIM Contatto AS TIPOCONTATTO
E posso memorizzare dati attraverso READ e DATA
Ad esempio
DATA "Amitrano", "Eugenio", "1234/12345678"
READ Contatto.Cognome, Contatto.Nome, Contatto.Telefono
Spero che sia tutto chiaro.
Se hai bisogno scrivi.
A presto,
EugenioA
grazzzzieeeeee!!!
Scusa Ila, se posso... ma non ti converrebbe usare una buona guida? Bene o male i dubbi tuoi non riguardano problemi ma solo la tipologia delle istruzioni, e penso sarebbe più comodo anche per te poter trovare subito il significato dei comandi che cerchi...
Beh,a parte il fatto che Eugenio è come una guida aperta...
Però sai,questo è un argomento che farò ancora per un mese e ad un livello abbastanza bassino.. non saprei se esiste una guida adatta..e che costi poco!!
Tu ne conosci?!?!?
Però sai,questo è un argomento che farò ancora per un mese e ad un livello abbastanza bassino.. non saprei se esiste una guida adatta..e che costi poco!!
Tu ne conosci?!?!?
La mia miglior guida e' stata l'help in linea.
Cmq. per me e' un piacere fara da tramite.
Cmq. per me e' un piacere fara da tramite.
Non metto in dubbio che Eugenio sia stato un'ottimo suggeritore; se vi trovate bene voi, basta.
In ogni caso, per i manuali, tramite google qualcosa di free lo dovresti trovare... sennò appunto dovrebbe bastare anche l'help in linea...
In ogni caso, per i manuali, tramite google qualcosa di free lo dovresti trovare... sennò appunto dovrebbe bastare anche l'help in linea...
Grazie Lore...
adesso è il moment di Eugenio....scusa ma è inevitabile!!
Abbiamo affrontato nuove istruzioni..sono queste:
MID$
LTRIM$
RTRIM$
STRING$
LEN
LEFT$
RIGHT$
Allora..parto da quelli che mi sembrano più semplici e ti dico cosa ho capito:
LEFT$ prende il numero di lettere di una parola partendo da quelle più a sinistra,quindi ad es:
a$= "ciao mondo" (che frase imbecille!)
LEFT$ (a$,5)
e lo stesso vale per RIGHT$,giusto?!?!
MID$ estrae alcune parti di una stringa di testo, ad es:
a$= "quante parole che ci sono"
MID$ (a$,6,6)
e quindi salta fuori "quante", giusto??
LEN serve per indicare la lunghezza di una parola, quindi...
ho provato anche qui a fare un esempio ma non sono molto sicura....
INPUT "dimmi una frase",a$ digiti una parola
for n= LEN(a$) to 1 then
RIS$=MID$(a$,n,1) prendi la parola "una" (qui nn sono sicura..)
NEXT
PRINT RIS$ stampa su schermo "una"
END
Sugli altri non ho capito molto..grazie mille!!
adesso è il moment di Eugenio....scusa ma è inevitabile!!
Abbiamo affrontato nuove istruzioni..sono queste:
MID$
LTRIM$
RTRIM$
STRING$
LEN
LEFT$
RIGHT$
Allora..parto da quelli che mi sembrano più semplici e ti dico cosa ho capito:
LEFT$ prende il numero di lettere di una parola partendo da quelle più a sinistra,quindi ad es:
a$= "ciao mondo" (che frase imbecille!)
LEFT$ (a$,5)
e lo stesso vale per RIGHT$,giusto?!?!
MID$ estrae alcune parti di una stringa di testo, ad es:
a$= "quante parole che ci sono"
MID$ (a$,6,6)
e quindi salta fuori "quante", giusto??
LEN serve per indicare la lunghezza di una parola, quindi...
ho provato anche qui a fare un esempio ma non sono molto sicura....
INPUT "dimmi una frase",a$ digiti una parola
for n= LEN(a$) to 1 then
RIS$=MID$(a$,n,1) prendi la parola "una" (qui nn sono sicura..)
NEXT
PRINT RIS$ stampa su schermo "una"
END
Sugli altri non ho capito molto..grazie mille!!
Lore, ho letto l'autopresentazione nel tuo sito, devo congratularmi con te! Devi essere un tipo veramente positvo e sicuramente molto piu' intelligente della norma.
Non osservare pigrizia nell'atteggiamento degli utenti di questo topic, l'entusiasmo che si prova a leggere da un forum piuttosto che da una guida, potrebbe essere incoraggiante e uno stimolo ad apprendere meglio.
Spesso in una guida non si avverte la persona che l'ha realizzata.
Sei daccordo ?
Ila, non trattare male lore che prende le mie difese, hehehe...
non preoccuparti ho appreso l'ironia presente nel tuo modo di essere,
e man mano ti scrivero' esempi delucidanti per le tue ricieste.
EugenioA
Non osservare pigrizia nell'atteggiamento degli utenti di questo topic, l'entusiasmo che si prova a leggere da un forum piuttosto che da una guida, potrebbe essere incoraggiante e uno stimolo ad apprendere meglio.
Spesso in una guida non si avverte la persona che l'ha realizzata.
Sei daccordo ?
Ila, non trattare male lore che prende le mie difese, hehehe...
non preoccuparti ho appreso l'ironia presente nel tuo modo di essere,
e man mano ti scrivero' esempi delucidanti per le tue ricieste.
EugenioA
Non e' proprio come dici tu.
Le definizioni sono esatte, pero' gli esempi @#!@#!....
vediamo come posso accontentarti.
Istruzione LEN:
LEN ti restituisce la lunghezza di una stringa:
'' dichiaro le variabili
DIM title AS STRING
DIM titlesize AS INTEGER
'' assegno il titolo
title = "Esempio dell'istruzione LEN"
'' calcolo la lunghezza
titlesize = LEN(title)
'' satmpo il rsultatao
PRINT "La frase:"
PRINT title
PRINT "E' composta da "; titlesize; "caratteri."
Le definizioni sono esatte, pero' gli esempi @#!@#!....
vediamo come posso accontentarti.
Istruzione LEN:
LEN ti restituisce la lunghezza di una stringa:
'' dichiaro le variabili
DIM title AS STRING
DIM titlesize AS INTEGER
'' assegno il titolo
title = "Esempio dell'istruzione LEN"
'' calcolo la lunghezza
titlesize = LEN(title)
'' satmpo il rsultatao
PRINT "La frase:"
PRINT title
PRINT "E' composta da "; titlesize; "caratteri."
Istruzioni LTRIM\$ ed RTRIM\$
LTRIM\$ sta per LEFT TRIM cioe' assetto sinistro
analogamente
RTRIM\$ sta per RIGHT TRIM cioe' assetto destro
In particolare servono per eliminare da un testo gli spazi in eccedenza a destra o a sinistra.
Esempio:
LTRIM\$ sta per LEFT TRIM cioe' assetto sinistro
analogamente
RTRIM\$ sta per RIGHT TRIM cioe' assetto destro
In particolare servono per eliminare da un testo gli spazi in eccedenza a destra o a sinistra.
Esempio:
DIM title AS STRING title = " Esempio di LTRIM\$ ed RTRIM\$ " PRINT "Frase:" PRINT "#";title;"#": '' utilizzo i cancelletti per delimitare l'inizio e la fine della stringa '' stampera' la riga: # Esempio di LTRIM\$ ed RTRIM\$ # PRINT "Dopo LTRIM\$" title = LTRIM\$(title) PRINT "#";title;"#": '' Stampera' la riga: #Esempio di LTRIM\$ ed RTRIM\$ # PRINT "Dopo RTRIM\$" title = RTRIM\$(title) PRINT "#";title;"#": '' Stampera' la riga: #Esempio di LTRIM\$ ed RTRIM\$#
Istruzioe STRING\$
Mettiamo il caso di aver bisogno di assegnare ad una stringa n caratteri uguali (ad esempio 30 lettere A: AAAAAAAA......), con questa istruzione ho risolto il mio problema.
basta scrivere
stringa = STRING\$(30, "A");
oppure
stringa = STRING\$(30, 65) '' perche' 65 e' il codice ascii associato alla lettera A maiuscolo
il risultato sarebbe stato lo stesso se avessi scritto:
stringa = STRING\$(30, "AMITRANO")
perche' in questo caso prende solo la prima lettera.
Mettiamo il caso di aver bisogno di assegnare ad una stringa n caratteri uguali (ad esempio 30 lettere A: AAAAAAAA......), con questa istruzione ho risolto il mio problema.
basta scrivere
stringa = STRING\$(30, "A");
oppure
stringa = STRING\$(30, 65) '' perche' 65 e' il codice ascii associato alla lettera A maiuscolo
il risultato sarebbe stato lo stesso se avessi scritto:
stringa = STRING\$(30, "AMITRANO")
perche' in questo caso prende solo la prima lettera.
Istruzioni LEFT\$, MID\$, RIGHT\$.
Hanno funzionalita' simile, e cioe' quella di estrarre n lettere da una stringa.
LEFT\$ parte da sinistra
RIGHT\$ parte da destra
come parametri gli do la stringa e il numero di caratteri che voglio estrarre.
MID\$ da un punto definito dal programmatore
infatti vuole un parametro in piu' che e' il punto da cuivoglio partire:
Esempio 1:
DIM frase AS STRING
DIM estratto AS STRING
frase = "Eugenio Amitrano Caserta"
'' se dalla frase voglio estrarre Eugenio
estratto = LEFT\$(frase, 7): '' Eugenio e' 7 caratteri
PRINT estratto: Stampera' Eugenio
'' se dalla frase voglio estrarre Caserta
estratto = RIGHT\$(frase, 7)
PRINT estratto: '' Stampera' Caserta
'' se dalla frase voglio estrarre Amitrano
estratto = MID\$(frase, 9, 8) '' Amitrano parte dalla posizione 9 ed e' di 8 caratteri
PRINT estratto: '' Stampera' Amitrano
Esempio 2: commentalo tu questo esempio
DIM parola AS STRING
DIM n AS INTEGER
DIM i AS INTEGER
INPUT "Inserisci una parola: ", parola
n = LEN(parola)
PRINT "La parola" parola "e' composta dalle seguenti lettere:"
FOR i = 1 TO n
PRINT MID\$(parola, i, 1)
NEXT i
Ti e' piaciuto ?
Tutto chiaro ?
Poi, se vuoi ti spieghero' altre funzionalita di queste ultime 3 istruzioni.
A presto,
EugenioA
Hanno funzionalita' simile, e cioe' quella di estrarre n lettere da una stringa.
LEFT\$ parte da sinistra
RIGHT\$ parte da destra
come parametri gli do la stringa e il numero di caratteri che voglio estrarre.
MID\$ da un punto definito dal programmatore
infatti vuole un parametro in piu' che e' il punto da cuivoglio partire:
Esempio 1:
DIM frase AS STRING
DIM estratto AS STRING
frase = "Eugenio Amitrano Caserta"
'' se dalla frase voglio estrarre Eugenio
estratto = LEFT\$(frase, 7): '' Eugenio e' 7 caratteri
PRINT estratto: Stampera' Eugenio
'' se dalla frase voglio estrarre Caserta
estratto = RIGHT\$(frase, 7)
PRINT estratto: '' Stampera' Caserta
'' se dalla frase voglio estrarre Amitrano
estratto = MID\$(frase, 9, 8) '' Amitrano parte dalla posizione 9 ed e' di 8 caratteri
PRINT estratto: '' Stampera' Amitrano
Esempio 2: commentalo tu questo esempio
DIM parola AS STRING
DIM n AS INTEGER
DIM i AS INTEGER
INPUT "Inserisci una parola: ", parola
n = LEN(parola)
PRINT "La parola" parola "e' composta dalle seguenti lettere:"
FOR i = 1 TO n
PRINT MID\$(parola, i, 1)
NEXT i
Ti e' piaciuto ?
Tutto chiaro ?
Poi, se vuoi ti spieghero' altre funzionalita di queste ultime 3 istruzioni.
A presto,
EugenioA
"eugenio.amitrano":
Lore, ho letto l'autopresentazione nel tuo sito, devo congratularmi con te! Devi essere un tipo veramente positvo e sicuramente molto piu' intelligente della norma.
Non osservare pigrizia nell'atteggiamento degli utenti di questo topic, l'entusiasmo che si prova a leggere da un forum piuttosto che da una guida, potrebbe essere incoraggiante e uno stimolo ad apprendere meglio.
Spesso in una guida non si avverte la persona che l'ha realizzata.
Sei daccordo ?
Ila, non trattare male lore che prende le mie difese, hehehe...
non preoccuparti ho appreso l'ironia presente nel tuo modo di essere,
e man mano ti scrivero' esempi delucidanti per le tue ricieste.
EugenioA
No no,non lo volevo mica trattare male,anzi!!!Mi fa piacere che si sia interessato al mio problema...
a volte skerzo (no vabè,spesso!!

ke dire,è così..
non mi scuso neanke più per gli OT,ormai ci sarete tutti abituati!!
"eugenio.amitrano":
Esempio 2: commentalo tu questo esempio
DIM parola AS STRING
DIM n AS INTEGER
DIM i AS INTEGER
INPUT "Inserisci una parola: ", parola
n = LEN(parola)
PRINT "La parola" parola "e' composta dalle seguenti lettere:"
FOR i = 1 TO n
PRINT MID\$(parola, i, 1)
NEXT i
Allora,coi primi comandi credo tu abbia dichiarato quelle parole ("parola","n")come delle stringhe di testo o dei numeri,per renderle comprensibili dal Basic..
poi hai chiesto che l'utente inserisse una parola,calcolare la lunghezza e poi con il ciclo (quello che volevo fare io!!

GRAZIE INFINITE!!!6 un mito!!!!
Pure io voglio chiedere una cosetta a eugeniuzzu..
Allora..
"Tutti" (forse)
sappiamo che per generare dei numeri casuali in VB occorre utilizzare la funzione Randomize con questa struttura:
Randomize
numeroestratto= ((90*Rnd)+1)
'Genera numeri compresi tra 1-90
Ora sorge il mio problema...So a cosa serve sia Randomize ke Rnd, ma perchè si somma 1 e Rnd deve essere moltiplicato al numero massimo che si può estrarre??
Allora..
"Tutti" (forse)

Randomize
numeroestratto= ((90*Rnd)+1)
'Genera numeri compresi tra 1-90
Ora sorge il mio problema...So a cosa serve sia Randomize ke Rnd, ma perchè si somma 1 e Rnd deve essere moltiplicato al numero massimo che si può estrarre??
Giustissimo Ila....sei molto brava.
Mi sa che tra poco sarai tu ad insegnarmi....
....lo so che non volevi trattare male Lore....infatti non l'hai trattato male....
----------------
oh Stellacometa
che brilli nel cielo
di luce perpetua
mentre io ti leggevo
scrivo da me
poeticamente
una risposta per te
randomicamente
(azz .... che poeta!)
RND e' un'istruzione in singola precisione che restituisce valori casuali in singola precisione compresi tra 0 e 1, con 0 e 1 esclusi.
se io moltiplico 10 * RND otterro' valori casuali compresi tra 0 e 10 con 0 e 10 esclusi (Es. da 0.00001 a 9.99999)
quindi le parti intere di questi numeri variano da 0 a 9.
Per questo se VAR = N * RND (dove VAR e' una variabile intera), tale variabile assumera' valori compresi tra 0 ed N-1.
Se voglio che una variabile assuma un valore intero casuale compreso tra MIN e MAX, con MIN e MAX compresi devo utilizzare la seguente forma:
DIM VAR AS INTEGER
VAR = MIN + (MAX - MIN + 1) * RND
Il Randomize serve per far generare all'istruzione RND valori diversi ad agni esecuzione.
Senza Randomize ogni esecuzione, RND mi restituira' sempre gli stessi valori.
Se hai bisogno di ulteriori chiarimenti,
a disposizione.
A presto,
EugenioA
Mi sa che tra poco sarai tu ad insegnarmi....
....lo so che non volevi trattare male Lore....infatti non l'hai trattato male....
----------------
oh Stellacometa
che brilli nel cielo
di luce perpetua
mentre io ti leggevo
scrivo da me
poeticamente
una risposta per te
randomicamente
(azz .... che poeta!)
RND e' un'istruzione in singola precisione che restituisce valori casuali in singola precisione compresi tra 0 e 1, con 0 e 1 esclusi.
se io moltiplico 10 * RND otterro' valori casuali compresi tra 0 e 10 con 0 e 10 esclusi (Es. da 0.00001 a 9.99999)
quindi le parti intere di questi numeri variano da 0 a 9.
Per questo se VAR = N * RND (dove VAR e' una variabile intera), tale variabile assumera' valori compresi tra 0 ed N-1.
Se voglio che una variabile assuma un valore intero casuale compreso tra MIN e MAX, con MIN e MAX compresi devo utilizzare la seguente forma:
DIM VAR AS INTEGER
VAR = MIN + (MAX - MIN + 1) * RND
Il Randomize serve per far generare all'istruzione RND valori diversi ad agni esecuzione.
Senza Randomize ogni esecuzione, RND mi restituira' sempre gli stessi valori.
Se hai bisogno di ulteriori chiarimenti,
a disposizione.
A presto,
EugenioA
Woooooooooooow...che poeta!!! Complimenti!!! 
Ok allora ne approfitto..
Se io volessi che ad ogni estrazione i numeri vengano memorizzati in un vettore e stampati in una textbox, però non voglio ne memorizzare ne stampare un numero che precedentemente è già stato estratto..come faccio??
Ps..Grazie del chiarimento!

Ok allora ne approfitto..
Se io volessi che ad ogni estrazione i numeri vengano memorizzati in un vettore e stampati in una textbox, però non voglio ne memorizzare ne stampare un numero che precedentemente è già stato estratto..come faccio??
Ps..Grazie del chiarimento!

Esempio:
Costruzione di un vettore contenente 10 interi casuali da 1 a 100 senza doppioni.
[scritto in QBASIC]
dovrebbe funzionare.
Le differenze in VB dovrebbero essere Randomize invece di RANDOMIZE TIMER
e una funzione interfaccia che ti inserisce una stringa in una TextBox del Tipo
InsertStringInTextBox(Pannello, Controllo, Stringa) [puramente inventata] al posto del PRINT.
Se avessi il VB installato ti avrei gia' fornito di tale istruzione.
Spero di esserti stato utile lo stesso.
EugenioA
Costruzione di un vettore contenente 10 interi casuali da 1 a 100 senza doppioni.
[scritto in QBASIC]
CONST n = 10, min = 1, max = 100 DIM vett(n) AS INTEGER DIM i, j AS INTEGER RANDOMIZE TIMER FOR i = 0 TO n-1 DO doppiato = 0 vett(i) = min + (max - min + 1) * RND IF i > 0 THEN for j = 0 TO i-1 IF vett(j) = vett(i) THEN doppiato = 1 NEXT j END IF WHILE(doppiato = 1) PRINT "L'elemento"; i+1; "del vettore e'";vett(i) NEXT i
dovrebbe funzionare.
Le differenze in VB dovrebbero essere Randomize invece di RANDOMIZE TIMER
e una funzione interfaccia che ti inserisce una stringa in una TextBox del Tipo
InsertStringInTextBox(Pannello, Controllo, Stringa) [puramente inventata] al posto del PRINT.
Se avessi il VB installato ti avrei gia' fornito di tale istruzione.
Spero di esserti stato utile lo stesso.
EugenioA