Informatica 2 Liceo Scientifico Scienze Applicate/Es (for) Analisi sequenza dati: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 45:
ora il contatore del for (la variabile i) assume nel primo ciclo il valore 1, poi nel secondo il valore 2 e viavia fino al valore 100
il cout inserito nel for trae vantaggio dal valore del contatore per creare una scritta che varia ad ogni ciclo,<br />
nel primo dice '''inserire il 1° numero'''<br />
nel secondo ciclo '''inserire il 2° numero''' <br />
e via via fino al centesimo ciclo dove compare la scritta '''inserire il 100° numero'''<br />
 
ad ogni ciclo dopo aver visualizzato la scritta viene acquisito il numero scritto da tastiera e caricato nella variabile x, in ogni ciclo allora x rappresenta il valore appena inserito.
Riga 107:
ora se si scrive media=somma/100; si perdono i decimali della media , vediamo perchè<br />
 
somma e' un intero, 100 viene considerato un intero la divisione e' una divisione fra interi e allora il programma calcola solo la parte intera del quoziente e poi scrive questo numero nella variabile media . per evitare il problema possiamo scrivere media=somma/100.0; in questo caso somma e' intero ma 100.0 viene pensato come a un float, il programma per svolgere la divisione deve convertire i valori coinvolti nella divisione nello stesso tipo (float float o int int)e preferisce convertire il valore di somma in un float perche' non si ha perdita' di precisione questa conversione automatica e' detta cast implicito, ( la conversione da float a int invece produrebbeprodurrebbe una pedita di precisione e quindi non viene mai eseguita automaticamente) dopo questa conversione implicita la divisione e' fra due float e il risultato conserva le cifre decimali. Possiamo obbligare il programma a convertire un tipo di dato in un altro anche se la cosa puo' produrre una perdita di precisione con una operazione di cast esplicito ad esempio scrivendo media=(float)somma/100; il (float)somma converte il valore di somma da usarsi nella divisione in un numero di tipo float , dopo questa conversione esplicita di somma il 100 subisce una conversione inmplicita a float e così la divisione e' fra float e il risultato ha i suoi decimali.
 
Siamo pronti ora a contare quante volte il numero 54 e' stato inserito da tastiera, per contare usiamo una variabile che funge da contatore che viene inizializzata a zero e gestita in modo similare all'accumulatore con la differenza che ora l'eventuale incremento e' solo unitario, si ottiene
Riga 139:
 
conta++ in questo caso puo' essere sostituito perfettamente da conta=conta+1;
l'if scritto e' un if semplice la cui unica istruzione del caso vero e' stata scritta sulla stessa riga della condizione per compatezzacompattezza.
 
passiamo al calcolo del min e del max, se si vuole trovare l'altezza dell'alunno piu' grande di una classe si procede nel seguente modo
* si chiama il primo alunno e si memorizza la sua altezza su un foglietto (essendo il primo la sua altezza e temporaneamente anche quella max )
* poi uno ad uno si chiamano gli studenti successivi e si confronta il valore del foglietto (max temporaneo) con l'altezza dello studente, se questo e' piu' alto si aggiorna il valore del foglietto
* alla fine il valore scritto sul foglietto e' il nostro max assoluto
Ora questa procedura ha l'inconveniente di dover trattare il primo studente in modo diverso da quelli successivi, il primo studente infatti non subisce un confronto ma la sua altezza diventa il valore scritto su foglietto, per omogeneizzare lo stesso trattamento (confronto) a tutti gli studenti ,
* prima di entrare in classe scriviamo sul foglietto un numero molto negativo e anche se non e' vero lo pensiamo come l'altezza max temporanea, poi entriamo in classe e
* uno ad uno si chiamano gli studenti e si confronta il valore del foglietto (max temporaneo) con l'altezza dello studente, se questo e' piu' alto si aggiorna il valore del foglietto
* alla fine il valore scritto sul foglietto e' il nostro max assoluto
Ora il numero piu' piccolo che una variabile intera puo' assumere e' il valore INT_MIN.
Per risolvere il problema del min scriviamo sul foglietto il numero piu' grande che ci viene in mente ( INT_MAX ) e
Line 190 ⟶ 191:
</source >
 
si e' dovuta aggiungere una libreria stdlib per avere a disposizione INT_MAxINT_MAX e INT_MIN.<br />
 
ora ci rimane il problema di contare i numeri pari, un numero intero e' pari se il resto della divisione per due e' zero
cioe' se x%2==0 il % calcola infatti il resto della divisione per 2 , mentre se si vogliono i dispari x%2==1<br />
 
 
il programma diventa
Line 246 ⟶ 248:
}
</source>
 
{{Avanzamento|100%|9 novembre 2014}}