domenica 9 novembre 2014

ESER. INFORMATICA - ESERCIZIO 3

ESERCIZIO 3

Se la velocità di trasferimento di un dispositivo è di 1Gbit/sec trasformarla in : KByte/min,  GByte/ora, Gbit/ora, GByte/min e Gbit/min.

Per prima cosa passo subito a trasformare il Gbit/sec in Gbit/min e Gbit/ora e quindi mi basterà moltiplicare per 60 per i minuti e 3600 per le ore. Quindi 1Gbit/sec = 60 Gbit/min = 3600 Gbit/ora.

Per trasformare invece da Gbit a KByte e GByte posso iniziare a considera che;

1 byte = 8 bit ;

Quindi mi basterà dividere per 8 per trovare i GByte e quindi 1 Gbit = 0,125 GByte e poi moltiplicare per 60 per i minuti e per 3600 per le ore. Quindi 1 Gbit/sec= 7,5 GByte/min = 450 GByte/ora.

Per calcolare invece i Kbyte/min posso iniziare a considerare che si lavora sempre con numeri binari e quindi multipli di 2. Quindi :

1 KB = 2^10 = 1024 Byte
1 MB = 2^20 = 1048576 Byte
1 GB = 2^30 = 1073741824 Byte

Quindi 1GByte = 1048576 Kbyte (2^30/2^10=2^20)  e quindi 0,125 Gbyte/sec = 131072 Kbyte/sec. Infine mi basterà moltiplicare per 60 per i minuti e quindi 131072 KByte/sec = 7864320 KByte/min.

Variabili:

L'esercizio non richiede di acquisire dati dall'utente o di generare numeri casuali, ma assegna un numero di partenza (1 Gbit/sec), quindi non mi serviranno variabili di input ma solo di output. Mi Serviranno variabili di tipo float in quanto ci saranno numero con i decimali e numeri che superano lo spazio previsto per i numeri di tipo int (2^16=65536 cioè da -32768 a 32767).

gbitora (Gbit/ora) tipo float : output;
gbitmin (Gbit/min) tipo float : output;
gbytemin (GByte/min) tipo float : output;
gbyteora (GByte/ora) tipo float : output;
kbytemin (KByte/min) tipo float : output;

Strumenti:

divisone;
moltiplicazione;
pow(2^20);

Bozza programma;

float gbitsec,kbytemin,gbyteora,gbitmin,gbytemin,gbitmin;
gbitmin=1*60;
gbitora=1*3600;
gbytemin=0.125*60;
gbyteora=0.125*3600;
kbytemin=0.125*(pow(2,20))*60; 
printf (“1 gbit/sec sono : %f Gbit/minuto ; %f Gbit/Ora ; %f GByte/min ;  %f GByte/ora ; %f KByte/min” ,             gbitmin,gbitora,gbytemin,gbyteora,kbytemin);


Codifica in Linguagio C:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()

{
            float gbitsec,gbitmin,gbitora,gbytemin,gbyteora,kbytemin;
           
            gbitmin=1*60;
            gbitora=1*3600;
            gbytemin=0.125*60;
            gbyteora=0.125*3600;
            kbytemin=0.125*(pow(2,20))*6;
            printf ("1 Gbit/sec sono : %.2f Gbit/minuto ; %.2f Gbit/Ora ; %.2f GByte/min ;\n\n %.2f             GByte/ora ; %.2f KByte/min \n" ,gbitmin,gbitora,gbytemin,gbyteora,kbytemin);
            return 0;
}



Diagramma di Flusso (Algobuild):






































ESER. INFORMATICA - ESERCIZIO 2

ESERCIZIO 2

Assegnata la velocità di 180km/Ora trasformarla in : metri al seconod, metri al minuti, kilomteri al minuto, kilometri al secondo.

1 km = 1000 metri
1 ora=60 minuti = 3600 secondi

Quindi per passare da 180 km/ora alle altre unità di misura mi basta fare le opportune divisioni:

- 180 km/Ora = 180000 m/3600 sec = 50 m/sec   (quindi  180/3,6)
- 180 km/Ora = 180000 m/60 min = 3000 m/min  (quindi 180/0,06)
- 180 Km/Ora = 180 Km/60 min = 3 Km /min  (quindi 180/60)
- 180 km/Ora = 180 Km/3600 sec = 0,05 Km/sec  (quindi  180/3600)

Variabili:

