Appunti Dalle Lezioni:, Oolqjxdjjlr&
Appunti Dalle Lezioni:, Oolqjxdjjlr&
,OOLQJXDJJLR&
9LWWRULR*KLQL
e-mail YLWWRULR#FVUXQLERLW
Letture Consigliate:
LQFOXGHVWGLRK!
LQWPDLQ
^
SULQWI +HOOR:RUOG?Q
H[LW
`
6YLOXSSRGLXQ3URJUDPPDLQOLQJXDJJLR&
Lo sviluppo di un programma in C richiede le seguenti fasi:
Scrittura, Compilazione, Esecuzione e Debugging.
• 6FULWWXUDGHO3URJUDPPDLQ/LQJXDJJLR&
• Per creare un file contenente un programma C si usa un qualsiasi text
editor quale "edit" "notepad" in pc con sistemi operativi dos-windows,
oppure vi, emacs, xedit in host con s.o. unix.
• Il nome del file deve avere l’estensione "F", ad esempio, prog.c.
• Il contenuto, ovviamente, deve rispettare la sintassi C.
• &RPSLOD]LRQH
• La compilazione di un programma scritto in C si effettua mediante
programmi detti FRPSLODWRUL quali Microsoft C Compiler (cl.exe) in
sistemi dos-windows, o Gnu C Compiler (gcc) in sistemi Unix.
• Questi compilatori in realtà svolgono 3 funzioni: SUHSURFHVVLQJ,
FRPSLOD]LRQH YHUD H SURSULD (eventualmente passando da uno step
intermedio che consiste nella generazione di file in codice assembly)
per generare dei moduli oggetto, OLQNLQJ (collegamento) dei vari
moduli oggetto e delle eventuali librerie.
• queste tre funzioni, in ambiente unix sono solitamente eseguite da tre
programmi diversi (preprocessor, compiler, linker) che vengono attivati
da un programma di gestione anch'esso comunemente detto
compilatore. In ambienti microsoft spesso preprocessing e
compilazione sono eseguiti da uno stesso programma, ed il linking è
effettuato da un altro programma chiamato dal compilatore. Esiste
inoltre un utility (il make) che permette di eseguire le varie fasi solo per
quei files che sono stati modificati più recentemente (in particolare i
files modificati dopo l'esecuzione dell'ultima compilazione), limitando
in tal modo il lavoro del compilatore.
COMPILATORI A LINEA DI COMANDO
\ ambiente DOS-WINDOWS UNIX-LINUX
fase \ (Microsoft) (GNU)
gestione nmake.exe make
preprocessing cl.exe cpp
compilazione cl.exe gcc
linking link.exe ld
• (VHFX]LRQHHGHEXJJLQJ:
• L’eseguibile ottenuto mediante compilazione e link viene eseguito per
verificarne il funzionamento e scoprire eventuali errori.
• N.B. Un programma sviluppato in C che sembra funzionare dopo la
prima compilazione ha sicuramente degli errori nascosti !!!!
•
• Esistono in commercio i cosiddetti "ambienti di sviluppo integrati" quali
ad es il Microsoft Visual C, che nascondono all’utente questi aspetti della
compilazione, mediante un’interfaccia visuale, e che consentono di
effettuare il debugging in maniera più facile, seguendo passo a passo
l'esecuzone del programma.
----------------------------------------------------------------
,O0RGHOORGL&RPSLOD]LRQHSHULO&
Gli step essenziali della compilazione per un programma sviluppato in C
sono rappresentati nel seguente schema:
&6RXUFH&RGH
Preprocessor
Compiler
Assembly Code
Assembler
Libraries
Object Code
Linker
([HFXWDEOH&RGH
int vettore[SIZE];
• ,O&RPSLODWRUH
Il compilatore prende in input il codice ottenuto come output dal
preprocessore, e crea il codice assembly, cioè un codice che
(semplificando) è mappabile 1 a 1 con il codice macchina ma è scritto in
una forma umanamente comprensibile.
• / $VVHPEODWRUH
Prende in input il codice assembly, e crea il codice oggetto, cioè del
codice macchina (comprensibile per il calcolatore) in cui ancora
esistono dei riferimenti non risolti.
• ,O/LQNHU
detto anche collegatore, si occupa di prendere in input i vari files di
codice oggetto, sia quelli generati dall'assemblatore, o direttamente dal
compilatore a partire al codice del programmatore, sia quello delle
librerie disponibili, e di generare il file eseguibile, collegando tutti i
riferimenti a variabili e funzioni da un file all'altro.
12
/H&RQILJXUD]LRQLGLXQ3URMHFW
Ogni progetto viene scritto all’interno di una propria
directory, in cui l’utente scrive i propri files, e in cui
MSVC scrive alcuni suoi files in cui salva le informazioni
sul progetto e sullo stato di avanzamento della compilazione
Quindi evitate di cancellare files aventi estensioni tipo:
.prj , .pch , perchè potrebbero contenere informazioni
importanti.
All’interno di uno stesso Progetto, MSVC prevede due
possibili FRQILJXUD]LRQLFLRqGXHSRVVLELOLVHWWDJJLGHL
SDUDPHWULGLRWWLPL]]D]LRQHHGHEXJJLQJ e altri.
Queste due configurazioni sono indicate con i termini,
“'HEXJ” e “5HOHDVH” e sono fatte con lo scopo di permet_
tere al’utente, se vuole, di impostare nello stesso progetto
le opzioni in due modi differenti:
• Nella configurazione 'HEXJ di solito l’utente sceglie
RS]LRQLGLGHEXJJLQJSHVDQWL, per testare e seguire l’esecu_
zione del programma mediante i comandi dell’ambiente
integrato.
• Invece nella configurazione “5HOHDVH” l’utente setta una
FRQILJXUD]LRQHSLVQHOOD, in cui la mancanza di opzioni di
debugging e la presenza di opzioni di ottimizzazione ren_
dono il SURJUDPPDSLYHORFH.
Con un comando annidato nel Menu Project (Configuration)
l’utente di volta in volta sceglie su quale configurazione
lavorare 13
/H&RQILJXUD]LRQLGLXQ3URMHFW
L’MSVC crea una sottodirectory per ciascuna delle
configurazioni settate, ed in queste sottodirectory scrive
l’eseguibile eventualmente generato qualora la compila_
zione sia andata a buon fine.
14
&RPH&UHDUHXQ1XRYR3URMHFW
Vediamo passo a passo come creare un nuovo project
in MSVC, in modo da poter cominciare con le prime prove.
15
&RPH&UHDUHXQ1XRYR3URMHFW
• Cliccando sul Menu1HZ otteniamo la seguente finestra,
in cui selezioniamo nei menu in alto il menu 3URMHFW.
• Appaiono alcuni tipi di applicazione da creare, e noi
scegliamo il tipo :LQ&RQVROH$SSOLFDWLRQ,
• poi nella casella di testo 3URMHFW1DPH in alto a destra
scriviamo il nome del progetto da creare 3URJ
• nella casella/RFDWLRQ scriviamo la directory in cui
salvare i files nostri e del project. F?XWHQWL?YLWWRULR?3URJ
Selezioniamo il Bottone &UHDWH1HZ:RUNVSDFH.
Concludiamo con un invio o click su OK.
16
&RPH&UHDUHXQ1XRYR3URMHFW
17
&RPH&UHDUHXQ1XRYR3URMHFW
18
'RYH6HWWDUHOH2S]LRQL
•Bisogna ora VHWWDUHOHRS]LRQLSHULO3URJHWWR
• Selezionate il Menu 3URMHFW e cliccate su 6HWWLQJ, per
fare apparire la finestra su cui definire tuttii settaggi
per il progetto.
• Di solito le opzioni di Default sono già adatte all’uso
dell’utente medio.
• Man mano che diventerete esperti, potrete modificarle
a seconda di esigenze particolari.
• 3HURUDODVFLDWHOHFRVuFRPHVRQR
19
&RPH&UHDUHXQ1XRYR)LOH
Se Dovete FUHDUHXQQXRYRILOHVVRUJHQWHLQ&
• Andate nel Menu )LOH, clikkate su 1HZ, appare la
finestra che vi chiede che tipo di file volete aprire.
• Selezionate la voce &6RXUFH)LOHV
• Selezionare il Bottone $GG7R3URMHFW
• Scrivere nella casella File Name il nome del file che
si vuole creare, supponiamo che sia 3ULPRF
• Scrivere nella casella Location la directory del progetto
supponamo sia F?XWHQWL?YLWWRULR?SURJ
• Cliccate su OK e appare una finestra di editing con
il file Primo.c GDVFULYHUH
20
&RPH,QVHULUHQHO3URMHFW
XQ)LOH*,$¶(VLVWHQWH
Se dovete LQVHULUHQHOSURMHFWXQILOH&FKHHVLVWHJLj
• Andate nel Menu 3URMHFW, clikkate su $GG7R3URMHFW
• appare un nuovo menu, cliccate su Files
• appare la finestra che vi chiede quale file volete inserire
lo scegliete e siete a posto
21
&RPH6FULYHUHLO3URJUDPPD
• Ora si tratta di scrivere il Programma, ma come
scriverlo bene sarà l’argomento delle prossime lezioni.
22
&RPH&RPSLODUH(VHJXLUH
H'HEXJJDUHLO3URJUDPPD
Nel menu in alto , selezionate la voce %XLOG,
e cliccate su:
23