Sei sulla pagina 1di 8

C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

Note dell’autore

Questa guida è completamente gratuita e tratterà la programmazione C. L’autore non


ha nulla in contrario
alla divulgazione o modifica della suddetta a patto che siano lasciati i riferimenti e i
copyright di autore e
web site. Ho scritto questa guida per pura passione verso la programmazione e
l’informatica in generale.
Ho preso spunto dalle slide del mio corso di C. Per qualsiasi
domanda,dubbio,precisazione o correzione
potete contattarmi tramite il mio web site www.taninorulez.altervista.org oppure
www.taninorulez.wordpress.com . Buona lettura.

Tipi di Dati, Istruzioni di Controllo


Cominciamo questo 5 capitolo della guida parlando dei tipi di dati del C.

In C esistono 5 tipi di dati principali:


Carattere ,char - (solitamente un carattere in un byte)

numeri interi, int - (solitamente un intero in 2 byte)

numeri in virgola mobile, float

numeri in virgola mobile doppi, double

non valori, void

Non esistono naturalmente solo questi 5,ma tutti gli altri tipi in C sono basati su questi
5 tipi. Il modificatore riceve la dichiarazione di tipo, altera il significato del tipo base
per adattarlo con più precisione alle varie situazioni. Ecco alcuni esempi:
signed

unsigned

long

short

I modificatori signed, unsigned, long, short li possiamo applicare a int e char mentre
long può essere applicato anche a double.
C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

I Numeri Negativi
Per chi già ha una conoscenza minima,saprà che i numeri negativi sono
rappresentati utilizzando un approccio di tipo complemento a due, che inverte tutti
i bit del numero (tranne il bit di segno), aggiunge 1 al numero e imposta il bit del
segno a 1. Gli interi con segno hanno un’ampiezza assoluta pari alla metà dei loro
fratelli insigned 0111111111111111 rappresenta 32767. Se il bit alto fosse stato 1
invece di 0, il numero sarebbe stato interpretato come -1. Se fosse stato dichiarato
come unsigned int, impostando il bit alto a 1, il numero sarebbe stato interpretato
come 65535!

Regole di Promozione
Le regole di promozione si applicano automaticamente alle espressioni che
contengono dei valori di due o più tipi di dato, dette anche espressioni di tipo misto.
• Ogni valore in un’espressione di tipo misto sarà promosso automaticamente a quello
più alto dell’espressione (in realtà verrà creata una copia temporanea di ognuno dei
valori, lasciando gli originali
C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

invariati)

Esempio:

int x;
float f,y;
….
f=x/y;

oppure

int x,y;
float media;

Media=(float)x/y;

Gerarchia di Promozione per i Tipi di Dati


C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

Istruzioni di Controllo
• Esecuzione sequenziale
Le istruzioni sono eseguite l’una dopo l’altra nell’ordine in cui sono scritte

• Trasferimento di controllo
Quando il prossimo statement non è il prossimo nella sequenza
L’abuso del goto portava diversi problemi.

• Struttura di Sequenza: predefinita in C.


I programmi sono eseguiti sequenzialmente per default.

Le istruzioni di Controllo del C sono:

Condizionali

If, if/else, switch


Iterative

while, do/while, for


Salti

break, continue, goto, return


Flowchart

Rappresentazione grafica di un algoritmo.Viene disegnato usando dei simboli


speciali connessi da frecce dette linee di flusso ( flowlines). Simbolo rettangolo
(simbolo di azione): indica qualsiasi tipo di azione.
Simbolo ovale: denota l’inizio o la fine di un programma, o di una sezione di
codice (in questo caso si usano anche simboli cerchietto, detti simboli di
connessione). Simbolo rombo (di decisione): indica che dovrà essere eseguita
una scelta.
Istruzioni di controllo singolo ingresso/singola uscita

Connettono il punto di uscita di un’istruzione di controllo con i punto di ingresso


della successiva (accatastamento delle istruzionidi controllo).Rendono facile la
costruzione dei programmi.
C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

Istruzione Condizionale:

Usata per scegliere tra sequenze di azioni alternative.Rappresentazione logica: Se il


voto dello studente è maggiore o uguale a 60 Visualizza “Promosso”. Se la condizione
è vera viene eseguita l’istruzione di visualizzazione e il programma va alla prossima
istruzione.Se la condizione è falsa: l’istruzione di visualizzazione viene ignorata e il
programma va all’istruzione successiva.

L’indentazione rende i programmi più leggibili

• C ignora i caratteri di spazio bianco (es. spazi, tabulazioni, newline)

• L’istruzione scritta in C:

if ( voto >= 60 )

printf( ”Promosso\n" );

Il codice C corrisponde strettamente alla rappresentazione logica.

Facciamo un esempio:

Il rombo indica la decisione che deve essere presa. Come vediamo,contiene una
espressione che può essere o vera o falsa. A seconda del risultato si esegue un
percorso.

Differenza tra if e if/else


C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

L'istruzione if esegue un'istruzione solo quando è vera.

L'istruzione if/else esegue un'istruzione diversa quando la condizione è vera rispetto a


quando è falsa.

Ecco un esempio di istruzione if/else:

Possiamo avere anche una serie di istruzioni if/else annidate ad esempio:

Se il voto dello studente è maggiore o uguale a 90

Stampa “A”

altrimenti

Se il voto dello studente è maggiore o uguale a 80

Stampa“B”

altrimenti

Se il voto dello studente è maggiore o uguale a 70

Stampa “C”

altrimenti

Stampa “D”

Una volta che una condizione è verificata, la parte else dell’istruzione if/else
corrispondente è saltata. Il programma passa ad eseguire l’istruzione successiva a
quell’if/else.
C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

Facciamo un esempio:

if ( voto >= 60 )

printf( ”Promosso.\n" );

else {

printf( ”Bocciato.\n" );

printf( ”Devi ripetere questo corso.\n" );

Senza le parentesi graffe, printf( "Devi ripetere questo corso.\n"); sarebbe


eseguita automaticamente.

Errori Logici

– Hanno il loro effetto a tempo di esecuzione

Esempio: il punto e virgola dopo la condizione di un’istruzione if

if (x == 0);

printf(“x è uguale a zero”);

if (x == 1);

printf(“x è uguale a uno”);

Non fatali: il programma continua l’esecuzione ma dà un output scorretto

Fatali: il programma fallisce e interrompe l’esecuzione prematuramente (Divisione per


zero)
C La Guida

Tipi di Dati, Istruzioni di controllo

Tanino Rulez

Errori di sintassi

Esempio: il punto e virgola dopo la condizione di una istruzione if/else

if (x == 0);

printf(“x è uguale a zero”);

else

printf(“x è diverso da zero”);

oppure le parentesi graffe non bilanciate.