| | | OFFLINE | | Post: 257 Post: 246 | Registrato il: 02/03/2016 Registrato il: 03/03/2016 | Sesso: Maschile | |
|
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 percostruire una costante il #define PGRECO 3.14 che è la stessa che ho usato nell’ ultimo mioprogramma 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 programmaCon 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 sispecifica 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 prodottovariabile 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 chesegue > 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 secondoil tipo predefinito e secondo dove va inserita e come viene usata le variabili e costanti globalisono 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 variabilein 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 dellafunzione 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 int 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 è possibileusare 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 connessioneha 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 altrifile, 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) ilcompilatore 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 alle 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.htmTutti questi tipi sono disponibili sia per le variabili che le costanti e per dire alle funzioni cosadeve 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.aspxAnche qui di queste discussioni che inserisco faccio un testo PDF da poter scaricare tutto il miomateriale è 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] |