L’esercizio non richiede ne l’inserimento di un dato dall’utente ne la generazione casuale di un valore ma assegna un valore di partenza di 180 Km/ora, quindi non mi serviranno variabili di input ma solo di output.

msec  di tipo int  (metri al secondo);  output;
mmin  di tipo int (metri al minuto); output;
kmmin  di tipo int  (km al minuto); output;
kmsec  di tipo float perché verrà un risultato con la virgola (Km al secondo); output;

Strumenti:

divisione

il mio input saranno i km/ora (kmora) e le variabili di lavoro e di output  saranno msec,mmin,kmmin,kmsec.

Bozza programma:

int msec, mmin, kmmin, kmsec;
float kmsec;

msec=180/3,6;
mmin=180/0,06;
kmmin=180/60;
kmsec=180,00/0,05;


printf(“ 180 km/ora sono : msec , mmin , kmmin , kmsec”);


Codifica in linguaggio C:

#include <stdio.h>
#include <stdlib.h>

int main()

{
            int msec,mmin,kmmin;
            float kmsec;
           
            msec=180/3.6;
            mmin=180/0.06;
            kmmin=180/60;
            kmsec=180.00/3600;
           
            printf("180 km/ora sono : %d metri al secondo ; %d metri al minuto ; %d km al minuto ; %.2f km al secondo \n", msec,mmin,kmmin,kmsec);
            return 0;
}



Diagramma di flusso (Algobuild):






































ESER. INFORMATICA - ESERCIZIO 1

Esercizio 1

Assegnato il numero di secondo 15678 calcolare il numero di ore, i minuti e i secondi residui.

Per passare dai secondi ai minuti basta una semplice divisione per 60 e stessa cosa per passare dai minuti alle ore. Passando da secondi a minuti mi viene 261,30 minuti. Il 0,30 sono i secondi residui, quindi ho due alternative :

-          Moltiplico per 60 il 0,30 e trovo i 18 secondi
-          Uso il modulo %  sui secondi totali, il resto della divisione per 60 sono i secondi residui, quindi 15678 diviso 60 fa 261 con resto di 18.

Scelgo la seconda strada più semplice e più logica e scelgo variabili solo di tipo int perché i decimali non mi servono. Quindi prima mi trovo i minuti con la divisione per 60 e poi uso il modulo anche sui minuti e il resto sono i minuti residui. Per le ore posso dividere i secondo totali 15678 per 3600 (60x60) oppure posso dividere i minuti calcolati prima (261,30) per 60.

Variabili:

L’esercizio non richiede ne l’inserimento di un dato dall’utente ne la generazione casuale di un valore ma assegna un valore di partenza di 15678 secondi, quindi non mi servono variabili di input ma solo di lavoro e di output.

mintot (a cui assegno il risultato della divisione per 60 dei secondi totali) variabile di lavoro;
secondi  (a cui assegno il resto dell’operazione col modulo dei secondi totali) variabile di output;
minuti  (a cui assegno il resto della divisione col modulo dei minuti totali) variabile di output;
ore (a cui assegno il risultato della divisione per 60 dei minuti totali) variabile di output;

Strumenti:

divisione ( /60)
modulo (%60)

Bozza programma;

il codice sorgente che andrò a scrivere dovrà fare le seguenti operazioni:

secondi=15678%60;    (resto 18 secondi)
mintot=15678/60;    (tot. 261)
minuti=mintot%60;    (tot.  21)
ore=mintot/60;   (tot. 4)

printf (“15678 secondo sono ore, minuti, secondi”);  (4 ore, 21 minuti , 18 secondi).

Codifica in linguaggio C:

#include <stdio.h>
#include <stdlib.h>

int main()

{
            int ore,minuti,secondi,mintot;
           
            secondi=15678%60;
            mintot=15678/60;
            minuti=mintot%60;
            ore=mintot/60;
            printf("15678 secondi sono %d, ore , %d minuti, %d secondi \n", ore,minuti,secondi);
            return 0;
}



Diagramma di flusso (algobuild):






































PDF VERIFICA - SEQUENZE

Titolo: Per ciascuna sequenza di istruzioni indicare il contenuto delle variabili durante l'esecuzione e al termine della sequenza, segnalando eventuali anomalie.

Sequenza 1:

c=4                                   c=4
b=6                                   b=6
a=2*(c-3)+(b-1)               a=2*(4-3)+(6-1)=2*1*5=10 --> a=10
a=a-2                                a=10-2=8
b=b*a                               b=6*8=48 --> b=48


