Minicorso di programmazione per L8+ By Danilo!

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    sean69

    Group
    Administrator
    Posts
    5,897
    Location
    Provincia di Roma..

    Status
    Offline

    lottoscript




    Minicorso di programmazione per L8 versione 5.0 e superiori


    By Danilo





    Per iniziare con quest’avventura diciamo che non sono un grande esperto di programmazione,
    cerco di cavarmela guardando esempi vari e leggendo qua e là nel manuale in linea del programma,
    spero che questo mio minicorso serva almeno a chi di programmazione è completamente digiuno.
    Iniziamo dicendo che per fare un listato occorre seguire delle regole, facili ma ben precise, pena
    il non funzionamento dello stesso, qualsiasi listato noi andremo a fare dovrà iniziare e terminare
    con le istruzioni seguenti:
    Sub main()
    ...
    ...
    End Sub
    Queste dicono al programma che vogliamo fare un listato, che inizia con Sub main(), eseguirà tutte
    le istruzioni seguenti in modo sequenziale fino a trovare l'ultima istruzione End Sub che indicherà
    che il listato è terminato, e fin qui direte voi ci arrivavo da solo, bene allora andiamo avanti un
    passo alla volta.
    Per qualsiasi tipo di listato noi vogliamo fare dobbiamo impostare dei parametri che serviranno
    al programma per capire cosa vogliamo che faccia per noi, per prima cosa cerchiamo di capire
    certi termini che si useranno proseguendo in questo corso,
    VARIABILE - VETTORE - CICLO - CONDIZIONE
    queste sono alcune delle espressioni che si useranno andando avanti, vediamo di capire cosa si
    intende con queste parole,
    Variabile - una variabile è un contenitore per un dato variabile, per esempio :
    n=Estratto(es,1,1)
    n è una variabile che contiene l'estratto dell'esempio, a seconda dell'estrazione che noi andremo ad
    analizzare il dato contenuto in n sarà diverso.
    Vettore - un vettore è un contenitore che contiene una serie di dati, per esempio:
    Dim poste(5)
    poste(1)=1
    poste(2)=1
    poste(3)=1
    poste(4)=1
    poste(5)=1
    poste è un vettore che contiene i 5 dati relativi alle poste di gioco, come vedete abbiamo una
    istruzione in piu, Dim poste(5) che è indispensabile, un vettore và sempre " dimensionato "
    cioè dobbiamo dire al programma quanti dati dovrà contenere quel vettore, dopo dovremo
    " assegnare " ad ogni valore contenuto nel vettore il suo valore, come nell'esempio abbiamo
    assegnato ad ognuno dei 5 elementi del vettore ( poste(1), poste(2) ecc. ) un valore, =1 che
    vuol dire che la poste(1) ( che è l'Ambata) sarà di 1, la poste(2)( che è l'Ambo) sarà di 1 ecc. ecc.
    La stessa cosa sarà per le ruote, per i numeri da mettere in gioco, e per qualsiasi altra necessità noi
    abbiamo per fare quello che vogliamo, ho fatto l'esempio delle poste perchè lo useremo quasi
    sempre nella stesura dei nostri listati, come gli altri citati che servono per poter effettuare una
    giocata.
    Ciclo - un ciclo serve per effettuare una serie definita di istruzioni, per effetuare un ciclo si usano
    le seguenti istruzioni:
    For R = 1 To 10
    .....
    ....
    Next
    come vedete le istruzioni per fare un ciclo sono due, la prima " For R = 1 To 10 " come vedete fà
    uso di una Variabile " R " a cui assegnare un valore, il significato di questa istruzione è questo:
    For R alla variabile R assegna un valore " 1 To 10 " da 1 a 10 incrementando questo valore
    ogni volta che arrivi all'istruzione Next
    Esempio:
    For R = 1 To 10
    n(R)=Estratto(es,R,1)
    Next
    questo blocco di istruzioni assegna ai 10 elementi del vettore n che avremmo dimensionato a 10
    elementi in precedenza[ Dim n(10) ], ogni elemento conterrà l'estratto assegnato:
    primo giro: R=1 n(R) è = a n(1) e gli assegnamo L'Estratto(es,1,1) ( 1° di Bari )
    secondo giro: R=2 n(R) è = a n(2) e gli assegnamo L'Estratto(es,2,1) ( 1° di Cagliari )
    terzo giro: R=3 n(R) è = a n(3) e gli assegnamo L'Estratto(es,3,1) ( 1° di Firenze )
    così via fino ad arrivare a 10, arrivato a dieci il programma esce dal ciclo e continua con le
    istruzioni che troverà dopo...., sembra complicato ma in realtà è molto semplice, nel senso che il
    programma esegue le istruzioni così come noi le mettiamo in sequenza, quando facciamo un ciclo
    come nell'esempio sappiamo che il programma eseguirà quel determinato numero di volte quella
    serie di istruzioni che si trova fra le istruzioni For .... To .... e Next poi proseguirà con le
    successive istruzioni.
    Condizione - lo dice la parola stessa, poniamo una condizione al programma, questa
    condizione la poniamo per verificare se un determinato dato ha le
    caratteristiche che noi vogliamo, in modo da condizionare l'esecuzione del listato
    nella sua prosecuzione, l'esempio piu semplice è quello della individuazione di
    una determinata estrazione in cui noi vogliamo successivamente elaborare dei
    dati, vediamo l'esempio:
    If IndiceMensile(es)=1 Then
    .........
    .......
    End If
    come vedete anche questa è una istruzione composta, cioè ha un inizio ed una fine come il ciclo,
    il significato di questa istruzione è il seguente:
    If se l' Indice Mensile dell'estrazione in esame (es) è = ad 1 Then esegui le istruzioni
    che seguono, se invece l'Indice Mensile non è = a 1 salta tutte le istruzioni seguenti fino alla
    istruzione End If compresa ed esegui le restanti istruzioni.
    seguendo sempre gli esempi pratici se vogliamo che una giocata venga conteggiata alla prima del
    mese(e giocata naturalmente dalla successiva) dovremo scrivere le istruzioni in questo modo:
    Sub main()
    Dim posta(5)
    Dim ruota(10)
    Dim n(2)
    posta(1)=1
    ruota(1)=5
    For es=7200 To EstrazioneFin
    If IndiceMensile(es)=1 Then
    n(1)=20
    n(2)=15
    ImpostaGiocata 1,n,ruota,posta,5,1
    Gioca es
    End If
    Next
    ScriviResoconto
    End Sub
    questo è un esempio completo di listato, cosa andiamo a fare ?
    abbiamo impostato le nostre istruzioni per dire al programma dove inizia e dove finisce, abbiamo
    dimensionato ed assegnato i vettori ed i relativi valori che ci interessano, posta, ruota, numeri (n),
    abbiamo messo un ciclo per far girare le estrazioni che vogliamo analizzare, dall'estrazione con
    indice in archivio 7200 all'ultima estrazione inserita nell'archivio ( EstrazioneFin ), abbiamo poi
    inserito una condizione, vediamo come si susseguono le istruzioni in modo da capire come lavora
    il nostro listato:
    Dopo le varie assegnazioni( ruote,poste, ecc. ) il programma trova l'istruzione del ciclo, For es ...
    cioè inizierà andando a prendere l'estrazione " es " cioè la 7200 che corrisponde all'estrazione del
    15-01-2003 che era la quinta estrazione del mese,
    subito a seguire trova l'istruzione If IndiceMensile(es)=1 e naturalmente NON è la prima
    estrazione del mese quella, perciò come abbiamo detto non essendo la condizione " vera " il listato
    andrà ad eseguire le istruzioni seguenti l' End If , cioè l'istruzione Next, cosa vuol dire, vuol dire
    che farà girare il ciclo, cioè l'esecuzione ritornerà al ciclo For es= ed aumentreà di 1 es che ora
    sarà 7201, le condizioni sono uguali e ripeterà ancora lo stesso giro fino a quando es sarà una
    prima estrazione del mese, nel nostro caso lo sarà quando es sarà = 7205 che è l'estrazione del
    01-02-2003 cioè una prima del mese, a quel punto la condizione If IndiceMensile(es)=1
    sarà " vera " ed allora il listato eseguirà le istruzioni contenute all'interno del blocco If .... End If
    cioè assegnerà agli elementi del vettore dei numeri i numeri da giocare, imposterà la giocata ed
    effettuarà la giocata stessa per i colpi specificati e per la sorte impostata.
    Effettuate queste istruzioni incontrerà di nuovo l'istruzione Next che farà avanzare il ciclo come
    prima di una estrazione alla volta fino a trovare la prossima prima del mese dove rieffettuerà la
    giocata e così via fino ad arrivare all'ultima estrazione in archivio, arrivati all'ultima in archivio
    anche il ciclo sarà concluso ed il listato proseguirà con le istruzioni trovando l' End Sub cioè la fine
    del listato ed arresterà l'esecuzione dello stesso.
    Adesso proviamo a scrivere un listato reale, proviamo a scrivere uno dei listati che normalmente
    uso io per provare i vari Metodi di Matematica Sommativa, scriviamo prima la struttura base del
    listato poi andremo ad inserire le giocate.
    Diciamo che abbiamo passato la notte a cercare una combinazione che ci dia dei buoni risultati e
    vogliamo vedere se anche nel passato ci ha dato buoni esiti, noi con le nostre prove abbiamo
    analizzato gli ultimi sei mesi, adesso proviamo a scrivere un listato per vedere cosa ha fatto questo
    Metodo negli ultimi 3 anni, cominciamo a scrivere:
    Sub main() inizio del listato
    Dim posta(5) dimensiono il vettore delle poste
    Dim ruota(10) dimensiono il vettore delle ruote
    Dim n(10) dimensiono il vettore dei numeri da giocare
    posta(1)=1 assegno alla posta 1 Ambata il valore di 1
    ruota(1)=5 assegno alla prima ruota la ruota di MI 5
    For es=6877 To EstrazioneFin imposto il ciclo per le estrazioni dal 01-01-2000
    If IndiceMensile(es+1)=1 Then metto la condizione che sia l'ultima del mese
    n(1)=Fuori90(Estratto(es,1,1)+Estratto(es,9,4)+86) assegno le combinazioni
    n(2)=Fuori90(Estratto(es,4,1)+Estratto(es,7,5)+3) ai numeri da giocare
    ImpostaGiocata 1,n,ruota,posta,8,1 imposto la giocata
    Gioca es metto in gioco la giocata
    End If fine della condizione
    Next fine dell'istruzione del ciclo estrazioni
    ScriviResoconto questa istruzione ci scrive un resoconto dei risultati
    End Sub fine del listato
    ecco quà il nostro listato, provate a scriverlo ed a eseguirlo, solo così si impara, provando e
    riprovando altrimenti impariamo solo a copiare e quello lo sappiamo già fare.
    Alcune precisazioni, come consuetudine noi chiamiamo i vettori e le variabili con nomi
    che già da soli ci dicono cosa stiamo facendo, è la stessa identica cosa se noi li chiamiamo pippo o
    pluto anzichè posta e ruota, i nomi li diamo noi come ci piacciono, naturalmente è piu leggibile un
    listato come quello sopra che un listato come questo:
    Sub main()
    Dim pippo(5)
    Dim pluto(10)
    Dim mele(10)
    pippo(1)=1
    pluto(1)=5
    For vasi=6877 To EstrazioneFin
    If IndiceMensile(vasi+1)=1 Then
    mele(1)=Fuori90(Estratto(vasi,1,1)+Estratto(vasi,9,4)+86)
    mele(2)=Fuori90(Estratto(vasi,4,1)+Estratto(vasi,7,5)+3)
    ImpostaGiocata 1,mele,pluto,pippo,8,1
    Gioca vasi
    End If
    Next
    ScriviResoconto
    End Sub
    ma se provate vedete che funzionano nello stesso identico modo, l'importante è fare sempre
    riferimento ai nomi assegnati, se vedete nei due esempi si notano subito i riferimenti, il ciclo
    delle estrazioni che sopra lo abbiamo chiamato " es " sotto lo abbiamo chiamato " vasi ", tutto
    quello che fà riferimento all'estrazione in esame deve far riferimento al nome assegnato, vedete
    la condizione: If IndiceMensile(vasi+1)=1 Then - If IndiceMensile(es+1)=1 Then
    gli estratti: Fuori90(Estratto(vasi,1,1) - Fuori90(Estratto(es,1,1)
    la giocata: Gioca vasi - Gioca es
    così via anche per le altre voci, nessuno ci impedisce di usare un nome rispetto all'altro ma è
    sicuramente meglio dare dei nomi intuibili alla prima occhiata.
    Una piccola spiegazione anche alle istruzioni che abbiamo usato in questo listato ed ancora non
    accennate prima,
    EstrazioneFin - abbiamo già visto che questa istruzione ci consente di individuare l'ultima
    estrazione in archivio, la possiamo usare in tutte quelle occasioni in cui si deve individuare appunto
    l'ultima estrazione in archivio.
    IndiceMensile - serve per individuare l'indice mensile dell'estrazione che stiamo esaminando
    Fuori90( operazione ) - questa automaticamente ci toglie il 90 da somme che lo superano
    esempio:
    Fuori90(Estratto(es,1,1)+Estratto(es,9,4)+86) ammettiamo che i due estratti siano 25 e 72
    l'operazione sopra equivale a:
    Fuori90( 25 + 72 + 86 ) che equivale a dire: se la somma 25+72+86 è superiore a 90 togli 90
    25 + 72 + 86 = 183 - 90 = 93 -90 = 3 ecco toglie 90 fino a quando si ha un numero compreso
    fra 1 e 90 cioè giocabile al lotto.
    Estratto(estrazione , ruota , posizione estratto) questa restituisce l'estratto indicato dai parametri
    inseriti fra le parentesi che sono,
    l'estrazione che stiamo analizzando, ecco l'importanza del riferimento che abbiamo detto prima, se
    l'estrazione in esame la abbiamo chiamata " es " inseriremo
    il riferimento " es" se lo abbiamo chiamato in modo diverso andremo ad inserire il nome che
    abbiamo usato,
    La ruota dell'estratto che vogliamo in numerazione da 1 a 10 che equivale a 1-BA 2-CA..... 10-VE
    si possono usare anche riferimenti letterali prestabiliti, BA_ CA_ FI_ ..... VE_ anche se
    secondo me è sempre meglio usare la numerazione, anche perchè potremmo scrivere listati in cui la
    ruota può cambiare usando una variabile ed a quel punto l'uso della numerazione è indispensabile.
    La posizione estratto, cioè in quale posizione estrattiva è l'estratto che vogliamo, 1° 2° 3° 4° o 5°
    tornando al nostro esempio sopra avremo:
    Fuori90(Estratto(es,1,1)+Estratto(es,9,4)+86) nell'estrazione " es " il 1° estratto di BA (es,1,1)
    da sommare al 4° estratto di TO (es,9,4) a cui sommare il fisso 86, il tutto racchiuso dentro
    all'istruzione Fuori90 in modo da avere subito il numero giocabile da assegnare al primo elemento
    del nostro vettore contenente i numeri da mettere in gioco:
    n(1)=Fuori90(Estratto(es,1,1)+Estratto(es,9,4)+86)
    Andiamo avanti con le spiegazioni delle istruzioni usate,
    ImpostaGiocata 1,n,ruota,posta,8,1 con questa istruzione andiamo a impostare la nostra
    giocata, cioè come la leggiamo così si intende,
    Imposta la Giocata numero 1, numero 2, numero 3 fino ad un massimo di 50 giocate,
    giocami i numeri contenuti dentro gli elementi del vettore n, sulle ruote contenute negli elementi
    del vettore ruota, giocameli per le poste contenute negli elementi del vettore posta, me li giochi per
    8 colpi, interrompi il gioco all'uscita di 1 numero.
    questo è letteralmente il significato della impostazione della giocata, ho fatto sempre riferimento
    agli " elementi " contenuti nei vettori perchè noi possiamo dimensionare i vettori per le ruote a 10
    per le poste a 5 perchè sono il massimo che possiamo usare, le ruote sono 10 e le poste 5, questo lo
    facciamo per comodità, nel senso che quando abbiamo imparato a fare listati la parte comune degli
    stessi la copiamo, così se le impostazioni sono quelle standard andranno sempre bene,
    ma naturalmente noi andremo ad "assegnare" solo quello che ci serve, nel nostro esempio noi
    abbiamo assegnato solamente il primo elemento del vettore delle ruote : ruota(1)=5 ed il solo primo
    elemento del vettore delle poste : posta(1)=1 , per il vettore dei numeri da giocare invece abbiamo
    assegnato i primi due : n(1)=Fuor.... n(2)=Fuor..... perchè il nostro " Metodo " deve mettere in
    gioco appunto 2 numeri per la sorte di Ambata, se volessimo per esempio giocare gli stessi numeri
    anche per la sorte di Ambo basterebbe solamente "assegnare" anche questa posta : posta(2)=1 ed
    il nostro listato ci verificherà sia la giocata di Ambata che quella di Ambo, naturalmente come
    abbiamo impostato la giocata ci fermerà sempre il gioco alla prima uscita di Ambata, se invece
    vogliamo che interrompa il gioco all'uscita dell'Ambo dovremo oltre che assegnare la posta
    cambiare anche l'interruzione nell'impostazione della giocata:
    ImpostaGiocata 1,n,ruota,posta,8,2 questa ultima cifra è appunto la sorte per cui si interrompe la
    giocata, il numero precedente invece è il numero dei colpi(8) per cui giocare la giocata.
    Sub main() inizio del listato
    Dim posta(5) dimensiono il vettore delle poste
    Dim ruota(10) dimensiono il vettore delle ruote
    Dim n(10) dimensiono il vettore dei numeri da giocare
    posta(1)=1 assegno alla posta 1 Ambata il valore di 1
    posta(2)=1 assegno alla posta 2 Ambo il valore di 1
    ruota(1)=5 assegno alla prima ruota la ruota di MI 5
    For es=6877 To EstrazioneFin imposto il ciclo per le estrazioni dal 01-01-2000
    If IndiceMensile(es+1)=1 Then metto la condizione che sia l'ultima del mese
    n(1)=Fuori90(Estratto(es,1,1)+Estratto(es,9,4)+86) assegno le combinazioni
    n(2)=Fuori90(Estratto(es,4,1)+Estratto(es,7,5)+3) ai numeri da giocare
    ImpostaGiocata 1,n,ruota,posta,8,2 imposto la giocata
    Gioca es metto in gioco la giocata
    End If fine della condizione
    Next fine dell'istruzione del ciclo estrazioni
    ScriviResoconto questa istruzione ci scrive un resoconto dei risultati
    End Sub
    ecco il listato modificato per l'occasione, mi raccomando scrivete e provate i listati!!!!!!
    se li copiate non imparerete mai!!!!!!!
    Dopo aver impostato la nostra o le nostre giocate le mettiamo in gioco con l'istruzione:
    Gioca es
    questa istruzione così semplice è in realtà una delle piu complesse, nel senso che per noi è semplice
    ma all'interno del programma è quella che effettua il lavoro maggiore, quando noi facciamo
    eseguire al programma questa istruzione, deve mettere in pratica ciò che gli abbiamo detto di fare
    con le istruzioni ImpostaGiocata , cioè verifica cosa ha fatto la nostra giocata nei colpi successivi
    indicati, fino a che è una sola giocata di due numeri per Ambata per 8 colpi il lavoro è poco, provate
    ad immaginare il lavoro che deve svolgere questa semplice istruzione se deve provare 10 quartine
    per Ambo,Terno e Quaterna, per 12 colpi magari su 3 ruote...... questo solo per dire che a volte le
    cose che sembrano semplici in realtà sono tuttaltro.
    ScriviResoconto questa istruzione ci farà come dice la parola stessa un resoconto dei risultati della
    nostra prova, se abbiamo diverse giocate possiamo anche avere un resoconto per ogni giocata,
    basterà mettere il numero della giocata dopo l'istruzione:
    Esempio: se abbiamo 3 giocate e vogliamo il resoconto di ogni singola e quello totale
    ScriviResoconto 1 resoconto giocata 1
    ScriviResoconto 2 resoconto giocata 2
    ScriviResoconto 3 resoconto giocata 3
    ScriviResoconto resoconto Totale di tutte le giocate
    se le giocate sono molte si può scrivere anche così
    For x=1 To 30
    ScriviResoconto x
    Next
    cioè facciamo un ciclo che scrive per noi i 30 resoconti, se poi vogliamo anche quello generale....
    For x=1 To 30
    ScriviResoconto x
    Next
    ScriviResoconto
    prima scriviamo i 30 resoconti poi scriviamo il resoconto Totale
    Ricordate sempre che questo tipo di programmazione è sequenziale, cioè le istruzioni vanno inserite
    nella sequenza che vogliamo siano eseguite, con le ricorsioni e le condizioni che vogliamo ma resta
    sempre un susseguirsi di istruzioni da eseguire.
    Qui sotto vi metto il listato completo del metodo che abbiamo trattato nell'esempio,
    Sub main()
    Dim ruote(10)
    Dim numeri1(10)
    Dim numeri(10)
    Dim posta(5)
    Dim posta1(5)
    Dim posta2(5)
    posta2(2)=1
    posta2(3)=0.8
    posta2(4)=0.2
    posta1(1)=1
    posta(2)=1
    ruote(1)=5
    k=8
    y=2
    For n=6876 To EstrazioneFin
    If IndiceMensile(n+1)=1 Then
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    EliminaRipetuti numeri1
    ImpostaGiocata 1,numeri1,ruote,posta1,k,1
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,2,5)+Estratto(n,5,2)+07)
    EliminaRipetuti numeri1
    ImpostaGiocata 2,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,6,1)+Estratto(n,9,4)+62)
    EliminaRipetuti numeri1
    ImpostaGiocata 3,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,5,2)+Estratto(n,10,5)+79)
    EliminaRipetuti numeri1
    ImpostaGiocata 4,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,2,2)+Estratto(n,3,3)+14)
    EliminaRipetuti numeri1
    ImpostaGiocata 5,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    numeri1(2)=Fuori90(Estratto(n,2,5)+Estratto(n,5,2)+07)
    EliminaRipetuti numeri1
    ImpostaGiocata 6,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    numeri1(2)=Fuori90(Estratto(n,6,1)+Estratto(n,9,4)+62)
    EliminaRipetuti numeri1
    ImpostaGiocata 7,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    numeri1(2)=Fuori90(Estratto(n,5,2)+Estratto(n,10,5)+79)
    EliminaRipetuti numeri1
    ImpostaGiocata 8,numeri1,ruote,posta,k,y
    numeri1(1)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    numeri1(2)=Fuori90(Estratto(n,2,2)+Estratto(n,3,3)+14)
    EliminaRipetuti numeri1
    ImpostaGiocata 9,numeri1,ruote,posta,k,y
    numeri(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri(2)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    numeri(3)=Fuori90(Estratto(n,2,2)+Estratto(n,3,3)+14)
    numeri(4)=Fuori90(Estratto(n,5,2)+Estratto(n,10,5)+79)
    numeri(5)=Fuori90(Estratto(n,6,1)+Estratto(n,9,4)+62)
    numeri(6)=Fuori90(Estratto(n,2,5)+Estratto(n,5,2)+07)
    EliminaRipetuti numeri
    ImpostaGiocata 10,numeri,ruote,posta2,k,y
    For a=2 To 10
    For b=2 To 10
    ImpostaInterruzioni a,b,2
    ImpostaInterruzioni a,1,1
    Next
    Next
    Gioca n
    End If
    Next
    ScriviResoconto
    End Sub
    come vedete è solo più complesso perchè ci sono piu giocate e qualche istruzione in più, ma il
    listato è uguale al precedente, questo è stato completato aggiungendo alla giocata dei 2 numeri
    per Ambata, 4 numeri da accoppiare alle ambate per la sorte dell'Ambo, infatti se guardate vedete la
    giocata 1 relativa alla giocata delle Ambate:
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    EliminaRipetuti numeri1
    ImpostaGiocata 1,numeri1,ruote,posta1,k,1
    infatti vedete che ho usato un vettore "numeri1" per contenere i numeri da
    giocare, un vettore "ruote" contenente la ruota in gioco "ruote(1)=1" un
    vettore per le poste "posta1" contenente la posta per l'Ambata "posta1(1)=1"
    poi vedete che ho usato una variabile per indicare il numero dei colpi "k"
    ed uno per l'interruzione "y", questo per comodità nel senso che se invece di
    ambi secchi ho delle quartine e voglio provare cosa succede ad interrompere il
    gioco all'uscita di un Ambo, poi dopo voglio provare ad interrompere all'uscita
    di un Terno, oppure prima provo cosa esce giocando per 6 colpi, poi voglio
    provare cosa esce giocando per 12 colpi, ogni volta che voglio cambiare con
    questo sistema basta che cambi il valore della variabile, non ho bisogno di
    andare a cambiare tutti gli ImpostaGiocata ma cambio solo "k" se voglio
    aumentare o diminuire i colpi, solo "y" se voglio cambiare la soglia di
    interruzione,
    poi vedete l'istruzione: EliminaRipetuti numeri1 come dice testualmente se nei
    numeri che noi abbiamo assegnato agli elementi del vettore "numeri1" ci sono dei
    numeri ripetuti questa istruzione li elimina mettendo in gioco solo i restanti.
    Dopo la giocata 1 vedete le giocate da 2 a 9 che sono gli 8 Ambi secchi generati
    dall'accoppiamento delle due Ambate ai 4 numeri trovati, cosa abbiamo di diverso
    in queste giocate:
    numeri1(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri1(2)=Fuori90(Estratto(n,2,5)+Estratto(n,5,2)+07)
    EliminaRipetuti numeri1
    ImpostaGiocata 2,numeri1,ruote,posta,k,y
    le uniche differenze che abbiamo sono che nella giocata 1 abbiamo messo l'interruzione a 1 perchè
    giochiamo per Ambata, nelle altre abbiamo messo "y" come ho spiegato prima, se vedete sopra
    "y=2" y è impostato a 2 cioè interrompi all'uscita dell'Ambo, la seconda differenza è quella
    relativa alla posta, nella giocata 1 abbiamo il vettore "posta1" in cui avevamo settato il solo primo
    elemento "posta1(1)=1" , potremmo settare anche il secondo elemento come nell'esempio ed usare
    lo stesso vettore anche per gli Ambi ma cosa troveremmo nel resoconto, che anche per gli ambi il
    nostro listato ci ha giocato la posta dell'Ambata, falsandoci i resoconti economici della giocata,
    ecco perchè si ricorre ad un secondo vettore per le poste degli Ambi, questo è stato chiamato con un
    eccesso di fantasia "posta" che naturalmente è diverso da "posta1" o dal prossimo che vedremo
    "posta2" usato per la stessa ragione nella sestina,
    dunque nel nostro nuovo vettore "posta" andremo a settare il solo secondo elemento in modo che
    nelle giocate dalla 2 alla 9 sia attiva la sola posta per gli Ambi "posta(2)=1", tutto il resto si ripete
    giocata per giocata, arriviamo alla 10° giocata, questa riunisce in una unica sestina i nostri 6 numeri,
    numeri(1)=Fuori90(Estratto(n,1,1)+Estratto(n,9,4)+86)
    numeri(2)=Fuori90(Estratto(n,4,1)+Estratto(n,7,5)+3)
    numeri(3)=Fuori90(Estratto(n,2,2)+Estratto(n,3,3)+14)
    numeri(4)=Fuori90(Estratto(n,5,2)+Estratto(n,10,5)+79)
    numeri(5)=Fuori90(Estratto(n,6,1)+Estratto(n,9,4)+62)
    numeri(6)=Fuori90(Estratto(n,2,5)+Estratto(n,5,2)+07)
    EliminaRipetuti numeri
    ImpostaGiocata 10,numeri,ruote,posta2,k,y
    vediamo che abbiamo dovuto cambiare anche il vettore contenente i numeri, il
    precedente si chiamava "numeri1" questo si chiama "numeri" per lo stesso motivo
    delle poste, se lasciavo il vettore numeri1 avrei dovuto settare 6 elementi, dal
    secondo ciclo in poi anche per le ambate e per gli ambi avremmo sempre avuto 6
    numeri e non piu i nostri 2 che avevamo impostato, da qui la necessità di usare
    un secondo vettore, così il vettore numeri1 ha settato i soli primi due elementi
    mentre il vettore numeri ha settato i primi 6 elementi, abbiamo anche usato un
    terzo vettore per le poste "posta2" per la stessa ragione precedentemente
    esposta, in questa giocata attiviamo anche le poste per Terno e per Quaterna,
    "posta2(2)=3 posta2(3)=0.8 posta2(4)=0.2" in poche parole se non siamo
    sicuri, abbiamo qualche dubbio, le prime volte fino ad aver preso una certa
    dimestichezza con i listati, impostiamo sempre per ogni giocata o gruppi di
    giocate uguali, il suo vettore per i numeri, il suo per le poste, il suo per le
    ruote,
    Per le ruote facciamo una ulteriore precisazione riguardante il gioco a tutte,
    quando una giocata deve essere fatta per esempio su MI e Tutte, dovremo
    impostare naturalmente 2 giocate, una sulla ruota ed una su tutte, esempio:
    Sub main()
    Dim posta(5)
    Dim ruota(10)
    Dim ruota1(10)
    Dim n(10)
    posta(2)=1
    ruota(1)=5
    ruota1(1)=11
    For es=6877 To EstrazioneFin
    If IndiceMensile(es+1)=1 Then
    n(1)=Fuori90(Estratto(es,1,1)+Estratto(es,9,4)+86)
    n(2)=Fuori90(Estratto(es,2,5)+Estratto(es,5,2)+7)
    ImpostaGiocata 1,n,ruota,posta,8,2
    ImpostaGiocata 2,n,ruota1,posta,8,2
    Gioca es
    End If
    Next
    ScriviResoconto
    End Sub
    nell'esempio vediamo che il nuovo vettore per le ruote si chiama "ruota1" come elemento è stato
    attivato il solo primo, "ruota1(1)=11" settandolo alla ruota 11 cioè TUTTE, quando si deve giocare
    su tutte ci si dovrà sempre comportare in questo modo, un vettore solo per la giocata a tutte e il
    primo elemento impostato ad 11.
    Proseguendo l'analisi del listato completo troviamo queste nuove istruzioni:
    For a=2 To 10
    For b=2 To 10
    ImpostaInterruzioni a,b,2
    ImpostaInterruzioni a,1,1
    Next
    Next
    in pratica abbiamo fatto due cicli per comodità che assegnano alle variabili "a"
    e "b" i valori da 2 a 10, in modo da limitarci la fatica di scrivere una
    infinità di righe per l'operazione che vogliamo andare a fare,
    ImpostaInterruzioni a,b,2
    questa istruzione la usiamo quando abbiamo molte giocate e vogliamo come nel
    nostro caso che il gioco si iterrompa al primo esito positivo di una qualunque
    delle nostre giocate, per esempio se nella giocata 1 esce l'Ambata quella
    giocata si interrompe perchè nella impostazione della stessa gli abbiamo
    specificato di interromperla: ImpostaGiocata 1,numeri1,ruote,posta1,k,1
    ma chi dice alle altre 9 giocate di fermarsi perchè è uscita l'Ambata?
    la nostra istruzione ImpostaInterruzioni , si legge in questo modo:
    ImpostaInterruzioni a,b,2 Interrompi la giocata "a" se al giocata "b" ha dato
    esito per la sorte di "2" Ambo
    ImpostaInterruzioni a,1,1 Interrompi la giocata "a" se al giocata "1" ha dato
    esito per la sorte di "1" Ambata
    ecco fatto il nostro giochetto, adesso se esce l'Ambata ferma tutte le altre
    giocate, come se esce un Ambo nelle restanti giocate.
    Finito anche questo listato, andiamo a vederne un'altro diverso dove vediamo
    anche l'uso di altre istruzioni,
    Sub main()
    Dim ruote(10)
    Dim poste(5)
    Dim n1(10)
    poste(1)=1
    ruote(1)=10
    sp=70
    n1(1)=11
    n1(2)=70
    k=18
    y=1
    casi=0
    ini=5687
    fin=EstrazioneFin
    For es=ini To fin
    AvanzamentoElab ini,fin,es
    If Posizione(es,ruote,sp)>0 Then
    casi=casi+1
    ImpostaGiocata 1,n1,ruote,poste,k,y
    Gioca es
    End If
    Next
    Scrivi " Casi = " & casi
    ScriviResoconto
    End Sub
    Questo è il classico listato per mettere in gioco una determinata combinazione
    all'uscita di un "Numero Spia", cioè metteremo come condizione non più che sia
    una o altra estrazione, ma che sia uscito un determinato numero per giocare la
    nostra previsione, non ci soffermiamo sulle impostazioni generali che come
    vedete sono sempre le stesse, come sopra vedete che io ricorro sempre o quasi
    all'uso di variabili, in questo caso ho usato due variabili anche per mettere
    i limiti delle estrazioni della ricerca "ini" e "fin", una per il numero spia
    "sp", sono abitudini che si prendono man mano che si prende dimestichezza con la
    programmazione dei listati, sarebbe stata la stessa cosa scrivere così:
    Sub main()
    Dim ruote(10)
    Dim poste(5)
    Dim n1(10)
    poste(1)=1
    ruote(1)=10
    n1(1)=11
    n1(2)=70
    casi=0
    For es=5687 To EstrazioneFin
    AvanzamentoElab ini,fin,es
    If Posizione(es,ruote,70)>0 Then
    casi=casi+1
    ImpostaGiocata 1,n1,ruote,poste,18,1
    Gioca es
    End If
    Next
    Scrivi " Casi = " & casi
    ScriviResoconto
    End Sub
    funziona allo stesso modo, non c'è nessuna differenza sostanziale hai fini della funzionalità,
    andiamo a vedere cosa abbiamo scritto, dunque dimensionato e settato i parametri che ci servono,
    vediamo di fissare la nostra spia, nell'esempio cerchiamo l'uscita del numero 70 sulla ruota di VE,
    dopo aver impostato il ciclo delle estrazioni troviamo una nuova istruzione,
    AvanzamentoElab ini,fin,es questa è una istruzione di sola estetica, nel senso
    che ci fa vedere l'avanzamento della nostra elaborazione nella barra in fondo
    all'editor di L8, è utile quando facciamo girare dei listati che impiegano molto
    tempo, in questo modo vediamo a che punto è l'elaborazione dello stesso, ho
    detto che è solo estetica nel senso che il nostro listato funziona ugualmente
    anche senza quella istruzione, ma naturalmente è piu bello e completo con essa,
    i parametri che richiede sono:
    ini: cioè inizio della elaborazione - fin: cioè fine della elaborazione
    es: incremento della elaborazione, ecco perchè vi dicevo prima dell'uso delle
    variabili anche per gli estremi delle estrazioni, se voglio cambiare basta
    cambiare i primi due valori ed il gioco è fatto.
    If Posizione(es,ruote,70)>0 Then
    questa è la condizione che ci cerca la spia, l'istruzione :
    Posizione(es,ruote,70) restituisce un valore 1 se in quella estrazione (es)
    nella o nelle ruote del vettore "ruote" è presente il numero 70 perciò:
    se nell'estrazione es sulla ruota (ruote(1)=10) di VE è presente il num. 70
    esegui le istruzioni comprese nel blocco fra If ... Then ed End If altrimenti
    esegui le istruzioni seguenti, cioè il Next che và ad analizzare l'estrazione
    successiva fino alla fine delle estrazioni.
    Quando verrà trovato in una estrazione il numero 70 su VE eseguirà le istruzioni
    che come prima impostano la o le giocate, e gioca la previsione stessa, in piu
    troviamo questa riga:
    casi=casi+1
    se guardate all'inizio fra le variabili settate c'è anche "casi=0" cioè abbiamo
    usato una variabile chiamata "casi" e l'abbiamo impostata a 0, ci servirà per
    sapere quanti casi di 70 a VE abbiamo trovato, infatti l'incremento di questa
    variabile è stato inserito nel blocco di istruzioni che si eseguono solo quando
    troviamo il 70, casi=casi+1 appunto ci aumenterà di 1 il nostro "contatore" ogni
    volta che troviamo il 70, alla fine delle estrazioni la variabile "casi"
    conterrà appunto le volte in cui abbiamo trovato il 70 a VE, per leggere
    questo dato naturalmente ci serviremo di una ulteriore istruzione:
    Scrivi " Casi = " & casi
    con questa istruzione facciamo scrivere al listato tutto quello che vogliamo,
    lo dice la parola stessa "Scrivi" cioè nella finestra dei risultati ( Output )
    in questo caso verrà scritto:
    Casi = 50 il cinquanta è un numero inventato, nella realtà sarà il numero
    contenuto nella variabile "casi", cosa scrive questa istruzione,
    Scrive quello che gli diciamo noi di scrivere....semplice!!!
    quando vogliamo scrivere del testo lo dobbiamo mettere fra parentesi " Casi = "
    ci scriverà appunto la scritta contenuta dalle parentesi:
    Casi =
    TUTTO QUELLO CHE VOGLIAMO SCRITTO LO METTIAMO DENTRO ALLE PARENTESI
    per unire due scritte si usa " & " (quello sopra al tasto 6) infatti nel nostro
    esempio uniamo la scritta Casi = con la scritta del valore contenuto nella
    variabile "casi", quanto dobbiamo scrivere il contenuto di una variabile
    mettiamo direttamente il nome della stessa, se scriviamo:
    Scrivi casi nell' Output vedremo scritto: 50 e non la parola casi, con la
    pratica comunque si imparerà ad usare questa come altre istruzioni, quando
    viene qualche dubbio, anche se molto schematico l'help del linguaggio è
    abbastanza chiaro sull'uso delle varie istruzioni, agli inizi leggiamolo assieme
    alla lettura di listati già fatti da altri, secondo me rimane sempre il modo
    migliore per imparare, con queste poche informazioni che stò cercando di darvi e
    la lettura dei listati piano piano si riuscirà a fare qualche listato in piena
    autonomia. per questo minicorso di L8 mi sembra sufficente così, per andare
    oltre si necessità di pratica ed un minimo di conoscenza della programmazione di
    base, ho cercato con questo di avvicinare quelli alle prime armi con i listati
    sperando di essergli stato utile.
    ciao Danilo




    Qui' trovate il minicorso in formato .PDF:

    www.2shared.com/document/GjkD1boD/CORSO_DANILO.html


    Sono graditi i vostri voti per aiutare questo Forum a crescere.Grazie! Clicca qui bottone3


    Saluti,sean69!!


    novita_blu_f



    Edited by sean69 - 6/3/2012, 18:01
     
    Top
    .
  2.  
    .
    Avatar

    Junior Member

    Group
    Member
    Posts
    7

    Status
    Offline
    Grazie.
    Spero di trovare una risposta queste due domande:
    - NumeriPari
    - NumeriDispari

    in quanto cerco di fare un programmino che mi da solo uno dei due risultati (pari o dispari).

    Ciao e grazie ancora
    luciano
     
    Top
    .
1 replies since 6/3/2012, 17:23   1458 views
  Share  
.