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
Oggi sono riuscito a trovare un boco di un'ora per dedicarlo al pc.
Cara Stellacometa,
probabilmente l'algoritmo che hai chiesto non va bene per soddifare le tue esigenze.
Vediamo se ho capito bene il tuo problema e poi ti scrivo un algoritmo:
Ci sono 2 oggetti impiegati:
1) una textbox
2) un pulsante
quando premo il pulsante devono essere inseriti n elementi casuali nella textbox senza ripetizioni.
In particolare ogni pressione del pulsante deve generare n numeri casuali che non sono stati estratti nelle precedenti pressioni.
Giusto ?
Parametri:
a) n1 numeri casuali da generare
b) n2 numeri gia' estratti in precedenza
b) min e max estremi intervallo di generazione
Se n1+n2 > max-min+1 significa che non puo' essere esguita la generazione
(Puoi estrarre 20 numeri interi diversi tra di loro compresi tra 1 e 10 ?)
Memorizza gli elementi della textbox in un vettore vett2 di n2 elementi.
Ogni elemento generato deve essere confrontato prima con tutti gli elementi di vett2 e poi la classica verifica all'interno di vett come nel precedente algoritmo.
Prova a buttar giu' un codice e poi se non ti funziona lo vediamo insieme.
Ok ????
Buona Domenica a tutti.
EugenioA
probabilmente l'algoritmo che hai chiesto non va bene per soddifare le tue esigenze.
Vediamo se ho capito bene il tuo problema e poi ti scrivo un algoritmo:
Ci sono 2 oggetti impiegati:
1) una textbox
2) un pulsante
quando premo il pulsante devono essere inseriti n elementi casuali nella textbox senza ripetizioni.
In particolare ogni pressione del pulsante deve generare n numeri casuali che non sono stati estratti nelle precedenti pressioni.
Giusto ?
Parametri:
a) n1 numeri casuali da generare
b) n2 numeri gia' estratti in precedenza
b) min e max estremi intervallo di generazione
Se n1+n2 > max-min+1 significa che non puo' essere esguita la generazione
(Puoi estrarre 20 numeri interi diversi tra di loro compresi tra 1 e 10 ?)
Memorizza gli elementi della textbox in un vettore vett2 di n2 elementi.
Ogni elemento generato deve essere confrontato prima con tutti gli elementi di vett2 e poi la classica verifica all'interno di vett come nel precedente algoritmo.
Prova a buttar giu' un codice e poi se non ti funziona lo vediamo insieme.
Ok ????
Buona Domenica a tutti.
EugenioA
Ila, sei riuscita a realizzare quegli esempi ?
Sono sicuro di si !
o no ?
Sono sicuro di si !
o no ?
Rieccomi..mi rimetto subito a lavoro!!!
"eugenio.amitrano":
Ila, sei riuscita a realizzare quegli esempi ?
Sono sicuro di si !
o no ?
due sono un pò difficilotti..per gli altri te li posto domani,ti ho lasciato un p. di tempo per fare le scorte di munizioni!

