Realizzato dalla classe 3B 2012/2013
I commenti
Possono impegnare più righe:
/* ......
........... */
oppure una singola riga:
//..........
Funzione main()
E' la funzione principale che a sua volta può richiamare altre funzioni. E' necessaria ed unica per ogni programma.
Terminazione delle istruzioni
Generalmente le istruzioni sono terminate dal carattere punto e virgola ' ; '
Il carattere ';' indica al compilatore che la struttura che sta analizzando è terminata e deve analizzare la struttura successiva.
Dimenticare o aggiungere un ' ; ' nei casi più fortunati genera un errore del compilatore; per individuare tale errore bisogna cercare in prossimità della segnalazione o nelle righe precedenti; nei casi più sfortunati la compilazione è eseguita ma il software non funziona correttamente (vedi caso while e for)
Parentesi graffe e blocco istruzioni
Le parentesi graffe definiscono l'inizio e la fine di un blocco di istruzioni. Un blocco di istruzioni è l'insieme di istruzioni che un ciclo o una selezione deve eseguire. Se il blocco è costituito da una sola istruzione le parentesi graffe si possono omettere.
Ogni parentesi aperta deve essere chiusa; in caso contrario il compilatore segnala l'errore. E' opportuno indentare le parentesi corrispondenti sullo stesso livello di rientranza; questo semplifica la loro ricerca.
Variabili;
La variabile è un contenitore di dati;
fisicamente è una locazione di memoria di un certo numero di byte
ogni variabile ha un nome, un tipo e un valore
I nomi possono contenere lettere, numeri e il trattino di sottolineatura '_'; il primo carattere deve essere una lettera; il linguaggio C distingue tra maiuscole e minuscole. Le parole chiave non possono essere utilizzate come nomi di variabili
I tipi di variabile sono: char per i caratteri, int per i numeri interi, float per i numeri in virgola mobile a precisione singola, double per i numeri in virgola mobile a precisione doppia.
Al tipo corrisponde una dimensione in byte. Tale dimensione dipende dalla macchina; char è 1 byte; tipicamente int 2, float 4, double 8 byte
il valore della variabile è il contenuto attuale della locazione di memoria; prima della inizializzazione è casuale e non utilizzabile.
Le variabili hanno una durata ( nascono e muoiono) in funzione della posizione della dichiarazione e dall’uso di particolari qualificatori. In C la memoria può essere allocata e disallocata e quindi può essere gestita all'interno del programma stesso al bisogno.
Quanto dichiarato all’interno di una funzione o di un blocco ha valore locale alla funzione o al blocco stesso
Quanto dichiarato all’esterno di una funzione ha valore globale per tutte le funzioni del file
Dichiarazione delle variabili: il compilatore riserva un'area della memoria di ampiezza corrispondente al tipo, e la identifica con il nome della variabile
tipo nomevariabile1, nomevariabile2 ;
Non è possibile usare una variabile che non sia stata dichiarata:
Si possono dichiarare più variabili dello stesso tipo su una stessa riga, separando i nomi con virgole:
int pippo, fine, inizio, i; // 4 variabili intere
float percento, totale, resto; // 3 variabili in virgola mobile
E’ possibile inizializzare una variabile al momento della dichiarazione:
int pippo= 0, num = 2, kk= 1;
float percento = 0.01;
Operatore assegnazione
L'assegnazione cambia il contenuto di una variabile e si realizza con il carattere =.
Nel successivo esempio la variabile a subisce una operazione di assegnazione:
a = b + c;
Si esegue l'espressione, più o meno complicata, a destra del segno uguale; il risultato si pone nell'unica variabile a sinistra, sovrascrivendo il valore precedentemente contenuto.
Si può anche fare l'esempio del travaso: il contenuto dell'espressione a dx è travasato nell'unica variabile a sx...
Tipi di variabili e keyword
Parole chiave definite dallo standard ANSI:
• auto • break • case • char • const • continue • default • do • struct • switch • typedef • union • unsigned • void • volatile • while• double • else • enum • extern • float • for • goto • if • int • long • register • return • short • signed • sizeof • static
9. I/O di variabili e costanti in C++
Il doppio segno maggiore o minore nelle istruzioni di I/O viene detto operatore di scorrimento e il suo verso concorda con la direzione del trasferimento:
unità I/O >> memoria (Input: dall'esterno verso la memoria del pc),
unità I/O << memoria (Output: dalla memria del pc verso l'esterno).
10. Stampa di variabili char e codice ASCII
11. Le costanti: #define e const
12. Input da tastiera
13. Cast
Nei sistemi a microcontrollore a causa dell'ottimizzazione della limitata memoria , si pone il problema della scelta del tipo di variabile, ad es. tra char, int e float.
Il problema è serio in quanto può comportare malfunzionamenti immediati ma non immediatamente comprensibili o, nel peggiore dei casi, bug improvvisi a sistema completato e difficilmente correggibili se non con una accurata analisi dell'intero sw; il tutto con dispendio inutile di energie o con distruzione del sistema ( razzo distrutto ). Se non si conosce per bene il compilatore, le operazioni che coinvolgono anche la divisione è opportuno effettuarle in float ( evitare moltiplicazioni che rendono intero il numero) e successivamente, se si è interessati alla parte intera, effettuare un cast al tipo int. Attenzione va posta alla scelta tra char e unsigned char (se previsto dal compilatore ) nella trasmissione dei caratteri in seriale tra i diversi protocolli come usb, bluetooth ecc. soprattutto quando si usano librerie preconfezionate.
Ad es. una variabile char compresa tra 0 e 255 non può essere confrontata con < 0 essendo sempre positiva.