QUICK BASIC

IlaCrazy
CIAO!!! :-D :-D
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!! :lol: :lol:

Risposte
eugenio.amitrano
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
-----------------------

eugenio.amitrano
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

IlaCrazy
grazzzzieeeeee!!!

freddofede
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...

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

eugenio.amitrano
La mia miglior guida e' stata l'help in linea.
Cmq. per me e' un piacere fara da tramite.

freddofede
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...

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

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

eugenio.amitrano
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."

eugenio.amitrano
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:
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\$#


eugenio.amitrano
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.

eugenio.amitrano
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

IlaCrazy
"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!! :twisted: )a volte faccio ste battutine sottili sottili..
ke dire,è così..
non mi scuso neanke più per gli OT,ormai ci sarete tutti abituati!!

IlaCrazy
"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!! :wink: ) hai fatto stampare a video tutte le lettere da cui è composta...giusto??

IlaCrazy
GRAZIE INFINITE!!!6 un mito!!!!

stellacometa
Pure io voglio chiedere una cosetta a eugeniuzzu..

Allora..
"Tutti" (forse) :-D 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??

eugenio.amitrano
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

stellacometa
Woooooooooooow...che poeta!!! Complimenti!!! :-D

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

eugenio.amitrano
Esempio:
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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.