Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
C.
#define
Un’altra direttiva molto utile è:
#define nome_costante valore_costante
Questa direttiva ha lo scopo di definire una costante attraverso il suo nome ed il suo valore. Ogni volta che
il compilatore troverà il nome della costante nel programma, lo sostituirà con il codice relativo al suo
valore. L’utilizzo delle costanti è fondamentale in un programma in quanto consente di istituire un valore
che non cambierà mai nel programma, nemmeno per errore.
main
int main(void)
{
}
La funzione main comunica al compilatore dove inizia il vero e proprio programma da eseguire. In
particolare, l’inizio e la fine del programma sono comunicate attraverso parentesi graffe.
Variabile
Una variabile è un’entità corrispondente ad una cella di memoria di una certa dimensione (8, 16, 32, ... bit),
e contenente un certo tipo di dato, definito durante la definizione della variabile.
Dichiarazione di variabile
In C, una variabile si dichiara in questo modo:
tipo nome_variabile;
dove il nome della variabile può essere scritto utilizzando lettere maiuscole o minuscole, numeri (anche se
non può iniziare con un numero) o underscore (“_”). Il linguaggio distingue le lettere maiuscole dalle
minuscole in un nome.
Dichiarare una variabile significa, letteralmente, comunicare alla memoria del calcolatore che deve
riservare un certo numero di bit per quella particolare variabile.
Tipo di variabile
C è un linguaggio staticamente tipizzato. Ciò significa che ogni variabile deve essere definita con un tipo,
che indica la tipologia di dato che essa contiene e le relative proprietà. Questi sono i tipi di variabile:
tipo Dato dimensione
char valore numerico associato ad un 8 bit (1 codice binario ASCII)
codice ASCII di un carattere
int numero intero C 32 bit (1 numero binario intero)
2
float numero reale in virgola mobile 32 bit (1 S, 8 E, 23 M)
double numero reale in virgola mobile a 64 bit
doppia precisione
Qualificatori
In aggiunta, le variabili possono presentare dei qualificatori, che associano alle variabili delle qualità:
qualificatore significato
short Indica che la variabile deve essere rappresentata in
uno spazio di memoria dimezzato rispetto allo
standard.
long Indica che la variabile deve essere rappresentata in
uno spazio di memoria doppio rispetto allo
standard.
unsigned Indica che la variabile deve essere considerata
come un numero naturale, non in complemento a
due.
Assegnamento di variabile
L’assegnamento di una variabile, cioè la sua associazione ad un valore caratteristico del tipo di variabile,
avviene in questo modo:
tipo nome_variabile = valore;
Altri elementi essenziali
Commento
Il doppio slash o lo slash – asterisco definiscono l’inserimento di un commento utile alla comprensione del
programma, ma che il compilatore non deve interpretare come parte di esso.
// commento
/* commento */
Strutture di controllo
Le strutture di controllo sono insiemi di istruzioni che permettono di eseguire operazioni in relazione ad
alcune condizioni. Sono estremamente necessarie per la costruzione di un programma complesso.
if
La struttura condizionale if è utilizzata in questo modo:
10. viene verificata la condizione dell’istruzione if:
o se essa risulta vera (ha valore 1), vengono eseguite le istruzioni immediatamente
successive;
o se essa risulta falsa (ha valore 0):
viene saltato il blocco “if” e vengono eseguite le operazioni successive;
vengono eseguite le istruzioni successive all’operatore else.
Sintassi
if (condizione){
istruzioni_1;
} else {
istruzioni_2;
}
switch switch
La struttura condizionale è utilizzata in questo modo:
11. viene letto il valore del parametro inserito fra parentesi tonde (può essere un valore numerico o di
carattere). case
12. viene verificata l’uguaglianza fra il valore del parametro e il valore dei vari all’interno della
struttura condizionale:
o case.
se l’uguaglianza è vera, vengono eseguite le istruzioni associate al relativo
o se l’uguaglianza è falsa, si procede a verificare le uguaglianze successive.
break, switch.
13. se si trova un’istruzione il ciclo viene interrotto e si esce dalla struttura
14. se il valore del parametro non uguaglia alcun valore dei case, viene eseguita una serie di operazioni
default di trattamento dell’errore.
Sintassi
switch (parametro) {
case a:
istruzioni_a;
break;
case b:
istruzioni_b;
break;
default:
istruzioni_gestione_errore;
}
Cicli
Un ciclo, o iterazione, è una struttura di programmazione utile a ripetere una serie di istruzioni.
while
Il ciclo while serve a ripetere una serie di operazioni fintanto che una condizione viene rispettata, dunque
un numero indefinito di volte.
Una qualunque funzione computabile può essere descritta attraverso la sequenza di operazione, la
struttura if ed il ciclo while. L’utilizzo di altre funzioni, procedure e cicli è dunque utile a semplificare la
scrittura del programma, seppure non necessario.
Sintassi
Il ciclo while è utilizzato in questo modo:
15. condizione: il calcolatore valuta una condizione, espressa tra parentesi:
o se la condizione è vera, il calcolatore esegue la serie di istruzioni presenti fra le parentesi
graffe, e ritorna alla verifica della condizione.
o se la condizione è falsa, il calcolatore esegue la serie di istruzioni presenti oltre la parentesi
graffa di chiusura (queste istruzioni sono necessarie affinché il calcolatore non si trovi in un
loop continuo).
while (condizione) {
istruzioni_vero_da_ripetere
}
istruzioni_falso
Esempio
Questo è l’esempio di un ciclo while per eseguire il fattoriale di un numero “n”:
while (n > 1) {
fattoriale = fattoriale*n
n = n – 1
}
do while
Il ciclo do while serve ad eseguire una serie di operazioni, e successivamente a verificare una condizione per
stabilire se ripetere il ciclo o meno.
Sintassi
Il ciclo do while è utilizzato in questo modo:
16. do: il calcolatore esegue (do) per prima cosa le istruzioni presenti fra le parentesi graffe, senza
verificare alcuna condizione;
17. condizione: una volta esaurite le istruzioni, il calcolatore verifica la condizione espressa da while al
termine del ciclo:
o se essa è vera, ritorna al do iniziale;
o se essa è falsa, prosegue con le istruzioni successive.
do { istruzioni_da_ripetere
}while (condizione)
Esempio
Questo è l’esempio di un ciclo do while per eseguire un fattoriale di un numero “n”:
do {
fattoriale = fattoriale*n
n = n – 1
} while (n > 1)
for
Il ciclo for serve a ripetere una serie di operazioni un numero predefinito di volte.
Sintassi
Il ciclo for è utilizzato in questo modo:
18. inizializzazione: al calcolatore viene data un’istruzione (potrebbe esser una qualsiasi) che deve
eseguire prima di procedere al ciclo.
Nel caso di for, al calcolatore viene comunicato il valore di partenza della variabile utilizzata;
19. condizione: al calcolatore viene comunicato l’ultimo valore che la variabile deve assumere,
attraverso una disuguaglianza;
20. operazione: al calcolatore viene comunicata l’operazione algebrica da svolgere ad ogni ciclo per
modificare il valore della variabile dal valore iniziale a quello finale.
for (inizializzazione; condizione; operazione) {
istruzioni
}
Esempio
Questo è l’esempio di un ciclo for per eseguire un fattoriale di un numero “n”.
for (i = n; n > 1; --i) {
fattoriale = fattoriale*i
}
Si noti che “--i” è una abbreviazione per “i – 1”.
Contatore
Il contatore è un elemento fondamentale di un ciclo, e viene usato spesso.
Il contatore è una variabile che, ad ogni ciclo, viene modificata (incrementata, diminuita) di un certo
valore (di solito 1), in modo da conteggiare il numero di volte per cui il ciclo è stato ripetuto, oppure per
assegnare alla variabile valori diversi ad ogni ciclo.
Errori comuni
Spesso la programmazione comporta alcuni errori, che vengono comunicati dal compilatore attraverso un
messaggio di errore, e comportano l’interruzione del programma. Il processo di eliminazione graduale di
tutti gli errori di un programma è detto debugging.
Errore compile time
L’errore compile time si genera quando le regole grammaticali del linguaggio C vengono violate, e fa sì che
il compilatore blocchi la compilazione del programma, impedendone l’esecuzione.
Errore run time
L’errore run time si genera quando il programma compilato porta il calcolatore a compiere operazioni
impossibili (come la divisione per zero), e può essere notato solo mentre il programma è in esecuzione.
L’errore run time provoca l’arresto forzato del programma.
Sottoprogrammi
Un sottoprogramma è un programma già inventato, compilato e testato da altri programmatori, che può
essere riutilizzato nella programmazione. I sottoprogrammi sono essenziali alla programmazione
complessa, per varie ragioni:
21. forniscono istruzioni per risolvere problemi complessi, sintetizzandole in operazioni semplici
preimpostate
22. sono sicuramente privi di errore, in quanto già testati
I sottoprogrammi si suddividono essenzialmente in due categorie: procedure e funzioni.
Procedure
Una procedura è un sottoprogramma che prevede solo input, senza alcun output, ovvero che non ritorna
all’utente alcune risultato.
printf
La procedura printf ha lo scopo di mostrare un valore di una variabile nel programma.
printf(“testo”, variabile);
L’argomento contiene:
23. un testo, racchiuso fra le virgolette
24. una o più variabili da mostrare, scritte dopo la virgola
Placeholder
Nel testo della procedura può comparire un placeholder, ovvero un carattere che ha lo scopo di fare
riferimento ad un certo tipo di variabile. Il segnaposto mostra dove verrà posizionata la variabile nella
stringa del programma.
Esistono vari tipi di placeholder, ognuno assegnato ad un tipo di variabile:
placeholder tipo di variabile funzione compatibile
%c char printf/scanf
%d int printf/scanf
%f double printf
%lf double scanf
/n
Nel testo della procedura può comparire anche il simbolo:
/n
che comunica al calcolatore di andare a capo nel far comparire la successiva stringa di programma.
scanf
La procedura scanf ha lo scopo di assegnare ad una variabile un valore scelto dall’utente, e “comunicato”
attraverso un input di tastiera.
scan