I loop di verifica
Qui si entra nel cuore del sistema, ovvero i comandi che analizzano le terzine uscite e fanno i controlli
Utilizzeremo due routine di ciclo, ovvero delle routine che permettono di eseguire ripetutamente una serie di comandi finchè la condizione non viene rispettata.
method "Verifica"
Begin
if flag "Gioca" true
begin
return
end
Innanzitutto con il codice sopra comunichiamo al programma che se si sta puntando (gioca = true) non occorre elaborare alcuna verifica. Se il flag è true interrompe subito la routine.
Si provvede poi ad azzerare tutti i valori e settare i parametri che si useranno per la verifica per rimuovere dati eventualmente presenti in memoria dall'analisi precedente.
// inizializzazioni variabili di verifica
clear record "Massimo" data
Clear record "Num. Terzine in calore" data
Set list [0,0,0,0,0,0,0,0,0,0,0,0] record "Conta nelle 18" data
Set flag "gioca" false
Per ogni terzina partendo dalla 1 alla 12 (ciclo principale) leggeremo tutte le 18 terzine uscite (ciclo secondario) per vedere se quella terzina è uscita, se è uscita la aggiungiamo ad un record che chiameremo “conta nelle 18”, in questo record avremo il conteggio di quante volte le singole terzine sono uscite.
Inoltre ad ogni terzina faremo un controllo per vedere se è quella con più uscite, per trovare il massimo delle uscite nelle 18 boules.
Il programma quindi eseguirà per 12 volte (le terzine) un ciclo da 18 (le terzine uscite).
Terminati cicli avremo un record contenente per ogni terzina il totale di quante volte è uscita, un record con il numero massimo di uscite di una o più terzine. Con questi elementi potremo verifcare le condizioni del sistema, ovvero verificare se il massimo delle uscite è superiore a 4 e quante sono le terzine in calore.
Loop principale
put 1 record "Terzine" layout index
loop until record "Terzine" layout index > record "Terzine" layout count
begin
…
…
add 1 record "Terzine" layout index
end
Sopra potete vedere la routine di ciclo base, i … stanno ad indicare lo spazio per i comandi da far eseguire ad ogni ciclo.
Il loop deve avere come minimo i seguenti comandi:
- Inizializzare l'indice - La prima riga setta a 1 l’indice del record “Terzine”
- Definire la condizione - La seconda è la condizione da soddisfare ovvero confronta l’indice con il totale dei record. Se l’indice supera il conteggio il ciclo si interrompe (la condizione diventa vera quando si raggiunge la fine del record)
- Aumentare l'indice - La riga con Add aumenta di 1 l’indice
Quindi tutti i comandi compresi tra begin ed end verranno eseguiti tante volte quanti sono gli elementi nel record “Terzine”
Loop secondario
put 1 record "18 terzine" layout index
loop until record "18 terzine" layout index > record "18 terzine" layout count
begin
…
…
add 1 record "18 terzine" layout index
end
All’interno del loop si possono inserire altre condizioni, nel nostro caso inseriremo un altro loop per poter
confrontare due record indicizzati e cioè “Terzine” e “18 terzine”.
Come potete vedere i due loop hanno la stessa struttura, quello che cambia è solo la loro posizione. Il loop secondario deve essere contenuto tutto all’interno del loop principale (ovvero tra begin ed end) altrimenti il programma segnalerà un errore.





