Sei sulla pagina 1di 8

VOL_1 / UNITA’ 2 / MOD.

ANATOMIA1 DI UN PROGRAMMA IN C

[1.2.22]

Attraverso l’analisi minuziosa di un programma verranno posti in evidenza gli elementi essenziali e le basi di
un semplice programma C.

Il programma è stato scritto con il semplice obiettivo di mettere in evidenza gli elementi di un programma
C.

Si tenga conto che sebbene il programma possa apparire oscuro e privo di senso è solo dovuto al fatto che
per ora non si posseggono le conoscenze necessarie a comprenderlo.

Il commento2 descrive a cosa serve il programma ed è stata utilizzata sia la modalità di immissione con il
doppio slash su riga unica, sia la modalità continua con slash e astrisco.

In sostanza il programma analizza il contenuto delle due variabili (a, b) e ne trasferisce in uscita (scritto sulla
variabile c) il risultato somma, differenza o prodotto a seconda di quanto riportato nel seguente schema:

se a> b c=a−b
se a< b c=a+b
se a=b c=a ⋅ b

1
ANATOMIA dal lat. tardo anatomĭa, der. del gr. ἀνατομή «dissezione», a sua volta der. di ἀνατέμνω «tagliare,
sezionare»; In senso figurato , analisi approfondita e minuziosa.
2
Vedi in dettaglio la spiegazione sui commenti nella sezione dedicata al primo programma C.
1
Si mette in evidenza che il codice può essere digitato con qualsiasi programma di testo e poi incollato
nell’editor di DEV.

#include <stdio.h>
#include <stdlib.h>

/* programma per il calcolo della somma e prodotto di due variabili a,b */


// il programma restituisce la differenza se a è maggiore di b
// la somma se a è minore di b mentre se sono uguali, viene restituito il loro
prodotto

int main(int argc, char *argv[])


{
int a=3,b=7,c;
if (a!=b)
{
if (a>b) c=a-b;
else c=a+b;
}
else c=a*b;
printf("il risulatto e\' %d\n",c);
system("pause");
return 0;
}

Unica differenza è quella che nell’editor di DEV il testo è differenziato con colori e stili diversi (grassetto o
inclinato) a seconda del significato che ha nel linguaggio.

CASE SENSITIVE [sensibile alle maiuscole]

In informatica si dice di quei programmi che considerano differenti le lettere maiuscole e minuscole
raddoppiando di fatto i caratteri alfabetici disponibili in keyboard. La lettera R e r sono dunque due simboli
diversi pertanto la parola tReno e treno sebbene espressione del medesimo concetto, sono due parole
diverse.

2
LE PAROLE CHIAVE

Sono parole che hanno una funzione specifica e il loro uso è riservato.

Se vengono usate per nominare delle variabili il compilatore privilegia il loro significato riservato e, poiché
sarà inevitabile un conseguente errore sintattico, il programma non verrà compilato.

Es: int var_1=0, var_2=123, if=3;

Il codice “dovrebbe essere” una dichiarazione di tre variabili intere chiamate var_1 , var_2 e if il cui
inizializzate al valore (significa che appena il programma inizia l’elaborazione si trovano ciascuna la valore
dichiarato) iniziale rispettivamente di 0 , 123 e 3. Tuttavia essendo if una parola chiave , quando il
programma verrà compilato genererà un errore in quanto la sintassi del della parola chiave if non prevede
le sia assegnato né un tipo né un valore numerico.

Diverso sarebbe scrivere: int var_1=0, var_2=123, IF=3;

In questo caso, in virtù del “case sensitive”, IF è diverso da if.

Sono sempre scritte in minuscolo e non vanno utilizzate come identificativi di variabili poiché il loro uso è
prioritario. Questo implica che scrivere la parola chiave return ha un significato univoco e uno scopo
specifico e la sua sintassi deve essere rigorosa pena la presenza di errori in fase di compilazione.

Ad esempio la parola chiave auto non può essere utilizzata per nominare una variabile ma, le parole
Auto aUTo AUTO è possibile utilizzarle senza che siano in conflitto con la parola chiave.

auto, break, case, char, const, continue, default, do, double,


else, enum, extern, float, for, goto, if, int, long, register,
return, short, signed, sizeof, static, struct, switch, typedef,
union, unsigned, void, volatile, while

L’editor di DEV evidenzia in grassetto le parole chiave.

Il linguaggio C consente, combinando le parole chiave unitamente agli operatori (+,/,-,*,<,%,ecc…) di poter
costruire un numero illimitato di funzioni specifiche che non sono presenti nel vocabolario del C.

3
ELEMENTI DI UN PROGRAMMA C

Il C può essere considerato come la combinazione di 4 elementi fondamentali:

1- Espressioni
2- Istruzioni
3- Blocchi di istruzioni
4- Blocchi di funzione

Espressioni: i protoni e gli elettorni della materia C

Composizioni formate da operatori e operandi; rappresentano i costrutti più semplici del C.

Gli operandi a e c vengono sommati dall’operatore +


a + c Essendo una relazione tra due operandi, l’operatore viene definito
binario.
La somma tra g e h viene assegnata all’operando f
In questo caso sono presenti due operandi che saranno valutati
f = g + h
prioritariamente: il primo è la somma tra g e h e il secondo è
l’assegnazione del risultato somma all’operando f.
52000 In questo caso si tratta di un’espressione costante
Viene valutato con un operatore relazionale < (minore) se c è minore di
c < a
a

Istruzioni: gli atomi del C

Le istruzioni sono un comando C completo. Sono formate da espressioni con il carattere ; detto carattere
terminatore.

OGNI ISTRUZIONE DEVE3 SEMPRE ESSERE CONCLUSA CON IL CARATTERE TERMINATORE ;

