Un test ALU per la CPU!


Copiate, modificate, compilate il codice in C++!

Una piccola introduzione non guasta mai, e questo è il momento per apprendere qualcosa di interessante.

Se avete qualche esperienza di programmazione in C++, sapete che la progettazione di un software comporta essenzialmente cinque fasi:

1) Lo sviluppo del programma, ossia cosa quel software dovrebbe fare, e a quali requisiti dovrebbe rispondere.
2) La scrittura del programma, ossia l’inserimento di alcune istruzioni ad alto livello in un ben determinato linguaggio.
3) La compilazione del programma, ossia la trasformazione delle vostre righe di codice da un linguaggio ad alto livello ad un linguaggio a basso livello.
4) L’esecuzione del programma.
5) La ricerca degli errori e la correzione di quelle righe di codice che li producono (Debugging).

Il programma vero e proprio lo possiamo scrivere con il blocco note, poi per eseguirlo abbiamo bisogno di un compilatore. In ambiente GNU/Linux potete usare il compilatore integrato C++, mentre per Windows potete utilizzare tranquillamente Dev-C++.

 

Il codice del programma: un test ALU per la CPU!

Ecco il codice sorgente del programma da utilizzare nel vostro compilatore!

————inizio codice————

//Programma di Grando Ruggero
//TEST CALCOLO IN ALU CON LA SERIE DI FIBONACCI RICORSIVA

#include <iostream> //includo la libreria di visualizzazione
#include <time.h> //includo la libreria della funzione time
#include <string>
#include <fstream>
#include <iomanip>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <process.h>

using namespace std;

long fib (long); //prototipo di funzione
void outputline (const char *,const char *, const char*, const char *, int);

int main()
{
long N;
string verificatest;
string verificainse;
string leggidatabase;

cout << “TEST DI CALCOLO PER IL PROCESSORE, UNITA’ ALU (operazioni con numeri interi).” << endl;
cout << “Calcolo con la serie di Fibonacci in grado di occupare al massimo i sistemi di calcolo piu’ potenti.” << endl;
cout << “Prima versione by Grando Ruggero”;
cout << endl << endl;

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”) {

cout << “Il test calcolera’ il tempo di esecuzione della serie di Fibonacci con” << ” il numero 42.” << endl;
int N=42;
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;

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();
cout << “Vuoi visualizzare il database del sistema?”;
cin >> leggidatabase;
for (int l=0; l< leggidatabase.length(); l++) {
leggidatabase[l] = toupper (leggidatabase[l]);
} //fine del ciclo for
while (leggidatabase == “SI”)
{
cout << “Benissimo ecco la visualizzazione dei dati del database” << endl << endl;
ifstream outsistemafile (“sistema.dat”, ios::in);
if (!outsistemafile) {
cerr << “Il file non può essere aperto”;
exit (1);
}
cout << setiosflags (ios::left) << setw (19) << “PROCESSORE” << setw(15) << “SCHEDAMADRE” << setw(9)<< “MEMORIA” << setw (21)<< “SISTEMA OP.” << setw (12)<< “RIS. TEST” << endl << endl;

while (outsistemafile >> CPU >> SCHEDA >> RAM >> SISTEMA >> TEST) {
outputline (CPU, SCHEDA, RAM, SISTEMA, TEST);
}
outsistemafile.close ();
cout << “Vuoi visualizzare nuovamente il database del test?”;
cin >> leggidatabase;
for (int l=0; l< leggidatabase.length(); l++) {
leggidatabase[l] = toupper (leggidatabase[l]);
} //fine del ciclo for
}//fine del ciclo while

cout << “Vuoi iniziare di nuovo il test? “;
cin >> verificatest;
for (int i=0; i < verificatest.length(); i++) {
verificatest[i] = toupper (verificatest[i]);
} //fine del ciclo for

} // fine del ciclo while

cout << “Grazie per aver utilizzato il test”;

return 0;
} //fine del main

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

return fib(n-1) + fib(n-2);
}
// Definizione della funzione outpuline
void outputline (const char *proc, const char *main, const char *mem, const char *sistop, int risult)
{
cout << setiosflags (ios::left) << setw (19) << proc << setw (15) << main << setw (9)<< mem << setw(24) <<sistop << setw (5)
<< resetiosflags (ios::left)
<< setiosflags (ios::fixed | ios::showpoint)
<< risult << ‘\n’;

}

————–fine codice————-

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 *

diciassette + 13 =

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