Programmazione in C -...
Transcript of Programmazione in C -...
![Page 1: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/1.jpg)
Programmazione in C
![Page 2: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/2.jpg)
2
Primo programma in C
Introduzione al linguaggio C
Struttura minima di un file C
Sottoinsieme minimale di istruzioni
Compilare il primo programma
Esercizi proposti
Sommario
![Page 3: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/3.jpg)
3
Riferimenti al materiale
Testi
Kernighan & Ritchie: capitolo 1
Cabodi, Quer, Sonza Reorda: capitoli 1, 3
Dietel & Dietel: capitolo 1
Dispense
Scheda: “Primo programma in C”
![Page 4: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/4.jpg)
Primo programma in C
![Page 5: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/5.jpg)
5
Genesi del linguaggio C
Sviluppato tra il 1969 ed il 1973 presso gli AT&T Bell Laboratories
B. Kernighan e D. Ritchie
Per uso interno
Legato allo sviluppo del sistema operativo Unix
Nel 1978 viene pubblicato “The C Programming Language”, prima specifica ufficiale del linguaggio
Detto “K&R”
Brian Kernighan Dennis Ritchie
![Page 6: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/6.jpg)
6
Obiettivi del linguaggio
Insieme minimale di costrutti base
Semplicità del compilatore
Sintassi estremamente sintetica
Talvolta criptica
Pensato da programmatori per programmatori
Elevata efficienza
Per nulla user friendly
Portabile
Indipendente dalla macchina
Disponibilità di una libreria standard di funzioni
![Page 7: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/7.jpg)
7
Evoluzione del linguaggio (1/2)
1978, K&R C
1989, ANSI C (o C89)
Frutto del lavoro di standardizzazione del comitato X3J11 dell’American NationalStandards Institute
Standard X3.159-1989“Programming Language C”
Seconda edizione del K&R
![Page 8: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/8.jpg)
8
Evoluzione del linguaggio (2/2)
1990, ISO C (o C90)
Ratifica da parte della International Organizationfor Standardization dello standard ANSI C
ISO/IEC 9899:1990
1999, ISO C99
Revisione compiuta negli anni ’90
INCITS-ANSI/ISO/IEC 9899-1999
550 pagine
http://www.open-std.org/jtc1/sc22/wg14/
Supportata da molti (non tutti) i compilatori
![Page 9: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/9.jpg)
9
Diffusione attuale
I linguaggi attualmente più diffusi al mondo sono:
C
C++, un’evoluzione del C
Java, la cui sintassi è tratta da C++
C#, estremamente simile a Java e C++
Il linguaggio C è uno dei linguaggi più diffusi
La sintassi del linguaggio C è ripresa da tutti gli altri linguaggi principali
![Page 10: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/10.jpg)
10
Principali vantaggi del C
Basato su relativamente pochi costrutti da apprendere
Enorme disponibilità di documentazione ed esempi
Buona disponibiltà di ambienti di sviluppo gratuiti
Disponibile su qualsiasi configurazione hardware
Elevata efficienza di elaborazione
Adatto a vari tipi di applicazioniProgrammi di sistema
Elaborazione numerica
Programmi interattivi
![Page 11: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/11.jpg)
11
Principali svantaggi del C
Scarsa leggibilità di alcuni costrutti
Facilità nel commettere errori di programmazione
Molti costrutti “pericolosi” sono permessi dal linguaggio e quindi non vengono segnalati dal compilatore
Alcuni errori di digitazione possono causare comportamenti errati
Difficoltà nella realizzazione di interfacce grafiche
Complessità nell’elaborazione dei testi
![Page 12: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/12.jpg)
12
Un esempio
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
printf("hello, world\n");
returnreturnreturnreturn 0;}
![Page 13: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/13.jpg)
Primo programma in C
![Page 14: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/14.jpg)
2
Struttura minima di un file C
Applicazioni C in modo “console”Struttura del programmaCommentiDirettive #includeDefinizione di variabiliCorpo del main
![Page 15: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/15.jpg)
Struttura minima di un file C
![Page 16: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/16.jpg)
4
Tipi di applicazioni (1/4)
Applicazioni graficheInterazione mediante mouse e finestreVisualizzazione di testi e graficaElaborazione concorrente
![Page 17: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/17.jpg)
5
Tipi di applicazioni (2/4)
Applicazioni graficheInterazione mediante mouse e finestreVisualizzazione di testi e graficaElaborazione concorrente
Applicazioni “console”Interazione mediante tastieraVisualizzazione di soli caratteriElaborazione sequenziale
![Page 18: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/18.jpg)
6
Tipi di applicazioni (3/4)
Applicazioni batchNessuna interazione utenteCompiti lunghi e ripetitiviElaborazione numerica, trasferimenti in rete
![Page 19: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/19.jpg)
7
Tipi di applicazioni (4/4)
Applicazioni batchNessuna interazione utenteCompiti lunghi e ripetitiviElaborazione numerica, trasferimenti in rete
Applicazioni serverNessuna interazione utenteRealizzano funzioni di sistemaServer locali o server Internet
![Page 20: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/20.jpg)
8
Applicazioni “console”
Interazione utente limitata a due casiStampa di messaggi, informazioni e dati a videoImmissione di un dato via tastiera
L’insieme tastiera+video viene detto terminaleNessuna caratteristica graficaElaborazione
SequenzialeInterattivaMono-utente
![Page 21: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/21.jpg)
9
Modello di applicazioni “console”
Programmaeseguibile
VisualizzazionerisultatiImmissione dati
![Page 22: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/22.jpg)
10
Modello di applicazioni “console”
Programmaeseguibile
Visualizzazionerisultati
Programmasorgente in C
Compilatore C
Scritturaprogramma
Immissione dati
![Page 23: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/23.jpg)
11
Modello di applicazioni “console”
Programmaeseguibile
Visualizzazionerisultati
Programmasorgente in C
Compilatore C
somma.c
somma.exesomma.exe
Scritturaprogramma
Immissione dati
![Page 24: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/24.jpg)
12
Compilatore C
Traduce i programmi sorgenti scritti in linguaggio C in programmi eseguibiliÈ a sua volta un programma eseguibile, a disposizione del programmatoreControlla l’assenza di errori di sintassi del linguaggioNon serve all’utente finale del programmaNe esistono diversi, sia gratuiti che commerciali
Compilatore C
![Page 25: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/25.jpg)
13
Scrittura del programma
Un sorgente C è un normale file di testoSi utilizza un editor di testi
Blocco NoteEditor specializzati per programmatori
Scritturaprogramma
![Page 26: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/26.jpg)
14
Editor per programmatori
Colorazione ed evidenziazione della sintassiIndentazione automaticaAttivazione automatica della compilazioneIdentificazione delle parentesi corrispondentiMolti disponibili, sia gratuiti che commerciali
![Page 27: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/27.jpg)
15
Ambienti integrati
Applicazioni software integrate che contengono al loro interno
Un editor di testi per programmatoriUn compilatore CUn ambiente di verifica dei programmi (debugger)
IDE: IntegratedDevelopmentEnvironment
Scritturaprogramma
Compilatore C
![Page 28: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/28.jpg)
Struttura minima di un file C
![Page 29: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/29.jpg)
17
Struttura di un sorgente in C
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ;
a = 3 ;
printf("hello, world\n");printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
![Page 30: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/30.jpg)
18
Struttura di un sorgente in C
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ;
a = 3 ;
printf("hello, world\n");printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
Programma principale(funzione main)
![Page 31: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/31.jpg)
19
Struttura di un sorgente in C
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ;
a = 3 ;
printf("hello, world\n");printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
Parentesi graffe chedelimitano il main
![Page 32: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/32.jpg)
20
Struttura di un sorgente in C
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ;
a = 3 ;
printf("hello, world\n");printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
Variabili utilizzatedal programma
![Page 33: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/33.jpg)
21
Struttura di un sorgente in C
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ;
a = 3 ;
printf("hello, world\n");printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
Istruzioni eseguibiliIstruzioni eseguibili
![Page 34: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/34.jpg)
22
Struttura di un sorgente in C
#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ;
a = 3 ;
printf("hello, world\n");printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
Richiamo dellelibrerie utilizzate
![Page 35: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/35.jpg)
23
In generale
#include delle librerie
intintintint main(voidvoidvoidvoid){
definizione variabili
istruzioni eseguibili
}
![Page 36: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/36.jpg)
Struttura minima di un file C
![Page 37: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/37.jpg)
25
Commenti
Il testo presente in un sorgente C deve essereanalizzato dal compilatore C, quindi devesottostare a tutte le regole sintattiche del linguaggioPer aggiungere annotazioni, commenti, spiegazioni, note, ... si può usare un commentoall’interno del sorgente
/* io sono un commento */
![Page 38: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/38.jpg)
26
Sintassi
Un commento è una qualsiasi sequenza di caratteri (anche su più righe) che:
Inizia con la coppia di caratteri /*Termina con la coppia di caratteri */
Non è permesso annidare commentiAll’interno di un commento non devono comparire i caratteri /*
Tutto ciò che è compreso tra /* e */ viene ignorato dal compilatore C
![Page 39: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/39.jpg)
27
Esempio
/* programma: hello.cautore: fulvio corno
*/
/* accedi alla libreria standard */#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ; /* numero magico */
a = 3 ; /* assegno un valore */
/* salutiamo l'utente */printf("hello, world\n") ;printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
![Page 40: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/40.jpg)
28
Spazi bianchi
Oltre ai commenti, il compilatore ignora tutti gli spazi bianchi
Spazi tra un’istruzione e la successivaSpazi ad inizio lineaSpazi intorno alla punteggiaturaRighe vuote
La spaziatura viene utilizzata per rendere il sorgente C più ordinato e più facilmente comprensibile
![Page 41: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/41.jpg)
29
Esempio
/* programma: hello.c autore: fulvio corno *//* accedi alla libreria standard */#include <stdio.h>intintintint main(voidvoidvoidvoid){ intintintint a ; /* numero magico */ a = 3 ;/* assegno un valore *//* salutiamo l'utente */ printf("hello, world\n") ;printf("the magic number is %d\n", a) ; returnreturnreturnreturn 0;}
![Page 42: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/42.jpg)
30
Esempio
/* programma: hello.c autore: fulvio corno *//* accedi alla libreria standard */#include <stdio.h>intintintint main(voidvoidvoidvoid){ intintintint a ; /* numero magico */ a = 3 ;/* assegno un valore *//* salutiamo l'utente */ printf("hello, world\n") ;printf("the magic number is %d\n", a) ; returnreturnreturnreturn 0;}
#include <stdio.h>intintintint main(voidvoidvoidvoid){ intintintint a ; a = 3 ; printf("hello, world\n") ;printf("the magic number is %d\n", a) ; returnreturnreturnreturn 0; }
![Page 43: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/43.jpg)
Struttura minima di un file C
![Page 44: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/44.jpg)
32
Librerie di funzioni
Ogni compilatore C dispone di diverse librerie di funzioni già pronte per l’usoIl programmatore può utilizzare le funzioni di libreriaÈ necessario dichiarare a quali librerie si vuoleavere accesso
Direttive #include ad inizio programmaAggiunge al programma le dichiarazioni di tutte le funzioni di tale libreria, permettendo al programmatore di richiamare tali funzioni
![Page 45: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/45.jpg)
33
Sintassi
Librerie principali:#include <stdio.h>
Funzioni di lettura/scrittura su terminale e su file
#include <stdlib.h>
Funzioni base per interazione con sistema operativo
#include <math.h>
Funzioni matematiche
#include <string.h>
Elaborazione di testi
#include < NomeLibreria .h>
![Page 46: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/46.jpg)
34
Avvertenze
A differenza della regola generale, nelle direttive #include la spaziatura è importante
Il carattere # deve essere il primo della rigaPuò esserci una sola #include per rigaLa direttiva #include non va terminata con il ;
Dimenticare una #include potrà portare ad errori nel corpo del main, quando si chiameranno le funzioni relative
![Page 47: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/47.jpg)
35
Suggerimenti
Iniziare sempre il sorgente C con le seguenti linee:
/* programma: NomeFile.cautore: NomeAutoreDelProgrammaBreveDescrizioneDelProgramma
*/
#include <stdio.h>#include <stdlib.h>#include <math.h>
intintintint main(voidvoidvoidvoid){
. . . .
}
![Page 48: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/48.jpg)
Struttura minima di un file C
![Page 49: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/49.jpg)
37
Variabili
Il programma memorizza le informazioni sullequali lavora all’interno di variabiliOgni variabile è caratterizzata da:
Tipo di datoNomeValore corrente
35 -17a x
![Page 50: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/50.jpg)
38
Variabili
Il programma memorizza le informazioni sullequali lavora all’interno di variabiliOgni variabile è caratterizzata da:
Tipo di datoNomeValore corrente
35 -17a x
3.14 “fulvio”pi nome
![Page 51: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/51.jpg)
39
Tipo di dato
Definisce l’insieme dei valori ammissibili per la variabile
35
3.14
“fulvio”
‘f’
Numeri interi, positivi o negativi
Numeri reali
Stringhe di testo
Singoli caratteri di testo
![Page 52: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/52.jpg)
40
Tipo di dato
Definisce l’insieme dei valori ammissibili per la variabile
35
3.14
“fulvio”
‘f’
Numeri interi, positivi o negativi
Numeri reali
Stringhe di testo
Singoli caratteri di testo
int
float
char
![Page 53: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/53.jpg)
41
Nome
Il programmatore assegna un nome a ciascuna variabileDovrebbe rappresentare lo scopo dei valori contenuti nella variabileSintetico, rappresentativo, mnemonico, facile da scrivere
![Page 54: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/54.jpg)
42
Nomi ammissibili
Il primo carattere deve essere una letteraI successivi possono essere lettere o numeriLettere maiuscole e minuscole sono diverseIl simbolo _ viene considerato come una letteraNon devono essere nomi riservati dal linguaggio
![Page 55: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/55.jpg)
43
Esempi di nomi
a a1 a2b
![Page 56: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/56.jpg)
44
Esempi di nomi
a a1 a2b
num somma maxNn
![Page 57: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/57.jpg)
45
Esempi di nomi
a a1 a2b
area perimetro perim
num somma maxNn
![Page 58: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/58.jpg)
46
Esempi di nomi
a a1 a2b
area perimetro perim
n_elementi risultatoNelementi
num somma maxNn
![Page 59: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/59.jpg)
47
Esempi di nomi
a a1 a2b
area perimetro perim
n_elementi risultatoNelementi
num somma maxNn
trovato nome risposta
![Page 60: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/60.jpg)
48
Definizione di variabili
Ogni variabile deve essere definita prima di poterla utilizzare Definizioni all’inizio della funzione mainSintassi della definizione
TipoVariabile NomeVariabile ;
intintintint main(voidvoidvoidvoid){
intintintint a ;intintintint b ;floatfloatfloatfloat x ;
. . . . . }
![Page 61: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/61.jpg)
49
Definizione di variabili
Ogni variabile deve essere definita prima di poterla utilizzare Definizioni all’inizio della funzione mainSintassi della definizione
TipoVariabile NomeVariabile ;
TipoVariabile NomeVariabile, NomeVariabile ;
intintintint main(voidvoidvoidvoid){
intintintint a ;intintintint b ;floatfloatfloatfloat x ;
. . . . . }
intintintint main(voidvoidvoidvoid){
intintintint a, b ;floatfloatfloatfloat x ;
. . . . . }
![Page 62: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/62.jpg)
50
Valore contenuto
Ogni variabile, in ogni istante di tempo, possiede un certo valoreLe variabili appena definite hanno valore ignoto
Variabili non inizializzate
In momenti diversi il valore può cambiare
?a
tdefinizione
![Page 63: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/63.jpg)
51
Valore contenuto
Ogni variabile, in ogni istante di tempo, possiede un certo valoreLe variabili appena definite hanno valore ignoto
Variabili non inizializzate
In momenti diversi il valore può cambiare
? a
t
37
definizione inizializzazione
![Page 64: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/64.jpg)
52
Valore contenuto
Ogni variabile, in ogni istante di tempo, possiede un certo valoreLe variabili appena definite hanno valore ignoto
Variabili non inizializzate
In momenti diversi il valore può cambiare
? a
t
37 -4
definizione inizializzazione altraassegnazione
![Page 65: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/65.jpg)
53
Valore contenuto
Ogni variabile, in ogni istante di tempo, possiede un certo valoreLe variabili appena definite hanno valore ignoto
Variabili non inizializzate
In momenti diversi il valore può cambiare
? a
t
37 -4 -3
definizione inizializzazione altraassegnazione
incremento
![Page 66: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/66.jpg)
Struttura minima di un file C
![Page 67: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/67.jpg)
55
Istruzioni eseguibili
La funzione main, dopo le definizioni di variabili, contiene le vere e proprie istruzioni eseguibiliCiascuna istruzione è terminata da ;Tutte le istruzioni sono comprese nelle { ... }Le istruzioni vengono eseguite in ordineDopo aver eseguito l’ultima istruzione, il programma termina
![Page 68: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/68.jpg)
56
Esempio
/* programma: hello.cautore: fulvio corno
*/
/* accedi alla libreria standard */#include <stdio.h>
intintintint main(voidvoidvoidvoid){
intintintint a ; /* numero magico */
a = 3 ; /* assegno un valore */
/* salutiamo l'utente */printf("hello, world\n") ;printf("the magic number is %d\n", a) ;
returnreturnreturnreturn 0;}
![Page 69: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/69.jpg)
57
Tipologie di istruzioni
Istruzioni operativeLettura dati
scanf("%d", &a) ;
Stampa risultatiprintf("%d", a) ;
Elaborazione numericaa = b + c ;
b = b + 1 ;
c = 42 ;
c = sqrt(a) ;
![Page 70: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/70.jpg)
58
Tipologie di istruzioni
Istruzioni operativeLettura dati
scanf("%d", &a) ;
Stampa risultatiprintf("%d", a) ;
Elaborazione numericaa = b + c ;
b = b + 1 ;
c = 42 ;
c = sqrt(a) ;
Istruzioni di controlloModificano il controllo di flusso
ScelteIterazioniChiamate a funzioniInterruzioni e salti
Predefinite dal linguaggio C
if else whilefor return switch case break continue goto
![Page 71: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/71.jpg)
Primo programma in C
![Page 72: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/72.jpg)
2
Sottoinsieme minimale di istruzioni
I tipi int e floatIstruzione printf – semplificataIstruzione scanf – semplificataIstruzione di assegnazioneSemplici espressioni aritmetiche
![Page 73: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/73.jpg)
Sottoinsieme minimale di istruzioni
![Page 74: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/74.jpg)
4
Tipi di dato
Ogni costante, ogni variabile, ogni espressione appartiene ad un determinato tipoIl tipo determina
L’insieme dei valori che la costante, variabile o espressione può assumereL’insieme delle operazioni lecite su tali valori
I tipi possono essereSemplici (o scalari): singoli valoriStrutturati: insiemi di più valori semplici
![Page 75: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/75.jpg)
5
Il sistema dei tipi C
Tipo di dato
Tipi Scalari Tipi Strutturati
Tipi interi
char
Tipi reali
int
float
double
Vettori
Strutture
Enumerazioni
short / long
signed/unsigned
long
void
Funzioni
Union
Puntatori
![Page 76: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/76.jpg)
6
Caratteristiche generali
I valori ammessi per ciascun tipo non sono fissati dallo standardDipendono dal compilatore e dal sistema operativo
Ampiezza dei tipi di dato “naturale” per ogni calcolatore
Maggior portabilitàMaggior efficienzaNessuna garanzia di uniformità tra piattaforme diverse
![Page 77: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/77.jpg)
7
Il tipo intintintint
Il tipo più importante del linguaggio CValori interi, positivi o negativiCodificato in complemento a dueEspresso solitamente su 16 bit oppure 32 bit
16 bit: da –32 768 a +32 76732 bit: da –2 147 483 648 a +2 147 483 647In generale: da INT_MIN a INT_MAX
#include <limits.h>
35int
![Page 78: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/78.jpg)
8
Esempi
0i
2j
100N
-3124x
intintintint i, j ;intintintint N ;intintintint x ;
i = 0 ;j = 2 ;N = 100 ;x = -3124 ;
![Page 79: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/79.jpg)
9
Il tipo floatfloatfloatfloat
Valori realiFrazionariEsterni all’intervallo permessoper i numeri interi
Codificato in virgola mobile, singola precisioneEspresso solitamente su 32 bit
da ±1.17 × 10–38 a ±3.40 × 10+38
circa 6 cifre di precisioneIn generale: da FLT_MIN a FLT_MAX
#include <float.h>
3.14float
![Page 80: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/80.jpg)
10
Esempi
3.1a
2.0b
3.1415pigr
Nav
floatfloatfloatfloat a, b ;floatfloatfloatfloat pigr ;floatfloatfloatfloat Nav, Qe ;
a = 3.1 ;b = 2.0 ;pigr = 3.1415926 ;Nav = 6.022e23 ;Qe = 1.6e-19 ;
1.6×10–19Qe
6.02×1023
![Page 81: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/81.jpg)
Sottoinsieme minimale di istruzioni
![Page 82: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/82.jpg)
12
Istruzioni di stampa
Stampa di messaggi informativiStampa di comando “a capo”Stampa di valori di variabiliStampa di valori di espressioni calcolateStampa di messaggi contenenti valori
Programmaeseguibile
Visualizzazionerisultati
![Page 83: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/83.jpg)
13
Stampa di messaggi
Benvenuto
Immetti un numero: ____
printf("Benvenuto\n") ;
printf("Immetti un numero: ") ;
printf("\n");
![Page 84: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/84.jpg)
14
Stampa di variabili
2 100
3.141593
602200013124147500000000.000000
printf("%d ", j) ;
printf("%d\n", N) ;
printf("%f\n", pigr) ;
printf("%f\n", Nav) ;
![Page 85: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/85.jpg)
15
Stampa di espressioni
-2
200
96352.000000
printf("%d\n", i-j) ;
printf("%d\n", N*2) ;
printf("%f\n", Nav * Qe) ;
![Page 86: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/86.jpg)
16
Stampa di messaggi e valori
Risultato=200
Angolo = 0.785398 radianti
printf("Risultato=%d\n", N*2) ;
printf("Angolo = %f radianti\n", pigr/4);
![Page 87: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/87.jpg)
17
Sintassi istruzione printfprintfprintfprintf
#include <stdio.h>
printf("formato ", valore/i ) ;Formato:
Testo libero (compresi spazi) → viene stampato letteralmenteSimboli \n → va a capoSimboli %d → stampa un intSimboli %f → stampa un float
Valore/i:Variabile o espressioneDi tipo int o float, corrispondente al simbolo %
![Page 88: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/88.jpg)
18
Casi particolari (1/2)
Per stampare il simbolo % occorre ripeterlo due volte
printf("Sondaggio: %f%%\n", pSI ) ;
%f → stampa pSI%% → stampa un simbolo %\n → va a capo
Sondaggio: 43.12%
![Page 89: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/89.jpg)
19
Casi particolari (2/2)
È possibile stampare più di un valore nella stessaistruzione
printf("Voti: %d su %d\n", voti, tot ) ;
primo %d → stampa votisecondo %d → stampa tot
Voti: 18 su 45
![Page 90: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/90.jpg)
Sottoinsieme minimale di istruzioni
![Page 91: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/91.jpg)
21
Istruzioni di lettura
Lettura di un valore interoLettura di un valore reale
Programmaeseguibile
Immissione dati
![Page 92: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/92.jpg)
22
Lettura di un intero
213213213213
scanf( "%d", &N ) ;
![Page 93: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/93.jpg)
23
Lettura di un reale
12.512.512.512.5
scanf( "%f", &a ) ;
![Page 94: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/94.jpg)
24
Sintassi istruzione scanfscanfscanfscanf
#include <stdio.h>
scanf("formato ", &variabile ) ;Formato:
Simboli %d → legge un intSimboli %f → legge un float
Variabile:Di tipo int o float, corrispondente al simbolo %Sempre preceduta dal simbolo &
![Page 95: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/95.jpg)
25
Suggerimento
Combinare le istruzioni printf e scanf per guidare l’utente nell’immissione dei dati
Ogni scanf deve essere preceduta da una printf che indica quale dato il programma si aspetta
printf("Immetti il numero: ");scanf("%d", &N) ;printf("Numero immesso: %d\n", N);
![Page 96: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/96.jpg)
26
Errore frequente
Dimenticare il simbolo & nelle istruzioni scanf
printf("Immetti il numero: ");scanf("%d", N) ;
forma corretta
printf("Immetti il numero: ");scanf("%d", &N) ;
![Page 97: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/97.jpg)
27
Errore frequente
Dimenticare le variabili da stampare nelle istruzioni printf
printf("Numero immesso: %d\n");
forma corretta
printf("Numero immesso: %d\n", N);
![Page 98: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/98.jpg)
Sottoinsieme minimale di istruzioni
![Page 99: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/99.jpg)
29
Assegnazione delle variabili
Il valore di una variabileDeve essere inizializzato, la prima voltaPuò essere aggiornato, quante volte si vuole
Per assegnare un nuovo valore ad una variabile si usa l’operatore =
?a
t
37 -4 -3
definizione inizializzazione altraassegnazione
incremento
![Page 100: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/100.jpg)
30
Assegnazione di variabili
Assegnazione del valore di una costantei = 0 ;
a = 3.0 ;
Assegnazione del valore di un’altra variabilei = N ;
b = a ;
Assegnazione del valore di un’espressionej = N – i ;
b = a * 2 – 1 ;
![Page 101: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/101.jpg)
31
Sintassi dell’assegnazione
variabile = espressione ;
Passo 1: si valuta il valore corrente dell’espressione
Per tutte le variabili che compaiono nell’espressione, si usa il valore correntePuò comparire anche la stessa variabile oggetto dell’assegnazione
Passo 2: si memorizza tale valore nella variabile, cancellando il valore precedente
valoreprecedentea
valoreprecedente
valoreespressionea
![Page 102: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/102.jpg)
32
Esempi
N = 3 ;
![Page 103: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/103.jpg)
33
Esempi
N = 3 ;
a = b ;
Non confondere con b = a ;
![Page 104: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/104.jpg)
34
Esempi
N = 3 ;
a = b ;
Non confondere con b = a ;
a = a + 1 ;
Incrementa a di un’unità
![Page 105: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/105.jpg)
35
Esempi
N = 3 ;
a = b ;
Non confondere con b = a ;
a = a + 1 ;
Incrementa a di un’unità
a + 1 = a ;
Errore
![Page 106: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/106.jpg)
36
Quesito
Che operazione svolge il seguente frammento di programma?
a = b ;b = a ;
![Page 107: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/107.jpg)
37
Risposta
Che operazione svolge il seguente frammento di programma?
Il valore corrente di b viene copiato in aIl valore vecchio di a viene perso
Il (nuovo) valore corrente di a (uguale a b) viene ricopiato in b (operazione inutile)
a = b ;b = a ;
![Page 108: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/108.jpg)
38
Quesito
Come fare a scambiare tra di loro i valori di due variabili?
a 7 –12b
![Page 109: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/109.jpg)
39
Quesito
Come fare a scambiare tra di loro i valori di due variabili?
a 7 –12b
valoreprecedentea –12 valore
precedente7b
![Page 110: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/110.jpg)
40
Risposta
t = a ;a = b ;b = t ;
a 7 –12b
?t
![Page 111: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/111.jpg)
41
Risposta
t = a ;a = b ;b = t ;
a 7 –12b
7t
![Page 112: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/112.jpg)
42
Risposta
t = a ;a = b ;b = t ;
a –12 –12b
7t
![Page 113: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/113.jpg)
43
Risposta
t = a ;a = b ;b = t ;
a –12 7b
7t
![Page 114: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/114.jpg)
Sottoinsieme minimale di istruzioni
![Page 115: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/115.jpg)
45
Espressioni aritmetiche
Ovunque sia richiesto il valore di una variabile, è possibile usare un’espressione aritmetica
Nei valori da stampare con la funzione printfNei valori da assegnare ad una variabile
Le espressioni si possono costruire ricorrendo a:Operatori: + - * /
Parentesi: ( ... )
Funzioni di libreria: sqrt(), sin(), cos(), ...
![Page 116: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/116.jpg)
46
Operatori principali
Somma: a+bSottrazione: a-bMoltiplicazione: a*bDivisione: a/b
Divisione intera (risultato troncato) se entrambi gli operandi sono int
Resto della divisione: a%bSolo tra operandi int
Cambio di segno: -a
![Page 117: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/117.jpg)
47
Alcuni operatori avanzati
Incremento: i++Decremento: N--Conversione ad intero: (int)aConversione a reale: (float)N
![Page 118: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/118.jpg)
48
Funzioni di libreria
#include <math.h>
Funzioni algebrichefabs, sqrt, cbrt, pow, hypot, ceil, floor, round, trunc, fmod
Funzioni esponenziali e logaritmicheexp, exp2, log, log10, log2
Funzioni trigonometriche e iperbolichecos, sin, tan, cosh, sinh, tanh
Funzioni trigonometriche e iperboliche inverseacos, asin, atan, atan2, acosh, asinh, atanh
![Page 119: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/119.jpg)
49
Parentesi
Si possono costruire espressioni complicate a piacere utilizzando le parentesiPer maggiore leggibilità, abbondare con le parentesi ed usare la spaziatura e l’incolonnamento in modo ordinatoSi utilizzano sempre le parentesi tonde
x1 = ( -b + sqrt( b*b – 4*a*c ) ) /( 2*a ) ;
A = sqrt( p * (p-a) * (p-b) * (p-c)) ;
![Page 120: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/120.jpg)
Primo programma in C
![Page 121: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/121.jpg)
2
Compilare il primo programma
Un semplice programma
L’ambiente di sviluppo Dev-C++
Codifica del programma
Compilazione e correzione errori
Esecuzione e verifica
![Page 122: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/122.jpg)
Compilare il primo programma
![Page 123: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/123.jpg)
4
Esercizio “Somma due numeri”
Si realizzi un programma in linguaggio C che acquisisca da tastiera due numeri interi (detti A e B) e che stampi a video il valore della somma di tali numeri
Programmasorgente in C
Scritturaprogramma
![Page 124: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/124.jpg)
5
Analisi
Somma due numeri
Immetti il primo numero: ____
![Page 125: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/125.jpg)
6
Analisi
Somma due numeri
Immetti il primo numero: 18181818
Immetti il secondo numero: ____
![Page 126: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/126.jpg)
7
Analisi
Somma due numeri
Immetti il primo numero: 18181818
Immetti il secondo numero: 3333
La somma di 18 + 3 vale: 21
![Page 127: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/127.jpg)
8
Diagramma di flusso
Leggi A
Leggi B
CalcolaC = A+B
Stampa C
![Page 128: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/128.jpg)
9
Traduzione in C (1/4)
Leggi A
Leggi B
CalcolaC = A+B
Stampa C
int a ;
scanf("%d", &a) ;
![Page 129: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/129.jpg)
10
Traduzione in C (2/4)
int b ;
scanf("%d", &b) ;
Leggi A
Leggi B
CalcolaC = A+B
Stampa C
![Page 130: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/130.jpg)
11
Traduzione in C (3/4)
int c ;
c = a + b ;
Leggi A
Leggi B
CalcolaC = A+B
Stampa C
![Page 131: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/131.jpg)
12
Traduzione in C (4/4)
printf("La somma %d + %d ",a, b) ;
printf("vale: %d\n", c) ;
Leggi A
Leggi B
CalcolaC = A+B
Stampa C
![Page 132: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/132.jpg)
Compilare il primo programma
![Page 133: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/133.jpg)
14
Compilatori e IDE
Occorre identificare ed installare
Un editor (possibilmente per programmatori)
Un compilatore
Un debugger
Oppure trovare un Integrated DevelopmentEnvironment che integri tutte le funzionalità precedenti
Esistono molte soluzioni gratuite
![Page 134: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/134.jpg)
15
IDE per C in ambiente Windows
Dev-C++
http://www.bloodshed.net
![Page 135: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/135.jpg)
16
IDE per C in ambiente Windows
V IDE
http://www.objectcentral.org
![Page 136: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/136.jpg)
17
IDE per C in ambiente Windows
Code::Blocks
http://www.codeblocks.org
![Page 137: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/137.jpg)
18
IDE per C in ambiente Windows
lcc-win32
http://www.cs.virginia.edu/~lcc-win32/
![Page 138: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/138.jpg)
19
Interfaccia di Dev-C++
![Page 139: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/139.jpg)
20
Interfaccia di Dev-C++
Editorprogramma sorgente
Messaggi errore
Menù e toolbar
![Page 140: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/140.jpg)
21
Menu principali
![Page 141: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/141.jpg)
Compilare il primo programma
![Page 142: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/142.jpg)
23
Codifica del programma
A partire dal diagramma di flusso
Utilizziamo un editor per immettere le istruzioni C
Creiamo un file sorgente somma.c
Programmasorgente in C
Scritturaprogramma
somma.c
![Page 143: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/143.jpg)
24
Codifica “Somma due numeri”
Codifichiamo il programma in Dev-C++
somma.c
![Page 144: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/144.jpg)
25
Soluzione proposta (1/2)
#include <stdio.h>#include <stdlib.h>
intintintint main(voidvoidvoidvoid){
intintintint a, b ; /* addendi */intintintint c ; /* somma */
/* LEGGI GLI ADDENDI A E B */printf("Somma due numeri\n\n") ;
printf("Immetti il primo numero: ") ;scanf("%d", &a) ;printf("Immetti il secondo numero: ") ;scanf("%d", &b) ;
somma.c
![Page 145: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/145.jpg)
26
Soluzione proposta (2/2)
/* CALCOLA LA SOMMA */c = a + b ;
/* STAMPA IL RISULTATO C */printf("La somma di %d + %d vale: %d\n",
a, b, c) ;}
somma.c
![Page 146: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/146.jpg)
Compilare il primo programma
![Page 147: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/147.jpg)
28
Compilazione del programma
Attivare il compilatore sul programma sorgente somma.c
Il compilatore verifica che non ci siano errori di sintassi
In assenza di errori, viene generato il programma eseguibile somma.exe
Programmaeseguibile
Programmasorgente in C
Compilatore C
somma.c
somma.exesomma.exe
![Page 148: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/148.jpg)
29
Correzione errori di sintassi
Il compilatore genera una lista di messaggi di errore
Capire il messaggio
Identificare il punto errato nel programma
Trovare la soluzione
Correggere il programma
Generare una nuova versione del file sorgente
Lista degli errori
Programmasorgente in C
Compilatore C
somma.c
![Page 149: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/149.jpg)
30
Compilazione “Somma due numeri”
Compiliamo il programma
somma.c
![Page 150: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/150.jpg)
Compilare il primo programma
![Page 151: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/151.jpg)
32
Verifica del programma
Ci mettiamo nei panni dell’utente finale
Eseguiamo il programma
Verifichiamo che funzioni correttamente
Nei casi “normali”
Nei casi “limite”
Programmaeseguibile
Visualizzazionerisultati
somma.exesomma.exe
Immissione dati
![Page 152: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/152.jpg)
33
Errori in esecuzione
Tipologie di errori possibili:
Crash del programma
Blocco imposto dal sistema operativo
Blocco del programma
Ciclo “infinito”
Risultati errati
(Quasi) sempre
Solo in alcuni casi (con alcuni dati ma non con altri)
![Page 153: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/153.jpg)
34
Correzione errori di esecuzione
Lavoro da “detective”
Risalire dai sintomi alle cause del malfunzionamento
Formulare delle ipotesi sulla causa dell’errore e verificarle
Una volta trovato l’errore, cercare una soluzione
A seconda della gravità, occorrerà modificare
Il sorgente C
L’algoritmo risolutivo
L’approccio generale
![Page 154: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/154.jpg)
35
Correzione errori di esecuzione
Programmaeseguibile
Visualizzazionerisultati
somma.exe
Immissione dati
Programmasorgente in C
Compilatore C
somma.c
![Page 155: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/155.jpg)
36
Verifica “Somma due numeri”
Eseguiamo il programma con alcuni dati di prova, verificandone il comportamento corretto
![Page 156: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/156.jpg)
Primo programma in C
![Page 157: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/157.jpg)
2
Esercizi proposti
Esercizio “Equazione di primo grado”
Esercizio “Calcolo di aree”
Esercizio “Somma minuti”
![Page 158: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/158.jpg)
Esercizi proposti
![Page 159: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/159.jpg)
4
Esercizio “Equazione di primo grado”
Data l’equazione
a x + b = 0con a e b inseriti da tastiera, determinare il valore di x che risolve l’equazione
![Page 160: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/160.jpg)
5
Analisi
EQUAZIONE DI PRIMO GRADOa x + b = 0
Inserisci il valore di a: 2.52.52.52.5Inserisci il valore di b: 3.23.23.23.2
La soluzione dell'equazione e':x = -1.280000
![Page 161: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/161.jpg)
6
Soluzione
leggi a
leggi b
calcolax = –b/a
stampa x
primogrado.c
![Page 162: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/162.jpg)
Esercizi proposti
![Page 163: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/163.jpg)
8
Esercizio “Calcolo di aree”
Si scriva un programma in linguaggio C che, dato un numero reale immesso da tastiera, detto D, calcoli e stampi:
L’area del quadrato di lato D
L’area del cerchio di diametro D
L’area del triangolo equilatero di lato D
![Page 164: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/164.jpg)
9
Analisi
CALCOLO DI AREE
Immetti il valore di D: 2
Le aree calcolate sono:Quadrato di lato 2.000000 = 4.000000Cerchio di diametro 2.000000 = 3.140000Triangolo eq. di lato 2.000000 = 1.732051
![Page 165: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/165.jpg)
10
Aree
D
D
D
R
D
D
D
H
2DA =aree.c
![Page 166: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/166.jpg)
11
Aree
D
D
D
R
D
D
D
H
2DA =
2
2
DR
RA
=
⋅= π
aree.c
![Page 167: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/167.jpg)
12
Aree
D
D
D
R
D
D
D
H
2DA =
2
2
DR
RA
=
⋅= π
( )( ) 2
33sin
60sin2
⋅=⋅=
=°⋅=
⋅=
DD
DH
HDA
π
aree.c
![Page 168: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/168.jpg)
13
Avvertenze
Per le funzioni matematiche (sin, sqrt, ...) occorre includere math.h
Gli argomenti delle funzioni trigonometriche (sin, cos, ...) devono essere espressi in radianti
Il calcolo del quadrato si ottiene moltiplicando la variabile per se stessa: D2 = D × D
Il valore di π deve essere definito dal programmatore in un’apposita variabile
La costante M_PI, definita in math.h, non è piùsupportata dallo standard ANSI C
![Page 169: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/169.jpg)
Esercizi proposti
![Page 170: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/170.jpg)
15
Esercizio “Somma minuti” (1/2)
Un consulente deve calcolare il numero di ore e minuti per cui ha lavorato per un cliente
Il consulente ha lavorato in due distinte sessioni di lavoro, per ciascuna delle quali ha annotato il numero di ore e il numero di minuti impiegati
![Page 171: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/171.jpg)
16
Esercizio “Somma minuti” (2/2)
Si scriva un programma in C che, a partire dalle ore e minuti della prima sessione di lavoro e dalle ore e minuti della seconda sessione di lavoro, calcoli il numero di ore e minuti complessivi
![Page 172: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/172.jpg)
17
Analisi
SOMMA MINUTI
Sessione di lavoro 1:Numero di ore: 2222Numero di minuti: 45454545
Sessione di lavoro 2:Numero di ore: 1Numero di minuti: 30
Tempo totale: 4 ore e 15 minuti
![Page 173: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/173.jpg)
18
Aritmetica dell’orologio
Diciamo:
ore1, min1 le ore/minuti della prima sessione
ore2, min2 le ore/minuti della seconda sessione
oretot, mintot le ore/minuti totali
Non è possibile semplicemente sommare ore e minuti separatamente, in quanto min1+min2 potrebbe essere maggiore di 59
Bisogna tener conto del “riporto” nella somma dei minuti
![Page 174: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/174.jpg)
19
Soluzione
mintot = (min1 + min2) modulo 60
oretot = ore1 + ore2 + riporto
riporto = parte intera di (min1 + min2) / 60
minuti.c
![Page 175: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/175.jpg)
20
Soluzione
mintot = (min1 + min2) modulo 60
oretot = ore1 + ore2 + riporto
riporto = parte intera di (min1 + min2) / 60
minuti.c
int ore1, ore2, oretot ;int min1, min2, mintot, riporto ;
...
mintot = (min1 + min2) % 60 ;
riporto = (min1 + min2) / 60 ;
oretot = ore1 + ore2 + riporto ;
![Page 176: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/176.jpg)
Primo programma in C
![Page 177: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/177.jpg)
2
Argomenti trattati
Presentazione del linguaggio C
Struttura base di un file sorgente in C
Istruzioni minime per iniziare a programmare
Tipi fondamentali int e float
Istruzioni fondamentali di input/output
Istruzione di assegnazione
Operazioni necessarie per compilare ed eseguire il programma
![Page 178: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/178.jpg)
3
Suggerimenti
Analizzare sempre il comportamento previsto del programma prima di iniziare a scrivere il sorgente
Interazione con l’utente
Risoluzione manuale con carta e penna
Abbondare con i commenti
Leggere con attenzione tutti i messaggi di erroree di warning del compilatore, e correggerli
Verificare il programma con diversi dati di prova
![Page 179: Programmazione in C - saviozadviser.altervista.orgsaviozadviser.altervista.org/corso_c/file/lez/program_c/01... · Programmazione in C. 2 Primo programma in C Introduzione al linguaggio](https://reader030.fdocuments.net/reader030/viewer/2022021603/5c68b7f709d3f263648bf426/html5/thumbnails/179.jpg)
4
Materiale aggiuntivo
Sul CD-ROM
Testi e soluzioni degli esercizi trattati nei lucidi
Scheda sintetica
Esercizi risolti
Esercizi proposti
Esercizi proposti da altri libri di testo