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
"lorven":
@stella
ne = CStr(n) 'numero estrazione
a = InputBox(mess, ne) 'visualizza l'InputBox col messaggioe 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
Questo è un metodo ben funzionante..Ma non c'è anche un modo per continuare a estrarre continuando a pigiare lo stesso bottone???
Il mio prof mi ha parlato di variabile globale..sarebbe utile qui?
In che senso continuare a pigiare lo stesso bottone?
Credo che Stella intenda e preferisca una soluzione come la seguente, che fa a meno dell'inputbox per chiedere se continuare o finire.
Basta cliccare sull'unico pulsante del form per procedere alla successiva estrazione.
Qui l'ultimo numero estratto è visualizzato nella caption del form e nel text box sono aggiunti i numeri, man mano che vengono estratti.
Attenzione: se si tenta una 91.ma estrazione, il programma va in loop!
Lascio a Stella la modifica necessaria.
Ciao
Basta cliccare sull'unico pulsante del form per procedere alla successiva estrazione.
Const totnumeri As Integer = 90 Const min = 1, max = 90 Dim numero_estratto As Integer Dim vett(totnumeri) As Integer Dim n As Integer Private Sub Form_load() n = 0 Randomize End Sub Private Sub Command1_Click() numero_ok = False Do Until numero_ok = True numero_estratto = min + Int((max - min + 1) * Rnd) numero_ok = True For i = 1 To n If numero_estratto = vett(i) Then numero_ok = False Exit For End If Next Loop n = n + 1 vett(n) = numero_estratto Text1.Text = Text1.Text + " " + CStr(numero_estratto) Form1.Caption = "Estratto n." + " " + CStr(n) + " = " + CStr(numero_estratto) End Sub
Qui l'ultimo numero estratto è visualizzato nella caption del form e nel text box sono aggiunti i numeri, man mano che vengono estratti.
Attenzione: se si tenta una 91.ma estrazione, il programma va in loop!
Lascio a Stella la modifica necessaria.

Ciao

Ora lo provo..e magari posso mettere un altro bottone che mi rimanda in un'altro form dove vengono visualizzati tutti gli elementi estratti in una lista così viena anche piu "sapuritu"...
Grazie..provo subito!!!
Grazie..provo subito!!!
WooooW..Lorven sei un genio!!! Viene bellissimo!! Magari potessi avere un insegnante come te!! Grazie infinite..mi stai insegnando molto!!!!

Ovviamente sono tornata,questa volta con una curiosità...è possibile disegnare con QB una spirale (magari anche in movimento,cioè che si avvita su stessa..)?????
Grazie a tutti!
Grazie a tutti!
Quoto la stessa domanda ma con Vb!

"stellacometa2003":
Quoto la stessa domanda ma con Vb!
Beh, questa non è programmazione, ma matematica!

Esistono tanti tipi di spirali, di Pascal di Archimede...
Eccone una carina, noi disegnamo in una PictureBox Picture1 di dimensioni 1000x1000.
Il codice seguente buttiamolo in un timer
Static t,v as single For t=0 to 6.3 step 0.1 X=K*t*sin(t+v) Y=K*t*cos(t+v) Picture1.pset(X+500,Y+500) Next v=v+0.1
K è una costante che scegliamo il base a quanto vogliamo far grande la spirale.
Ciao Ciao

Grazie Carlo...ora lo provo, vediamo che ne esce!!
"stellacometa2003":
Grazie Carlo...ora lo provo, vediamo che ne esce!!
Prova, intanto specifico una cosa importante al riguardo.
Per disegnare curve continue con Vb o qualche altro linguaggio che permetta di disegnare punti o linee si può ricorrere a due metodi.
Il primo è il seguente, basta mettere tutto in un ciclo for che disegna singolarmente i singoli punti della curva
FOR t=0 to N 'Qua ci mettiamo le equazioni parametriche il t della curva Picture1.pset(X,Y) NEXT
ovvero dividiamo la curva in N punti che poi disegnamo, questo metodo funziona bene solo se i punti della curva sono molti vicini e quindi da l'impressione della continuità, altrimenti
FOR t=0 to N 'Qua ci mettiamo le equazioni parametriche il t della curva X1 e Y1 saranno le coordinate della 'curva nel punto con parametro t e X2 Y2 le coordinate della curva nel punto con parametro t+1 Picture1.line(X1,Y1)-(X2,Y2) NEXT
quest'altro codice divide la curva in N linette è quindi più indicato per disegnare curve di funzioni che crestono lentamente tipo $ln(x)$ altrimenti la curva diventa una linea spezzata. Importante se calcolare X e Y richiede parecchio sforzo al calcolatore non ha senso farli calcolare 2 volte ogni punto tanto vale memorizzare il suo ultimo valore per utilizzarlo nel ciclo successivo.
STATIC X2,Y2 as single FOR t=0 to N 'Qua ci mettiamo le equazioni parametriche il t della curva X1 e Y1 saranno le coordinate della 'curva nel punto con parametro t Picture1.line(X1,Y1)-(X2,Y2) X2=X1 X2=Y1 NEXT
ricordando solo che al primo ciclo X2 e Y2 saranno uguali a 0 e semmai impostarle diversamente prima del ciclo for.
Ciao Ciao

"IlaCrazy":
Ovviamente sono tornata,questa volta con una curiosità...è possibile disegnare con QB una spirale (magari anche in movimento,cioè che si avvita su stessa..)?????
Grazie a tutti!
Mi ha incuriosito e ci ho provato.
Ovviamente in QBasic la faccenda non e' molto semplice.
CONST ESC = 27 CONST PI = 3.141592 '' Dati spirale CONST kSpeed = 8: '' Velocita' avvitamento CONST kNumberOfFrames = 8: '' Numero Frame Animazione per 360ø di avvitamento CONST kNumberOfCoils = 10: '' Numero di spire della spirale CONST kSizeX = 80, kSizeY = 80: ''Dimensione X e Y della Spirale CONST kColor = 14: '' Colore della spirale - 14 = Giallo '' ################# '' # ATTENZIONE !! # '' ################# '' '' Purtroppo il QBasic e' molto limitato sulla memoria: '' Devi eseguire il seguente calcolo: '' '' Valore = kNumberOfFrames * (4 + INT((kSizeX * kBitsOfPixel + 7) / 8) * kSizeY) '' Il Risultato deve essere minore di 65536 (Valore < 65536) '' '' In pratica piu' Frame vuoi e meno grande deve essere la spirale '' '' Dati Schermo CONST kMode = 12: '' Modalita Schermo 640x480 CONST kBitsOfPixel = 4: '' Bit per pixel - Max 2^4 = 16 colori DIM iMemSize AS INTEGER: '' Memoria occupata da un frame '' Formula per il calcolo della memoria occupata da ogni frame iMemSize = 4 + INT((kSizeX * kBitsOfPixel + 7) / 8) * kSizeY '' Un frame deve essere un vettore grafico di grandezza iMemSize '' Dichiarazione degli n frames DIM gFrame(iMemSize, kNumberOfFrames) AS INTEGER '' Centro della spirale DIM X0, Y0 AS INTEGER X0 = kSizeX / 2 Y0 = kSizeY / 2 '' Coordinate Cartesiane del Generico Punto della Spirale DIM Xp, Yp AS INTEGER '' Coordinate Polari del Generico Punto della Spirale DIM Angle, xRadius, yRadius AS DOUBLE '' Angolo di avvitamento DIM StartAngle AS DOUBLE '' Altre variabili DIM ch AS STRING DIM iCount, iOldCount AS INTEGER SCREEN kMode CLS '' Memorizzazione dell'avvitamento nei vari frame FOR iFrame = 0 TO kNumberOfFrames - 1 LOCATE 24, 1 PRINT "Creazione del Frame N."; iFrame + 1 CIRCLE (kSizeX / 2, kSizeY / 2), kSizeX / 2 - 1, kColor, , , kSizeY / kSizeX '' Calcolo dell'angolo di avvitamento StartAngle = 2 * PI * iFrame / kNumberOfFrames FOR Angle = 0 TO 2 * PI * kNumberOfCoils STEP PI / 180 xRadius = Angle * kSizeX / (2 * PI * kNumberOfCoils) yRadius = Angle * kSizeY / (2 * PI * kNumberOfCoils) Xp = X0 + xRadius * COS(Angle + StartAngle) / 2 Yp = Y0 + yRadius * SIN(Angle + StartAngle) / 2 PSET (Xp, Yp), kColor NEXT Angle GET (1, 1)-(kSizeX, kSizeY), gFrame(0, iFrame) PUT (1, 1), gFrame(0, iFrame), XOR NEXT iFrame SCREEN kMode CLS LOCATE 24, 42 PRINT "Premere ESC per terminare l'animazione" ''Esecuzione dell'animazione finche' non e' premuto il tasto Esc dPause = 1 / kSpeed ''Pausa in secondi DO PUT (1, 1), gFrame(0, iCount), PSET SOUND 32767, dPause * 18.2 ch = INKEY$ iOldCount = iCount iCount = iCount + 1 iCount = iCount MOD kNumberOfFrames PUT (1, 1), gFrame(0, iOldCount), XOR LOOP UNTIL ch = CHR\$(ESC)
A presto,
Eugenio
"eugenio.amitrano":
[quote="IlaCrazy"]Ovviamente sono tornata,questa volta con una curiosità...è possibile disegnare con QB una spirale (magari anche in movimento,cioè che si avvita su stessa..)?????
Grazie a tutti!
Mi ha incuriosito e ci ho provato.
Ovviamente in QBasic la faccenda non e' molto semplice.
....
A presto,
Eugenio[/quote]



pure l'animazione ha inserito Eugenio

Complimenti, davvero

A questo punto, preceduto dia in QB che in VB, posto qualcosina in Pascal, anche se siamo in ambito Basic.
program spirale; (* disegna la spirale di Archimede e la spirale logaritmica *) uses crt, graph; const ns=30; (* numero spire *) Ox=512; (* ascissa origine: num_pix_orizz/2 *) Oy=384; (* ordinata origine: num_pix_vert/2 *) c=3; (* colore pixel *) ds=2; (* distanza tra le spire per spirale di Archimede *) d=1; (* ritardo emissione pixel *) sr= 1; (* senso di rotazione: 1 orario, -1 antiorario *) it=0.01; (* incremento parametro t *) A = 0.2; (* angolo di curvatura della sp. logaritmica *) B = 0.05; (* '' *) sl = 1; (* 1 spirale logaritmica; 0 di archimede *) var r,t:real; var gd,gm:smallint; px,py:integer; procedure init; begin gd:=detect; (*Rileva la scheda video*) InitGraph(gd,gm,''); (*Inizializza la modalità grafica*) if graphresult<>grOK then (*Se si sono verificati errori*) halt(1); (*termina il programma*) end; begin (**** M A I N ****) init; t:=0; while abs(t)<ns*2*pi do begin if sl=1 then r:= A * EXP(B * abs(T)) else r:=ds*t; px:=trunc(r*cos(t))+Ox; py:=trunc(r*sin(t))+Oy; PutPixel(px,py,c); delay(d); t:=t+it*sr; end; CloseGraph; readln; end.
Disegna la spirale di Archimede o la spirale logaritmica (senza animazione)


Grazie infinite a tutti siete grandissimi!!
@Eugenio: my God,è bellizzzzimo molto più di quanto avevo immaginato di fare!!!!!
@Eugenio: my God,è bellizzzzimo molto più di quanto avevo immaginato di fare!!!!!
WooooW..complimenti sia a Eugenio che a lorven..Vedere certe cose in Pascal fa un certo effetto!!!
