CODICE SORGENTE.

Di seguito troverete il codice in Yabasic da inserire nell'editor Yabedit; La prima parte del codice contiene il programma vero e proprio, mentre la seconda parte fa riferimento ad una libreria esterna che non pubblichiamo perchè disponibile nel file "zippato" presente nella sezione Download del Forum (previa registrazione).

--Inizio prima parte del codice --

#!/usr/bin/yabasic
import edhtmgen


REM Program Name: TEST ALU
REM Author: Grando Ruggero
REM
REM Purpose: Test PC
REM Dichiarazione matrice 5000*7
DIM MATRIX$ (5000,7)
GOTO CONTROLLOUTENTE

LABEL INIZIO
CLEAR SCREEN
sw=peek ("screenwidth"):sh=peek("screenheight")
if (sw<78 or sh<24) then
print
print"Mi dispiace ma lo schermo è troppo piccolo per visualizzare il programma"
end
endif
sw=78:sh=24

restore DATIMENU
read NUMERO
dim TESTO$(NUMERO)
for a=1 to NUMERO
Read TESTO$(a)
Next a
seleziona=1

LABEL MENUPRINCIPALE
CLEAR SCREEN
print"###############################################################"
print" TEST ALU BY Grando RUGGERO "
print"###############################################################"
yoff=7
for a=1 to NUMERO
if (a=NUMERO) then ydisp=1: else ydisp=0:fi
if (a=seleziona) then
print colour("blue","green") at (1,yoff+ydisp+a) TESTO$(a);
else
print at (1,yoff+ydisp+a) TESTO$(a);

endif
next a
Print at(3,sh-3)"Seleziona le frecce su' e giu' per scegliere le opzioni"
Print at(3,sh-2)"Premi return o spazio per confermare la scelta; ESC per uscire"



do // loop for keys pressed
rev=1
do // loop for blinking
k$=inkey$(0.4)
if (k$="") then
if (seleziona=NUMERO) then
if (rev=1) then
print colour("blue","green") at(1,yoff+NUMERO+1) TESTO$(NUMERO);
rev=0
else
print colour("yellow","red") at(1,yoff+NUMERO+1) TESTO$(NUMERO);
rev=1
endif
endif
else // key has been pressed, leave loop
break
endif
loop // loop for blinking

yalt=seleziona
if (k$="up" or k$="u") then
if (seleziona=1) then seleziona=NUMERO else seleziona=seleziona-1 fi
redraw():heal():continue
fi
if (k$="down" or k$="d") then
if (seleziona=NUMERO) then seleziona=1 else seleziona=seleziona+1 fi
redraw():heal():continue
fi
if (k$=" " or k$="enter" or k$="right") then
on seleziona gosub STARTTEST,INFORMAZIONI,SALVAINFO,PAGINAHTMLSALVA,endit,notyet
goto MENUPRINCIPALE
fi
if (k$="esc") then
endit()
fi
beep
print at(3,sh-5) "Tasto invalido: ",k$," "
loop // loop for keys pressed


// redraw line
sub redraw()
if (yalt=NUMERO) then ydisp=1:else ydisp=0:fi
print at(1,yoff+yalt+ydisp) TESTO$(yalt);
if (seleziona=NUMERO) then ydisp=1:else ydisp=0:fi
print colour("blue","green") at(1,yoff+seleziona+ydisp) TESTO$(seleziona);
return
end sub


// erase a line
sub heal()
print at(3,sh-5) " "
return
end sub


// Go here to exit
label endit
print at(3,sh-8) "Addio per sempre...o quasi\n ";
exit
return



LABEL STARTTEST
CLEAR SCREEN
PRINT"------------------------------------------------------------"
PRINT "Ora inizia il programma di test delle unita' ALU della CPU."
PRINT "Espresso in base al numero di tempo in secondi impiegati per"
PRINT "il calcolo N di una serie di Fibonacci."
PRINT
INPUT "Inserisci un numero intero, possibilmente maggiore di 20 ? "N
print
print
PRINT "Il numero calcolato con la serie di Fibonacci e':"
inizio=val(mid$(time$,10))
PRINT FIB(N)
fine=val(mid$(time$,10))
PRINT
tempoesecuzione = fine-inizio
PRINT "Il tempo totale per l'esecuzione del test e' di ", tempoesecuzione, " secondi"
G=1
PAUSE 15
RETURN

