Informatica 2 Liceo Scientifico Scienze Applicate/AreaRettangolo
Calcolo dell'area di un rettangolo
[modifica | modifica sorgente]Questa mattina procediamo nell'analisi di un programma che deve fare il calcolo dell'area di un rettangolo. Per poter scrivere un programma che risolva un certo problema non basta la conoscenza del linguaggio C, prima bisogna analizzarlo e poi pensare a una possibile sua soluzione. Nel pianificare la soluzione ci aiutiamo spesso con la matematica e la fisica che conosciamo, poi quando abbiamo deciso come risolverlo possiamo scrivere un programma in C che ne permetta il calcolo mediante un Computer.
Il problema nel nostro caso e' semplice perché lo abbiamo gia' studiato e analizzato nel passato, inizialmente per trovare l'area di una figura geometrica si contavano i quadretti interni alla figura, poi si e' visto che questo conteggio era equivalente al risultato dato dalla formula AreaRettangolo=Base*Altezza dove i simboli hanno il significato della figura:
in questa formula la Base e l'Altezza sono i dati di partenza che una volta noti permettono di calcolare l'espressione Base*Altezza valutando così il valore dell'area. I programmatori quando affrontano un problema devono sempre individuare i dati di input (ingresso) che si devono conoscere per poterli usare nelle formule, e i dati di output (uscita) che dobbiamo visualizzare e che costituiscono la soluzione del problema.
Nel nostro caso Base e Altezza sono i dati di Input e AreaRettangolo il valore di output. Naturalmente si devono memorizzare i valori di altezza, base e arearettangolo da qualche parte e, per memorizzare le informazioni nei programmi si usano le variabili. Una variabile e' simile a una scatola nella quale si inseriscono degli oggetti, queste scatole non sono tutte uguali, alcune sono adatte a contenere le scarpe, altre gli stivali e altre ancora i giochi. In realta' una variabile e' un'area di memoria dove vengono scritte delle informazioni, accessibili mediante il nome della scatola ... scusate della variabile. Le variabili possono essere di tipo diverso, alcune in grado di memorizzare solo numeri interi, altre numeri in virgola mobile, altre ancora parole, etc.. Ogni variabile occupa uno spazio in memoria espresso in byte o bit. Vediamo quali tipi di variabili il C ci mette a disposizione.
Tipo | memorizza | dimensione in byte | Esempio | particolarita' |
---|---|---|---|---|
int | numeri interi | 4 byte | int a; a=12; | range circa +-21000000000 |
long | numeri interi | 4 byte | long a; a=145672; | in questo compilatore equivale a int |
float | numeri con la virgola | 4 byte | float a; a=12.32; | la precisione e' di circa 6 cifre, il range è grandissimo |
double | numeri con la virgola (floating point) | 8 byte | double a; a=12.2314 | precisione maggiore dei float 15 cifre, il range è grandissimo |
string | parole | un byte per ciascun carattere | string a; a="Ciao Maria Munerato" | appartiene al C++. Nel C si usavano al suo posto array di char |
char | un solo carattere | 1 byte | char a; a='s'; | i caratteri sono memorizzati con il corrispondente numero intero presente nella tabella ASCII |
bool | valore booleano true/false | 1 bit (in realta' 1 byte) | bool a; a= true; | appartiene al C++. Nel C al suo posto si usava un intero; se l'intero era =0 significava falso, se ≠0 vero |
Mentre nel passato si utilizzavano molti tipi di dati ad esempio short int e long per gli interi e questi tipi avevano dimensioni diverse, per gestire in modo piu' efficiente le piccole memorie dei computer anni 60 e 70, attualmente si tende a usare un unico tipo di dati di dimensione multipla di 4 byte per velocizzare l'accesso/decodifica dell'informazione contenuta; oggi short int e long sono considerati dai compilatori come sinonimi .Alle Olimpiadi dell'informatica si usa il tipo long. Il range esprime l'intervallo di valori che una variabile puo' assumere e lo si rappresenta tramite il valore minimo e il valore max che posso avere. Se dico, ad esempio, che il range e' -2 +7
vuol dire che vengono considerati tutti i valori compresi fra -2 e +7.
Per il nostro problema abbiamo bisogno di 3 variabili, e per crearle nel programma usiamo:
float base;
float altezza;
float arearettangolo;
oppure, visto che sono dello stesso tipo posso scrivere:
float base, altezza, arearettangolo;
Per visualizzare qualcosa sullo schermo abbiamo usato l'istruzione cout ( che appartiene al C++ mentre nel C si usa printf).
Ad esempio cout<<"Le Gemme dell'Infinito"; visualizza la scritta sullo schermo Le Gemme dell'Infinito . La scritta va inserita fra una coppia di doppi apici.
Nel comando appena illustrato:
- cout rappresenta il monitor, detto con precisione e' uno stream che rappresenta l'uscita standard (il monitor)
- << rappresenta l'operatore di inserzione, che trasmette il dato che segue allo stream (monitor)
- "Le Gemme dell'Infinito" e la frase che vogliamo visualizzare racchiusa tra doppi apici e rappresenta una stringa
Se invece scrivo cout<<a; a non e' racchiusa fra doppi apici e allora il computer la considera una variabile e ne prende il valore che viene inviato allo stream, in pratica viene visualizzato il valore contenuto nella variabile a.
Se scrivo cout<<"area="<<arearettangolo<<endl; allo stream in sequenza vengono visualizzate 3 cose, la scritta area= , il valore contenuto in arearettangolo e il valore della variabile (costante) endl che rappresenta il codice di un carattere non visibile che sposta il cursore sulla riga successiva.
Se invece voglio leggere un valore scritto da tastiera e caricarlo nella variabile altezza posso usare
il comando cin>>altezza;
- cin rappresenta la tastiera, o meglio e' lo stream che rappresenta l'ingresso standard
- >> rappresenta l'operatore estrazione che preleva il dato dallo stream e lo trasferisce nella variabile, nel nostro caso altezza
Si possono anche leggere piu' variabili con un solo cin, ad esempio possiamo scrivere cin>>a,b,c; se scriviamo 3 numeri e dopo ciascuno premiamo Invio, il 1^ valore va in a il secondo in b e il terzo in c.
Vediamo ora come scrivere il nostro programma. Avviamo devc++ e creiamo un nuovo progetto. Il codice generato automaticamente e' il seguente a cui ho aggiunto il namespace. Questo codice e' la base che utilizzeremo in tutti i nostri progetti.
Analizziamo il codice generato
La prima riga #include aggiuge (in fase di link) un file esterno che permette di avere a disposizione ulteriori comandi (funzioni) e il namespace aggiunge nuove variabili
questa riga e' invece un commento, i commenti servono per migliorare la descrizione del programma e non modificano il comportamento del programma, spesso nei commenti troviamo la descrizione del programma e le sue caratteristiche, il nome del
programmatore che l'ha scritto, la data dell'ultima modifica e l'elenco delle revisioni del codice e la descrizione della modifica apportata. I commenti si possono fare in due modi, se il commento e' di una sola riga basta far precedere al commento i caratteri // mentre per i commenti che occupano piu' righe (multi line) li faccio precedere dal simboli /* e seguire da */ come nel nostro esempio
Un programma in C e' costituito d una serie di funzioni di cui almeno una si chiama main; quando parte un programma viene eseguito automaticamente il codice com
preso nelle parentesi graffe del main, e' li allora che dobbiamo inserire il nostro programma.
L'ultima istruzione all'interno delle parentesi graffe (generata automaticamente) e'
l'istruzione return restituisce un numero e fa terminare il programma (piu' precisamente qui termina il main), il valore zero indica che il programma e' terminato senza errori.
La porzione del programma che dobbiamo aggiungere e' quello nel riquadro verde
Si devono creare le tre variabili base altezza e arearettangolo, ecco la dichiarazione delle variabili
poi visualizziamo una scritta per spiegare all'utente cosa fa il nostro programma
Scriviamo una domanda sullo schermo per indurre l'utente a scriverci il valore della base
che prontamente leggiamo con un cin>> e che poi carichiamo nella variabile base
analogamente per l'altezza
Ora che abbiamo tutti dati per calcolare l'area possiamo usare l'operatore di assegnamento dato dal simbolo = , questo operatore svolge due operazioni temporalmente distinte, prima calcola l'espressione a destra dell'operatore = e poi nella seconda fase trasferisce il risultato della valutazione dell'espressione nella variabile a sinistra dell'operatore = . Nel nostro caso prima si calcola area*altezza e poi si trasferisce il risultato in arearettangolo.
Vediamo ora l'istruzione per visualizzare sullo schermo il risultato
Ecco il risultato dell'esecuzione del programma, in cui abbiamo inserito i valori 3 e 4