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

Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
Nuova pagina: 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 num...
 
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Informatica 2 Liceo Scientifico Scienze Applicate}}

Vogliamo inserire 100 numeri e calcolare :
Vogliamo inserire 100 numeri e calcolare :
* la somma dei 100 numeri
* la somma dei 100 numeri
Riga 9: Riga 11:
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 perche' la scrittura del programma si complica notevolmente, bisogna pensare di inserire un numero per 100 volte, cioe' pensiamo di usare un simpatico For
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 perche' 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
Creiamo il programma e aggiungiamo lo using namespace std; otteniamo la struttura di base
<source lang="c">

#include <iostream>
#include <iostream>
using namespace std;
using namespace std;
Riga 19: Riga 21:
return 0;
return 0;
}
}
</source>


per inserire i 100 numeri scriviamo il seguente codice
per inserire i 100 numeri scriviamo il seguente codice


<source lang="c">
#include <iostream>
#include <iostream>
using namespace std;
using namespace std;
Riga 37: Riga 41:
return 0;
return 0;
}
}
</source>

ora il contatore del for assume nel primo ciclo il valore 1, poi nel secondo il valore 2 e viavia fino al valore 100
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,
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 primo dice inserire il 1° numero
Riga 44: Riga 48:
e via via fino a inserire il 100° numero
e via via fino a inserire il 100° numero


ad ogni ciclo dopo aver vusualizzato la scritta viene acquisito il numero scritto da tastiera e caricato nella variabile x, inserito
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
<source lang="c">

#include <iostream>
using namespace std;

/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */

int main(int argc, char** argv)
{ int x,i, somma;
somma=0;
for(i=1;i<=100;i++)
{cout<<"inserisci il "<<i<<"° numero ";
cin>>x;
somma=somma+x;
}
cout<<"la somma dei numeri vale "<<somma<<endl;
return 0;
}
</source>

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; per eseguire il comando prima bisogna calcolare somma+x e visto che somma vale zero e 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.
<source lang="c">
#include <iostream>
using namespace std;

/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */

int main(int argc, char** argv)
{ int x,i, somma;
float media;
somma=0;
for(i=1;i<=100;i++)
{cout<<"inserisci il "<<i<<"° numero ";
cin>>x;
somma=somma+x;
}
media=(float)somma/100;
cout<<"la somma dei numeri vale "<<somma<<endl;
cout<<"la media dei numeri inseriti vale "<<media<<endl;
return 0;
}
</source>

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, quando l'operazione coinvolge tipi di dati diversi il programma esegue un cast

Versione delle 21:21, 9 nov 2014

Indice del libro

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 perche' 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

#include <iostream>
using namespace std;

/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */

int main(int argc, char** argv) 
{ 
	return 0;
}

per inserire i 100 numeri scriviamo il seguente codice

#include <iostream>
using namespace std;

/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */

int main(int argc, char** argv) 
{ int x,i;
  
  for(i=1;i<=100;i++)
  {cout<<"inserisci il "<<i<<"° numero ";
   cin>>x;
  }

 return 0;
}

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, nel primo dice inserire il 1° numero nel secondo ciclo inserire il 2° numero e via via fino a 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

#include <iostream>
using namespace std;

/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */

int main(int argc, char** argv) 
{ int x,i, somma;
  
  
  somma=0;
  for(i=1;i<=100;i++)
  {cout<<"inserisci il "<<i<<"° numero ";
   cin>>x;
   somma=somma+x;
  }
    
  cout<<"la somma dei numeri vale "<<somma<<endl;
  return 0;
}

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; per eseguire il comando prima bisogna calcolare somma+x e visto che somma vale zero e 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.

#include <iostream>
using namespace std;

/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */

int main(int argc, char** argv) 
{ int x,i, somma;
  float media;
  
  somma=0;
  for(i=1;i<=100;i++)
  {cout<<"inserisci il "<<i<<"° numero ";
   cin>>x;
   somma=somma+x;
  }
   
  media=(float)somma/100;
  
  cout<<"la somma dei numeri vale "<<somma<<endl;
  cout<<"la media dei numeri inseriti vale "<<media<<endl;
	return 0;
}

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, quando l'operazione coinvolge tipi di dati diversi il programma esegue un cast