LABEL INFORMAZIONI
CLEAR SCREEN
PRINT"---------------------------------------------------------------- "
PRINT"ORA INSERISCI UNA SERIE DI INFORMAZIONI SUL TUO SISTEMA HARDWARE "
PRINT" (I dati vanno inseriti senza spazi) "
PRINT"---------------------------------------------------------------- "
INPUT "Inserisci il tipo di processore? " PROC$
PRINT
INPUT "Indica la velocita' di clock della CPU (in Mhz)? " VELOCPU$
PRINT
INPUT "Inserisci la frequenza di bus principale del tuo sistema (o FSB) in Mhz? " FSB$
PRINT
INPUT "Inserisci il tipo di Scheda madre? " SCHEDA$
PRINT
INPUT "Inserisci la quantita' di ram del sistema? (in Mb) " MEM$
PRINT
INPUT "Inserisci il sistema operativo con cui stai utilizzando il test? " SISTEM$
PRINT
INPUT "Inserisci il tempo di esecuzione del test in secondi? " TEMP$
PRINT
INPUT "Vuoi visualizzare le informazioni appena inserite (si/no)? "VISUALIZZA$
IF VISUALIZZA$ = "si" THEN GOSUB FINESTRAVISUALIZZA
ENDIF
K=1
RETURN

LABEL FINESTRAVISUALIZZA
Open Window 515,410
Text 120,35, "DATI SISTEMA HARDWARE CORRENTE"
Text 365,400, DATE$
rectangle 9, 10 to 500, 400
Line 30, 70 to 300, 70
Line 30, 120 to 300, 120
Line 30, 170 to 300, 170
Line 30, 220 to 300, 220
Line 30, 270 to 300, 270
Line 30, 320 to 300, 320
Line 30, 370 to 300, 370
Text 30, 95, "Processore"
Text 190,95, PROC$
Text 30, 145, "Velocità CPU (Mhz)"
Text 190,145, VELOCPU$
Text 30, 195, "FSB della CPU"
Text 190,195, FSB$
Text 30, 244, "Schedamadre"
Text 190,244, SCHEDA$
Text 30, 295, "Q.tà memoria di sistema"
Text 190,295, MEM$
Text 30, 346, "Sistema Operativo"
Text 190,346, SISTEM$
Text 30, 397, "Ris.del test in secondi"
Text 190,397, TEMP$
Pause 12
CLOSE WINDOW
Return



REM ------------------
REM FUNZIONE RICORSIVA
REM ------------------
SUB FIB (N):REM calcola il numero i-esimo utilizzando la funzione ricorsiva
IF (N=0 or N=1) THEN RETURN N
ELSE
RETURN FIB(N-1)+FIB(N-2)
ENDIF
END SUB



LABEL SALVAINFO
CLEAR SCREEN
IF K<>1 AND G<>1 Then
print"Devi effettuare il test e la registrazione delle informazioni del tuo sistema"
print"Purtroppo, non puoi salvare alcuna informazione"
PAUSE 5
GOTO MENUPRINCIPALE
ENDIF

PRINT "----------------------------------------"
PRINT "SEZIONE REGISTRAZIONE DELLE INFORMAZIONI"
PRINT "----------------------------------------"
PRINT
INPUT"Vuoi salvare le informazioni in un file (si/no) ? "INFO$
IF INFO$<>"si" then end
ENDIF

a$="modprocessore.txt"
b=open (a$,"a")
Print#(b) PROC$
close #b

b$="velprocessore.txt"
b=open (b$,"a")
Print#(b) VELOCPU$
close #b

c$="fsbprocessore.txt"
b=open (c$,"a")
Print#(b) FSB$
close #b

d$="schedamadre.txt"
b=open (d$,"a")
Print#(b) SCHEDA$
close #b

e$="memsistema.txt"
b=open (e$,"a")
Print#(b) MEM$
close #b

f$="sistemaop.txt"
b=open (f$,"a")
Print#(b) SISTEM$
close #b

g$="temptest.txt"
b=open (g$,"a")
Print#(b) TEMP$
close #b

INFOR$="info.txt"
b=open (INFOR$,"a")
Print#(b) PROC$," ",VELOCPU$," ",FSB$," ",SCHEDA$," ",MEM$," ",SISTEM$," ",TEMP$
close #b


PRINT "Ho terminato l'operazione."
PAUSE 5

RETURN



LABEL PAGINAHTMLSALVA
IF K<>1 AND G<>1 Then
print at(3,sh-5) "Devi effettuare il test e la registrazione delle informazioni del tuo sistema"
print at(3,sh-4) "Purtroppo, non puoi salvare alcuna informazione"
PAUSE 5
GOTO MENUPRINCIPALE
ENDIF
a=1
open 16, "TESTALUCPU.html" ,"w"
SetOutputMode (1)
SetTitle ("Dati test fibonacci by Grando Ruggero")
PrintBasicHTMLTop()
PrintHeading (1, "Test ALU (con la serie di Fibonacci) by Grando Ruggero:database dei risultati.")
TipoCarattereParagrafo ("Arial Black")
TabellaInizio (1)
RigaInizioTabella()
CellaInizioRiga()
PrintParagraph ("Processore")
CellaFineRiga()
CellaInizioRiga()
PrintParagraph ("Velocità CPU in Mhz")
CellaFineRiga()
CellaInizioRiga()
PrintParagraph ("Fsb CPU in Mhz")
CellaFineRiga()
CellaInizioRiga()
PrintParagraph ("Schedamadre")
CellaFineRiga()
CellaInizioRiga()
PrintParagraph ("Memoria di sistema")
CellaFineRiga()
CellaInizioRiga()
PrintParagraph ("Sistema Operativo")
CellaFineRiga()
CellaInizioRiga()
PrintParagraph ("Test Alu Cpu in secondi")
CellaFineRiga()
RigaFineTabella()
RigaInizioTabella ()
TipoCarattereParagrafo ("Arial")

Open 1, "info.txt","r"
while (not eof(1))
CellaInizioRiga()
input#1 O$
PrintParagraph (O$)
CellaFineRiga()

if a=7 Then
RigaFineTabella ()
RigaInizioTabella()
a=0
ENDIF
a=a+1
Wend


close#1
RigaFineTabella ()
TabellaFine()
Centra ()
TabellaInizio(2)
RigaInizioTabella()
CellaInizioRiga()
PrintImage ("FIGURATEST.jpg")
CellaFineRiga ()
CellaInizioRiga ()
PrintParagraph ("Risultati dei test condotti da Grando Ruggero (Megaoverclock)")
CellaFineRiga()
RigaFineTabella ()
TabellaFine ()
CentraFine ()
PrintBasicHTMLBottom()
close#16
print at(3,sh-5) "Benissimo, operazione conclusa, hai salvato una pagina HTML con"
print at(3,sh-4) "i risultati dei test!"
pause 5

RETURN


LABEL CONTROLLOUTENTE
CLEAR SCREEN

ESISTE=0
utenti$="utenti.txt"
PRINT"-------------------------------------------------------------------"
INPUT "Prima di accedere al programma devi immettere il tuo nome utente? " NOME$


d=open (utenti$,"r")
while (eof (d) = false)
line input #(d) CAMPO$
IF CAMPO$=NOME$ THEN
ESISTE=1
ENDIF
Wend
Close # (d)
IF ESISTE=1 THEN
PRINT"Ben tornato ",NOME$, " sono contento che tu sia interessato a questo test!"
PRINT"Io sono AL 9000 e ogni tua domanda sara' una mia risposta."
PAUSE 2
PRINT
PRINT"Purtroppo, non possiamo ancora parlare di Intelligenza Artificiale, e il "
PRINT"paragone con il film ODISSEA NELLO SPAZIO non si puo' fare. Ma, qualcosa"
PRINT"si muove, e la ricerca ha scoperto nuovi algoritmi e nuove soluzioni per"
PRINT" avvicinare sempre di piu' il cervello alla macchina "
PRINT" Speriamo, di non costruire uno SKYNET altrimenti saranno i Robot "
PRINT" a governare su di noi. "
PAUSE 15
GOTO INIZIO

ELSE
INPUT"Non ti conosco, aggiungo il tuo nome utente al Database (si/no)? " D$
IF D$="si" THEN
GOTO AGGIUNGIUTENTE
ELSE
PRINT"Ok, alla prossima!"
end

ENDIF

ENDIF
END

LABEL AGGIUNGIUTENTE
AGGUTENTE$="utenti.txt"
f = open (AGGUTENTE$,"a")
print #(f) NOME$
Close # (f)
PRINT"Sei stato aggiunto al database, la prossima volta non ti sara' chiesto nulla!!!"
PAUSE 5
GOTO INIZIO
END


LABEL DATIMENU
DATA 5
DATA "Avvia il test delle unita' ALU "
DATA "Inserisci informazioni sul sistema di test "
DATA "Salva in un file TXT le info del sistema "
DATA "Salva in una pagina HTML i risultati dei test "
DATA "Premi ESC per terminare"
END

--Fine prima parte del codice --

Menu Sezione/Pagina Successiva/Pagina Precedente/Torna alla Homepage


Sito:www.megaoverclock.it