Un test ALU per la CPU!


Nelle prossime righe di codice grazie all’istruzione cin l’utente potrà inserire SI, o NO alla domanda “Vuoi iniziare il test? (SI/NO)”. Poi nella terza e quarta riga, la nostra risposta SI viene trasformata in caratteri maiuscoli. Nella quinta riga, inizia un ciclo while che esegue il codice contenuto tra parentesi graffe in caso di veridicità della condizione proposta tra quelle rotonde. Nel caso contrario, ossia quando la condizione del ciclo è FALSA, termina l’esecuzione del programma.

cout << “Vuoi iniziare il test? (SI/NO)”;
cin >> verificatest;
for (int i=0; i < verificatest.length(); i++) {
verificatest[i] = toupper (verificatest[i]);
}
while (verificatest == “SI”) {

—-corpo del ciclo—-

}

Poniamo il caso che la nostra risposta sia SI, e quindi evitiamo di uscire subito dal test. Nella prossima riga troviamo ancora l’istruzione cout che conosciamo benissimo. Possiamo modificare il valore “numero 42” se nella riga successiva abbiamo intenzione di calcolare un numero N più grande.

cout << “Il test calcolera’ il tempo di esecuzione della serie di Fibonacci con” << ” il numero 42.” << endl;

La prossima riga di codice è particolarmente importante, perchè ci permette di cambiare il numero N da elaborare. Quindi se riterrete opportuno potrete modificare il calcolo dell’i-esimo numero di Fibonacci.

int N=42;

Le righe di codice seguenti calcolano il tempo di esecuzione della funzione ricorsiva di Fibonacci.con l’aiuto della funziona time(0). Infine, la variabile di tipo double seconds contiene la differenza tra l’inizio del test e la fine del test in secondi.

time_t now = time (0); //nella variabile now inizia il tempo
cout << “Fibonacci (” << N << “) e’ ” << fib(N) << “\n\n”;
time_t after = time (0); //nella variabile after è registrato il termine del calcolo di fibonacci
double seconds = difftime (after,now); //nella variabile seconds vi è la differenza in secondi tra i due test
cout << “Tempo totale di esecuzione richiesto dalla CPU in ALU ” << seconds << ” secondi” << endl << endl;

Fib(N) chiama la funzione ricorsiva di Fibonacci che dalla funzione main principale non è ricorsiva, ma lo è dall’interno della stessa funzione di Fibonacci.

//Definizione della funzione ricorsiva di Fibonacci
long fib(long n)
{
if (n <= 2)
return 1;
else

return fib(n-1) + fib(n-2);
}

Ora, possiamo registrare i valori del test ALU in un file di tipo dat (ma se vogliamo possiamo cambiarlo in uno di tipo testo (.txt) modificando la parte di codice della riga successiva da “sistema.dat” a “sistema.txt”. Ofstream significa che stiamo per aprire il file in scrittura, e con ios::app, “appendiamo” al file i risultati correnti. Il record si chiama outsistemafile, mentre i campi sono: CPU, SCHEDA, RAM, SISTEMA, e TEST. Quest’ultimi sono dichiarati come variabili char, e solo TEST è una variabile intera. Naturalmente dopo aver introdotto le informazioni sul sistema di test esse vengono salvate all’interno del file “sistema.dat”. Infine, dobbiamo chiudere il file, e lo facciamo con l’istruzione outsistemafile.close.

ofstream outsistemafile (“sistema.dat”, ios::app);
if ( !outsistemafile )
{
cerr << “Il file non può essere aperto” << endl;
exit (1);
}

char CPU [30];
char SCHEDA [30];
char RAM [30];
char SISTEMA [30];
int TEST;
cout << “Per inserire i record scrivere OK” << endl;
cin >> verificainse;
for (int j=0; j < verificainse.length(); j++) {
verificainse[j] = toupper (verificainse[j]);
}
while (verificainse == “OK”)
{
cout << “Inserisci il modello di processore senza spazi?”<< endl;
cin >> CPU;
cout << “Inserisci il modello di scheda madre?” << endl;
cin >> SCHEDA;
cout << “Inserisci la quantita’ di ram di sistema?” << endl;
cin >> RAM;
cout << “Inserisci quale sistema operativo stai utilizzando per il test?” << endl;
cin >> SISTEMA;
cout << “Inserisci il tempo di esecuzione del test precedente del tuo sistema?” << endl;
cin >> TEST;
outsistemafile << CPU << ‘ ‘ << SCHEDA << ‘ ‘ << RAM << ‘ ‘ << SISTEMA << ‘ ‘ << TEST << ‘\n’;

cout << “Se vuoi inserire un’altro record (digita OK), altrimenti premi un tasto per continuare.” << endl;
cin >> verificainse;
for (int j=0; j < verificainse.length(); j++) {
verificainse[j] = toupper (verificainse[j]);
}
}
outsistemafile.close();
outsistemafile.close();

Rating: 3.0/5. From 1 vote.
Please wait...
Voting is currently disabled, data maintenance in progress.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

19 − tre =

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.