var_3 = 25; Alla variabile var_3 è assegnato il valore 25.


var_h = g + h; Alla variabile var_h è assegnato il risultato della somma g+h

3
La mancanza del “punto e virgola” nei primi programmi C rappresenta l’errore più comune che compromette la
compilazione.
4
I blocchi di Istruzioni: le molecole del C

Il blocco di istruzioni è un raggruppamento di istruzioni che il compilatore considera come singola


istruzione.

Il blocco di istruzioni è sempre compreso tra due parentesi graffe: inizia con una aperta { e finisce con una
chiusa }.

Si propone come esempio un blocco di if anche senza per ora conoscere in dettaglio la sua sintassi

if(a>c) La condizione a>c implica un risultato di tipo “vero o falso”; se è vero


deve essere processata un’istruzione, se falso il programma deve
{
procedere nel suo cammino.
v = f/u; In questo esempio l’azione univoca (prevista nel caso sia vero che a<c) è
rappresentata dal blocco di istruzioni contenuto dalle due graffe:
b = c-20;
{…istruzioni…}.
h++; Il programma vede come unica l’azione conseguente all’if vero.
}

I blocchi di Funzione: la materia del C

Un blocco di funzione è un raggruppamento di uno o più blocchi o da più istruzioni combinate in modo da
svolgere un compito specifico.

Una funzione è un modulo unico destinato alla risoluzione di una parte del programma.

int major (int A,int B) In questo esempio la funzione chiamata major è stata creata con lo
{ scopo di assegnare alla variabile intera MAX il più grande tra i valori
int MAX; interi A e B.
if(A>B) Senza addentrarci nel dettaglio della struttura della funzione, si
{ possono distinguere fin d’ora alcuni elementi tra cui:
MAX = A;
la funzione chiamata major è di tipo intero e si significa che il
}
else MAX=B; risultato della sua elaborazione viene assegnato alla variabile intera
return MAX; MAX. La variabile viene restituita (attraverso la parola chiave return)
} a chi nel programma ha chiamato questa funzione.

Il blocco funzione inizia con la sua dichiarazione e la sua sintassi prevede questa struttura

tipo nome (argomenti)

…istruzioni;

Tra due parentesi graffe è compreso il corpo della funzione che include tutte le istruzioni (o i blocchi di
istruzioni) deputate al suo svolgimento.

5
LE DIRETTIVE AL PREPROCESSORE

Le prime righe del programma proposto hanno lo scopo, attraverso un programma che viene lanciato
all’atto della compilazione (il preprocessore appunto), di acquisire dei file di tipo header (file.h) in cui sono
già predisposte funzioni specifiche precompilate.
Le librerie (come vengono anche chiamate) sono dunque una raccolta di funzioni specifiche già scritte che
consentono ad esempio di effettuare le operazioni di input – output.
Le due librerie sono in questo caso la standard IO e la standard library.

#include <stdio.h>
#include <stdlib.h>

Se si volesse effettuare delle operazioni matematiche complesse come la radice quadrata o le funzioni
trigonometriche si rende necessario includere librerie specifiche come ad esempio la libreria math.h
semplicemente includendola attraverso la sintassi

#include <math.h>

6
I COMMENTI IN C

Tutto quello che è scritto in un programma C ha un senso formale che dovrà essere interpretato dal
computer pertanto sintassi e semantica sono elementi rigidi, fondamentali e imprescindibili.

Ogni singola particella ha un peso e avrà un ruolo specifico nell’economia del programma.

Fanno eccezione a questa premessa i commenti ossia tutte le porzioni di testo che sono escluse
dall’interpretazione del computer.

Lo scopo dei commenti è quello di integrare nel programma la documentazione necessaria a descriverlo.
Sono particolarmente utili nei programmi articolati e corposi , nelle modifiche fatte a distanza di tempo o
in programmi fatti da altri.

LA DICHIARAZIONE DELLE VARIABILI

Rappresenta quella porzione di codice in cui si nominano le variabili specificando rispettivamente:

 Il tipo (intero o con virgola)


 Il nome (identificativo simbolico deciso dal programmatore)
 Il valore di inizializzazione (il valore che la variabile assume all’inizio dell’esecuzione del
programma)

La sintassi per l’assegnazione è spiegata nell’apposita sezione in cui sono trattate le varabili.

IL MAIN

- LA FUNZIONE PRINCIPALE-

Ogni programma C possiede una funzione principale e il suo nome è main. Nel caso di programmi semplici il
programma potrebbe essere composto anche solo da questa.

Nei programmi più articolati e complessi è invece conveniente gestire l’algoritmo in modo che possa essere
scomposto in sezioni autonome ciascuna delle quali è dedicata ad un compito specifico. Queste sezioni
saranno appunto funzioni aggiuntive create dal programmatore. Alla funzione main spetterà solo il
coordinamento delle funzioni.

7
Nell’esempio citato il main viene dichiarato come tipo intero ( int) , ha nome mani e, tra le parentesi tonde
(int argc, char *argv[]) compaiono gli argomenti della funzione.

Tra le parentesi graffe, il corpo della funzione, è invece scritto il codice operativo (in sostanza tutte le
istruzioni deputate alla risoluzione dell’algoritmo) che termina con l‘istruzione return 0;

int main(int argc, char *argv[])


{
int a=3,b=7,c;
if (a!=b)
{
if (a>b) c=a-b;
else c=a+b;
}
else c=a*b;
printf("il risulatto e\' %d\n",c);
system("pause");
return 0;
}

Si tenga sempre presente che molti degli aspetti ciati che appaiono per ora difficilmente comprensibili,
risulteranno sempre più chiari man mano ci si addentra nella conoscenza del linguaggio.

Potrebbero piacerti anche