per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il...
TRANSCRIPT
![Page 1: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/1.jpg)
Per costruire un’applicazione occorre
• compilare il file (o i file se più d’uno)che contengono il testo del programma(file sorgente)Il risultato sono uno o più file oggetto.
• collegare i file oggetto l’uno con l’altro e con le librerie di sistema.
COSTRUZIONE DI UN’APPLICAZIONE
![Page 2: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/2.jpg)
1) Compilare il file (o i file se più d’uno) che contengono il testo del programma– File sorgente: estensione .c– File oggetto: estensione .o
o .obj
COMPILAZIONE DI UN’APPLICAZIONE
f1.c f1.obj
compilatore
![Page 3: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/3.jpg)
1) Compilare il file (o i file se più d’uno) che contengono il testo del programma– File sorgente: estensione .c– File oggetto: estensione .o
o .obj
COMPILAZIONE DI UN’APPLICAZIONE
f1.c f1.obj
compilatore
Una versione tradotta che però non è autonoma (e, quindi,
non è direttamente eseguibile).
![Page 4: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/4.jpg)
2) Collegare il file (o i file) oggetto fra loro e con le librerie di sistema– File oggetto: estensione .o o .obj– File eseguibile: estensione .exe o nessuna
COLLEGAMENTO DI UN’APPLICAZIONE
prog.exe
f1.obj
LIBRERIE DI SISTEMA
linker
Programma eseguibile
![Page 5: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/5.jpg)
Perché tutto questo?
• il nostro programma non è destinato a funzionare sulla macchina "nuda", ma sulla macchina rivestita dal sistema operativo
• quindi il nostro programma, per funzionare, deve necessariamente interfacciarsi col sistema operativo stesso.
COSTRUZIONE DI UN’APPLICAZIONE
![Page 6: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/6.jpg)
Non solo:• alcune istruzioni “complesse” del linguaggio
potrebbero essere realizzate in realtà da "mini-programmi" forniti insieme al compi-latore, che li "ingloba" quando occorre.
LIBRERIE DI SISTEMA: insieme di componenti software che consen-tono di interfacciarsi col sistema operativo, usare le risorse da esso gestite, e realizzare alcune "istruzioni complesse" del linguaggio
COSTRUZIONE DI UN’APPLICAZIONE
![Page 7: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/7.jpg)
In passato, la costruzione si faceva “amano”, attivando compilatore e linker dallalinea di comando del sistema operativo(DOS, Unix, ...)
C:\PROVA> gcc -c f1.c(genera f1.obj)
C:\PROVA> ld -o prog.exe f1.obj –lc
(genera prog.exe)
COSTRUZIONE “MANUALE”
Libreria CFile oggettoEseguibileda produrre
![Page 8: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/8.jpg)
Oggi, gli ambienti di lavoro integrati auto-matizzano la procedura: compilano i file sorgente (se e quando
necessario) invocano il linker per costruire l’eseguibile
ma per farlo devono sapere: quali file sorgente costituiscono
l’applicazione il nome dell’eseguibile da produrre.
AMBIENTI INTEGRATI
![Page 9: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/9.jpg)
È da queste esigenze che nasce il concettodi PROGETTO
• un contenitore concettuale (e fisico)
• che elenca i file sorgente in cui l’applicazione è strutturata
• ed eventualmente altre informazioni utili.
Oggi, tutti gli ambienti di sviluppo integrati, perqualunque linguaggio, forniscono questoconcetto e lo supportano con idonei strumenti.
PROGETTI
![Page 10: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/10.jpg)
PROGETTI IN DJGPP/RHide
Si sceglie la voce di menùProject Open Project, e, nella finestra che appare, si sceglie un nome per il nuovo progetto (che sarà anche il nome dell’eseguibile)
![Page 11: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/11.jpg)
PROGETTI IN DJGPP/RHide
Si va poi nella Project Window che appare, e si preme sulla tastiera il tasto INS (o si sceglie da menù l’opzione Project add item)
![Page 12: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/12.jpg)
PROGETTI IN DJGPP/RHide
Dalla finestra Add item che appare si selezionanoi file sorgente che si vogliono inserire nel progetto.
![Page 13: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/13.jpg)
PROGETTI IN DJGPP/RHide
Facendo doppio clic su un nome di file (ad esempio, f1.c) si apre l’editor per modificarlo.
![Page 14: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/14.jpg)
PROGETTI IN DJGPP/RHide
A questo punto: per compilare, Compile Compile (ALT+F9) (ricompila solo i file modificati dall’ultima compilazione) per collegare, Compile Link
![Page 15: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/15.jpg)
PROGETTI IN DJGPP/RHide
A questo punto: per compilare, Compile Compile (ALT+F9) (ricompila solo i file modificati dall’ultima compilazione) per collegare, Compile Link
Oppure le due fasi insieme:
Compile Make (F9)
![Page 16: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/16.jpg)
PROGETTI IN TURBO C
Si sceglie il menùProject New Project, (oppure l’icona in alto)...
![Page 17: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/17.jpg)
PROGETTI IN TURBO C
La finestra che appare richiedevarie informazioni.
1) percorso e nome del progetto (per default coincide con il Target Name, cioè col nome dell’eseguibile da produrre)
![Page 18: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/18.jpg)
PROGETTI IN TURBO C
2) il Target Type, cioè il tipo di applicazione da generare: essenziale scegliere EasyWin (non Application)Turbo C è un ambiente multi-target, cioè può produrre sia applicazioni per Windows (che vanno strutturate in modo particolare), sia applicazioni standard da eseguire in una finestra di Windows emulando una console.
![Page 19: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/19.jpg)
PROGETTI IN TURBO C3) premendo il tasto Advanced: un nodo iniziale .c nessuna risorsa (né .rc, né .def)
![Page 20: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/20.jpg)
PROGETTI IN TURBO C
Si va poi nella finestra Project che appare, e si preme sulla tastiera il tasto INS (o si fa clic nella finestra con il tasto destro e si sceglie la voce Add Node)
![Page 21: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/21.jpg)
PROGETTI IN TURBO C
Dalla finestra Add to Project List si selezionano i file da inserire nel progetto.
![Page 22: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/22.jpg)
PROGETTI IN TURBO C
Facendo doppio clic su un nome di file (ad esempio, aaa.c) si apre l’editor per modificarlo.
![Page 23: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/23.jpg)
PROGETTI IN TURBO C
A questo punto: per compilare, Project Compile (ALT+F9) (ricompila solo i file modificati dall’ultima compilazione) per collegare, Project Make all (F9) (fa le due fasi insieme; non si può solo collegare)
![Page 24: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/24.jpg)
Una volta scritto, compilato e collegato ilprogramma (ossia, costruito l’eseguibile)
Come si esegue il programma?Come “spiare” quello che fa?
Occorre uno strumento che consenta di• eseguire il programma passo per passo• vedendo le variabili e la loro evoluzione• e seguendo le funzioni via via chiamate.
ESEGUIRE IL PROGRAMMA
![Page 25: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/25.jpg)
Una volta scritto, compilato e collegato ilprogramma (ossia, costruito l’eseguibile)
Come si esegue il programma?Come “spiare” quello che fa?
Occorre uno strumento che consenta di• eseguire il programma passo per passo• vedendo le variabili e la loro evoluzione• e seguendo le funzioni via via chiamate.
ESEGUIRE IL PROGRAMMA
IL DEBUGGER
![Page 26: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/26.jpg)
Sia Rhide sia TURBO C incorporano undebugger con cui eseguire il programma• riga per riga
– entrando anche dentro alle funzioni chiamate (Run trace into; F7) (Debug trace into; F7)
– oppure considerando le chiamate di funzione come una singola operazione (Run step over; F8) (Debug step over; F8)
• oppure fino alla riga desiderata (Run Go to cursor; F4) (F4)
ESEGUIRE IL PROGRAMMA
![Page 27: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/27.jpg)
… e con cui inoltre è possibile:
• controllare istante per istante quanto vale una variabile– Debug Watch an expression (CTRL+F7)– Debug Add watch (CTRL+F5)
• vedere istante per istante le funzioni attive (record di attivazione nello stack)– Debug Call stack (CTRL+F3)– View Call stack
ESEGUIRE IL PROGRAMMA
![Page 28: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/28.jpg)
UN PRIMO ESEMPIO
main(){float c = 18; /* Celsius */
float f = 32 + c * 9/5;
}
![Page 29: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/29.jpg)
L’ESEMPIO “PASSO PASSO”
Project: c:\temp\es1Target Name: es1Target Type: EasyWin
![Page 30: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/30.jpg)
ESEMPIO: Fahrenheit / Celsius
Source node: es1.c
Si scrive il programma,lo si salva, e...
![Page 31: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/31.jpg)
ESEMPIO: Fahrenheit / Celsius
… lo si costruisce (F9).Se non ci sono errori...
![Page 32: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/32.jpg)
ESEMPIO: Fahrenheit / Celsius
… si può eseguirlo con ildebugger.Premendo F7 ci si posiziona all’inizio del main.
![Page 33: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/33.jpg)
ESEMPIO: Fahrenheit / Celsius
Premendo ancora F7 ci si posiziona sulla prima istru-zione, pronti per eseguirla.
![Page 34: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/34.jpg)
ESEMPIO: Fahrenheit / Celsius
Per seguire l’evoluzione è utile mettere sotto osservazione (watch) le due variabili c e f.
![Page 35: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/35.jpg)
ESEMPIO: Fahrenheit / Celsius
La finestra di watch mostra istante per istante il valore di c e f.
![Page 36: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/36.jpg)
ESEMPIO: Fahrenheit / Celsius
Dopo l’esecuzione della prima riga,c vale 18. Il valore di f, invece, èancora indefinito (casuale).
![Page 37: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/37.jpg)
ESEMPIO: Fahrenheit / Celsius
Dopo l’esecuzione della seconda riga,f assume il valore 64.4.
![Page 38: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/38.jpg)
ESEMPIO: Fahrenheit / Celsius
Premendo ancora F7, il main termina.Ora nessuna variabile esiste più:tutto è scomparso.
![Page 39: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/39.jpg)
UN ALTRO ESEMPIO: IL TRIANGOLO
main(){ int a=4, b=3, c=5;
char ris = (a+b)<=c ? 'n' : (a==b)&&(b==c) ? 'e' : (a==b)||(b==c) ? 'i' : 's';
}
![Page 40: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/40.jpg)
L’ESEMPIO “PASSO PASSO”
Project: c:\temp\triang.gpr
![Page 41: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/41.jpg)
ESEMPIO: TRIANGOLO
Ora si seleziona la Project Window,si preme il tasto INS sulla tastiera...
![Page 42: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/42.jpg)
ESEMPIO: TRIANGOLO
… si scrive il nome del fileche contiene il programma(nel nostro caso: triang.c)
![Page 43: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/43.jpg)
ESEMPIO: TRIANGOLO
Nome file: triang.c
Si scrive il programma,lo si salva, e...
![Page 44: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/44.jpg)
ESEMPIO: TRIANGOLO
… lo si costruisce (F9).Se non ci sono errori, sipuò passare a eseguirlo.
![Page 45: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/45.jpg)
ESEMPIO: TRIANGOLO
Premendo F7 ci si posiziona poi all’inizio del main.
Per seguire l’evoluzione è utile mettere sotto osservazione (watch) (CTRL+F7) la variabile ris.
![Page 46: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/46.jpg)
ESEMPIO: TRIANGOLO
La finestra di watch mostra istante per istante il valore di ris, in dueformati (decimale e carattere).
![Page 47: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/47.jpg)
ESEMPIO: TRIANGOLO
Dopo l’esecuzione, con questi datiris assume il valore ‘s’ (=115 ASCII)
![Page 48: Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno](https://reader035.vdocuments.pub/reader035/viewer/2022062701/5542eb5a497959361e8c6d72/html5/thumbnails/48.jpg)
ESEMPIO: TRIANGOLO
Premendo ancora F7, il main termina.Ora nessuna variabile esiste più:tutto è scomparso.