feed
top
crea forum
cerca
feed
forum
supporto
discussione
cerca
È soltanto un
Pokémon con le armi
o è un qualcosa di più? Vieni a parlarne su
Award & Oscar!
JEHOVA e la NUOVA GERUSALEMME > INIZIO <
Blog libero tutti possono commentare nella zona chiacchiere tutti possono dire la sua , la CHAT è libera tutti possono usarla
Cerca
INDICE Appunti sulla programmazione C++
Accedi
03) Le variabili costanti e funzioni Globali Extern, Static ecc…
Messaggi
OFF
LINE
JehovaZorobabele
Post: 257
Post: 246
Registrato il: 02/03/2016
Registrato il: 03/03/2016
Sesso: Maschile
0
0
13/06/2016
18:16
Ripassiamo le cose del C ma troviamo cose nuove del C++ i dati primitivi variabili costanti
Le costanti sono come le variabili solo che sono
dichiarate direttamente oltre il tipo il valore , la costante ha un valore
fisso che non può più cambiare con il C prima dello standard si usava per
costruire una costante il
#define PGRECO 3.14
che è la stessa che ho usato nell’ ultimo mio
programma per la pulizia dello schermo
#define cls system
(“cls”)
il #define non nasconde una costante essa rimane fissa
nell’ area della memoria dall’ inizio fino alla fine del programma
Con il C++ è
stata creata ( e importata al C standard)
la costante che
possiamo usarla come una variabile
int a= 10;
mentre con la costante si inserisce il nome
const int a = 10;
cosi si
specifica che questo numero rimane sempre fisso finche la costante o la
variabile ha il suo
scope
questo solo per il C++
{ lo scope è il corpo }
lo scope è l’ utilizzo di un prodotto
variabile costante dentro il corpo di un programma il corpo inizia con la prima graffa e finisce con la chiusura della
stessa graffa questo è
l’ INCAPSULAMENTO
Una variabile o una costante automatica
viene inizializzata e vista solo dentro quel scope se abbiamo dei
if
nidificati 1
if
(a…{ 2 if a… { 3 if a }}}
ogni
a
inizializzata usata è diversa dall’ altre anche se la
a
del secondo
if
viene letto ovunque dentro il suo
scope,
le nuove inizializzazioni
int a;
sostituisce l’ altre. Con
le costanti diversamente dal
#define
è possibile prendere il suo indirizzo di
memoria con
&
e il suo puntatore
*
come viene effettuato con le variabili
Nel C++ le costanti devono
sempre essere inizializzate con un valore
const int a= 12;
dove questo numero
12 di a
rimane sempre fisso i
valori che la costante può prendere come le variabili sono i numeri
decimali , esadecimali e ottali sia
interi che reali oppure possono essere anche di tipo carattere, se i primi numeri
sono
0 zero o 0x
il compilatore li
interpreta come
ottali con 0
e
esadecimali con 0x zerox
, nei numeri reali in
virgola mobile è possibile inserire i punti decimali e le potenze esponenziali
e
o
E
sia i
punti del decimale che la dichiarazione dell’ esponente sono opzionali
e
o
E
dell’equazione significa <
10 alla potenza di .. il numero che
segue
> ovvero sposta la virgola di … esempio 12.30 = 1.230e1
e1
vuol dire
il punto va spostato di un numero verso sinistra, esempio
1230e-2 il punto è negativo va spostato di 2 verso
destra 23E-4 =
0.0023 E-4 negativo il punto va
spostato di 4 posizioni verso sinistra nei numeri possiamo inserire il suffisso
se il numero è diverso da double tipo
standard, oppure float
f o F,
long double con
l o L
da usare alla fine come
12.30f
f è float
e usa 4 byte contro il
double che usa 8 byte come il log double
se si scrive dentro una costante un carattere va usate con
‘ a ‘
const char ‘a’;
la costante
abbiamo detto che rimane sempre fissa dentro il programma ma con il comando o
meglio funzione const_cast e il comando volatile possiamo cambiare questi valori della
costante di questo ne parleremo quando si parla del casting
nel C era possibile scambiare un numero float in un numero int nelle
normali variabili qui in C++ è possibile farlo sia sulle variabili che sulle
costanti
Quando si parla di
funzioni variabili o costanti il compilatore deve allocare la memoria secondo
il tipo predefinito e secondo dove va inserita e come viene usata le variabili e costanti
globali
sono definite prima del
main
dove sono
inseriti i prototipi delle funzioni
queste variabili o costanti o funzioni sono lette da tutte le parti del
programma anche dentro le stesse funzioni , la loro vita finisce con la fine
del programma intero queste globali sono
poste in una parte di memoria diversa dalle stesse locali , le variabili
locali
sono quelle scritte sotto il
main del C
, mentre in C++ sono scritte dentro i
diversi
scope {}
pertanto le variabili o
costanti locali possono essere scritte al volo dove serve meglio vicino l’
inizio della graffa oppure inserire i commenti che specifica cosa serve, se
dobbiamo modificare il programma dopo mesi di non utilizzo per migliorarlo,
espanderlo ecc… se questo programma è composto da centinaia di variabili è
possibile ricordare per che cosa serve ?
Se usiamo le nostre
variabili costanti e funzioni all’
esterno del nostro file bisogna dichiarare queste con la parola chiave
EXTERN
ecco come usare una funzione e una variabile
in un secondo file nel collegamento dei
file il compilatore deve capire che questa funzione o altro esiste ma altrove
che ora non la vede in un programma formato da più file ci deve essere un solo
file con dentro il
main
qui dentro prova è inserito il prototipo della
funzione e la variabile con
extern
, tutto
il corpo del programma lo inserisco tutto in una riga :
//
prova extern il file principale con il main interno per i file globale la variabile globale è
// dichiarata prima del
main e è extern globale = 12 dopo la funzione
func
il valore cambia
#include<iostream>
using
namespace
std;
extern int
globale;
//dichiarazione extern della variabile globale e della funzione func()
extern void
func ();
int
main ()
{ globale = 12; cout <<
globale << endl ;
func();
cout<<" "<<
globale
<<
endl; system ( "pause"
); }
/*prova2
secondo file che usa la funzione e la variabile esterne dichiarate in prova per usare la variabile globale deve
essere di nuovo dichiarata altrimenti il compilatore non la riconosce il compilatore legge
func()
ora prende il nuovo valore "
ciao >> 1001
47
*/
#include
<iostream>
using
namespace
std;
int
globale;
// anche qui deve essere dichiarata la variabile altrimenti il compilatore non la legge
void
func ()
{
const i
nt
c = 1001
;
globale = 47
;
cout <<
"ciao
>> "
<<
c
; }
Su al primo passaggio ci
restituisce il valore di globale
12 quando legge la funzione func() il suo valore cambia
in 47 quando stampa con
il prossimo cout il valore cambia in 47
Le variabili locali già le abbiamo viste nel
C comunque sono automatiche cosi la parola chiave auto non serve usarla, la variabile
locale in C erano inserite sotto il main e tutte dovevano rimanere li sotto ora è possibile in C++ inserirle ovunque prima
che ci serve e dentro ogni scope {} altrimenti non sono
più lette se sono fuori dell’ ambito specificato
Static
con questa parola rendiamo una variabile o una funzione in modo statico cosa vuol dire ?
static
ha 2 significati primo se una variabile dentro una funzione viene
chiamata questa ogni volta è
inizializzata con lo stesso numero di partenza, invece
con static la
variabile conserva l’ ultimo numero e inizia a contare da questo ultimo
numero queste costanti e variabili static è solo
possibile utilizzarle solo dentro un blocco di una funzione Non è possibile
usare una variabile static esternamente dal file da dove si lavora il
compilatore da errore effettivamente questo è anche il secondo significato(
variabile static non utilizzabile fuori da questo scope {} )
Extern e static
serve al compilatore per capire che tipo di connessione
ha le variabili tra di loro esiste 2 tipi di
connessione
il
linkage internal o external
, il linkage è il linker che collega i file durante la
compilazione per noi che usiamo Visual Studio , nel
collegamento interno
(linkage internal)
che rappresenta solo 1 file il main non collegato ad altri
file, allora se trova una variabile static
o extern il compilatore non da problemi perché prima o poi troverà
quello che cerca dentro il file Nel
collegamento esterno (linkage extern)
il
compilatore deve collegare le varie variabili e funzioni di tutti i file che
abbiamo sia per le variabili static e per le costanti è meglio sempre
dichiarale dentro lo stesso file o scope dove vengono usate altrimenti il
(compilatore) fa problemi, in riguardo al
le variabili automatiche ovvero quelle
locali non trova problemi perché non vengono collegate
Le variabili e le costanti
le abbiamo di diversi tipi se noi usiamo un computer a 64 bit se si dice
int a = 3 ;
facilmente il
computer utilizza il
long
e in questo
modo alloca moltissima memoria
8byte
possiamo scrivere un numero di 17 cifre ,
se parliamo di eta possibile usare uno
short
e sfrutta
2 byte
poi possiamo
sfruttare il segno +- dei numeri lo short va da -32768 a 32767 ma se lo usiamo senza segno unsigned cosi usiamo solo numeri positivi va da 0 a 65535 ecco la lista di tutti i tipi che abbiamo a
disposizione vedete in questa mia pagina ricopiata dalla guida in linea del VS :
http://im4.freeforumzone.it/up/49/34/3610422684.htm
Tutti questi tipi sono disponibili sia per le variabili che le
costanti e per dire alle funzioni cosa
deve restituirci il nostro computer o il compilatore deve sapere prima cosa deve memorizzare se noi in un programma inseriamo un reale o
una stringa al posto di un intero può
andare in tilt tutto il computer o programma
Ciao grazie da ByMpt-Zorobabele
Testo PDF aggiornato con questo ultimo capitolo inserito lo trovate :
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
Anche qui di queste
discussioni che inserisco faccio un testo PDF da poter scaricare tutto il mio
materiale è da utilizzare come desiderate per il
testo PDF vedi cartella dedicata , ogni volta cambia ubicazione del
testo allora cambio il file e il testo lo inserisco
dentro la cartella < file aggiornato ad oggi >
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
[
Modificato da JehovaZorobabele 13/06/2016 22:36
]
1
5
MediaObject
3,50
7
1
Tag discussione
programmare in cpp
cpp orogrammazione
appunti cpp
variabili ccpp
costanti c-cpp
globale
auto
extern
static
bympt-zorobabele
Registrati
Accedi
INDICE Appunti sulla programmazione C++
Accedi
IL MIO PROFILO
LE MIE DISCUSSIONI
FORUM CHE SEGUI
LA MIA FORUM-CARD
MODIFICA FORUM-CARD
FAQ
TRADUCI
LOGOUT
Accedi
Registrati
FAQ
TRADUCI
Scatta o carica foto
Allega file
Inserisci link da url (card)
Incorpora url (YouTube/Twitter/...)
ACCETTA
RIFIUTA
Anteprima