LA NUOVA GERUSALEMME
Qui si costruisce la NUOVA GERUSALEMME grazie al SECONDO TESTIMONE e UNTO, GESU' vi aveva avvisati del mio arrivo ovvero l'arrivo del FIGLIO dell'UOMO, Gesù stesso ha detto che non lo vedete mai più da Giovanni 16,10 "LA GIUSTIZIA" da cui leggiamo ( 10La giustizia sta dalla mia parte, perché torno al Padre e non mi vedrete più.) Lui stesso manda lo Spirito Santo che è il VERO Figlio dell' Uomo . Il vero Figlio dell' Uomo è descritto in Apocalisse 1, 12 ecc.. Io uso la Bibbia Interconfessionale, diversamente cito altri testi. >>> Pace e Bene dal Figlio dell'Uomo <<<
 
Previous page | 1 | Next page

05) Nuovi tipi di dati da typedef all’ anteprima delle classi del C++ strutture enum e union

Last Update: 6/18/2016 1:35 AM
Author
Vote | Print | Email Notification    
OFFLINE
Post: 257
Post: 246
Registered in: 3/2/2016
Registered in: 3/3/2016
Gender: Male
6/18/2016 1:35 AM
 
Quote

Typedef, strutture, unioni, puntatori , enumerato,



Nel scorso capitolo abbiamo visto i tipi di dati primitivi e non solo le nuove costanti, il comando extern  e static   ecc… ora vediamo i nuovi tipi di dati che si usavano anche in C ma qui ci
apre la strada verso le classi del C++ in C questi dati li abbiamo visti solo di sfuggita perché è importante capire il C++



Il primo passo è creare dei dati  tipi definiti come già visto in C abbiamo la parola chiave typedef con typedef è possibile dare un nome-soprannome a quel tipo di variabile la sua sintassi:



typedef  tipo  soprannome ;



Dove il tipo  è il tipo di variabile da usare int, long ecc.. il soprannome il nuovo nome della variabile   esempio :



typedef unsigned long  ulong ; 

ora se io devo costruire delle nuove
variabile di tipo unsegned long basta scrivere



ulong var1, var2 ; 

ora queste 2 variabili var1 e var2 sono del
tipo ulong , ovvero  sono definite uguale tipo come è
definito ulong  da  typedef unsigned long  


Il typedef torna utile con i puntatori se io scrivo int * px, pk; siamo sicuri che sia px che pk siano entrambi puntatori ? sicuramente px lo è,  ma se avessimo scritto   typedef int *  intPt ;  poi usato 

intPt  px,pk ; 

ora 
entrambi sono dichiarati puntatori come intPt del typedef dichiarato in precedenza


Il comando typedef è importante per l’ utilizzo delle strutture in C ,  le strutture sono i record dei dati dove possiamo racchiudere diversi tipi di variabili in modo da costruire dei veri campi  tipo : nome, cognome, età, via, ecc… oppure nome prodotto,  marca,  prezzo,  iva   (tv satellitare terrestre 26 pollici  , sony, 600 , 20% ) rivediamo la struttura da più vicino composta da sopra al main pertanto nella parte dove si indica i prototipi delle funzioni , o dove si inserisce le variabili e costanti globali  abbiamo ;



struct  nome {

 tipo nome1;
 tipo nome2;
 tipo nome3;
};   vanno sempre i punti e virgola



   sotto al main  () vanno inserite l’ istanze  che possono essere uno o più   { struct nome riferimenti esempio  il corpo  della struttura va messo affilato uno sotto l’ altro fino al terminatore }; io ora lo metto in una riga per comodità di spazio  :


struct articoli { char nprodotto[25]; char marca [15];  float prezzo ; };



