ESERCIZIO 5
Si supponga che 3 dispositivi trasferiscano dati
rispettivamente ad una velocità di 6 Gbit/s, 3Gbit/sec e 1,5 Gbit al secondo,
calcolare per ciascun dispositivo il tempo necessario per eseguire il backup di
un hdd da 500 GByte e di un Hdd da 1 TByte.
Parto sempre dal
considerare che 1 byte=8 bit e quindi :
6 Gbit/sec = 0,75 GByte/sec;
3 Gbit/sec = 0,375 GByte/sec;
1,5 Gbit/sec = 0,1875
GByte/sec;
Quindi mi basterà dividere
la capacità dei dispositivi per la velocità di trasferimento per trovare il
tempo necessario a riempire i 2 Hard Disk.
Userò un ciclo che si
ripeterà e ogni volta dimezzerà la velocità.
Hdd da 500 gb;
6 Gbit/sec = 500 / (6/8) =
666 secondi = 11 minuti e 6 secondi ;
3 Gbit/sec = 500 / (3/8) =
1333 secondi = 22 minuti e 13 secondi ;
1,5 Gbit/sec = 500 /
(1,5/8) = 2666 secondi = 44 minuti e 26 secondi .
Hdd da 1 TB;
Considerato che 1
GByte=2^30 e che 1TB=2^40 ;
6 Gbit/sec = (1*2^40) /
(6/8*2^30) = 1365 secondi = 22 minuti e 45 secondi ;
3 Gbit/sec = (1*2^40) /
(3/8*2^30) = 2730 secondi = 45 minuti e 30 secondi ;
1,5 Gbit/sec = (1*2^40) /
(1,5/8*2^30) = 5461 secondi = 1 ora 31 minuti 1 secondo .
L’esercizio non richiede
l’inserimento di dati dall’utento o la generazione di numeri casuali ma assegna
velocità stabilite e dimensioni stabilite. Il risultato dell’operazione sarà
espressa in secondi e quindi poi passerò alla trasformazione in ore, minuti e
secondi.
Variabili:
L’esercizio non richiede
l’inserimento di dati dall’utente o di generare numeri casuali ma i valori sono
prestabiliti quindi come input userò la variabile che contiene la velocità e
saràdi tipo float in quanto saranno valori con la virgola.
Userò il tipo intero per
tutte le altre variabili perché i decimali dei secondi non mi sevono.
velocita : di tipo float
(a cui assegnerò di volta in volta la velocità per il calcolo); Input;
i : di tipo float (che
userò come contatore che mi permetterò di uscire dal ciclo); Lavoro ;
hdd : di tipo int (a cui assegno i risultati dei secondi totali per
gli HDD); lavoro;
mintot : di tipo int (che
userò per calcolare il resto dei minuti e le ore); lavoro;
ore : di tipo int (che uso
per stampare le ore); output;
minuti: di tipo int (che
uso per stampare i minuti); output;
secondi : di tipo int (che
uso per stampare le ore); output;
Strumenti:
divisione;
moltiplicazione;
modulo;
pow;
Bozza Programma:
int
mintot,ore,minuti,secondi,hdd,i;
float
velocita;
i=1;
velocita=6;
printf(“Per fare un backup di un disco da 500 Gb
occorrono : \n\n”);
do
{
hdd=500/(velocita/8);
secondi=hdd%60;
mintot=hdd/60;
minuti=mintot%60;
ore=mintot/60;
printf ("%d ore : %d minuti : %d secondi - Alla
velocita' di %.2f Gbit/sec \n" ,ore,minuti,secondi,velocita);
i++;
velocita=velocita/2;
}
while
(i<=3);
i=1;
velocita=6;
printf("\n\nPer fare un backup di un disco da
1 TByte occorrono : \n\n");
do
{
hdd=(1*pow(2,40))/(velocita/8*pow(2,30));
secondi=hdd%60;
mintot=hdd/60;
minuti=mintot%60;
ore=mintot/60;
printf ("%d ore : %d minuti : %d secondi - Alla
velocita' di %.2f Gbit/sec \n", ore,minuti,secondi,velocita);
i++;
velocita=velocita/2;
}
while
(i<=3);
Codifica in linguaggio C:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main ()
{
int mintot,ore,minuti,secondi,hdd,i;
float velocita;
i=1; //
variaile per il controllo di uscita dal ciclo
velocita=6; // parto
dai 6 Gbit all secondo
printf("Per
fare un backup di un disco da 500 Gb occorrono : \n\n");
do
{
hdd=500/(velocita/8);
secondi=hdd%60;
mintot=hdd/60;
minuti=mintot%60;
ore=mintot/60;
printf ("%d ore
: %d minuti : %d secondi - Alla velocita' di %.2f Gbit/sec \n", ore,minuti,secondi,velocita);
i++;
velocita=velocita/2;
}
while (i<=3); // il
ciclo si ripete fino a quando i è minore o uguale a 3
i=1; //reimposto
il contatore per il ciclo a 1
velocita=6; //
reimposto la velocita a 6 gbit/sec
printf("\n\nPer
fare un backup di un disco da 1 TByte occorrono : \n\n");
do
{
hdd=(1*pow(2,40))/(velocita/8*pow(2,30));
secondi=hdd%60;
mintot=hdd/60;
minuti=mintot%60;
ore=mintot/60;
printf ("%d ore
: %d minuti : %d secondi - Alla velocita' di %.2f Gbit/sec \n", ore,minuti,secondi,velocita);
i++;
velocita=velocita/2;
}
while (i<=3);
return 0;
}
Diagramma di Flusso (Algobuild):