comunque mi sto appassionando(per quel che ci capisco...

Allora..mi sono fatta questo..però a questo punto non so più dove sbattere la testa perchè con questo codice su 44 estrazioni 7 erano doppioni:
Se qualcuno capisce l'ORRORE venga a salvarmi da questo scempio!!!
Dim vett() As Integer Dim numero_estratto As Integer Const totnumeri As Integer = 90 Const min = 1, max = 90 Private Sub Command1_Click() Randomize ReDim vett(1 To totnumeri) For n = 1 To totnumeri numero_ok = False Do Until numero_ok = True numero_estratto = min + (max - min + 1) * Rnd If n = 1 Then numero_ok = True vett(n) = numero_estratto Else Do For i = 1 To n If numero_estratto = vett(i) Then numero_estratto = min + (max - min + 1) * Rnd numero_ok = False Exit For Else numero_ok = True End If Next Loop Until numero_ok = True End If If numero_ok = True Then vett(n) = numero_estratto Text1.Text = CStr(numero_estratto) End If Loop Next End Sub
Se qualcuno capisce l'ORRORE venga a salvarmi da questo scempio!!!

@stellacometa
Ho modificato il tuo codice, contenente errori e ridondanze.
Dovrebbe funzionare; spero sia comprensibile.
Ho modificato il tuo codice, contenente errori e ridondanze.
Dim vett() As Integer Dim numero_estratto As Integer Const totnumeri As Integer = 90 Const min = 1, max = 90 Private Sub Command1_Click() Randomize ReDim vett(1 To totnumeri) For n = 1 To totnumeri numero_ok = False Do Until numero_ok = True numero_estratto = min + Int((max - min + 1) * Rnd) numero_ok = True For i = 1 To n - 1 If numero_estratto = vett(i) Then numero_ok = False Exit For End If Next Loop vett(n) = numero_estratto Text1.Text = Text1.Text + CStr(numero_estratto) + "," Next End Sub
Dovrebbe funzionare; spero sia comprensibile.

"eugenio.amitrano":
Ciao Ila,
fammi pensare come posso renderti la vita difficile.
Hehehehe....
Esercizio 1: (FRASE)
Discutere una frase inserita dall'utente.
Contare il numero di lettere, parole e punteggiatura.
Esercizio 2: (PIANOLA)
Rendere la tastiera del pc una sorta di strumento musicale tipo pianola con le seguenti caratteristiche:
tasto A 100Hz
tasto B 200Hz
...
tasto Z 2600Hz
ogni volta che premo un tasto da A a Z deve emettere un suono di 0,3 secondi della frequenza indicata sopra. con il tasto ESC esce dal programma.
Esercizio 3: (CAOS)
Stampare caualmente circonferenze e linee di vari colori e lunghezze all'interno dello schermo 640x480
finche' non e' premuto il tasto INVIO
Esercizio 4: (CENTRO)
Stampare al centro dello schermo una parola inserita dall'utente.
------------
Se ci rifletti bene, non sono molto piu' difficili degli esempi che abbiamo visto in passato, sono solo un po' piu' lunghi.
Comunque non ti lascio sola in questa impresa, chiedimi tutto cio' che ti occorre.
In bocca al lupo,
EugenioA
@Eugenio:
Esercizio 1 (frase)
Sono riuscita a far contare il numero di lettere,ma ovviam per le parole e gli spazi..nada!

intanto ti dico quello che ho fatto:
CLS
DIM frase AS STRING
DIM lettere AS INTEGER
DIM parole AS INTEGER
DIM spazi AS INTEGER
INPUT “inserisci una frase:”,frase
Lettere= LEN(frase)
Print lettere
Esercizio 3 (caos)
In realtà ho trovato diverse soluzioni,ma provo a metterti quella che mi sembra meno stupida…

CLS
SCREEN 13
RANDOMIZE TIME
n=100
q=n+1000
WHILE INKEY$= “150”
LINE (rnd*q,rnd*q)-(rnd*q,rnd*q)
CIRCLE (rnd *q,rnd *q), rnd *q, rnd *q
WEND
END
Per capire quale era il codice del tasto invio,ho usato questo procedimento:
DIM ris AS INTEGER
ris= ASC (“invio”)
PRINT ris
Solamente che tu mi hai chiesto di far stampare cerchi e linee di lunghezze diverse,quindi sto pensando di fare un ciclo col FOR.. STEP.. NEXT..per far cambiare i valori…però non so..
Gli altri sono in fase di elaborazione…..ehm…


Lorven..niente da fare fa lo stesso delle ripetizioni...
Inizio a pensare che non esista soluzione!!!
Inizio a pensare che non esista soluzione!!!



@stella
Ho verificato più volte il programma.
Impossibile che a me funzioni correttamente e a te no!
Hai fatto un copia/incolla?
Ho verificato più volte il programma.

Impossibile che a me funzioni correttamente e a te no!

Hai fatto un copia/incolla?

si si..Ho copiato per intero il tuo...fai una cosa però..invece di farli visualizzare tutti insieme, visualizzali nella text ad uno ad uno!!! Se ti viene poi mi passi il codice...
aspetto l'esito!
aspetto l'esito!
A rivederlo ho notato una cosa...se i numeri li faccio apparire tutti insieme allora questi non si ripetono..ma se invce lo faccio uno per volta allora si..e questo mi pare anche ovvio visto che ad ogni click del pulsante corrisponde uno nuovo codice che così non tiene in considerazione il vecchio numero! Alla fine i nostri codici erano sulla giusta via ma abbiamo lasciato èper scontato il fatto ogni click corrisponde ad un nuovo codice!!! Di moriri!!! Incredibile... A questo punto chiedo: c'è un modo per fare un click e in vedere nella text in alternanza i numeri??
@stella
Chiedo venia se rispondo tardi: mi si è bloccato il pc nella prova!
Comunque, ecco una possibile soluzione per estrarre 90 numeri, tutti diversi, uno per volta.
Chiedo venia se rispondo tardi: mi si è bloccato il pc nella prova!
Comunque, ecco una possibile soluzione per estrarre 90 numeri, tutti diversi, uno per volta.
Dim vett() As Integer Dim numero_estratto As Integer Dim a As String Dim ne As String Const totnumeri As Integer = 90 Const min = 1, max = 90 Const mess = "INVIO: continua; Q: fine" Private Sub Command1_Click() Randomize ReDim vett(1 To totnumeri) For n = 1 To totnumeri numero_ok = False Do Until numero_ok = True numero_estratto = min + Int((max - min + 1) * Rnd) numero_ok = True For i = 1 To n - 1 If numero_estratto = vett(i) Then numero_ok = False Exit For End If Next Loop vett(n) = numero_estratto Text1.Text = CStr(numero_estratto) ne = CStr(n) a = InputBox(mess, ne) If UCase(a) = "Q" Then Exit For Next End Sub

Grazie mille..mi stupisco sempre ad osservare come risolvi sempre tutto..Una cosa, mi spieghi l'ultimo blocco di istruzioni?
Ti ringrazio tantissimo per il tuo aiuto lorven, come al solito!!!
Ora vado però..lo leggerò domani!!!
Ciao
Ti ringrazio tantissimo per il tuo aiuto lorven, come al solito!!!
Ora vado però..lo leggerò domani!!!
Ciao
@stella
ne = CStr(n) 'numero estrazione
a = InputBox(mess, ne) 'visualizza l'InputBox col messaggio e il n.ro di estrazione
If UCase(a) = "Q" Then Exit For 'Se Click su OK o si batte INVIO, prosegue; se si batte q oppure Q, finisce
ciao, vado via anch'io
ne = CStr(n) 'numero estrazione
a = InputBox(mess, ne) 'visualizza l'InputBox col messaggio
If UCase(a) = "Q" Then Exit For 'Se Click su OK o si batte INVIO, prosegue; se si batte q oppure Q, finisce
ciao, vado via anch'io

Grazie mille ancora!!!!

Ciao tutti.
Bello l'utilizzo della @ per richiamare l'attenzione di un utente.
@lorven
Un sentito ringraziamento da parte mia per avermi aiutato in questo topic.
Lo farai ancora, vero ? Spero proprio di si.
@Stella
Sono molto felice che hai finalmente risolto il problema.
Un espressione usuale tua per l'occasione: WoooooooooooooooooooW !
@Ila
l'Esercizio 1 e' giusto fino al punto che sei arrivata (molto bene) mentre l'Esercizio 3 ha la forma giusta ma non i concetti.
Sono sicuro che non ti sei impegnata molto e che se lo farai riuscirai a svolgerli. (Non mollare, FORZA ILACRAZY !!!!)
Se proprio non ci riesci domani ti aiutero' a capire la soluzione.
Per non lasciarti completamente a mani vuote, ecco alcuni suggerimenti.
Per l'esercizio 1:
tramite MID\$ e un ciclo FOR hai la possibilita' di vedere carattere per carattere com'e' composta la frase, (ricordi qualche esempio fa ?) se tale carattere e' uno spazio incrementa la variabile spazi. Per il conteggio delle parole lascio ancora alla tua fantasia.
Per l'esercizio 3:
il carattere invio e' CHR\$(13), tu hai fatto l'asc della parola "invio" (che non ha senso) e non del tasto invio.
Ti scrivo un programmino che ti restituisce il codice ascii di un tasto premuto dalla tastiera finche' non e' premuto ESC:
(non l'ho compilato, controlla eventuali errori)
CONST ESC = 27
DIM CH AS STRING
DIM CODICE AS INTEGER
SCREEN 0
CLS
DO
PRINT "Premere un tasto: "
CH = INPUT\$(1)
CODICE = ASC(CH)
PRINT "Il codice del tasto premuto e'"; CODICE
LOOP UNTIL(CH = CHR\$(ESC))
PRINT "Programma terminato."
Un ulteriore consiglio per l'esercizio 3 e' l'utilizzo delle costanti MAXX = 639, MAXY = 479, MAXCOL = 15
credo ti aiuteranno a capire il calcolo delle coordinate casuali.
A presto,
EugenioA
Bello l'utilizzo della @ per richiamare l'attenzione di un utente.
@lorven
Un sentito ringraziamento da parte mia per avermi aiutato in questo topic.
Lo farai ancora, vero ? Spero proprio di si.
@Stella
Sono molto felice che hai finalmente risolto il problema.
Un espressione usuale tua per l'occasione: WoooooooooooooooooooW !
@Ila
l'Esercizio 1 e' giusto fino al punto che sei arrivata (molto bene) mentre l'Esercizio 3 ha la forma giusta ma non i concetti.
Sono sicuro che non ti sei impegnata molto e che se lo farai riuscirai a svolgerli. (Non mollare, FORZA ILACRAZY !!!!)
Se proprio non ci riesci domani ti aiutero' a capire la soluzione.
Per non lasciarti completamente a mani vuote, ecco alcuni suggerimenti.
Per l'esercizio 1:
tramite MID\$ e un ciclo FOR hai la possibilita' di vedere carattere per carattere com'e' composta la frase, (ricordi qualche esempio fa ?) se tale carattere e' uno spazio incrementa la variabile spazi. Per il conteggio delle parole lascio ancora alla tua fantasia.
Per l'esercizio 3:
il carattere invio e' CHR\$(13), tu hai fatto l'asc della parola "invio" (che non ha senso) e non del tasto invio.
Ti scrivo un programmino che ti restituisce il codice ascii di un tasto premuto dalla tastiera finche' non e' premuto ESC:
(non l'ho compilato, controlla eventuali errori)
CONST ESC = 27
DIM CH AS STRING
DIM CODICE AS INTEGER
SCREEN 0
CLS
DO
PRINT "Premere un tasto: "
CH = INPUT\$(1)
CODICE = ASC(CH)
PRINT "Il codice del tasto premuto e'"; CODICE
LOOP UNTIL(CH = CHR\$(ESC))
PRINT "Programma terminato."
Un ulteriore consiglio per l'esercizio 3 e' l'utilizzo delle costanti MAXX = 639, MAXY = 479, MAXCOL = 15
credo ti aiuteranno a capire il calcolo delle coordinate casuali.
A presto,
EugenioA
grazie...spero di cavarci fuori qualcosa!!!!!
ciao!!!
ciao!!!
"eugenio.amitrano":
Ciao tutti.
@Ila
(non l'ho compilato, controlla eventuali errori)
CONST ESC = 27
DIM CH AS STRING
DIM CODICE AS INTEGER
SCREEN 0
CLS
DO
PRINT "Premere un tasto: "
CH = INPUT\$(1)
CODICE = ASC(CH)
PRINT "Il codice del tasto premuto e'"; CODICE
LOOP UNTIL(CH = CHR\$(ESC))
PRINT "Programma terminato."
ovviamente funziona!!


ma scusa la domanda ti sembrerà stupida,ma qual è la funzione di INPUT$(1) nel tuo programma??
tutto il resto l'ho capito,ma..


grassie!!!!!!
Ciao Ila,
L'istruzione "stringa = INPUT\$(n)" serve per richiedere all'utente precisamente n caratteri da inserire in una stringa.
Eugenio
L'istruzione "stringa = INPUT\$(n)" serve per richiedere all'utente precisamente n caratteri da inserire in una stringa.
Eugenio