# Informatica 2 Liceo Scientifico Scienze Applicate/Es (for) Analisi sequenza dati

Informatica 2 Liceo Scientifico Scienze Applicate
Copertina Tutti i moduli · Sviluppo
* Linguaggi di programmazioneInformatica 2 Liceo Scientifico Scienze Applicate/Linguaggi di programmazione
* Compilare un programmaInformatica 2 Liceo Scientifico Scienze Applicate/Compilare un programma
* CiaoMondoInformatica 2 Liceo Scientifico Scienze Applicate/CiaoMondo
* AreaRettangoloInformatica 2 Liceo Scientifico Scienze Applicate/AreaRettangolo
* AreaTrapezioInformatica 2 Liceo Scientifico Scienze Applicate/AreaTrapezio
** Compito1Informatica 2 Liceo Scientifico Scienze Applicate/Compito1
* Programmazione ImperativaInformatica 2 Liceo Scientifico Scienze Applicate/Programmazione Imperativa
* Diagrammi di FlussoInformatica 2 Liceo Scientifico Scienze Applicate/Diagrammi di Flusso
* Operatori AritmeticiInformatica 2 Liceo Scientifico Scienze Applicate/Operatori Aritmetici
* Istruzione ifInformatica 2 Liceo Scientifico Scienze Applicate/Istruzione if
** Esercizio Equazione 2^ gradoInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio Equazione 2^ grado
** Esercizio Calcola lo ScontoInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio Calcola lo Sconto
** Esercizio Calcola lo Sconto2Informatica 2 Liceo Scientifico Scienze Applicate/Esercizio Calcola lo Sconto2
* Operatori LogiciInformatica 2 Liceo Scientifico Scienze Applicate/Operatori Logici
** Esercizio x interno all'intervalloInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio x interno all'intervallo
** Esercizio x esterno all'intervalloInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio x esterno all'intervallo
* Istruzione switchInformatica 2 Liceo Scientifico Scienze Applicate/Istruzione switch
** Esercizio Scelta EquazioneInformatica 2 Liceo Scientifico Scienze Applicate/Esercizio Scelta Equazione
* Altre Istruzioni di Scelta o DiramazioneInformatica 2 Liceo Scientifico Scienze Applicate/Altre Istruzioni di Scelta o Diramazione
* Istruzioni di RipetizioneInformatica 2 Liceo Scientifico Scienze Applicate/Istruzioni di Ripetizione
** Es (do-while) Indovina il numeroInformatica 2 Liceo Scientifico Scienze Applicate/Es (do-while) Indovina il numero
** Es (while) La nonna è stancaInformatica 2 Liceo Scientifico Scienze Applicate/Es (while) La nonna è stanca
** Es (for) Somma di 5 numeriInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Somma di 5 numeri
** Es (for) Analisi sequenza datiInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Analisi sequenza dati
** Es (for) Sequenze NumericheInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Sequenze Numeriche
** Es (for) SupermarketInformatica 2 Liceo Scientifico Scienze Applicate/Es (for) Supermarket
** Es (while) Bisca ClandestinaInformatica 2 Liceo Scientifico Scienze Applicate/Es (while) Bisca Clandestina
* Compito2Informatica 2 Liceo Scientifico Scienze Applicate/Compito2
* I vettoriInformatica 2 Liceo Scientifico Scienze Applicate/I vettori
** Es Usiamo i vettoriInformatica 2 Liceo Scientifico Scienze Applicate/Es Usiamo i vettori
** Es2 Usiamo i vettoriInformatica 2 Liceo Scientifico Scienze Applicate/Es2 Usiamo i vettori
** Es3 Supermarket con vettoriInformatica 2 Liceo Scientifico Scienze Applicate/Es3 Supermarket con vettori
** Compito dic 2019Informatica 2 Liceo Scientifico Scienze Applicate/Compito dic 2019
** BubbleSortInformatica 2 Liceo Scientifico Scienze Applicate/BubbleSort
** Ricerca DicotomicaInformatica 2 Liceo Scientifico Scienze Applicate/Ricerca Dicotomica
* Matrici e ArrayInformatica 2 Liceo Scientifico Scienze Applicate/Matrici e Array
** Es matrici battaglia navaleInformatica 2 Liceo Scientifico Scienze Applicate/Es matrici battaglia navale
** Es matrici 1Informatica 2 Liceo Scientifico Scienze Applicate/Es matrici 1
** Es matrici 2Informatica 2 Liceo Scientifico Scienze Applicate/Es matrici 2
* PuntatoriInformatica 2 Liceo Scientifico Scienze Applicate/Puntatori
* StructInformatica 2 Liceo Scientifico Scienze Applicate/Struct
** Es Bubble Sort con StructInformatica 2 Liceo Scientifico Scienze Applicate/Es Bubble Sort con Struct
* FunzioniInformatica 2 Liceo Scientifico Scienze Applicate/Funzioni
* Funzioni Void e non VoidInformatica 2 Liceo Scientifico Scienze Applicate/Funzioni Void e non Void
** esercizi1 funzioniInformatica 2 Liceo Scientifico Scienze Applicate/esercizi1 funzioni
** esercizi2 funzioniInformatica 2 Liceo Scientifico Scienze Applicate/esercizi2 funzioni
** esercizi3 funzioniInformatica 2 Liceo Scientifico Scienze Applicate/esercizi3 funzioni
* BacktrackingInformatica 2 Liceo Scientifico Scienze Applicate/Backtracking
* TemplateInformatica 2 Liceo Scientifico Scienze Applicate/Template
* FileInformatica 2 Liceo Scientifico Scienze Applicate/File
** File di TestoInformatica 2 Liceo Scientifico Scienze Applicate/File di Testo
** File BinariInformatica 2 Liceo Scientifico Scienze Applicate/File Binari
** File RecordsInformatica 2 Liceo Scientifico Scienze Applicate/File Records
** Es FilesInformatica 2 Liceo Scientifico Scienze Applicate/Es Files
* Esercizi VacanzeInformatica 2 Liceo Scientifico Scienze Applicate/Esercizi Vacanze
** Esercizi1Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi1
** Esercizi2Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi2
** Esercizi3Informatica 2 Liceo Scientifico Scienze Applicate/Esercizi3
* Olimpiadi Informatica
** NobileChimicoInformatica 2 Liceo Scientifico Scienze Applicate/NobileChimico
** Sunnydale
** MappaAnticaInformatica 2 Liceo Scientifico Scienze Applicate/MappaAntica
Modifica il sommario
Vogliamo inserire 100 numeri e calcolare :
* la somma dei 100 numeri
* la media
* il minimo e il massimo
* contare quante volte il numero 54 e' stato inserito
* calcolare quanti numeri pari ci sono
* calcolare quanti numeri dispari appartenenti all'intervallo [4,50[ ci sono
Vediamo di analizzare la soluzione del problema un quesito alla volta, e ad ogni quesito risolto compiliamo ed eseguiamo il programma.Per calcolare la somma di 100 numeri non bisogna creare 100 variabili separate perché la scrittura del programma si complica notevolmente, bisogna pensare di inserire un numero per 100 volte, cioe' pensiamo di usare un simpatico For
Creiamo il programma e aggiungiamo lo using namespace std; otteniamo la struttura di base
per inserire i 100 numeri scriviamo il seguente codice
ora il contatore del for (la variabile i) assume nel primo ciclo il valore 1, poi nel secondo il valore 2 e via via fino al valore 100 il cout inserito nel for trae vantaggio dal valore del contatore per creare una scritta che varia ad ogni ciclo, nel primo dice inserire il 1° numero nel secondo ciclo inserire il 2° numero
e via via fino al centesimo ciclo dove compare la scritta inserire il 100° numero
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.
per calcolare la somma usiamo il seguente codice
ora per calcolare la somma dei numeri inseriti li accumuliamo ad ogni ciclo nella variabile somma mediante i comando somma=somma+x; prima del for inizializziamo la variabile somma a zero, in questo modo quando nel primo ciclo dopo aver inserito un numero (pensiamo sia 13) nella variabile x eseguiamo il comando somma=somma+x; nel valutare somma+x si ha che la somma vale zero, e visto che x vale 13 si ottiene 0+13 cioe' 13, il risultato viene caricato nella variabile somma e adesso somma vale 13, ricordate che l'operatore di assegnazione viene risolto in due fasi temporali distinte. Nel secondo ciclo pensiamo di inserire il numero 7 nella variabile x, ora quando si esegue somma=somma+x; ora quando si valuta somma+x si ha somma=13 e x=7 13+7=20 e il numero 20 viene trasferito nella variabile somma. ad ogni ciclo la variabile somma accumula il valore x inserito in quel ciclo, e questo si ripete fino al ciclo 100.
Una volta calcolata la somma dei 100 numeri siamo in grado di calcolare la media, questa e' una operazione che si esegue una sola volta e viene scritta fuori dal for,
inserire il calcolo della media nel for NON va bene, non c'e' la necessita' di ripetere il comando media=somma/100 e non ha senso farlo prima di aver calcolato l'intera somma dei 100 numeri.
ora se si scrive media=somma/100; si perdono i decimali della media, vediamo perché
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 perché non si ha perdita' di precisione questa conversione automatica e' detta cast implicito, ( la conversione da float a int invece produrrebbe 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
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 compattezza.
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 poi entrati in classe uno ad uno si chiamano gli studenti e si confronta il valore del foglietto (minx temporaneo) con l'altezza dello studente, se questo e' piu' basso si aggiorna il valore del foglietto alla fine il valore scritto sul foglietto e' il nostro min assoluto .Il programma allora diventa
si e' dovuta aggiungere una libreria stdlib per avere a disposizione INT_MAX e INT_MIN.
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
il programma diventa