int main () {



struct  articoli  at;   >>>>ISTANZA



struct articoli ecco qui sopra le istanze  dove articoli prende il nome at



 ora usiamo il ‘.’ Per richiamare le voci nprodotto , marca, prezzo usando il nome di
richiamo at



   at . prezzo = 600; 

il nome di
richiamo dette anche istanze  possono essere anche più di una :



struct  articoli    at1, at2 ;    >>>ISTANZA



le 2 istanze at1 e at2   richiama i stessi tipi di variabili ma sono completamente diverse e non collegate ma disgiunte la parola struct con il C++ non serve più pertanto possiamo dichiarare le istanze con  articoli  at1, at2 ;



Con la struct possiamo usare il typedef che la struttura cambierà in 


 typedef struct {

tipo nome1 ;
tipo
ecc…
} nome;



Ora come vedete il nome della struttura non va più sopra ma qui alla fine  dopo l’ ultima graffa sempre con il punto e virgola;  tutto il resto rimane come detto su, ora però le variabili interne sono diventate dei tipi predefiniti con la funzionalità della struttura possiamo usare la struttura nei due modi  struct semplice oppure  con il typedef  struct


Nelle strutture possiamo utilizzare i puntatori che sono dichiarati dopo le istanze  dopo articoli 
at1 at2; scriviamo :

articoli *  PUat = &at1;   >>>ISTANZA PUNTATORE




Ora PUat  è il puntatore di at1 ora invece di usare il punto ‘.’ per scrivere e leggere i membri nella struttura dobbiamo usare ->   :



 PUat->prezzo = 600 ;



ora se noi facciamo puntare PUat  verso at2  con PUat =&at2;   ora questi membri di at2  sono
identici ad at1 perché utilizzano la stessa posizione del disco fisso ma possiamo utilizzare un diverso puntatore che punta ad una diversa istanza



articoli at1 , at2  ;>>> ISTANZA



Pat1=&at1 Pat2=&at2 ;   >>> ISTANZA DEL PUNTATORE CHE LEGGE l’ISTANZA



ora Pat1 e Pat2 sono 2 puntatori che punta verso 2 diverse istanze at1 e at2 possiamo usarle :

Pa1->prezzo = 250;  Pa2->prezzo = 600;


La differenza tra le strutture  e le classi è che la prima sono pubbliche le seconde sono private  




Le Enumerazioni con enum   assegna dei numeri interi alle parole , i numeri anche qui parte da 0 in su , se sostituiamo il primo numero , allora la conta parte da li dove diciamo noi, possiamo anche numerare noi  diversamente sfalsando i numeri sempre in più avanti enum la sua
sintassi è come la struttura :



enum  nome {
 nome1,
 nome2,
 nome3 = 50
};



Allora ora il nome1 prende il numero 0 , il nome2 prende il numero 1 ecc… per sostituire i numeri fare come nel nome3 dopo il prossimo nome4 sarà 51 ecc…
possiamo anche numerare il primo nome con nome1= 1,  la virgola fa parte dell’ enum solo nell’
ultimo nome non serve la virgola



Un uso di enum potrebbe essere con lo switch-case un esempio uso della settimana l’enum lo inserisco su una riga



 enum settimana { lun =1, mar, mer,gio,ven,sab,dom};  



switch
settimana {
case 1: 
cout << “lunedi lavoro casa , scuola”; break;
case 2:
cout <<” martedi non lavoro , supermercato , scuola “; break;
ecc… 
default  : cout << “ errore numero immesso non valido “; break; }



 Al posto di enum si vedrà meglio le classi perché qui in C++ non è più possibile sommare come si faceva in C se dall’ esempio precedente lun = 1, si faceva lun++ oppure settimana ++ il C capiva di sommare lun++ = mar



Unione con union si usa la stessa memoria in una unica struttura, union è uguale alla struttura
una parte sopra il main 



 Union nome{
 Tipo nome1;
 Tipo nome2;
 ecc…
};



Il compilatore assegna la giusta memoria all’ union  ma scrive più dati sopra uno stesso spazio di memoria ..la seconda parte di union va inserita sotto il main come sempre, si usa sempre il punto ‘.’   per scrivere o leggere  nei membri di union :

main () {

nome  x;  >>>>ISTANZA

x.nome1= 1250; 

cout<< “valore di nome1 = “
<<x.nome1<<endl;  



Sia nella struttura struct o typedef struct  che in union  possiamo creare il nostro array o vettore usando le istanze di questi, sia che sono normali o che sia i puntatori , l’ istanza ricordiamo è il
cambio del nome della struct o union che va sotto il main  dove possiamo scrivere   : 

   nome   x[5];  

ora x è un vettore da 5 unita e possiamo usare tutte le
caratteristiche del membro della struttura o unione  , il membro è i tipi dati scritti dentro la struttura (tipo nome1)



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



Vote: 151.0011
Admin Thread: | Close | Move | Delete | Modify | Email Notification Previous page | 1 | Next page
New Thread
 | 
Reply
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]

Feed | Forum | Bacheca | Album | Users | Search | Log In | Register | Admin
Create your free community and forum! Register to FreeForumZone
FreeForumZone [v.6.0] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 12:56 PM. : Printable | Mobile
Copyright © 2000-2021 FFZ srl - www.freeforumzone.com