Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

[Guida] Il C++ [CH.03: variabili]
(Questo messaggio è stato modificato l'ultima volta il: 14/03/2011, 20:44 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Ehilà a tutti,
stavolta vi do qualche info sulle variabili.
Ricordo che non ho intenzione di sostituirmi a qualche bel libro quindi non aspettatevi che vi dica tutto, solo qualche accenno per partire poi compratevi un libro

Cominciamo col chiederci cosa sono e a cosa servono le variabili.
O meglio cominciamo con un programma che NON le usa:



    C++ Programming
  1. #include <stdio.h>
  2. void main()
  3. {
  4. printf("Digger ha scritto 2 capitoli di sta guida\n");
  5. }





Bel programma

ora vi chiedo, ok, ma quando avrò finito sto capitolo saranno 3, quindi ecco cosa farò:



    C++ Programming
  1. #include <stdio.h>
  2. void main()
  3. {
  4. printf("Digger ha scritto 3 capitoli di sta guida\n");
  5. }




Notato? ho cambiato 2 in 3
poi compilerò il programma, lo eseguirò e tutto andarà liscio.
Poi al prossimo capitolo mi toccherà rifare il tutto.

Vi sembra un modo intelligente di procedere?... direi di no!

La questione è che in un programma possono esserci informazioni che non cambiano mai durante l'esecuzione e informazioni che invece sono destinate a cambiare.
Nel primo caso (non cambiano) si parla di COSTANTI
nel secondo caso (cambiano) entrano in gioco le VARIABILI

La variabile altro non è che un'area di memoria dove salveremo la nostra informazione che cambia a seconda di varie condizione.
Quest'are di memoria nel nostro codice sarà identificata da un "nome" che daremo alla variabile stessa.
Ma passiamo ad un esempio:



    C++ Programming
  1. #include <stdio.h>
  2. void main()
  3. {
  4. int numeroGuide = 2; <--- la nostra variabile, la chiamiamo "numeroGuide", valore iniziale 2
  5.  
  6. printf("Digger ha scritto %d capitoli di sta guida\n", numeroGuide);
  7. }





Visto ?
ho dichiarato una variabile di TIPO int e l'ho chiamata "numeroGuide" e poi ho detto al C che il valore iniziale che avrà quella variabile sarà 2.
Per valore iniziale si intende che fin dal suo primo utilizzo posso contare che quella varrà 2 dopodichè la potrò cambiare a mio piacimento durante l'esecuzione.

Ma quel TIPO INT cosa si intende?

Bisogna fare un passo indietro...
Come posso salvare le informazioni in un pc?
L'unità di misura piu piccola di un'informazione è il BIT che può valere solo 0..1 , come dire acceso..spento, oppure no..si , etc
Nel pc è però difficilmente si usa il bit, in realtà si usa raggruppare 8 bit a formare un BYTE, e questo byte è quindi l'unità piu comune di misura delle informazioni.
Fateci caso infatti che dite megaBYTE oppure gigaBYTE e cosi via, perché si parte dal BYTE e poi a seconda che siano migliaia di bytes, miliardi di bytes o altro si aggiunge un prefisso tipo kilo (1000) piuttosto che mega (1000000) o giga (1000000000).
[nota in realtà non è 1000 ma 1024, ma non voglio complicarvi la vita )

ricapitoliamo le unità di misura:

bit
byte = 8 bits
word = 16 bits = 2 bytes
dword = 32 bits = 4 bytes
...

non voglio riempirvi la testa, per ora basta cosi ma ce ne sono altri.

In C però per complicarci la vita, quelle STESSE unità di misura vengono chiamate in altro modo:

byte = char
word = short
dword = int / long
...

visto? quindi io in C scrivo

int numeroCapitoli;

e gli sto dicendo che numeroCapitoli mi indica una parte di memoria del pc che è grande 4 bytes.

A voler essere pignoli, usando Visual C++ 2008 come facciamo noi int e long sono la stessa cosa, però notate che non possiamo essere sicuri a priori che lo siano sempre, o comunque non possiamo sapere quanto sono grandi, dipende dal compilatore e dalla piattaforma su cui si compila (potrebbe non essere un pc, potrebbe non essere un processore x86 della Intel e cosi via) però noi non siamo pignoli

Voi direte, come faccio a decidere se dichiarare una variabile short, int, long, char o altro?
Dipende dall'informazione che quella dovrà contenere.
Se devo metterci un carattere, che occupa 1 byte userò char.
Se devo metterci un valore relativamente piccolo userò short.
Se devo metterci un valore piu grande uso int o long
e cosi via.
In realtà esistono limiti ben precisi e conosciuti per le grandezze dei tipi, vi consiglio di andare nell'editor Visual C++,
cliccare sulla parola int nel codice e fare F1, poi in basso cliccate su Data Types range e vedrete tutti i limiti.
Noterete che fanno differenza anche tra signed e unsigned, studiatevele un po' .

Ok abbiamo la nostra variabile.
Ma che ce ne facciamo se resta sempre uguale? allora non serviva avere una variabile.
Facciamo un esempio di come si modifica una variabile.


    C++ Programming
  1. #include <stdio.h>
  2. void main()
  3. {
  4. int numeroGuida; <--- la nostra variabile, NON la inizializzo sta volta
  5.  
  6. numeroGuida = 1; <--- la inizializzo qui da codice
  7. numeroGuida = numeroGuida+1; <--- incremento il valore attuale di 1
  8.  
  9. printf("Digger ha scritto %d capitoli di sta guida\n",numeroGuida); <--- questo stamperà ancora 2
  10. }




Visto?
numeroGuida = 1;

assegna alla variabile il valore 1

poi non contento ho incrementato il valore di 1 portandolo a 2 con :
numeroGuida = numeroGuida+1;

Quella riga infatti cosa fa, partiamo a destra dell'uguale, legge il valore attuale di numeroGuida, poi ci somma 1 e il risultato dell'operazione che ora ha in testa, lo assegna di nuovo a numeroGuida.



    C++ Programming
  1. int appoggio = 0;
  2. int numeroGuida = 0;
  3.  
  4. numeroGuida = 1;
  5. appoggio = numeroGuida + 1;
  6.  
  7. printf("Valore di appoggio =%d\n", appoggio); <-- stampa Valore di appoggio=2





che fa? abbiamo dichiarato un'altra variabile, appoggio, grande come l'altra, 4 bytes, la inizializziamo a 0
poi a numeroGuida assegnamo il valore 1, quindi a numeroGuida sommiamo 1 e il risultato (2) lo assegnamo ad appoggio

In C/C++ esiste un modo piu sintetico di fare l'operazione "sommo 1 alla variabile" ed è questo:


    C++ Programming
  1. numeroGuida++;



vi piace? vuol dire che se quando arriviamo a sta riga numeroGuida valeva 1 allora subito dopo averla eseguita varrà 2.

Altra variante interessante:


    C++ Programming
  1. numeroGuida+=2;




secondo voi?
questa è come fare numeroGuida = numeroGuida+2; ma molto piu sintetico.
Quindi somma 2 al valore attuale della variabile.

Va bene per oggi è tutto ma scriverò ancora sulle variabili e le costanti (e i defines) perché l'argomento è abbastanza importante

ciao
Digger



digger
13/03/2011, 0:45
#1
Cerca




Utenti che stanno guardando questa discussione: 1 Ospite(i)