domenica 9 novembre 2014

ESER. INFORMATICA - ESERCIZIO 5

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):


Nessun commento:

Posta un commento