Sequenza 2 :

x=20               x=20
y=-2                y=-2
z=x-y              z=20-2=18  --> z=18
z=z+w            w non è dichiarata (qui c'è una anomalia)


Sequenza 3:

a=5                  a=5
b=9                  b=9
c=a*2-b-1       qui c'è una nomalia nella sintassi. doveva essere speficicato come fare le                                         operazioni. Bisognava indicarle con le parentesi. il risultato non è chiaro.  

d=15/c             il valore di d dipende dall'operazione precedente.

        

PDF VERIFICA - ESERCIZIO 7

ESERCIZIO 7

Titolo : Conoscendo la misura del lato di un triangolo equilatero determinare il perimetro e l’area.

L’utente inserirà la misura di un lato di un triangolo equilatero e il programma calcolerà il perimetro e l’area. per calcolare il perimetro verrà utlizzata la formula P=L*3 (lato per 3) mentre per calcolare l’area utlizzerò la formula (L^2)*(SQRT(3)/4) (lato al quadrto per radice quadrata di 3 diviso 4). Non è specificata l’unità di misura, io utlizzerò i centimetri.

Mi serviranno una variabile per acquisire la misura del lato da tastiera e due variabili che conterranno il perimetro e l’area da comunicare poi a video.

Variabili:

lato : di tipo float (dove acquisisco da tastiera la misura del lato) ; input ;
perimetro : di tipo float (dove calcolo il perimetro) ; output ;
area : di tipo float (dove calcolo l’area) ; output ;

Strumenti:

moltiplicazione;
divisione;
pow;
sqrt;

Codifica in linguaggio C:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()

{
            float lato,perimetro,area;
           
            printf("Questo programma calcola il perimetro e l'area di un triangolo equilatero \n");
            printf("Inserisci la misura del lato del triangolo in centimetri \n");
            scanf("%f",&lato);
            perimetro=lato*3;
            area=(pow(lato,2)*sqrt(3))/4;
            printf("\nIl perimetro del triangolo e' %.2f cm mentre l'area e' %.2f cm \n",perimetro,area);
            return 0;
}



Test di verifica:

inserisco il lato : 22.5
perimetro = 22.5*3 = 67.50

area = 22.5^2*(sqrt(3/4)=506.25/0.433=219.21.

Diagramma di Flusso:


PDF VERIFICA - ESERCIZIO 6

ESERCIZIO 6

Titolo: Comunicare l’importo totale da pagare per l’acquisto di due diversi oggetti, per ciascuno dei quali viene dato il prezzo e il relativo sconto.

Verranno acquisiti da tastiera gli importi di due oggetti. L’importo verrà introdotto in Euro e quindi con la possibilità di due decimali. Verrà poi acquisito da tastiera lo sconto previsto per ogni prodotto e verrà comunicato a video il totale da pagare.
Inserisco il controllo che lo sconto non deve essere maggiore del 100% e nel caso lo fa reinserire.

Mi serviranno due variabili per acquisire i prezzi da tastiera e  due variabili in cui verrà acquisito lo sconto per ogni articolo. Mi serviranno infine 2 variabili in cui verranno calcolato i prezzi al netto degli sconti e una variabile di output per la somma da pagare che verrà comunicata a video.

Variabili:

prezzo1 : tipo float (dove acquisisco il primo prezzo) ; input ;
prezzo2 : tipo float (dove acquisisco il secondo prezzo) ; input ;
sconto1 : tipo float (dove acquisisco lo sconto del primo prezzo) ; input;
sconto2 ; tipo float (dove acquisisco lo sconto del secondo prezzo); input;
netto1 ; tipo float (che conterrà l’importo dello sconto); lavoro;
netto2 ; tipo float (che conterrà l’importo dello sconto); lavoro; 
somma ; tipo float (dove farò la somma dei prezzi scontati) ; output ;

 Strumenti;

divisione;
moltiplicazione;
somma;
sottrazione;

Codifica in linguaggio C:

#include <stdio.h>
#include <stdlib.h>

int main()

{
            float prezzo1,prezzo2,sconto1,sconto2,netto1,netto2,somma;
            somma=0;
           
            printf("Programma che calcola la somma di due articoli al netto dello sconto \n");
            printf("Bastera' inserire il prezzo del prodotto e lo sconto che gli viene applicato\n\n");
            printf("Inserisci il prezzo del primo prodotto \n");
            scanf ("%f", &prezzo1);

           
            do { //apro un ciclo per controllare che lo sconto non superi il 100%
                        printf("\nInserisci lo sconto del primo prodotto \n");
                        scanf ("%f", &sconto1);
                        netto1=prezzo1/100*sconto1;
                        if (sconto1>100) //se supera il 100% visualizza che si ha sbagliato
                                   {
                                               printf ("lo sconto non deve superare il 100 percento");
                                   }
                }
            while (sconto1>100); // il ciclo si ripete se lo sconto è maggiore del 100%         
                       
            printf("\nLo sconto applicato a questo prodotto e' di Euro %.2f \n\n",netto1);
           
            printf("Inserisci il prezzo del secondo prodotto \n");
            scanf ("%f", &prezzo2);
           
            do { //apro un ciclo per controllare che lo sconto non superi il 100%
                        printf("\nInserisci lo sconto del secondo prodotto \n");
                        scanf ("%f", &sconto2);
                        netto2=prezzo2/100*sconto2;
                        if (sconto2>100) //se supera il 100% visualizza che si ha sbagliato
                                   {
                                               printf ("lo sconto non deve superare il 100 percento");
                                   }
                }
            while (sconto2>100); // il ciclo si ripete se lo sconto è maggiore del 100%
           
            printf("\nLo sconto applicato a questo prodotto e' di Euro %.2f \n\n",netto2);
            somma=(prezzo1-netto1)+(prezzo2-netto2);
            printf("Il totale del prezzo da pagare per i due articoli e' di Euro %.2f \n", somma);
            return 0;
}




Test di verifica:

inserisco prezzo1 : 8745,65
inserisco lo sconto1 : 12%
netto1 : 1049,48
inserisco prezzo2 : 4445,65
inserisco lo sconto2 : 22%
netto2 : 978,04
somma : (8745,65-1049,48)+(4445,65-978,04)= 7696,17+3467,61= 11163,78.

Diagramma di Flusso:

PDF VERIFICA - ESERCIZIO 5

ESERCIZIO 5

Titolo: Comunicare l’importo totale da pagare per l’acquisto di due diversi oggetti, per ciascuno dei quali viene dato il prezzo e sapendo che viene applicato uno sconto del 5%.

Verranno acquisiti da tastiera gli importi di due oggetti. L’importo verrà introdotto in Euro e quindi con la possibilità di due decimali due decimali. Verrà comunicato a video il totale da pagare al netto di uno sconto del 5 %.

Mi serviranno due variabili per acquisire i prezzi da tastiera e mi serviranno due variabili che conterranno lo sconto di ogni articolo. Mi servirà infine una variabile di output per la somma dei prezzi che verrà comunicata a video.

Variabili:

prezzo1 : tipo float (dove acquisisco il primo prezzo) ; input ;
prezzo2 : tipo float (dove acquisisco il secondo prezzo) ; input ;
sconto1 : tipo float (dove verrà calcolato lo sconto del primo prezzo) ; lavoro
sconto2 ; tipo float (dove verrà calcolato lo sconto del secondo prezzo); lavoro;
somma ; tipo float (dove farò la somma dei prezzi scontati) ; output ;

 Strumenti;

divisione;
moltiplicazione;
somma;
sottrazione;

Codifica in linguaggio C:

#include <stdio.h>
#include <stdlib.h>

int main()

{
                float prezzo1,prezzo2,sconto1,sconto2,somma;
                somma=0;
               
                printf("Programma che calcola la somma di due articoli al netto del 5 percento di sconto \n\n");
                printf("Inserisci il primo prezzo \n");
                scanf ("%f", &prezzo1);
                sconto1=prezzo1/100*5;
                printf("\n\nLo sconto applicato a questo prodotto e' di Euro %.2f \n\n",sconto1);
                printf("\nInserisci il secondo prezzo \n");
                scanf ("%f", &prezzo2);
                sconto2=prezzo2/100*5;
                printf("\n\nLo sconto applicato a questo prodotto e' di Euro %.2f \n\n",sconto2);
                somma=(prezzo1-sconto1)+(prezzo2-sconto2);
                printf("La il totale del prezzo da pagare per i due articoli e' di Euro %.2f \n", somma);
                return 0;
}



Test di verifica:

inserisco prezzo1 : 457,65
inserisco prezzo2 : 2547,38
sconto1 : 22,88
sconto2 : 127,37
somma : (457,65-22,88)+(2547,38-127,37)= 434,77+2420,01=2854,78

Diagramma di flusso: