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!!!