00 18/05/2016 11:19
I nuovi dati li definiamo noi con nuovi comandi , typedef , enum, struct,union, nuove formule per strutturare nuovi dati i record



Questi dati che noi possiamo definire sono ovvero dati legati tra di loro da una struttura ben
definita la struttura viene collegata con typedef

Il typedef  possiamo usarlo anche per le variabili semplici cosi rendendo il programma migliore in leggibilità esempio troviamo i lati di un rettangolo  i lati li chiamiamo lati a e b buono , ma con typedef possiamo fare diversamente vediamo la sintassi di typedef  per capire come funziona  ;



typedef  tipo  nuovotipo ;   (<- parte 1 // parte 2 ->)      nuovotipo  nuovonome



dove tipo è il solito tipo della variabile  int, float, char  ecc…. nuovo tipo il nuovo nome che collega alla variabile e ora vediamo :

typedef  int rettangolo_lato_A ;         rettangolo_lato_A   a;  

ora la variabile rettangolo_lato_A  viene rinominata in a  che è il nuovonome  ugualmente per il lato b ;

typedef  int rettangolo_lato_B ; (<-parte 1)     (parte 2 ->)  rettangolo_lato_B   b;



Tutto questo serve per avere una leggibilità migliore del programma la  parte  1 e 2 della variabile dove viene rinominata con a o b   può essere inserita sia  sopra che sotto il main () { 
,quello che cambia è la visibilità delle variabili se le variabili sono globali va posto sopra il main , altrimenti sotto il main  qui le variabili non sono globali ma locali, si consiglia sempre prima del main cosi sono globali e possono essere lette anche dentro le funzioni, se non serve meglio sotto il main cosi gira solo dentro il main 

Con il typedef possiamo creare direttamente i vettori di numeri e di caratteri logicamente, la sintassi è come su solo:

typedef  tipo nuovo_tipo  [dimensione]  ;   esempio :
 
 typedev  int vettore [5] ;   vettore v;   ora abbiamo v[0]v[1]v[2]..

Se ci serve più vettori della stessa dimensione e uguali tipo intero o altro possiamo fare nella 2 parte  :

vettore v1,v2,v3 ; 

cosi abbiamo creato 3 vettori da 5  anzi che scrivere  v1[5],v2[5],v3[5] ecc… inizializzare questi vettori è come al solito 

v1[]{5,123,46,400,1650};

se non viene inizializzato nelle quadre [n] va messo il numero o un riferimento ad una
costante creata con un (#define n 5 )

Con il typedef possiamo creare anche le matrici  come su abbiamo;

typedef float matrice [3][4] ;     matrice  m;

Con il typedef  possiamo definire nuovi dati che magari ha una lunghezza di tot caratteri una data di  gg/mm/aaaa  è composta di 11 caratteri con lo  ( \0 ) delle stringhe  oppure i 17 caratteri di un codice fiscale , ugualmente per le targhe auto con 8 caratteri uscendo fuori dei vettori controllati 

  typedef   char data [11] ;      data dt; 


Enum con enumerazioni  possiamo associare dei numeri interi  alle parole intanto ecco la sintassi :

   enum  nome_del_tipo {lista dei valori } variabile;

Ora vediamola in dettaglio : 

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

il nome del tipo è settimana poi abbiamo i giorni dove ogni giorno è un numero intero, enum come i vettori conta da 0 pertanto : lun= 0 , mar=1 , mer=2 … dom= 6   se vogliamo cambiare i numeri basta fare ;

enum settimana {lun =1, mar, mer,gio, ecc..} giorni;


ora tutti quelli dietro il primo numero sono sequenziale partendo da 1 , se il numero era 50 per lun, mar era 51 ecc… se desideriamo i nostri numeri personalizzati basta inserirli manualmente ora possiamo vedere i confronti  se mar è maggiore di lun  oppure g1= lun ecc…  in C non c’è il dato booleano ma possiamo costruirlo con l’ enum  semplicemente

enum  bol {falso,vero}boolean ; 

  anche in enum possiamo usare typedef cosi la parte 1 :

typedef  enum {lun= 1,  mar, mer,  ecc:  } giorni ;   ( parte 2 -> ) giorni gg;  


Struct usiamolo con  il typedef ci fa ritrovare sotto un nuovo tipo una nuova variabile strutturata e semplice da creare,  noi come sempre abbiamo le scatole in riferimento una scatola del nostro negozio può essere un giocattolo oppure una lampada oppure un tavolo secondo la descrizione, se vendiamo le auto che ci serve  la marca, il modello anno di immatricolazione, il costo ecc… se vendiamo i computer ci basta marca, modello, e costo   noi possiamo strutturare tutti questi dati e questi dati sotto la struct  struttura può uscire,  il compilatore inserisce le 2 graffe in verticale io per comodità inserisco i dati in orizzontale, nella  parte 1 fare attenzione su ogni nome c’è il tipo  (char marca [20] ) e i tipi possono essere diversi secondo le esigenze



typedef struct { char marca [20]; char modello[20];int costo ; } computer 
      ( parte 2   ->   (  computer  c; ))

Diversamente senza typedef si poteva fare :

struct  computer { char marca[20]; char modello[20] ; int costo;  }  ;    

struct  computer  c ;



ora questo dato computer è collego ad una variabile nuova c , quando chiamo questa c
e inserisco il punto ‘ . ’ mi esce la lista che su avevo creato marca , modello, costo e li devo
inserire i dati , queste nuove variabili  sono collegate tra loro tramite il c del typedef,  e alla struct del computer   ora collegato nella seconda parte creiamo un vettore  c di tanti posti 

computer c [10] ; 

cosi abbiamo una tabella di 10 vettori collegati mediante la struttura di struct  immaginiamo una tabella dei nostri clienti cosa possiamo collocare come dati: il nome cognome, l’ indirizzo, il telefono, la partita iva ,codice cliente, tipo pagamento, Iban , ecc… 


Union è simile alla struct , vedo che nessuno la tratta nei testi di C che uso, ne parla solo la guida dello stesso compilatore, viene  usato inserito dentro le istruzioni di struct  potrebbe
avere anche un overload  un sovraccarico se lo si usasse con tipi differenti di variabili , perché union usa lo stesso settore della memoria per le varie variabili dichiarate in esso e non si può usare variabili di tipo int con un tipo double cosi si crea l’ overload , la parte buona di union usando la stessa memoria usa meglio i settori della stessa memoria poi le troveremo anche nel C++ dentro la guida  già ne parla di più per il suo nuovo uso dentro il C++11 è stato migliorato il suo uso ora noi rimaniamo in C perché come scritto in wikibook vedi dentro il forum la nuova cartella  (Appunti sulla programmazione C++ (vuoto) )   e il suo unico  collegamento guida dal C al C++,  si consiglia la conoscenza del C per conoscere meglio il C++ 




Ciao grazie  ByMpt-Zorobabele 

Di questo testo dalla prefazione fino all’ 13° capitolo scritto,  ho creato un testo PDF da scaricare lo trovate insieme dove rimane l’ elenco delle foto e ogni volta sarà aggiornato con i nuovi testi      




[Modificato da JehovaZorobabele 18/05/2016 11:21]