Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Pillole di programmazione in C
Come iniziare a programmare in C
Nicola Corti & Michael Sanelli
GULP - Gruppo Utenti Linux Pisa
04/05/2011
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Indice
1 Cosa vuol dire Programmare?
2 Strumenti per la Programmazione
3 Costrutti di base
4 Strumenti di supporto allo sviluppo
5 Strutture e tipi complessi
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Indice
1 Cosa vuol dire Programmare?
2 Strumenti per la Programmazione
3 Costrutti di base
4 Strumenti di supporto allo sviluppo
5 Strutture e tipi complessi
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Indice
1 Cosa vuol dire Programmare?
2 Strumenti per la Programmazione
3 Costrutti di base
4 Strumenti di supporto allo sviluppo
5 Strutture e tipi complessi
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Indice
1 Cosa vuol dire Programmare?
2 Strumenti per la Programmazione
3 Costrutti di base
4 Strumenti di supporto allo sviluppo
5 Strutture e tipi complessi
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Indice
1 Cosa vuol dire Programmare?
2 Strumenti per la Programmazione
3 Costrutti di base
4 Strumenti di supporto allo sviluppo
5 Strutture e tipi complessi
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Cosa vuol dire Programmare?
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Tutto parte da un algoritmo!
Per iniziare a programmare dobbiamo avere ben chiaro in testa
cosa vogliamo fare, dobbiamo creare un Algoritmo.
Algoritmo
Un metodo per ottenere un certo risultato (risolvere un certo tipo
di problema) attraverso un numero finito di passi.
Da Wikipedia, l’enciclopedia libera
Dobbiamo dunque capire quale sequenza di passi risolvere il nostro
problema.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Tutto parte da un algoritmo!
Per iniziare a programmare dobbiamo avere ben chiaro in testa
cosa vogliamo fare, dobbiamo creare un Algoritmo.
Algoritmo
Un metodo per ottenere un certo risultato (risolvere un certo tipo
di problema) attraverso un numero finito di passi.
Da Wikipedia, l’enciclopedia libera
Dobbiamo dunque capire quale sequenza di passi risolvere il nostro
problema.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Tutto parte da un algoritmo!
Per iniziare a programmare dobbiamo avere ben chiaro in testa
cosa vogliamo fare, dobbiamo creare un Algoritmo.
Algoritmo
Un metodo per ottenere un certo risultato (risolvere un certo tipo
di problema) attraverso un numero finito di passi.
Da Wikipedia, l’enciclopedia libera
Dobbiamo dunque capire quale sequenza di passi risolvere il nostro
problema.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Tutto parte da un algoritmo!
Per iniziare a programmare dobbiamo avere ben chiaro in testa
cosa vogliamo fare, dobbiamo creare un Algoritmo.
Algoritmo
Un metodo per ottenere un certo risultato (risolvere un certo tipo
di problema) attraverso un numero finito di passi.
Da Wikipedia, l’enciclopedia libera
Dobbiamo dunque capire quale sequenza di passi risolvere il nostro
problema.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Esempio di algoritmo
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Dall’algoritmo al programma
Ora possiamo codificare il nostro algoritmo con un Linguaggio di
Programmazione
C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl,
Prolog, etc...
Quale Scegliere?
Noi utilizzeremo un linguaggio di programmazione Imperativo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Dall’algoritmo al programma
Ora possiamo codificare il nostro algoritmo con un Linguaggio di
Programmazione
C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl,
Prolog, etc...
Quale Scegliere?
Noi utilizzeremo un linguaggio di programmazione Imperativo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Dall’algoritmo al programma
Ora possiamo codificare il nostro algoritmo con un Linguaggio di
Programmazione
C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl,
Prolog, etc...
Quale Scegliere?
Noi utilizzeremo un linguaggio di programmazione Imperativo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Dall’algoritmo al programma
Ora possiamo codificare il nostro algoritmo con un Linguaggio di
Programmazione
C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl,
Prolog, etc...
Quale Scegliere?
Noi utilizzeremo un linguaggio di programmazione Imperativo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Dall’algoritmo al programma
Ora possiamo codificare il nostro algoritmo con un Linguaggio di
Programmazione
C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl,
Prolog, etc...
Quale Scegliere?
Noi utilizzeremo un linguaggio di programmazione Imperativo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Il paradigma Imperativo
Linguaggio Imperativo
In un linguaggio imperativo, un programma pu´o essere inteso come
un insieme di “ordini” che vengono impartiti alla macchina
virtuale del linguaggio di programmazione utilizzato
Un esempio di sequenza di passi:
LEGGI primo_numero
LEGGI secondo_numero
somma = primo_numero + secondo_numero
STAMPA somma
Il linguaggio che useremo `e il C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Il paradigma Imperativo
Linguaggio Imperativo
In un linguaggio imperativo, un programma pu´o essere inteso come
un insieme di “ordini” che vengono impartiti alla macchina
virtuale del linguaggio di programmazione utilizzato
Un esempio di sequenza di passi:
LEGGI primo_numero
LEGGI secondo_numero
somma = primo_numero + secondo_numero
STAMPA somma
Il linguaggio che useremo `e il C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Il paradigma Imperativo
Linguaggio Imperativo
In un linguaggio imperativo, un programma pu´o essere inteso come
un insieme di “ordini” che vengono impartiti alla macchina
virtuale del linguaggio di programmazione utilizzato
Un esempio di sequenza di passi:
LEGGI primo_numero
LEGGI secondo_numero
somma = primo_numero + secondo_numero
STAMPA somma
Il linguaggio che useremo `e il C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Il paradigma Imperativo
Linguaggio Imperativo
In un linguaggio imperativo, un programma pu´o essere inteso come
un insieme di “ordini” che vengono impartiti alla macchina
virtuale del linguaggio di programmazione utilizzato
Un esempio di sequenza di passi:
LEGGI primo_numero
LEGGI secondo_numero
somma = primo_numero + secondo_numero
STAMPA somma
Il linguaggio che useremo `e il C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Il paradigma Imperativo
Linguaggio Imperativo
In un linguaggio imperativo, un programma pu´o essere inteso come
un insieme di “ordini” che vengono impartiti alla macchina
virtuale del linguaggio di programmazione utilizzato
Un esempio di sequenza di passi:
LEGGI primo_numero
LEGGI secondo_numero
somma = primo_numero + secondo_numero
STAMPA somma
Il linguaggio che useremo `e il C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Quando `e nato il C?
Il C `e nato nei Bell Laboratories della AT&T nel 1972 da Dennis
Ritchie come evoluzione del linguaggio B di Ken Thompson usato
per la scrittura dei primi sistemi operativi UNIX.
La definizione formale si ha nel 1978 a cura di B. W. Kernighan e
D. M. Ritchie.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Quando `e nato il C?
Il C `e nato nei Bell Laboratories della AT&T nel 1972 da Dennis
Ritchie come evoluzione del linguaggio B di Ken Thompson usato
per la scrittura dei primi sistemi operativi UNIX.
La definizione formale si ha nel 1978 a cura di B. W. Kernighan e
D. M. Ritchie.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Quando `e nato il C?
Il C `e nato nei Bell Laboratories della AT&T nel 1972 da Dennis
Ritchie come evoluzione del linguaggio B di Ken Thompson usato
per la scrittura dei primi sistemi operativi UNIX.
La definizione formale si ha nel 1978 a cura di B. W. Kernighan e
D. M. Ritchie.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Dall’algoritmo...
...al Programma!
Il linguaggio C
Perch`e programmare in C?
Anche se `e un linguaggio ad Alto Livello, `e molto poco
astratto (rispetto ad altri linguaggi);
Permette di relazionarsi facilmente con l’hardware;
Presenta pochi semplici costrutti;
`E molto ben integrato nell’ambiente UNIX/Linux;
`E stato definito standard (ANSI C), e ci´o lo rende molto
portabile.
Ed `e comunque un buon linguaggio con cui iniziare.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Strumenti per la Programmazione
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Cosa ci serve?
Per iniziare a programmare in C ci servono sostanzialmente 2 cose:
1 Un posto dove scrivere il nostro codice sorgente, chiamasi
editor di testi;
2 Qualcuno che traduca o interpreti il codice che noi scriviamo,
e che lo renda eseguibile; chiamasi (nel nostro caso)
compilatore.
E tanta voglia di programmare! :-)
Editor di testo e complilatori su Linux
Se si usa una qualsiasi fra le principali distribuzioni Linux, questi
strumenti sono gi´a installati (es: gcc + gedit)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Cosa ci serve?
Per iniziare a programmare in C ci servono sostanzialmente 2 cose:
1 Un posto dove scrivere il nostro codice sorgente, chiamasi
editor di testi;
2 Qualcuno che traduca o interpreti il codice che noi scriviamo,
e che lo renda eseguibile; chiamasi (nel nostro caso)
compilatore.
E tanta voglia di programmare! :-)
Editor di testo e complilatori su Linux
Se si usa una qualsiasi fra le principali distribuzioni Linux, questi
strumenti sono gi´a installati (es: gcc + gedit)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Cosa ci serve?
Per iniziare a programmare in C ci servono sostanzialmente 2 cose:
1 Un posto dove scrivere il nostro codice sorgente, chiamasi
editor di testi;
2 Qualcuno che traduca o interpreti il codice che noi scriviamo,
e che lo renda eseguibile; chiamasi (nel nostro caso)
compilatore.
E tanta voglia di programmare! :-)
Editor di testo e complilatori su Linux
Se si usa una qualsiasi fra le principali distribuzioni Linux, questi
strumenti sono gi´a installati (es: gcc + gedit)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Cosa ci serve?
Per iniziare a programmare in C ci servono sostanzialmente 2 cose:
1 Un posto dove scrivere il nostro codice sorgente, chiamasi
editor di testi;
2 Qualcuno che traduca o interpreti il codice che noi scriviamo,
e che lo renda eseguibile; chiamasi (nel nostro caso)
compilatore.
E tanta voglia di programmare! :-)
Editor di testo e complilatori su Linux
Se si usa una qualsiasi fra le principali distribuzioni Linux, questi
strumenti sono gi´a installati (es: gcc + gedit)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Cosa ci serve?
Per iniziare a programmare in C ci servono sostanzialmente 2 cose:
1 Un posto dove scrivere il nostro codice sorgente, chiamasi
editor di testi;
2 Qualcuno che traduca o interpreti il codice che noi scriviamo,
e che lo renda eseguibile; chiamasi (nel nostro caso)
compilatore.
E tanta voglia di programmare! :-)
Editor di testo e complilatori su Linux
Se si usa una qualsiasi fra le principali distribuzioni Linux, questi
strumenti sono gi´a installati (es: gcc + gedit)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Cosa ci serve?
Per iniziare a programmare in C ci servono sostanzialmente 2 cose:
1 Un posto dove scrivere il nostro codice sorgente, chiamasi
editor di testi;
2 Qualcuno che traduca o interpreti il codice che noi scriviamo,
e che lo renda eseguibile; chiamasi (nel nostro caso)
compilatore.
E tanta voglia di programmare! :-)
Editor di testo e complilatori su Linux
Se si usa una qualsiasi fra le principali distribuzioni Linux, questi
strumenti sono gi´a installati (es: gcc + gedit)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
L’editor di testi
Per iniziare, va bene un qualsiasi software che permetta di scrivere
e di salvare del testo semplice.
Possono andar bene i seguenti
gedit - di default nell’ambiente GNOME
vi/vim
emacs
etc...
Tutti i software sopra elencati forniscono inoltre l’highlight della
sintassi, strumento molto utile per la leggibit´a del codice.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Il Compilatore
Utilizzeremo GCC (GNU Compiler Collection) il compilatore del
progetto GNU.
Invocazione
Pu´o essere invocato facilmente da un
terminale:
bash:~$ gcc file.c
Se la compilazione `e terminata correttamente, ci restituir´a un file
a.out che possiamo eseguire
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Il Compilatore
Utilizzeremo GCC (GNU Compiler Collection) il compilatore del
progetto GNU.
Invocazione
Pu´o essere invocato facilmente da un
terminale:
bash:~$ gcc file.c
Se la compilazione `e terminata correttamente, ci restituir´a un file
a.out che possiamo eseguire
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Il Compilatore
Utilizzeremo GCC (GNU Compiler Collection) il compilatore del
progetto GNU.
Invocazione
Pu´o essere invocato facilmente da un
terminale:
bash:~$ gcc file.c
Se la compilazione `e terminata correttamente, ci restituir´a un file
a.out che possiamo eseguire
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Il Compilatore
Utilizzeremo GCC (GNU Compiler Collection) il compilatore del
progetto GNU.
Invocazione
Pu´o essere invocato facilmente da un
terminale:
bash:~$ gcc file.c
Se la compilazione `e terminata correttamente, ci restituir´a un file
a.out che possiamo eseguire
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Parametri di GCC
La sintassi con cui invocare gcc `e la seguente:
gcc [opzioni] file
Fra le principali opzioni vi sono:
-o seguito da un nome di file, indica dove salvare il file
compilato
-Wall indica a gcc di stampare tutti gli Warning che
riscontra durante la compilazione
-pedantic indica a gcc di generare degli Warning se il codice
sorgente non rispetta gli standard ISO C
-g permette di eseguire il codice compilato in un
debugger (ne parleremo dopo...)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Cosa ci serve per iniziare?
L’editor di testi
Il compilatore - gcc
Qualcosa di pi´u, un IDE
Utilizzare un IDE
Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo
utilizzare un Ambiente di sviluppo (IDE), quali ad esempio
Eclipse, Netbeans, etc...
Ci offrono molti strumenti:
Compilatore integrato
Debugger
Gestore delle prestazioni
Controllo versione
etc...
In genere sono sconsigliati a chi inizia a programmare, onde evitare
di “perdersi” nell’infinit´a di opzioni...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutti di base
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Hello World!
Iniziamo con un primo programma di esempio:
1 #include <stdio.h>
2
3 int main (){
4
5 printf("Hello world! n");
6 return 0;
7 }
Lo possiamo compilare ed eseguire facilmente cos´ı:
bash:~$ gcc helloworld.c
bash:~$ ./a.out
Hello world!
bash:~$
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Hello World!
Iniziamo con un primo programma di esempio:
1 #include <stdio.h>
2
3 int main (){
4
5 printf("Hello world! n");
6 return 0;
7 }
Lo possiamo compilare ed eseguire facilmente cos´ı:
bash:~$ gcc helloworld.c
bash:~$ ./a.out
Hello world!
bash:~$
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Hello World!
Iniziamo con un primo programma di esempio:
1 #include <stdio.h>
2
3 int main (){
4
5 printf("Hello world! n");
6 return 0;
7 }
Lo possiamo compilare ed eseguire facilmente cos´ı:
bash:~$ gcc helloworld.c
bash:~$ ./a.out
Hello world!
bash:~$
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Hello World!
Iniziamo con un primo programma di esempio:
1 #include <stdio.h>
2
3 int main (){
4
5 printf("Hello world! n");
6 return 0;
7 }
Lo possiamo compilare ed eseguire facilmente cos´ı:
bash:~$ gcc helloworld.c
bash:~$ ./a.out
Hello world!
bash:~$
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Hello World!
Iniziamo con un primo programma di esempio:
1 #include <stdio.h>
2
3 int main (){
4
5 printf("Hello world! n");
6 return 0;
7 }
Lo possiamo compilare ed eseguire facilmente cos´ı:
bash:~$ gcc helloworld.c
bash:~$ ./a.out
Hello world!
bash:~$
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Regole sintattiche di base
Ogni istruzione deve essere terminata da un “;”
`E bene scrivere ogni istruzione su una riga a parte...
...ed utilizzare un’indentazione;
Ed inserire dei commenti per spiegare le parti “critiche”.
1 if(a < b)
2 a = b + 1;
3
4 // Commento su una riga
5 /*
6 Commento su pi’u righe
7 */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Regole sintattiche di base
Ogni istruzione deve essere terminata da un “;”
`E bene scrivere ogni istruzione su una riga a parte...
...ed utilizzare un’indentazione;
Ed inserire dei commenti per spiegare le parti “critiche”.
1 if(a < b)
2 a = b + 1;
3
4 // Commento su una riga
5 /*
6 Commento su pi’u righe
7 */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Regole sintattiche di base
Ogni istruzione deve essere terminata da un “;”
`E bene scrivere ogni istruzione su una riga a parte...
...ed utilizzare un’indentazione;
Ed inserire dei commenti per spiegare le parti “critiche”.
1 if(a < b)
2 a = b + 1;
3
4 // Commento su una riga
5 /*
6 Commento su pi’u righe
7 */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Regole sintattiche di base
Ogni istruzione deve essere terminata da un “;”
`E bene scrivere ogni istruzione su una riga a parte...
...ed utilizzare un’indentazione;
Ed inserire dei commenti per spiegare le parti “critiche”.
1 if(a < b)
2 a = b + 1;
3
4 // Commento su una riga
5 /*
6 Commento su pi’u righe
7 */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Regole sintattiche di base
Ogni istruzione deve essere terminata da un “;”
`E bene scrivere ogni istruzione su una riga a parte...
...ed utilizzare un’indentazione;
Ed inserire dei commenti per spiegare le parti “critiche”.
1 if(a < b)
2 a = b + 1;
3
4 // Commento su una riga
5 /*
6 Commento su pi’u righe
7 */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Regole sintattiche di base
Ogni istruzione deve essere terminata da un “;”
`E bene scrivere ogni istruzione su una riga a parte...
...ed utilizzare un’indentazione;
Ed inserire dei commenti per spiegare le parti “critiche”.
1 if(a < b)
2 a = b + 1;
3
4 // Commento su una riga
5 /*
6 Commento su pi’u righe
7 */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le direttive al preprocessore
Le istruzioni che iniziano con # sono anche chiamate le
direttive al preprocessore.
Vengono eseguite prima che il file venga effettivamente compilato.
Le utilizziamo per includere delle librerie, o per definire delle macro.
1 #include <stdlib.h>
2 /* Inclusione della libreria standard C */
3
4 #define LATI 4 /* Definizione di macro */
Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file
sorgente...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le direttive al preprocessore
Le istruzioni che iniziano con # sono anche chiamate le
direttive al preprocessore.
Vengono eseguite prima che il file venga effettivamente compilato.
Le utilizziamo per includere delle librerie, o per definire delle macro.
1 #include <stdlib.h>
2 /* Inclusione della libreria standard C */
3
4 #define LATI 4 /* Definizione di macro */
Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file
sorgente...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le direttive al preprocessore
Le istruzioni che iniziano con # sono anche chiamate le
direttive al preprocessore.
Vengono eseguite prima che il file venga effettivamente compilato.
Le utilizziamo per includere delle librerie, o per definire delle macro.
1 #include <stdlib.h>
2 /* Inclusione della libreria standard C */
3
4 #define LATI 4 /* Definizione di macro */
Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file
sorgente...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le direttive al preprocessore
Le istruzioni che iniziano con # sono anche chiamate le
direttive al preprocessore.
Vengono eseguite prima che il file venga effettivamente compilato.
Le utilizziamo per includere delle librerie, o per definire delle macro.
1 #include <stdlib.h>
2 /* Inclusione della libreria standard C */
3
4 #define LATI 4 /* Definizione di macro */
Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file
sorgente...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le direttive al preprocessore
Le istruzioni che iniziano con # sono anche chiamate le
direttive al preprocessore.
Vengono eseguite prima che il file venga effettivamente compilato.
Le utilizziamo per includere delle librerie, o per definire delle macro.
1 #include <stdlib.h>
2 /* Inclusione della libreria standard C */
3
4 #define LATI 4 /* Definizione di macro */
Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file
sorgente...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le direttive al preprocessore
Le istruzioni che iniziano con # sono anche chiamate le
direttive al preprocessore.
Vengono eseguite prima che il file venga effettivamente compilato.
Le utilizziamo per includere delle librerie, o per definire delle macro.
1 #include <stdlib.h>
2 /* Inclusione della libreria standard C */
3
4 #define LATI 4 /* Definizione di macro */
Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file
sorgente...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Variabile
Per variabile intendiamo una locazione di memoria che possiamo
utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in
futuro (leggerlo o modificarlo).
In C dobbiamo dichiarare ogni variabile che utilizziamo,
All’atto della dichiarazione dobbiamo deciderne il tipo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Variabile
Per variabile intendiamo una locazione di memoria che possiamo
utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in
futuro (leggerlo o modificarlo).
In C dobbiamo dichiarare ogni variabile che utilizziamo,
All’atto della dichiarazione dobbiamo deciderne il tipo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Variabile
Per variabile intendiamo una locazione di memoria che possiamo
utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in
futuro (leggerlo o modificarlo).
In C dobbiamo dichiarare ogni variabile che utilizziamo,
All’atto della dichiarazione dobbiamo deciderne il tipo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Variabile
Per variabile intendiamo una locazione di memoria che possiamo
utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in
futuro (leggerlo o modificarlo).
In C dobbiamo dichiarare ogni variabile che utilizziamo,
All’atto della dichiarazione dobbiamo deciderne il tipo.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Per definirle usiamo la sintassi:
<tipo> <nomevar> [= <valiniz>];
1 int a; /* Var. di tipo Intero */
2 int somma = 0; /* Dich. con inizializzazione */
3 int num1 , num2; /* Dich. compatta */
4 char b; /* Var. di tipo Carattere */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Per definirle usiamo la sintassi:
<tipo> <nomevar> [= <valiniz>];
1 int a; /* Var. di tipo Intero */
2 int somma = 0; /* Dich. con inizializzazione */
3 int num1 , num2; /* Dich. compatta */
4 char b; /* Var. di tipo Carattere */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Le variabili
Per definirle usiamo la sintassi:
<tipo> <nomevar> [= <valiniz>];
1 int a; /* Var. di tipo Intero */
2 int somma = 0; /* Dich. con inizializzazione */
3 int num1 , num2; /* Dich. compatta */
4 char b; /* Var. di tipo Carattere */
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Assegnamenti ed espressioni
Assegnamenti ed espressioni sono i costrutti base per creare il
nostro programma.
La sintassi generale `e:
<variabile> = <espressione>
L’espressione pu´o essere una normale espressione algebrica, oppure
pu´o contenere anche delle funzioni:
1 a = b;
2 a = a + 1;
3 a = a + (b * 4 - 1);
4 a = somma(a, 5) + differenza(b, 10);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Assegnamenti ed espressioni
Assegnamenti ed espressioni sono i costrutti base per creare il
nostro programma.
La sintassi generale `e:
<variabile> = <espressione>
L’espressione pu´o essere una normale espressione algebrica, oppure
pu´o contenere anche delle funzioni:
1 a = b;
2 a = a + 1;
3 a = a + (b * 4 - 1);
4 a = somma(a, 5) + differenza(b, 10);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Assegnamenti ed espressioni
Assegnamenti ed espressioni sono i costrutti base per creare il
nostro programma.
La sintassi generale `e:
<variabile> = <espressione>
L’espressione pu´o essere una normale espressione algebrica, oppure
pu´o contenere anche delle funzioni:
1 a = b;
2 a = a + 1;
3 a = a + (b * 4 - 1);
4 a = somma(a, 5) + differenza(b, 10);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Assegnamenti ed espressioni
Assegnamenti ed espressioni sono i costrutti base per creare il
nostro programma.
La sintassi generale `e:
<variabile> = <espressione>
L’espressione pu´o essere una normale espressione algebrica, oppure
pu´o contenere anche delle funzioni:
1 a = b;
2 a = a + 1;
3 a = a + (b * 4 - 1);
4 a = somma(a, 5) + differenza(b, 10);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Assegnamenti ed espressioni
Assegnamenti ed espressioni sono i costrutti base per creare il
nostro programma.
La sintassi generale `e:
<variabile> = <espressione>
L’espressione pu´o essere una normale espressione algebrica, oppure
pu´o contenere anche delle funzioni:
1 a = b;
2 a = a + 1;
3 a = a + (b * 4 - 1);
4 a = somma(a, 5) + differenza(b, 10);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Espressioni - Forme compatte
Esistono delle forme compatte per le espressioni.
Servono per rendere pi´u sintetico il codice, ma lo possono rendere
“poco leggibile”
1 a = a + 5;
2 a += 5;
3
4 a = a * 10;
5 a *= 10;
6
7 a = a + 1;
8 a++;
I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Espressioni - Forme compatte
Esistono delle forme compatte per le espressioni.
Servono per rendere pi´u sintetico il codice, ma lo possono rendere
“poco leggibile”
1 a = a + 5;
2 a += 5;
3
4 a = a * 10;
5 a *= 10;
6
7 a = a + 1;
8 a++;
I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Espressioni - Forme compatte
Esistono delle forme compatte per le espressioni.
Servono per rendere pi´u sintetico il codice, ma lo possono rendere
“poco leggibile”
1 a = a + 5;
2 a += 5;
3
4 a = a * 10;
5 a *= 10;
6
7 a = a + 1;
8 a++;
I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Espressioni - Forme compatte
Esistono delle forme compatte per le espressioni.
Servono per rendere pi´u sintetico il codice, ma lo possono rendere
“poco leggibile”
1 a = a + 5;
2 a += 5;
3
4 a = a * 10;
5 a *= 10;
6
7 a = a + 1;
8 a++;
I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto ifthenelse
Un altro costrutto molto importante `e il costrutto ifthenelse.
La sintassi di base `e:
if(<condizione>)
{<istruzioni ramo then>}
[else
{<istruzioni ramo else>}]
1 if(a == b)
2 {a = 0;}
3 else
4 {b = 0;}
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto ifthenelse
Un altro costrutto molto importante `e il costrutto ifthenelse.
La sintassi di base `e:
if(<condizione>)
{<istruzioni ramo then>}
[else
{<istruzioni ramo else>}]
1 if(a == b)
2 {a = 0;}
3 else
4 {b = 0;}
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto ifthenelse
Un altro costrutto molto importante `e il costrutto ifthenelse.
La sintassi di base `e:
if(<condizione>)
{<istruzioni ramo then>}
[else
{<istruzioni ramo else>}]
1 if(a == b)
2 {a = 0;}
3 else
4 {b = 0;}
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto ifthenelse
Un altro costrutto molto importante `e il costrutto ifthenelse.
La sintassi di base `e:
if(<condizione>)
{<istruzioni ramo then>}
[else
{<istruzioni ramo else>}]
1 if(a == b)
2 {a = 0;}
3 else
4 {b = 0;}
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Operatori di confronto
All’interno di una condizione possiamo utilizzare i seguenti
operatorio di confronto:
== Uguale
!= Diverso
<,> Minore/Maggiore
<=,>= Minore/Maggiore o Uguale
Ed i seguenti operatori logici:
& And
|| Or
! Not
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Operatori di confronto
All’interno di una condizione possiamo utilizzare i seguenti
operatorio di confronto:
== Uguale
!= Diverso
<,> Minore/Maggiore
<=,>= Minore/Maggiore o Uguale
Ed i seguenti operatori logici:
& And
|| Or
! Not
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Operatori di confronto
All’interno di una condizione possiamo utilizzare i seguenti
operatorio di confronto:
== Uguale
!= Diverso
<,> Minore/Maggiore
<=,>= Minore/Maggiore o Uguale
Ed i seguenti operatori logici:
& And
|| Or
! Not
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Operatori di confronto
All’interno di una condizione possiamo utilizzare i seguenti
operatorio di confronto:
== Uguale
!= Diverso
<,> Minore/Maggiore
<=,>= Minore/Maggiore o Uguale
Ed i seguenti operatori logici:
& And
|| Or
! Not
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto while
Tramite il costrutto while possiamo definire dei cicli che iterano
fino al falsificarsi di una certa condizione, la sintassi `e:
while(<condizione>)
{<corpo del ciclo>}
1 while(a != b)
2 {a++;
3 somma ++;}
Attenzione!
Se non scriviamo bene il ciclo e la condizione, il nostro programma
rischia di andare in loop
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto while
Tramite il costrutto while possiamo definire dei cicli che iterano
fino al falsificarsi di una certa condizione, la sintassi `e:
while(<condizione>)
{<corpo del ciclo>}
1 while(a != b)
2 {a++;
3 somma ++;}
Attenzione!
Se non scriviamo bene il ciclo e la condizione, il nostro programma
rischia di andare in loop
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto while
Tramite il costrutto while possiamo definire dei cicli che iterano
fino al falsificarsi di una certa condizione, la sintassi `e:
while(<condizione>)
{<corpo del ciclo>}
1 while(a != b)
2 {a++;
3 somma ++;}
Attenzione!
Se non scriviamo bene il ciclo e la condizione, il nostro programma
rischia di andare in loop
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto while
Tramite il costrutto while possiamo definire dei cicli che iterano
fino al falsificarsi di una certa condizione, la sintassi `e:
while(<condizione>)
{<corpo del ciclo>}
1 while(a != b)
2 {a++;
3 somma ++;}
Attenzione!
Se non scriviamo bene il ciclo e la condizione, il nostro programma
rischia di andare in loop
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto while
Tramite il costrutto while possiamo definire dei cicli che iterano
fino al falsificarsi di una certa condizione, la sintassi `e:
while(<condizione>)
{<corpo del ciclo>}
1 while(a != b)
2 {a++;
3 somma ++;}
Attenzione!
Se non scriviamo bene il ciclo e la condizione, il nostro programma
rischia di andare in loop
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto for
Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti.
La sintassi di base `e:
for(<init.>; <terminaz.>; <iteraz.>)
{<corpo del ciclo>}
1 for(i = 0; i < MAX; i++)
2 {a = a + 1;}
While vs for
Dovremmo utilizzare il ciclo for soltanto quando il numero di
iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto for
Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti.
La sintassi di base `e:
for(<init.>; <terminaz.>; <iteraz.>)
{<corpo del ciclo>}
1 for(i = 0; i < MAX; i++)
2 {a = a + 1;}
While vs for
Dovremmo utilizzare il ciclo for soltanto quando il numero di
iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto for
Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti.
La sintassi di base `e:
for(<init.>; <terminaz.>; <iteraz.>)
{<corpo del ciclo>}
1 for(i = 0; i < MAX; i++)
2 {a = a + 1;}
While vs for
Dovremmo utilizzare il ciclo for soltanto quando il numero di
iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto for
Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti.
La sintassi di base `e:
for(<init.>; <terminaz.>; <iteraz.>)
{<corpo del ciclo>}
1 for(i = 0; i < MAX; i++)
2 {a = a + 1;}
While vs for
Dovremmo utilizzare il ciclo for soltanto quando il numero di
iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Costrutto for
Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti.
La sintassi di base `e:
for(<init.>; <terminaz.>; <iteraz.>)
{<corpo del ciclo>}
1 for(i = 0; i < MAX; i++)
2 {a = a + 1;}
While vs for
Dovremmo utilizzare il ciclo for soltanto quando il numero di
iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
While vs for
1 int i;
2
3 // Ciclo while
4 i = 0;
5 while(i < MAX)
6 {
7 a += calcolo(i);
8 i++;
9 }
10
11 // Ciclo for
12 for(i = 0; i < MAX; i++)
13 {a += calcolo(i);}
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Definizione di funzione
Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”,
possiamo definire delle funzioni.
La sintassi di base `e:
<tiporisultato> <nomefunzione> (<listaparametri>){
<corpo>
}
1 int somma(int val1 , int val2){
2 // Variabile locale alla funzione
3 int risultato;
4 risultato = val1 + val2;
5 return risultato;
6 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Definizione di funzione
Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”,
possiamo definire delle funzioni.
La sintassi di base `e:
<tiporisultato> <nomefunzione> (<listaparametri>){
<corpo>
}
1 int somma(int val1 , int val2){
2 // Variabile locale alla funzione
3 int risultato;
4 risultato = val1 + val2;
5 return risultato;
6 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Definizione di funzione
Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”,
possiamo definire delle funzioni.
La sintassi di base `e:
<tiporisultato> <nomefunzione> (<listaparametri>){
<corpo>
}
1 int somma(int val1 , int val2){
2 // Variabile locale alla funzione
3 int risultato;
4 risultato = val1 + val2;
5 return risultato;
6 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Definizione di funzione
Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”,
possiamo definire delle funzioni.
La sintassi di base `e:
<tiporisultato> <nomefunzione> (<listaparametri>){
<corpo>
}
1 int somma(int val1 , int val2){
2 // Variabile locale alla funzione
3 int risultato;
4 risultato = val1 + val2;
5 return risultato;
6 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Esempio di funzione: i booleani
In C il tipo booleano (true, false) non `e nativo del linguaggio.
Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri
valgono TRUE;
Scriviamo una funzione che verifichi se un numero `e pari o meno.
1 while(i < MAX)
2 {if( pari(i) )
3 cont = cont + 1;}
4 // MAX e’ una macro che indica il numero a cui fermarsi
5
6 int pari(int valore){
7 int ris = 0;
8 if(( valore % 2) == 0)
9 ris = 1;
10 return ris
11 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Esempio di funzione: i booleani
In C il tipo booleano (true, false) non `e nativo del linguaggio.
Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri
valgono TRUE;
Scriviamo una funzione che verifichi se un numero `e pari o meno.
1 while(i < MAX)
2 {if( pari(i) )
3 cont = cont + 1;}
4 // MAX e’ una macro che indica il numero a cui fermarsi
5
6 int pari(int valore){
7 int ris = 0;
8 if(( valore % 2) == 0)
9 ris = 1;
10 return ris
11 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Esempio di funzione: i booleani
In C il tipo booleano (true, false) non `e nativo del linguaggio.
Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri
valgono TRUE;
Scriviamo una funzione che verifichi se un numero `e pari o meno.
1 while(i < MAX)
2 {if( pari(i) )
3 cont = cont + 1;}
4 // MAX e’ una macro che indica il numero a cui fermarsi
5
6 int pari(int valore){
7 int ris = 0;
8 if(( valore % 2) == 0)
9 ris = 1;
10 return ris
11 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Esempio di funzione: i booleani
In C il tipo booleano (true, false) non `e nativo del linguaggio.
Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri
valgono TRUE;
Scriviamo una funzione che verifichi se un numero `e pari o meno.
1 while(i < MAX)
2 {if( pari(i) )
3 cont = cont + 1;}
4 // MAX e’ una macro che indica il numero a cui fermarsi
5
6 int pari(int valore){
7 int ris = 0;
8 if(( valore % 2) == 0)
9 ris = 1;
10 return ris
11 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Esempio di funzione: i booleani
In C il tipo booleano (true, false) non `e nativo del linguaggio.
Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri
valgono TRUE;
Scriviamo una funzione che verifichi se un numero `e pari o meno.
1 while(i < MAX)
2 {if( pari(i) )
3 cont = cont + 1;}
4 // MAX e’ una macro che indica il numero a cui fermarsi
5
6 int pari(int valore){
7 int ris = 0;
8 if(( valore % 2) == 0)
9 ris = 1;
10 return ris
11 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Funzioni di I/O
Per relazionarci con l’esterno avremo bisogno delle funzioni di
input/output.
Possiamo utilizzare quelle gi´a definite dalla libreria standard di C,
contenute dentro stdio.h (Standard Input Output).
1 #include <stdio.h>
2
3 int scanf(const char *format , ...);
4 int printf(const char *format , ...);
Le stringhe di Formato
Entrambi queste funzioni vogliono in input, oltre alle variabili da
leggere/stampare, una stringa di formato
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Funzioni di I/O
Per relazionarci con l’esterno avremo bisogno delle funzioni di
input/output.
Possiamo utilizzare quelle gi´a definite dalla libreria standard di C,
contenute dentro stdio.h (Standard Input Output).
1 #include <stdio.h>
2
3 int scanf(const char *format , ...);
4 int printf(const char *format , ...);
Le stringhe di Formato
Entrambi queste funzioni vogliono in input, oltre alle variabili da
leggere/stampare, una stringa di formato
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Funzioni di I/O
Per relazionarci con l’esterno avremo bisogno delle funzioni di
input/output.
Possiamo utilizzare quelle gi´a definite dalla libreria standard di C,
contenute dentro stdio.h (Standard Input Output).
1 #include <stdio.h>
2
3 int scanf(const char *format , ...);
4 int printf(const char *format , ...);
Le stringhe di Formato
Entrambi queste funzioni vogliono in input, oltre alle variabili da
leggere/stampare, una stringa di formato
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Funzioni di I/O
Per relazionarci con l’esterno avremo bisogno delle funzioni di
input/output.
Possiamo utilizzare quelle gi´a definite dalla libreria standard di C,
contenute dentro stdio.h (Standard Input Output).
1 #include <stdio.h>
2
3 int scanf(const char *format , ...);
4 int printf(const char *format , ...);
Le stringhe di Formato
Entrambi queste funzioni vogliono in input, oltre alle variabili da
leggere/stampare, una stringa di formato
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Funzioni di I/O
Per relazionarci con l’esterno avremo bisogno delle funzioni di
input/output.
Possiamo utilizzare quelle gi´a definite dalla libreria standard di C,
contenute dentro stdio.h (Standard Input Output).
1 #include <stdio.h>
2
3 int scanf(const char *format , ...);
4 int printf(const char *format , ...);
Le stringhe di Formato
Entrambi queste funzioni vogliono in input, oltre alle variabili da
leggere/stampare, una stringa di formato
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Esempio di uso di printf/scanf
1 #include <stdio.h>
2
3 int main (){
4 int a;
5 scanf("%d", &a);
6 /* Vedremo dopo perche ’ abbiamo messo & davanti alla
variabile */
7
8 printf("Il numero che hai inserito e ’: %dn", a);
9 printf("Il valore di %d modulo 2 e ’:t %dn", a, a%2);
10
11 if(pari(a))
12 {printf("Il numero e’ parin");}
13 else
14 {printf("Il numero e’ disparin");}
15
16 return 0;
17 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Segnaposti di printf/scanf
Nelle stringhe di formato possiamo utilizzare i seguenti
segnaposto.
%d Valore di tipo intero
%c Valore di tipo carattere
%s Valore di tipo stringa
%o Valore ottale
%x Valore esadecimale
%p Valore di una locazione di memoria
n Newline
t Tabulazione
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Segnaposti di printf/scanf
Nelle stringhe di formato possiamo utilizzare i seguenti
segnaposto.
%d Valore di tipo intero
%c Valore di tipo carattere
%s Valore di tipo stringa
%o Valore ottale
%x Valore esadecimale
%p Valore di una locazione di memoria
n Newline
t Tabulazione
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Primi passi con il C
Variabili ed espressioni
Costrutti if, while e for
Le funzioni
Segnaposti di printf/scanf
Nelle stringhe di formato possiamo utilizzare i seguenti
segnaposto.
%d Valore di tipo intero
%c Valore di tipo carattere
%s Valore di tipo stringa
%o Valore ottale
%x Valore esadecimale
%p Valore di una locazione di memoria
n Newline
t Tabulazione
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Strumenti di supporto allo sviluppo
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Utilizzo del man
Uno strumento molto utile `e il man.
Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto
manpages-dev lo si pu´o invocare cos´ı:
bash:~$ man 3 printf
PRINTF(3) Linux Programmer’s Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf,
vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
...
Proviamo a vedere cosa succede se invochiamo man 3 stdio
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Utilizzo del man
Uno strumento molto utile `e il man.
Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto
manpages-dev lo si pu´o invocare cos´ı:
bash:~$ man 3 printf
PRINTF(3) Linux Programmer’s Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf,
vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
...
Proviamo a vedere cosa succede se invochiamo man 3 stdio
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Utilizzo del man
Uno strumento molto utile `e il man.
Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto
manpages-dev lo si pu´o invocare cos´ı:
bash:~$ man 3 printf
PRINTF(3) Linux Programmer’s Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf,
vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
...
Proviamo a vedere cosa succede se invochiamo man 3 stdio
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Utilizzo del man
Uno strumento molto utile `e il man.
Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto
manpages-dev lo si pu´o invocare cos´ı:
bash:~$ man 3 printf
PRINTF(3) Linux Programmer’s Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf,
vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
...
Proviamo a vedere cosa succede se invochiamo man 3 stdio
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Utilizzo del man
Uno strumento molto utile `e il man.
Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto
manpages-dev lo si pu´o invocare cos´ı:
bash:~$ man 3 printf
PRINTF(3) Linux Programmer’s Manual PRINTF(3)
NAME
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf,
vsnprintf - formatted output conversion
SYNOPSIS
#include <stdio.h>
int printf(const char *format, ...);
...
Proviamo a vedere cosa succede se invochiamo man 3 stdio
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Il K&R
Un altro strumento di riferimento molto importante `e Il
Linguaggio C di Kernighan e Ritchie.
Manuale che dovrebbe essere sempre a portata di mano di ogni
programmatore C.
Contiene tutta la definizione del linguaggio e la descrizione di tutta
la libreria standard C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Il K&R
Un altro strumento di riferimento molto importante `e Il
Linguaggio C di Kernighan e Ritchie.
Manuale che dovrebbe essere sempre a portata di mano di ogni
programmatore C.
Contiene tutta la definizione del linguaggio e la descrizione di tutta
la libreria standard C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
Il K&R
Un altro strumento di riferimento molto importante `e Il
Linguaggio C di Kernighan e Ritchie.
Manuale che dovrebbe essere sempre a portata di mano di ogni
programmatore C.
Contiene tutta la definizione del linguaggio e la descrizione di tutta
la libreria standard C.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
gdb e ddd
gdb `e il debugger di C del progetto GNU. Ci permette di vedere i
valori delle variabili a runtime.
Va invocato su un file compilato con l’opzione -g.
Va utilizzato da terminale. Altrimenti possiamo usare ddd come
interfaccia grafica.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
gdb e ddd
gdb `e il debugger di C del progetto GNU. Ci permette di vedere i
valori delle variabili a runtime.
Va invocato su un file compilato con l’opzione -g.
Va utilizzato da terminale. Altrimenti possiamo usare ddd come
interfaccia grafica.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Uso dei manuali
Uso di un debugger
gdb e ddd
gdb `e il debugger di C del progetto GNU. Ci permette di vedere i
valori delle variabili a runtime.
Va invocato su un file compilato con l’opzione -g.
Va utilizzato da terminale. Altrimenti possiamo usare ddd come
interfaccia grafica.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Strutture e tipi complessi
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I vettori
In C `e possibile definire delle variabili strutturate, un esempio
semplice sono i Vettori
I vettori rappresentano una lista di elementi di dimensione statica,
ci´o vuol dire che una volta definiti non possono essere
ridimensionati.
La sintassi base per definire un vettore `e:
<tipo> <nomevettore>[<dimensione>];
Possono essere utilizzati per memorizzare N elementi:
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I vettori
In C `e possibile definire delle variabili strutturate, un esempio
semplice sono i Vettori
I vettori rappresentano una lista di elementi di dimensione statica,
ci´o vuol dire che una volta definiti non possono essere
ridimensionati.
La sintassi base per definire un vettore `e:
<tipo> <nomevettore>[<dimensione>];
Possono essere utilizzati per memorizzare N elementi:
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I vettori
In C `e possibile definire delle variabili strutturate, un esempio
semplice sono i Vettori
I vettori rappresentano una lista di elementi di dimensione statica,
ci´o vuol dire che una volta definiti non possono essere
ridimensionati.
La sintassi base per definire un vettore `e:
<tipo> <nomevettore>[<dimensione>];
Possono essere utilizzati per memorizzare N elementi:
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I vettori
In C `e possibile definire delle variabili strutturate, un esempio
semplice sono i Vettori
I vettori rappresentano una lista di elementi di dimensione statica,
ci´o vuol dire che una volta definiti non possono essere
ridimensionati.
La sintassi base per definire un vettore `e:
<tipo> <nomevettore>[<dimensione>];
Possono essere utilizzati per memorizzare N elementi:
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I vettori
In C `e possibile definire delle variabili strutturate, un esempio
semplice sono i Vettori
I vettori rappresentano una lista di elementi di dimensione statica,
ci´o vuol dire che una volta definiti non possono essere
ridimensionati.
La sintassi base per definire un vettore `e:
<tipo> <nomevettore>[<dimensione>];
Possono essere utilizzati per memorizzare N elementi:
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio con un vettore
1 int vector [10];
2
3 vector [0] = 123;
4 /* ... */
5 vector [9] = 789;
6
7 for(i = 0; i < n; i++)
8 printf("%d", vector[i]);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio con un vettore
1 int vector [10];
2
3 vector [0] = 123;
4 /* ... */
5 vector [9] = 789;
6
7 for(i = 0; i < n; i++)
8 printf("%d", vector[i]);
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Gli indici di un vettore
Un vettore di n elementi, ha gli indici che vanno da 0 a n-1
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Gli indici di un vettore
Un vettore di n elementi, ha gli indici che vanno da 0 a n-1
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Vediamo qualche Esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le stringhe
Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo
Stringa.
Il tipo stringa non `e per´o definito nativamente nel linguaggio C,
dobbiamo utilizzare un vettore di caratteri.
1 char stringa [10];
2 stringa = "hello";
3 printf("%c",stringa [2]);
Il terminatore
Ogni stringa deve includere un carattere in pi´u che si chiama
terminatore (e vale 0), altrimenti possiamo avere dei
comportamenti inattesi (Buffer overrun)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le stringhe
Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo
Stringa.
Il tipo stringa non `e per´o definito nativamente nel linguaggio C,
dobbiamo utilizzare un vettore di caratteri.
1 char stringa [10];
2 stringa = "hello";
3 printf("%c",stringa [2]);
Il terminatore
Ogni stringa deve includere un carattere in pi´u che si chiama
terminatore (e vale 0), altrimenti possiamo avere dei
comportamenti inattesi (Buffer overrun)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le stringhe
Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo
Stringa.
Il tipo stringa non `e per´o definito nativamente nel linguaggio C,
dobbiamo utilizzare un vettore di caratteri.
1 char stringa [10];
2 stringa = "hello";
3 printf("%c",stringa [2]);
Il terminatore
Ogni stringa deve includere un carattere in pi´u che si chiama
terminatore (e vale 0), altrimenti possiamo avere dei
comportamenti inattesi (Buffer overrun)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le stringhe
Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo
Stringa.
Il tipo stringa non `e per´o definito nativamente nel linguaggio C,
dobbiamo utilizzare un vettore di caratteri.
1 char stringa [10];
2 stringa = "hello";
3 printf("%c",stringa [2]);
Il terminatore
Ogni stringa deve includere un carattere in pi´u che si chiama
terminatore (e vale 0), altrimenti possiamo avere dei
comportamenti inattesi (Buffer overrun)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le stringhe
Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo
Stringa.
Il tipo stringa non `e per´o definito nativamente nel linguaggio C,
dobbiamo utilizzare un vettore di caratteri.
1 char stringa [10];
2 stringa = "hello";
3 printf("%c",stringa [2]);
Il terminatore
Ogni stringa deve includere un carattere in pi´u che si chiama
terminatore (e vale 0), altrimenti possiamo avere dei
comportamenti inattesi (Buffer overrun)
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
I puntatori
In C possiamo avere accesso agli indirizzi di memoria dove sono
memorizzate le variabili.
Possiamo avere puntatori che puntano ad ogni tipo di variabile.
Per definirli usiamo la sintassi:
<tipo> * <nomepunt>;
Per utilizzarli usiamo gli operatori & e *.
La cosa `e pi´u semplice di quanto sembra...
Facciamo qualche esempio...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio sui puntatori (1)
1 int * punt;
2 int a = 3;
3
4 punt = &a;
5 printf("%p valore %dn", punt , *punt);
6
7 // punt punta alla variabile a
8 // il valore di *punt e’ il valore di a
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio sui puntatori (1)
1 int * punt;
2 int a = 3;
3
4 punt = &a;
5 printf("%p valore %dn", punt , *punt);
6
7 // punt punta alla variabile a
8 // il valore di *punt e’ il valore di a
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio sui puntatori (2)
Attenzione!
Anche i vettori e le stringhe sono dei puntatori!
1 int p[10];
2
3 int somma (int *a, int n){
4
5 int sum = 0, i;
6 for(i = 0; i < n; i++)
7 sum += *(a + i);
8
9 return sum
10 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio sui puntatori (2)
Attenzione!
Anche i vettori e le stringhe sono dei puntatori!
1 int p[10];
2
3 int somma (int *a, int n){
4
5 int sum = 0, i;
6 for(i = 0; i < n; i++)
7 sum += *(a + i);
8
9 return sum
10 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio sui puntatori (2)
Attenzione!
Anche i vettori e le stringhe sono dei puntatori!
1 int p[10];
2
3 int somma (int *a, int n){
4
5 int sum = 0, i;
6 for(i = 0; i < n; i++)
7 sum += *(a + i);
8
9 return sum
10 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Passaggio dei parametri
Possiamo utilizzare i puntatori anche per il passaggio dei parametri
per simulare un passaggio per riferimento.
In parole povere, possiamo utilizzare i puntatori per scrivere
funzioni che modificano i loro parametri.
1 int a = 10;
2 void addhalf (int * number){
3 *number = *number + (* number / 2);
4 }
5 addhalf (&a);
6 //La funzione void non ritorna niente
Questo `e il motivo per cui nella scanf si usa &nomevar
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Passaggio dei parametri
Possiamo utilizzare i puntatori anche per il passaggio dei parametri
per simulare un passaggio per riferimento.
In parole povere, possiamo utilizzare i puntatori per scrivere
funzioni che modificano i loro parametri.
1 int a = 10;
2 void addhalf (int * number){
3 *number = *number + (* number / 2);
4 }
5 addhalf (&a);
6 //La funzione void non ritorna niente
Questo `e il motivo per cui nella scanf si usa &nomevar
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Passaggio dei parametri
Possiamo utilizzare i puntatori anche per il passaggio dei parametri
per simulare un passaggio per riferimento.
In parole povere, possiamo utilizzare i puntatori per scrivere
funzioni che modificano i loro parametri.
1 int a = 10;
2 void addhalf (int * number){
3 *number = *number + (* number / 2);
4 }
5 addhalf (&a);
6 //La funzione void non ritorna niente
Questo `e il motivo per cui nella scanf si usa &nomevar
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Passaggio dei parametri
Possiamo utilizzare i puntatori anche per il passaggio dei parametri
per simulare un passaggio per riferimento.
In parole povere, possiamo utilizzare i puntatori per scrivere
funzioni che modificano i loro parametri.
1 int a = 10;
2 void addhalf (int * number){
3 *number = *number + (* number / 2);
4 }
5 addhalf (&a);
6 //La funzione void non ritorna niente
Questo `e il motivo per cui nella scanf si usa &nomevar
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Passaggio dei parametri
Possiamo utilizzare i puntatori anche per il passaggio dei parametri
per simulare un passaggio per riferimento.
In parole povere, possiamo utilizzare i puntatori per scrivere
funzioni che modificano i loro parametri.
1 int a = 10;
2 void addhalf (int * number){
3 *number = *number + (* number / 2);
4 }
5 addhalf (&a);
6 //La funzione void non ritorna niente
Questo `e il motivo per cui nella scanf si usa &nomevar
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Cenno - Doppi puntatori
In C possiamo anche definire dei puntatori di puntatori.
Si usano solo in casi particolari, tipo per rappresentare le matrici di
interi, i vettori di interi, oppure per usare funzioni che modificano i
puntatori.
1 int a[10][10];
2
3 // a e’ di tipo int**
4
5 *(*(a + 2) + 3) = 10;
6
7 // Equivale ad a[2][3] = 10
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Cenno - Doppi puntatori
In C possiamo anche definire dei puntatori di puntatori.
Si usano solo in casi particolari, tipo per rappresentare le matrici di
interi, i vettori di interi, oppure per usare funzioni che modificano i
puntatori.
1 int a[10][10];
2
3 // a e’ di tipo int**
4
5 *(*(a + 2) + 3) = 10;
6
7 // Equivale ad a[2][3] = 10
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Cenno - Doppi puntatori
In C possiamo anche definire dei puntatori di puntatori.
Si usano solo in casi particolari, tipo per rappresentare le matrici di
interi, i vettori di interi, oppure per usare funzioni che modificano i
puntatori.
1 int a[10][10];
2
3 // a e’ di tipo int**
4
5 *(*(a + 2) + 3) = 10;
6
7 // Equivale ad a[2][3] = 10
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Cenno - Doppi puntatori
In C possiamo anche definire dei puntatori di puntatori.
Si usano solo in casi particolari, tipo per rappresentare le matrici di
interi, i vettori di interi, oppure per usare funzioni che modificano i
puntatori.
1 int a[10][10];
2
3 // a e’ di tipo int**
4
5 *(*(a + 2) + 3) = 10;
6
7 // Equivale ad a[2][3] = 10
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Strutture e nuovi tipi
Definiamo adesso dei nuovi tipi di dati, che ci aiutino a
rappresentare meglio le informazioni che vogliamo elaborare.
Possiamo utilizzare il costruttore struct per creare dei record di
informazioni relative ad uno stesso elemento.
Aggreghiamo insieme variabili di tipi differenti, ma logicamente
correlate.
La sintassi per definire una struttura `e
struct <nome> {
<tipovar> <nomecampo>;
...
};
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Strutture e nuovi tipi
Definiamo adesso dei nuovi tipi di dati, che ci aiutino a
rappresentare meglio le informazioni che vogliamo elaborare.
Possiamo utilizzare il costruttore struct per creare dei record di
informazioni relative ad uno stesso elemento.
Aggreghiamo insieme variabili di tipi differenti, ma logicamente
correlate.
La sintassi per definire una struttura `e
struct <nome> {
<tipovar> <nomecampo>;
...
};
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Strutture e nuovi tipi
Definiamo adesso dei nuovi tipi di dati, che ci aiutino a
rappresentare meglio le informazioni che vogliamo elaborare.
Possiamo utilizzare il costruttore struct per creare dei record di
informazioni relative ad uno stesso elemento.
Aggreghiamo insieme variabili di tipi differenti, ma logicamente
correlate.
La sintassi per definire una struttura `e
struct <nome> {
<tipovar> <nomecampo>;
...
};
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Strutture e nuovi tipi
Definiamo adesso dei nuovi tipi di dati, che ci aiutino a
rappresentare meglio le informazioni che vogliamo elaborare.
Possiamo utilizzare il costruttore struct per creare dei record di
informazioni relative ad uno stesso elemento.
Aggreghiamo insieme variabili di tipi differenti, ma logicamente
correlate.
La sintassi per definire una struttura `e
struct <nome> {
<tipovar> <nomecampo>;
...
};
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Strutture e nuovi tipi
Definiamo adesso dei nuovi tipi di dati, che ci aiutino a
rappresentare meglio le informazioni che vogliamo elaborare.
Possiamo utilizzare il costruttore struct per creare dei record di
informazioni relative ad uno stesso elemento.
Aggreghiamo insieme variabili di tipi differenti, ma logicamente
correlate.
La sintassi per definire una struttura `e
struct <nome> {
<tipovar> <nomecampo>;
...
};
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio di uso delle strutture
1 struct record {
2 int matricola;
3 char nome [30];
4 char codfisc [17];
5 };
6 int main (){
7 struct record mario;
8 mario.matricola = 123456;
9 mario.nome = "mario";
10 mario.codfisc = " MRSRSS88A10G702A ";
11 }
Accediamo ai campi della struttura con l’operatore “.”
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio di uso delle strutture
1 struct record {
2 int matricola;
3 char nome [30];
4 char codfisc [17];
5 };
6 int main (){
7 struct record mario;
8 mario.matricola = 123456;
9 mario.nome = "mario";
10 mario.codfisc = " MRSRSS88A10G702A ";
11 }
Accediamo ai campi della struttura con l’operatore “.”
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio di uso delle strutture
1 struct record {
2 int matricola;
3 char nome [30];
4 char codfisc [17];
5 };
6 int main (){
7 struct record mario;
8 mario.matricola = 123456;
9 mario.nome = "mario";
10 mario.codfisc = " MRSRSS88A10G702A ";
11 }
Accediamo ai campi della struttura con l’operatore “.”
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Problema...
Fino ad ora, abbiamo definito gli array con una dimensione definita
a priori...
E se volessimo far decidere la dimensione
all’utente...?!?
Non possiamo fare int a[n] dopo aver letto n con una scanf...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Problema...
Fino ad ora, abbiamo definito gli array con una dimensione definita
a priori...
E se volessimo far decidere la dimensione
all’utente...?!?
Non possiamo fare int a[n] dopo aver letto n con una scanf...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Problema...
Fino ad ora, abbiamo definito gli array con una dimensione definita
a priori...
E se volessimo far decidere la dimensione
all’utente...?!?
Non possiamo fare int a[n] dopo aver letto n con una scanf...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Problema...
Fino ad ora, abbiamo definito gli array con una dimensione definita
a priori...
E se volessimo far decidere la dimensione
all’utente...?!?
Non possiamo fare int a[n] dopo aver letto n con una scanf...
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Allocazione di memoria dinamica
Dobbiamo utilizzare l’allocazione dinamica della memoria.
Per farlo possiamo utilizzare le seguenti funzioni:
malloc Restituisce il puntatore ad un’area di memoria della
dimensione desiderata.
calloc Restituisce il puntatore ad un’area di memoria e la
inizializza a 0.
realloc Permette di riallocare un’area di memoria che era gi´a
stata allocata prima.
In caso di fallimento ritornano il puntatore NULL.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Uso della malloc
La malloc `e una funzione contenuta nell’header stdlib.h.
Il suo prototipo `e:
void * malloc(size_t size);
La funzione restituisce un puntatore generico, e vuole un
parametro size che rappresenta la dimensione.
Possiamo usare sizeof per conoscere la dimensione dei vari tipi di
dato.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Uso della malloc
La malloc `e una funzione contenuta nell’header stdlib.h.
Il suo prototipo `e:
void * malloc(size_t size);
La funzione restituisce un puntatore generico, e vuole un
parametro size che rappresenta la dimensione.
Possiamo usare sizeof per conoscere la dimensione dei vari tipi di
dato.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Uso della malloc
La malloc `e una funzione contenuta nell’header stdlib.h.
Il suo prototipo `e:
void * malloc(size_t size);
La funzione restituisce un puntatore generico, e vuole un
parametro size che rappresenta la dimensione.
Possiamo usare sizeof per conoscere la dimensione dei vari tipi di
dato.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Uso della malloc
La malloc `e una funzione contenuta nell’header stdlib.h.
Il suo prototipo `e:
void * malloc(size_t size);
La funzione restituisce un puntatore generico, e vuole un
parametro size che rappresenta la dimensione.
Possiamo usare sizeof per conoscere la dimensione dei vari tipi di
dato.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Uso della malloc
La malloc `e una funzione contenuta nell’header stdlib.h.
Il suo prototipo `e:
void * malloc(size_t size);
La funzione restituisce un puntatore generico, e vuole un
parametro size che rappresenta la dimensione.
Possiamo usare sizeof per conoscere la dimensione dei vari tipi di
dato.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio di uso della malloc
1 int * voti;
2 struct record * studenti;
3 // Dichiaro 2 array
4
5 scanf("%d", &n);
6 // Leggo in input il numero degli studenti
7
8 voti = malloc(n * sizeof(int));
9 studenti = malloc(n * sizeof(struct sutdenti));
10 // Alloco dinamicamente i 2 array
11
12 voti [0] = 25;
13 studenti [0]. nome = "Tizio";
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Definizione di nuovi tipi
Possiamo usare typedef per rinominare i tipi di dato.
Ci pu´o tornare molto utile con i puntatori:
1 typedef int * puntatore;
2
3 int * a;
4 puntatore b;
5 // Sono 2 variabili dello stesso tipo
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Definizione di nuovi tipi
Possiamo usare typedef per rinominare i tipi di dato.
Ci pu´o tornare molto utile con i puntatori:
1 typedef int * puntatore;
2
3 int * a;
4 puntatore b;
5 // Sono 2 variabili dello stesso tipo
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Definizione di nuovi tipi
Possiamo usare typedef per rinominare i tipi di dato.
Ci pu´o tornare molto utile con i puntatori:
1 typedef int * puntatore;
2
3 int * a;
4 puntatore b;
5 // Sono 2 variabili dello stesso tipo
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Definizione di nuovi tipi
Possiamo usare typedef per rinominare i tipi di dato.
Ci pu´o tornare molto utile con i puntatori:
1 typedef int * puntatore;
2
3 int * a;
4 puntatore b;
5 // Sono 2 variabili dello stesso tipo
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le liste
Mediante le liste possiamo creare delle strutture che siano
dinamiche; possiamo liberarci dal vincolo della dimensione imposto
dagli array, e creare strutture che aumentano e diminuiscono a
piacere.
Basta aggiungere un puntatore ad una struttura dello stesso tipo,
che punti al successivo:
1 struct nodo {
2 int valore;
3 struct nodo * next;
4 };
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le liste
Mediante le liste possiamo creare delle strutture che siano
dinamiche; possiamo liberarci dal vincolo della dimensione imposto
dagli array, e creare strutture che aumentano e diminuiscono a
piacere.
Basta aggiungere un puntatore ad una struttura dello stesso tipo,
che punti al successivo:
1 struct nodo {
2 int valore;
3 struct nodo * next;
4 };
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le liste
Mediante le liste possiamo creare delle strutture che siano
dinamiche; possiamo liberarci dal vincolo della dimensione imposto
dagli array, e creare strutture che aumentano e diminuiscono a
piacere.
Basta aggiungere un puntatore ad una struttura dello stesso tipo,
che punti al successivo:
1 struct nodo {
2 int valore;
3 struct nodo * next;
4 };
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Le liste
Mediante le liste possiamo creare delle strutture che siano
dinamiche; possiamo liberarci dal vincolo della dimensione imposto
dagli array, e creare strutture che aumentano e diminuiscono a
piacere.
Basta aggiungere un puntatore ad una struttura dello stesso tipo,
che punti al successivo:
1 struct nodo {
2 int valore;
3 struct nodo * next;
4 };
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Rappresentazione grafica di una lista
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Esempio di uso delle liste
1 struct nodo {
2 int valore;
3 struct nodo * next;
4 };
5
6 typedef struct nodo elemento;
7 typedef elemento * lista;
8
9 int main (){
10
11 lista testa = NULL;
12 testa = malloc(sizeof(elemento));
13
14 testa ->valore = 0;
15 testa ->next = NULL;
16
17 }
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Usiamo l’operatore “->” per accedere ai campi di una struttura di
cui abbiamo il puntatore.
Prima usavamo l’operatore “.” dato che potevamo operare
direttamente sulla struttura.
Le seguenti espressioni sono equivalenti:
lista -> elem;
(*lista).elem;
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Usiamo l’operatore “->” per accedere ai campi di una struttura di
cui abbiamo il puntatore.
Prima usavamo l’operatore “.” dato che potevamo operare
direttamente sulla struttura.
Le seguenti espressioni sono equivalenti:
lista -> elem;
(*lista).elem;
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Usiamo l’operatore “->” per accedere ai campi di una struttura di
cui abbiamo il puntatore.
Prima usavamo l’operatore “.” dato che potevamo operare
direttamente sulla struttura.
Le seguenti espressioni sono equivalenti:
lista -> elem;
(*lista).elem;
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Usiamo l’operatore “->” per accedere ai campi di una struttura di
cui abbiamo il puntatore.
Prima usavamo l’operatore “.” dato che potevamo operare
direttamente sulla struttura.
Le seguenti espressioni sono equivalenti:
lista -> elem;
(*lista).elem;
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato
per esempio per la fine della lista).
Se vogliamo effettuare una scansione di una lista, utilizzeremo un
puntatore di appoggio, e lo faremo avanzare elemento per
elemento.
Ci dobbiamo fermare appena il puntatore di appoggio diventa
NULL.
Attenzione!
Accedere ai campi di una puntatore NULL, provoca un errore di
Segmentation Fault
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato
per esempio per la fine della lista).
Se vogliamo effettuare una scansione di una lista, utilizzeremo un
puntatore di appoggio, e lo faremo avanzare elemento per
elemento.
Ci dobbiamo fermare appena il puntatore di appoggio diventa
NULL.
Attenzione!
Accedere ai campi di una puntatore NULL, provoca un errore di
Segmentation Fault
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato
per esempio per la fine della lista).
Se vogliamo effettuare una scansione di una lista, utilizzeremo un
puntatore di appoggio, e lo faremo avanzare elemento per
elemento.
Ci dobbiamo fermare appena il puntatore di appoggio diventa
NULL.
Attenzione!
Accedere ai campi di una puntatore NULL, provoca un errore di
Segmentation Fault
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato
per esempio per la fine della lista).
Se vogliamo effettuare una scansione di una lista, utilizzeremo un
puntatore di appoggio, e lo faremo avanzare elemento per
elemento.
Ci dobbiamo fermare appena il puntatore di appoggio diventa
NULL.
Attenzione!
Accedere ai campi di una puntatore NULL, provoca un errore di
Segmentation Fault
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Note sulle liste
Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato
per esempio per la fine della lista).
Se vogliamo effettuare una scansione di una lista, utilizzeremo un
puntatore di appoggio, e lo faremo avanzare elemento per
elemento.
Ci dobbiamo fermare appena il puntatore di appoggio diventa
NULL.
Attenzione!
Accedere ai campi di una puntatore NULL, provoca un errore di
Segmentation Fault
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Free
Per liberare lo spazio allocato in precedenza con una malloc si usa
la funzione free.
void free(void *ptr);
La free vuole in input il puntatore dell’area di memoria da liberare,
e non restituisce niente.
Il garbage
`E sempre buona norma deallocare le strutture che non vengono pi´u
usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come
valgrind o mtrace che tengono traccia della memoria allocata per
vedere cosa ci siamo dimenticati.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Free
Per liberare lo spazio allocato in precedenza con una malloc si usa
la funzione free.
void free(void *ptr);
La free vuole in input il puntatore dell’area di memoria da liberare,
e non restituisce niente.
Il garbage
`E sempre buona norma deallocare le strutture che non vengono pi´u
usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come
valgrind o mtrace che tengono traccia della memoria allocata per
vedere cosa ci siamo dimenticati.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Free
Per liberare lo spazio allocato in precedenza con una malloc si usa
la funzione free.
void free(void *ptr);
La free vuole in input il puntatore dell’area di memoria da liberare,
e non restituisce niente.
Il garbage
`E sempre buona norma deallocare le strutture che non vengono pi´u
usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come
valgrind o mtrace che tengono traccia della memoria allocata per
vedere cosa ci siamo dimenticati.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Free
Per liberare lo spazio allocato in precedenza con una malloc si usa
la funzione free.
void free(void *ptr);
La free vuole in input il puntatore dell’area di memoria da liberare,
e non restituisce niente.
Il garbage
`E sempre buona norma deallocare le strutture che non vengono pi´u
usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come
valgrind o mtrace che tengono traccia della memoria allocata per
vedere cosa ci siamo dimenticati.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Free
Per liberare lo spazio allocato in precedenza con una malloc si usa
la funzione free.
void free(void *ptr);
La free vuole in input il puntatore dell’area di memoria da liberare,
e non restituisce niente.
Il garbage
`E sempre buona norma deallocare le strutture che non vengono pi´u
usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come
valgrind o mtrace che tengono traccia della memoria allocata per
vedere cosa ci siamo dimenticati.
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Domande...?
Nicola Corti & Michael Sanelli Pillole di programmazione in C
Cosa vuol dire Programmare?
Strumenti per la Programmazione
Costrutti di base
Strumenti di supporto allo sviluppo
Strutture e tipi complessi
Vettori e stringhe
I puntatori
Le strutture
Allocazione dinamica della memoria
Le liste
Slides realizzate da:
Nicola Corti - corti.nico [at] gmail [dot] com
Michael Sanelli - michael [at] sanelli [dot] org
Slides realizzate con LATEX Beamer, ed utilizzando interamente
software libero.
La seguente presentazione `e rilasciata sotto licenza
Creative Commons - Attributions, Non Commercial,
Share-alike.
Nicola Corti & Michael Sanelli Pillole di programmazione in C

Pillole di programmazione in C

  • 1.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Pillole di programmazione in C Come iniziare a programmare in C Nicola Corti & Michael Sanelli GULP - Gruppo Utenti Linux Pisa 04/05/2011 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 2.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Indice 1 Cosa vuol dire Programmare? 2 Strumenti per la Programmazione 3 Costrutti di base 4 Strumenti di supporto allo sviluppo 5 Strutture e tipi complessi Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 3.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Indice 1 Cosa vuol dire Programmare? 2 Strumenti per la Programmazione 3 Costrutti di base 4 Strumenti di supporto allo sviluppo 5 Strutture e tipi complessi Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 4.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Indice 1 Cosa vuol dire Programmare? 2 Strumenti per la Programmazione 3 Costrutti di base 4 Strumenti di supporto allo sviluppo 5 Strutture e tipi complessi Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 5.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Indice 1 Cosa vuol dire Programmare? 2 Strumenti per la Programmazione 3 Costrutti di base 4 Strumenti di supporto allo sviluppo 5 Strutture e tipi complessi Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 6.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Indice 1 Cosa vuol dire Programmare? 2 Strumenti per la Programmazione 3 Costrutti di base 4 Strumenti di supporto allo sviluppo 5 Strutture e tipi complessi Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 7.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Cosa vuol dire Programmare? Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 8.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Tutto parte da un algoritmo! Per iniziare a programmare dobbiamo avere ben chiaro in testa cosa vogliamo fare, dobbiamo creare un Algoritmo. Algoritmo Un metodo per ottenere un certo risultato (risolvere un certo tipo di problema) attraverso un numero finito di passi. Da Wikipedia, l’enciclopedia libera Dobbiamo dunque capire quale sequenza di passi risolvere il nostro problema. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 9.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Tutto parte da un algoritmo! Per iniziare a programmare dobbiamo avere ben chiaro in testa cosa vogliamo fare, dobbiamo creare un Algoritmo. Algoritmo Un metodo per ottenere un certo risultato (risolvere un certo tipo di problema) attraverso un numero finito di passi. Da Wikipedia, l’enciclopedia libera Dobbiamo dunque capire quale sequenza di passi risolvere il nostro problema. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 10.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Tutto parte da un algoritmo! Per iniziare a programmare dobbiamo avere ben chiaro in testa cosa vogliamo fare, dobbiamo creare un Algoritmo. Algoritmo Un metodo per ottenere un certo risultato (risolvere un certo tipo di problema) attraverso un numero finito di passi. Da Wikipedia, l’enciclopedia libera Dobbiamo dunque capire quale sequenza di passi risolvere il nostro problema. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 11.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Tutto parte da un algoritmo! Per iniziare a programmare dobbiamo avere ben chiaro in testa cosa vogliamo fare, dobbiamo creare un Algoritmo. Algoritmo Un metodo per ottenere un certo risultato (risolvere un certo tipo di problema) attraverso un numero finito di passi. Da Wikipedia, l’enciclopedia libera Dobbiamo dunque capire quale sequenza di passi risolvere il nostro problema. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 12.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Esempio di algoritmo Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 13.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Dall’algoritmo al programma Ora possiamo codificare il nostro algoritmo con un Linguaggio di Programmazione C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl, Prolog, etc... Quale Scegliere? Noi utilizzeremo un linguaggio di programmazione Imperativo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 14.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Dall’algoritmo al programma Ora possiamo codificare il nostro algoritmo con un Linguaggio di Programmazione C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl, Prolog, etc... Quale Scegliere? Noi utilizzeremo un linguaggio di programmazione Imperativo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 15.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Dall’algoritmo al programma Ora possiamo codificare il nostro algoritmo con un Linguaggio di Programmazione C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl, Prolog, etc... Quale Scegliere? Noi utilizzeremo un linguaggio di programmazione Imperativo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 16.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Dall’algoritmo al programma Ora possiamo codificare il nostro algoritmo con un Linguaggio di Programmazione C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl, Prolog, etc... Quale Scegliere? Noi utilizzeremo un linguaggio di programmazione Imperativo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 17.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Dall’algoritmo al programma Ora possiamo codificare il nostro algoritmo con un Linguaggio di Programmazione C, C++, Java, Python, Visual Basic, Ruby, OCaml, Lisp, Perl, Prolog, etc... Quale Scegliere? Noi utilizzeremo un linguaggio di programmazione Imperativo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 18.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Il paradigma Imperativo Linguaggio Imperativo In un linguaggio imperativo, un programma pu´o essere inteso come un insieme di “ordini” che vengono impartiti alla macchina virtuale del linguaggio di programmazione utilizzato Un esempio di sequenza di passi: LEGGI primo_numero LEGGI secondo_numero somma = primo_numero + secondo_numero STAMPA somma Il linguaggio che useremo `e il C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 19.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Il paradigma Imperativo Linguaggio Imperativo In un linguaggio imperativo, un programma pu´o essere inteso come un insieme di “ordini” che vengono impartiti alla macchina virtuale del linguaggio di programmazione utilizzato Un esempio di sequenza di passi: LEGGI primo_numero LEGGI secondo_numero somma = primo_numero + secondo_numero STAMPA somma Il linguaggio che useremo `e il C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 20.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Il paradigma Imperativo Linguaggio Imperativo In un linguaggio imperativo, un programma pu´o essere inteso come un insieme di “ordini” che vengono impartiti alla macchina virtuale del linguaggio di programmazione utilizzato Un esempio di sequenza di passi: LEGGI primo_numero LEGGI secondo_numero somma = primo_numero + secondo_numero STAMPA somma Il linguaggio che useremo `e il C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 21.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Il paradigma Imperativo Linguaggio Imperativo In un linguaggio imperativo, un programma pu´o essere inteso come un insieme di “ordini” che vengono impartiti alla macchina virtuale del linguaggio di programmazione utilizzato Un esempio di sequenza di passi: LEGGI primo_numero LEGGI secondo_numero somma = primo_numero + secondo_numero STAMPA somma Il linguaggio che useremo `e il C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 22.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Il paradigma Imperativo Linguaggio Imperativo In un linguaggio imperativo, un programma pu´o essere inteso come un insieme di “ordini” che vengono impartiti alla macchina virtuale del linguaggio di programmazione utilizzato Un esempio di sequenza di passi: LEGGI primo_numero LEGGI secondo_numero somma = primo_numero + secondo_numero STAMPA somma Il linguaggio che useremo `e il C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 23.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Quando `e nato il C? Il C `e nato nei Bell Laboratories della AT&T nel 1972 da Dennis Ritchie come evoluzione del linguaggio B di Ken Thompson usato per la scrittura dei primi sistemi operativi UNIX. La definizione formale si ha nel 1978 a cura di B. W. Kernighan e D. M. Ritchie. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 24.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Quando `e nato il C? Il C `e nato nei Bell Laboratories della AT&T nel 1972 da Dennis Ritchie come evoluzione del linguaggio B di Ken Thompson usato per la scrittura dei primi sistemi operativi UNIX. La definizione formale si ha nel 1978 a cura di B. W. Kernighan e D. M. Ritchie. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 25.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Quando `e nato il C? Il C `e nato nei Bell Laboratories della AT&T nel 1972 da Dennis Ritchie come evoluzione del linguaggio B di Ken Thompson usato per la scrittura dei primi sistemi operativi UNIX. La definizione formale si ha nel 1978 a cura di B. W. Kernighan e D. M. Ritchie. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 26.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 27.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 28.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 29.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 30.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 31.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 32.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Dall’algoritmo... ...al Programma! Il linguaggio C Perch`e programmare in C? Anche se `e un linguaggio ad Alto Livello, `e molto poco astratto (rispetto ad altri linguaggi); Permette di relazionarsi facilmente con l’hardware; Presenta pochi semplici costrutti; `E molto ben integrato nell’ambiente UNIX/Linux; `E stato definito standard (ANSI C), e ci´o lo rende molto portabile. Ed `e comunque un buon linguaggio con cui iniziare. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 33.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Strumenti per la Programmazione Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 34.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Cosa ci serve? Per iniziare a programmare in C ci servono sostanzialmente 2 cose: 1 Un posto dove scrivere il nostro codice sorgente, chiamasi editor di testi; 2 Qualcuno che traduca o interpreti il codice che noi scriviamo, e che lo renda eseguibile; chiamasi (nel nostro caso) compilatore. E tanta voglia di programmare! :-) Editor di testo e complilatori su Linux Se si usa una qualsiasi fra le principali distribuzioni Linux, questi strumenti sono gi´a installati (es: gcc + gedit) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 35.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Cosa ci serve? Per iniziare a programmare in C ci servono sostanzialmente 2 cose: 1 Un posto dove scrivere il nostro codice sorgente, chiamasi editor di testi; 2 Qualcuno che traduca o interpreti il codice che noi scriviamo, e che lo renda eseguibile; chiamasi (nel nostro caso) compilatore. E tanta voglia di programmare! :-) Editor di testo e complilatori su Linux Se si usa una qualsiasi fra le principali distribuzioni Linux, questi strumenti sono gi´a installati (es: gcc + gedit) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 36.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Cosa ci serve? Per iniziare a programmare in C ci servono sostanzialmente 2 cose: 1 Un posto dove scrivere il nostro codice sorgente, chiamasi editor di testi; 2 Qualcuno che traduca o interpreti il codice che noi scriviamo, e che lo renda eseguibile; chiamasi (nel nostro caso) compilatore. E tanta voglia di programmare! :-) Editor di testo e complilatori su Linux Se si usa una qualsiasi fra le principali distribuzioni Linux, questi strumenti sono gi´a installati (es: gcc + gedit) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 37.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Cosa ci serve? Per iniziare a programmare in C ci servono sostanzialmente 2 cose: 1 Un posto dove scrivere il nostro codice sorgente, chiamasi editor di testi; 2 Qualcuno che traduca o interpreti il codice che noi scriviamo, e che lo renda eseguibile; chiamasi (nel nostro caso) compilatore. E tanta voglia di programmare! :-) Editor di testo e complilatori su Linux Se si usa una qualsiasi fra le principali distribuzioni Linux, questi strumenti sono gi´a installati (es: gcc + gedit) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 38.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Cosa ci serve? Per iniziare a programmare in C ci servono sostanzialmente 2 cose: 1 Un posto dove scrivere il nostro codice sorgente, chiamasi editor di testi; 2 Qualcuno che traduca o interpreti il codice che noi scriviamo, e che lo renda eseguibile; chiamasi (nel nostro caso) compilatore. E tanta voglia di programmare! :-) Editor di testo e complilatori su Linux Se si usa una qualsiasi fra le principali distribuzioni Linux, questi strumenti sono gi´a installati (es: gcc + gedit) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 39.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Cosa ci serve? Per iniziare a programmare in C ci servono sostanzialmente 2 cose: 1 Un posto dove scrivere il nostro codice sorgente, chiamasi editor di testi; 2 Qualcuno che traduca o interpreti il codice che noi scriviamo, e che lo renda eseguibile; chiamasi (nel nostro caso) compilatore. E tanta voglia di programmare! :-) Editor di testo e complilatori su Linux Se si usa una qualsiasi fra le principali distribuzioni Linux, questi strumenti sono gi´a installati (es: gcc + gedit) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 40.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 41.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 42.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 43.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 44.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 45.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 46.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 47.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE L’editor di testi Per iniziare, va bene un qualsiasi software che permetta di scrivere e di salvare del testo semplice. Possono andar bene i seguenti gedit - di default nell’ambiente GNOME vi/vim emacs etc... Tutti i software sopra elencati forniscono inoltre l’highlight della sintassi, strumento molto utile per la leggibit´a del codice. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 48.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Il Compilatore Utilizzeremo GCC (GNU Compiler Collection) il compilatore del progetto GNU. Invocazione Pu´o essere invocato facilmente da un terminale: bash:~$ gcc file.c Se la compilazione `e terminata correttamente, ci restituir´a un file a.out che possiamo eseguire Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 49.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Il Compilatore Utilizzeremo GCC (GNU Compiler Collection) il compilatore del progetto GNU. Invocazione Pu´o essere invocato facilmente da un terminale: bash:~$ gcc file.c Se la compilazione `e terminata correttamente, ci restituir´a un file a.out che possiamo eseguire Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 50.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Il Compilatore Utilizzeremo GCC (GNU Compiler Collection) il compilatore del progetto GNU. Invocazione Pu´o essere invocato facilmente da un terminale: bash:~$ gcc file.c Se la compilazione `e terminata correttamente, ci restituir´a un file a.out che possiamo eseguire Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 51.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Il Compilatore Utilizzeremo GCC (GNU Compiler Collection) il compilatore del progetto GNU. Invocazione Pu´o essere invocato facilmente da un terminale: bash:~$ gcc file.c Se la compilazione `e terminata correttamente, ci restituir´a un file a.out che possiamo eseguire Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 52.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 53.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 54.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 55.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 56.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 57.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 58.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 59.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Parametri di GCC La sintassi con cui invocare gcc `e la seguente: gcc [opzioni] file Fra le principali opzioni vi sono: -o seguito da un nome di file, indica dove salvare il file compilato -Wall indica a gcc di stampare tutti gli Warning che riscontra durante la compilazione -pedantic indica a gcc di generare degli Warning se il codice sorgente non rispetta gli standard ISO C -g permette di eseguire il codice compilato in un debugger (ne parleremo dopo...) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 60.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 61.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 62.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 63.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 64.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 65.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 66.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 67.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 68.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Cosa ci serve per iniziare? L’editor di testi Il compilatore - gcc Qualcosa di pi´u, un IDE Utilizzare un IDE Se abbiamo bisogno di qualcosa di pi´u soffisticato possiamo utilizzare un Ambiente di sviluppo (IDE), quali ad esempio Eclipse, Netbeans, etc... Ci offrono molti strumenti: Compilatore integrato Debugger Gestore delle prestazioni Controllo versione etc... In genere sono sconsigliati a chi inizia a programmare, onde evitare di “perdersi” nell’infinit´a di opzioni... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 69.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutti di base Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 70.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Hello World! Iniziamo con un primo programma di esempio: 1 #include <stdio.h> 2 3 int main (){ 4 5 printf("Hello world! n"); 6 return 0; 7 } Lo possiamo compilare ed eseguire facilmente cos´ı: bash:~$ gcc helloworld.c bash:~$ ./a.out Hello world! bash:~$ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 71.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Hello World! Iniziamo con un primo programma di esempio: 1 #include <stdio.h> 2 3 int main (){ 4 5 printf("Hello world! n"); 6 return 0; 7 } Lo possiamo compilare ed eseguire facilmente cos´ı: bash:~$ gcc helloworld.c bash:~$ ./a.out Hello world! bash:~$ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 72.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Hello World! Iniziamo con un primo programma di esempio: 1 #include <stdio.h> 2 3 int main (){ 4 5 printf("Hello world! n"); 6 return 0; 7 } Lo possiamo compilare ed eseguire facilmente cos´ı: bash:~$ gcc helloworld.c bash:~$ ./a.out Hello world! bash:~$ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 73.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Hello World! Iniziamo con un primo programma di esempio: 1 #include <stdio.h> 2 3 int main (){ 4 5 printf("Hello world! n"); 6 return 0; 7 } Lo possiamo compilare ed eseguire facilmente cos´ı: bash:~$ gcc helloworld.c bash:~$ ./a.out Hello world! bash:~$ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 74.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Hello World! Iniziamo con un primo programma di esempio: 1 #include <stdio.h> 2 3 int main (){ 4 5 printf("Hello world! n"); 6 return 0; 7 } Lo possiamo compilare ed eseguire facilmente cos´ı: bash:~$ gcc helloworld.c bash:~$ ./a.out Hello world! bash:~$ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 75.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Regole sintattiche di base Ogni istruzione deve essere terminata da un “;” `E bene scrivere ogni istruzione su una riga a parte... ...ed utilizzare un’indentazione; Ed inserire dei commenti per spiegare le parti “critiche”. 1 if(a < b) 2 a = b + 1; 3 4 // Commento su una riga 5 /* 6 Commento su pi’u righe 7 */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 76.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Regole sintattiche di base Ogni istruzione deve essere terminata da un “;” `E bene scrivere ogni istruzione su una riga a parte... ...ed utilizzare un’indentazione; Ed inserire dei commenti per spiegare le parti “critiche”. 1 if(a < b) 2 a = b + 1; 3 4 // Commento su una riga 5 /* 6 Commento su pi’u righe 7 */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 77.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Regole sintattiche di base Ogni istruzione deve essere terminata da un “;” `E bene scrivere ogni istruzione su una riga a parte... ...ed utilizzare un’indentazione; Ed inserire dei commenti per spiegare le parti “critiche”. 1 if(a < b) 2 a = b + 1; 3 4 // Commento su una riga 5 /* 6 Commento su pi’u righe 7 */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 78.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Regole sintattiche di base Ogni istruzione deve essere terminata da un “;” `E bene scrivere ogni istruzione su una riga a parte... ...ed utilizzare un’indentazione; Ed inserire dei commenti per spiegare le parti “critiche”. 1 if(a < b) 2 a = b + 1; 3 4 // Commento su una riga 5 /* 6 Commento su pi’u righe 7 */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 79.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Regole sintattiche di base Ogni istruzione deve essere terminata da un “;” `E bene scrivere ogni istruzione su una riga a parte... ...ed utilizzare un’indentazione; Ed inserire dei commenti per spiegare le parti “critiche”. 1 if(a < b) 2 a = b + 1; 3 4 // Commento su una riga 5 /* 6 Commento su pi’u righe 7 */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 80.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Regole sintattiche di base Ogni istruzione deve essere terminata da un “;” `E bene scrivere ogni istruzione su una riga a parte... ...ed utilizzare un’indentazione; Ed inserire dei commenti per spiegare le parti “critiche”. 1 if(a < b) 2 a = b + 1; 3 4 // Commento su una riga 5 /* 6 Commento su pi’u righe 7 */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 81.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le direttive al preprocessore Le istruzioni che iniziano con # sono anche chiamate le direttive al preprocessore. Vengono eseguite prima che il file venga effettivamente compilato. Le utilizziamo per includere delle librerie, o per definire delle macro. 1 #include <stdlib.h> 2 /* Inclusione della libreria standard C */ 3 4 #define LATI 4 /* Definizione di macro */ Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file sorgente... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 82.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le direttive al preprocessore Le istruzioni che iniziano con # sono anche chiamate le direttive al preprocessore. Vengono eseguite prima che il file venga effettivamente compilato. Le utilizziamo per includere delle librerie, o per definire delle macro. 1 #include <stdlib.h> 2 /* Inclusione della libreria standard C */ 3 4 #define LATI 4 /* Definizione di macro */ Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file sorgente... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 83.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le direttive al preprocessore Le istruzioni che iniziano con # sono anche chiamate le direttive al preprocessore. Vengono eseguite prima che il file venga effettivamente compilato. Le utilizziamo per includere delle librerie, o per definire delle macro. 1 #include <stdlib.h> 2 /* Inclusione della libreria standard C */ 3 4 #define LATI 4 /* Definizione di macro */ Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file sorgente... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 84.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le direttive al preprocessore Le istruzioni che iniziano con # sono anche chiamate le direttive al preprocessore. Vengono eseguite prima che il file venga effettivamente compilato. Le utilizziamo per includere delle librerie, o per definire delle macro. 1 #include <stdlib.h> 2 /* Inclusione della libreria standard C */ 3 4 #define LATI 4 /* Definizione di macro */ Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file sorgente... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 85.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le direttive al preprocessore Le istruzioni che iniziano con # sono anche chiamate le direttive al preprocessore. Vengono eseguite prima che il file venga effettivamente compilato. Le utilizziamo per includere delle librerie, o per definire delle macro. 1 #include <stdlib.h> 2 /* Inclusione della libreria standard C */ 3 4 #define LATI 4 /* Definizione di macro */ Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file sorgente... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 86.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le direttive al preprocessore Le istruzioni che iniziano con # sono anche chiamate le direttive al preprocessore. Vengono eseguite prima che il file venga effettivamente compilato. Le utilizziamo per includere delle librerie, o per definire delle macro. 1 #include <stdlib.h> 2 /* Inclusione della libreria standard C */ 3 4 #define LATI 4 /* Definizione di macro */ Per vedere cosa fa il preprocessore, provare ad invocare cpp sul file sorgente... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 87.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Variabile Per variabile intendiamo una locazione di memoria che possiamo utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in futuro (leggerlo o modificarlo). In C dobbiamo dichiarare ogni variabile che utilizziamo, All’atto della dichiarazione dobbiamo deciderne il tipo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 88.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Variabile Per variabile intendiamo una locazione di memoria che possiamo utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in futuro (leggerlo o modificarlo). In C dobbiamo dichiarare ogni variabile che utilizziamo, All’atto della dichiarazione dobbiamo deciderne il tipo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 89.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Variabile Per variabile intendiamo una locazione di memoria che possiamo utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in futuro (leggerlo o modificarlo). In C dobbiamo dichiarare ogni variabile che utilizziamo, All’atto della dichiarazione dobbiamo deciderne il tipo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 90.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Variabile Per variabile intendiamo una locazione di memoria che possiamo utilizzare per “salvare” un dato, in modo da poterlo riutilizzare in futuro (leggerlo o modificarlo). In C dobbiamo dichiarare ogni variabile che utilizziamo, All’atto della dichiarazione dobbiamo deciderne il tipo. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 91.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Per definirle usiamo la sintassi: <tipo> <nomevar> [= <valiniz>]; 1 int a; /* Var. di tipo Intero */ 2 int somma = 0; /* Dich. con inizializzazione */ 3 int num1 , num2; /* Dich. compatta */ 4 char b; /* Var. di tipo Carattere */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 92.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Per definirle usiamo la sintassi: <tipo> <nomevar> [= <valiniz>]; 1 int a; /* Var. di tipo Intero */ 2 int somma = 0; /* Dich. con inizializzazione */ 3 int num1 , num2; /* Dich. compatta */ 4 char b; /* Var. di tipo Carattere */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 93.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Le variabili Per definirle usiamo la sintassi: <tipo> <nomevar> [= <valiniz>]; 1 int a; /* Var. di tipo Intero */ 2 int somma = 0; /* Dich. con inizializzazione */ 3 int num1 , num2; /* Dich. compatta */ 4 char b; /* Var. di tipo Carattere */ Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 94.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Assegnamenti ed espressioni Assegnamenti ed espressioni sono i costrutti base per creare il nostro programma. La sintassi generale `e: <variabile> = <espressione> L’espressione pu´o essere una normale espressione algebrica, oppure pu´o contenere anche delle funzioni: 1 a = b; 2 a = a + 1; 3 a = a + (b * 4 - 1); 4 a = somma(a, 5) + differenza(b, 10); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 95.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Assegnamenti ed espressioni Assegnamenti ed espressioni sono i costrutti base per creare il nostro programma. La sintassi generale `e: <variabile> = <espressione> L’espressione pu´o essere una normale espressione algebrica, oppure pu´o contenere anche delle funzioni: 1 a = b; 2 a = a + 1; 3 a = a + (b * 4 - 1); 4 a = somma(a, 5) + differenza(b, 10); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 96.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Assegnamenti ed espressioni Assegnamenti ed espressioni sono i costrutti base per creare il nostro programma. La sintassi generale `e: <variabile> = <espressione> L’espressione pu´o essere una normale espressione algebrica, oppure pu´o contenere anche delle funzioni: 1 a = b; 2 a = a + 1; 3 a = a + (b * 4 - 1); 4 a = somma(a, 5) + differenza(b, 10); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 97.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Assegnamenti ed espressioni Assegnamenti ed espressioni sono i costrutti base per creare il nostro programma. La sintassi generale `e: <variabile> = <espressione> L’espressione pu´o essere una normale espressione algebrica, oppure pu´o contenere anche delle funzioni: 1 a = b; 2 a = a + 1; 3 a = a + (b * 4 - 1); 4 a = somma(a, 5) + differenza(b, 10); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 98.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Assegnamenti ed espressioni Assegnamenti ed espressioni sono i costrutti base per creare il nostro programma. La sintassi generale `e: <variabile> = <espressione> L’espressione pu´o essere una normale espressione algebrica, oppure pu´o contenere anche delle funzioni: 1 a = b; 2 a = a + 1; 3 a = a + (b * 4 - 1); 4 a = somma(a, 5) + differenza(b, 10); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 99.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Espressioni - Forme compatte Esistono delle forme compatte per le espressioni. Servono per rendere pi´u sintetico il codice, ma lo possono rendere “poco leggibile” 1 a = a + 5; 2 a += 5; 3 4 a = a * 10; 5 a *= 10; 6 7 a = a + 1; 8 a++; I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 100.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Espressioni - Forme compatte Esistono delle forme compatte per le espressioni. Servono per rendere pi´u sintetico il codice, ma lo possono rendere “poco leggibile” 1 a = a + 5; 2 a += 5; 3 4 a = a * 10; 5 a *= 10; 6 7 a = a + 1; 8 a++; I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 101.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Espressioni - Forme compatte Esistono delle forme compatte per le espressioni. Servono per rendere pi´u sintetico il codice, ma lo possono rendere “poco leggibile” 1 a = a + 5; 2 a += 5; 3 4 a = a * 10; 5 a *= 10; 6 7 a = a + 1; 8 a++; I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 102.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Espressioni - Forme compatte Esistono delle forme compatte per le espressioni. Servono per rendere pi´u sintetico il codice, ma lo possono rendere “poco leggibile” 1 a = a + 5; 2 a += 5; 3 4 a = a * 10; 5 a *= 10; 6 7 a = a + 1; 8 a++; I principali operatori aritmetici sono: +, -, *, / (div.), % (mod.) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 103.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto ifthenelse Un altro costrutto molto importante `e il costrutto ifthenelse. La sintassi di base `e: if(<condizione>) {<istruzioni ramo then>} [else {<istruzioni ramo else>}] 1 if(a == b) 2 {a = 0;} 3 else 4 {b = 0;} Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 104.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto ifthenelse Un altro costrutto molto importante `e il costrutto ifthenelse. La sintassi di base `e: if(<condizione>) {<istruzioni ramo then>} [else {<istruzioni ramo else>}] 1 if(a == b) 2 {a = 0;} 3 else 4 {b = 0;} Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 105.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto ifthenelse Un altro costrutto molto importante `e il costrutto ifthenelse. La sintassi di base `e: if(<condizione>) {<istruzioni ramo then>} [else {<istruzioni ramo else>}] 1 if(a == b) 2 {a = 0;} 3 else 4 {b = 0;} Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 106.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto ifthenelse Un altro costrutto molto importante `e il costrutto ifthenelse. La sintassi di base `e: if(<condizione>) {<istruzioni ramo then>} [else {<istruzioni ramo else>}] 1 if(a == b) 2 {a = 0;} 3 else 4 {b = 0;} Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 107.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Operatori di confronto All’interno di una condizione possiamo utilizzare i seguenti operatorio di confronto: == Uguale != Diverso <,> Minore/Maggiore <=,>= Minore/Maggiore o Uguale Ed i seguenti operatori logici: & And || Or ! Not Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 108.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Operatori di confronto All’interno di una condizione possiamo utilizzare i seguenti operatorio di confronto: == Uguale != Diverso <,> Minore/Maggiore <=,>= Minore/Maggiore o Uguale Ed i seguenti operatori logici: & And || Or ! Not Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 109.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Operatori di confronto All’interno di una condizione possiamo utilizzare i seguenti operatorio di confronto: == Uguale != Diverso <,> Minore/Maggiore <=,>= Minore/Maggiore o Uguale Ed i seguenti operatori logici: & And || Or ! Not Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 110.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Operatori di confronto All’interno di una condizione possiamo utilizzare i seguenti operatorio di confronto: == Uguale != Diverso <,> Minore/Maggiore <=,>= Minore/Maggiore o Uguale Ed i seguenti operatori logici: & And || Or ! Not Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 111.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto while Tramite il costrutto while possiamo definire dei cicli che iterano fino al falsificarsi di una certa condizione, la sintassi `e: while(<condizione>) {<corpo del ciclo>} 1 while(a != b) 2 {a++; 3 somma ++;} Attenzione! Se non scriviamo bene il ciclo e la condizione, il nostro programma rischia di andare in loop Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 112.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto while Tramite il costrutto while possiamo definire dei cicli che iterano fino al falsificarsi di una certa condizione, la sintassi `e: while(<condizione>) {<corpo del ciclo>} 1 while(a != b) 2 {a++; 3 somma ++;} Attenzione! Se non scriviamo bene il ciclo e la condizione, il nostro programma rischia di andare in loop Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 113.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto while Tramite il costrutto while possiamo definire dei cicli che iterano fino al falsificarsi di una certa condizione, la sintassi `e: while(<condizione>) {<corpo del ciclo>} 1 while(a != b) 2 {a++; 3 somma ++;} Attenzione! Se non scriviamo bene il ciclo e la condizione, il nostro programma rischia di andare in loop Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 114.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto while Tramite il costrutto while possiamo definire dei cicli che iterano fino al falsificarsi di una certa condizione, la sintassi `e: while(<condizione>) {<corpo del ciclo>} 1 while(a != b) 2 {a++; 3 somma ++;} Attenzione! Se non scriviamo bene il ciclo e la condizione, il nostro programma rischia di andare in loop Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 115.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto while Tramite il costrutto while possiamo definire dei cicli che iterano fino al falsificarsi di una certa condizione, la sintassi `e: while(<condizione>) {<corpo del ciclo>} 1 while(a != b) 2 {a++; 3 somma ++;} Attenzione! Se non scriviamo bene il ciclo e la condizione, il nostro programma rischia di andare in loop Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 116.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto for Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti. La sintassi di base `e: for(<init.>; <terminaz.>; <iteraz.>) {<corpo del ciclo>} 1 for(i = 0; i < MAX; i++) 2 {a = a + 1;} While vs for Dovremmo utilizzare il ciclo for soltanto quando il numero di iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 117.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto for Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti. La sintassi di base `e: for(<init.>; <terminaz.>; <iteraz.>) {<corpo del ciclo>} 1 for(i = 0; i < MAX; i++) 2 {a = a + 1;} While vs for Dovremmo utilizzare il ciclo for soltanto quando il numero di iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 118.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto for Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti. La sintassi di base `e: for(<init.>; <terminaz.>; <iteraz.>) {<corpo del ciclo>} 1 for(i = 0; i < MAX; i++) 2 {a = a + 1;} While vs for Dovremmo utilizzare il ciclo for soltanto quando il numero di iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 119.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto for Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti. La sintassi di base `e: for(<init.>; <terminaz.>; <iteraz.>) {<corpo del ciclo>} 1 for(i = 0; i < MAX; i++) 2 {a = a + 1;} While vs for Dovremmo utilizzare il ciclo for soltanto quando il numero di iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 120.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Costrutto for Mediante il costrutto for possiamo scrivere dei cicli pi´u compatti. La sintassi di base `e: for(<init.>; <terminaz.>; <iteraz.>) {<corpo del ciclo>} 1 for(i = 0; i < MAX; i++) 2 {a = a + 1;} While vs for Dovremmo utilizzare il ciclo for soltanto quando il numero di iterazioni `e noto a priori, ed utilizzare il ciclo while negli altri casi. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 121.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni While vs for 1 int i; 2 3 // Ciclo while 4 i = 0; 5 while(i < MAX) 6 { 7 a += calcolo(i); 8 i++; 9 } 10 11 // Ciclo for 12 for(i = 0; i < MAX; i++) 13 {a += calcolo(i);} Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 122.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Definizione di funzione Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”, possiamo definire delle funzioni. La sintassi di base `e: <tiporisultato> <nomefunzione> (<listaparametri>){ <corpo> } 1 int somma(int val1 , int val2){ 2 // Variabile locale alla funzione 3 int risultato; 4 risultato = val1 + val2; 5 return risultato; 6 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 123.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Definizione di funzione Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”, possiamo definire delle funzioni. La sintassi di base `e: <tiporisultato> <nomefunzione> (<listaparametri>){ <corpo> } 1 int somma(int val1 , int val2){ 2 // Variabile locale alla funzione 3 int risultato; 4 risultato = val1 + val2; 5 return risultato; 6 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 124.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Definizione di funzione Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”, possiamo definire delle funzioni. La sintassi di base `e: <tiporisultato> <nomefunzione> (<listaparametri>){ <corpo> } 1 int somma(int val1 , int val2){ 2 // Variabile locale alla funzione 3 int risultato; 4 risultato = val1 + val2; 5 return risultato; 6 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 125.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Definizione di funzione Per rendere pi´u leggibile il codice, e per evitare di “replicarlo”, possiamo definire delle funzioni. La sintassi di base `e: <tiporisultato> <nomefunzione> (<listaparametri>){ <corpo> } 1 int somma(int val1 , int val2){ 2 // Variabile locale alla funzione 3 int risultato; 4 risultato = val1 + val2; 5 return risultato; 6 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 126.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Esempio di funzione: i booleani In C il tipo booleano (true, false) non `e nativo del linguaggio. Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri valgono TRUE; Scriviamo una funzione che verifichi se un numero `e pari o meno. 1 while(i < MAX) 2 {if( pari(i) ) 3 cont = cont + 1;} 4 // MAX e’ una macro che indica il numero a cui fermarsi 5 6 int pari(int valore){ 7 int ris = 0; 8 if(( valore % 2) == 0) 9 ris = 1; 10 return ris 11 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 127.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Esempio di funzione: i booleani In C il tipo booleano (true, false) non `e nativo del linguaggio. Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri valgono TRUE; Scriviamo una funzione che verifichi se un numero `e pari o meno. 1 while(i < MAX) 2 {if( pari(i) ) 3 cont = cont + 1;} 4 // MAX e’ una macro che indica il numero a cui fermarsi 5 6 int pari(int valore){ 7 int ris = 0; 8 if(( valore % 2) == 0) 9 ris = 1; 10 return ris 11 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 128.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Esempio di funzione: i booleani In C il tipo booleano (true, false) non `e nativo del linguaggio. Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri valgono TRUE; Scriviamo una funzione che verifichi se un numero `e pari o meno. 1 while(i < MAX) 2 {if( pari(i) ) 3 cont = cont + 1;} 4 // MAX e’ una macro che indica il numero a cui fermarsi 5 6 int pari(int valore){ 7 int ris = 0; 8 if(( valore % 2) == 0) 9 ris = 1; 10 return ris 11 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 129.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Esempio di funzione: i booleani In C il tipo booleano (true, false) non `e nativo del linguaggio. Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri valgono TRUE; Scriviamo una funzione che verifichi se un numero `e pari o meno. 1 while(i < MAX) 2 {if( pari(i) ) 3 cont = cont + 1;} 4 // MAX e’ una macro che indica il numero a cui fermarsi 5 6 int pari(int valore){ 7 int ris = 0; 8 if(( valore % 2) == 0) 9 ris = 1; 10 return ris 11 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 130.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Esempio di funzione: i booleani In C il tipo booleano (true, false) non `e nativo del linguaggio. Possiamo usare gli interi: 0 vale FALSE, tutti gli altri numeri valgono TRUE; Scriviamo una funzione che verifichi se un numero `e pari o meno. 1 while(i < MAX) 2 {if( pari(i) ) 3 cont = cont + 1;} 4 // MAX e’ una macro che indica il numero a cui fermarsi 5 6 int pari(int valore){ 7 int ris = 0; 8 if(( valore % 2) == 0) 9 ris = 1; 10 return ris 11 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 131.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Funzioni di I/O Per relazionarci con l’esterno avremo bisogno delle funzioni di input/output. Possiamo utilizzare quelle gi´a definite dalla libreria standard di C, contenute dentro stdio.h (Standard Input Output). 1 #include <stdio.h> 2 3 int scanf(const char *format , ...); 4 int printf(const char *format , ...); Le stringhe di Formato Entrambi queste funzioni vogliono in input, oltre alle variabili da leggere/stampare, una stringa di formato Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 132.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Funzioni di I/O Per relazionarci con l’esterno avremo bisogno delle funzioni di input/output. Possiamo utilizzare quelle gi´a definite dalla libreria standard di C, contenute dentro stdio.h (Standard Input Output). 1 #include <stdio.h> 2 3 int scanf(const char *format , ...); 4 int printf(const char *format , ...); Le stringhe di Formato Entrambi queste funzioni vogliono in input, oltre alle variabili da leggere/stampare, una stringa di formato Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 133.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Funzioni di I/O Per relazionarci con l’esterno avremo bisogno delle funzioni di input/output. Possiamo utilizzare quelle gi´a definite dalla libreria standard di C, contenute dentro stdio.h (Standard Input Output). 1 #include <stdio.h> 2 3 int scanf(const char *format , ...); 4 int printf(const char *format , ...); Le stringhe di Formato Entrambi queste funzioni vogliono in input, oltre alle variabili da leggere/stampare, una stringa di formato Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 134.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Funzioni di I/O Per relazionarci con l’esterno avremo bisogno delle funzioni di input/output. Possiamo utilizzare quelle gi´a definite dalla libreria standard di C, contenute dentro stdio.h (Standard Input Output). 1 #include <stdio.h> 2 3 int scanf(const char *format , ...); 4 int printf(const char *format , ...); Le stringhe di Formato Entrambi queste funzioni vogliono in input, oltre alle variabili da leggere/stampare, una stringa di formato Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 135.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Funzioni di I/O Per relazionarci con l’esterno avremo bisogno delle funzioni di input/output. Possiamo utilizzare quelle gi´a definite dalla libreria standard di C, contenute dentro stdio.h (Standard Input Output). 1 #include <stdio.h> 2 3 int scanf(const char *format , ...); 4 int printf(const char *format , ...); Le stringhe di Formato Entrambi queste funzioni vogliono in input, oltre alle variabili da leggere/stampare, una stringa di formato Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 136.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Esempio di uso di printf/scanf 1 #include <stdio.h> 2 3 int main (){ 4 int a; 5 scanf("%d", &a); 6 /* Vedremo dopo perche ’ abbiamo messo & davanti alla variabile */ 7 8 printf("Il numero che hai inserito e ’: %dn", a); 9 printf("Il valore di %d modulo 2 e ’:t %dn", a, a%2); 10 11 if(pari(a)) 12 {printf("Il numero e’ parin");} 13 else 14 {printf("Il numero e’ disparin");} 15 16 return 0; 17 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 137.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Segnaposti di printf/scanf Nelle stringhe di formato possiamo utilizzare i seguenti segnaposto. %d Valore di tipo intero %c Valore di tipo carattere %s Valore di tipo stringa %o Valore ottale %x Valore esadecimale %p Valore di una locazione di memoria n Newline t Tabulazione Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 138.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Segnaposti di printf/scanf Nelle stringhe di formato possiamo utilizzare i seguenti segnaposto. %d Valore di tipo intero %c Valore di tipo carattere %s Valore di tipo stringa %o Valore ottale %x Valore esadecimale %p Valore di una locazione di memoria n Newline t Tabulazione Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 139.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Primi passi con il C Variabili ed espressioni Costrutti if, while e for Le funzioni Segnaposti di printf/scanf Nelle stringhe di formato possiamo utilizzare i seguenti segnaposto. %d Valore di tipo intero %c Valore di tipo carattere %s Valore di tipo stringa %o Valore ottale %x Valore esadecimale %p Valore di una locazione di memoria n Newline t Tabulazione Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 140.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Strumenti di supporto allo sviluppo Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 141.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Utilizzo del man Uno strumento molto utile `e il man. Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto manpages-dev lo si pu´o invocare cos´ı: bash:~$ man 3 printf PRINTF(3) Linux Programmer’s Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion SYNOPSIS #include <stdio.h> int printf(const char *format, ...); ... Proviamo a vedere cosa succede se invochiamo man 3 stdio Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 142.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Utilizzo del man Uno strumento molto utile `e il man. Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto manpages-dev lo si pu´o invocare cos´ı: bash:~$ man 3 printf PRINTF(3) Linux Programmer’s Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion SYNOPSIS #include <stdio.h> int printf(const char *format, ...); ... Proviamo a vedere cosa succede se invochiamo man 3 stdio Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 143.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Utilizzo del man Uno strumento molto utile `e il man. Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto manpages-dev lo si pu´o invocare cos´ı: bash:~$ man 3 printf PRINTF(3) Linux Programmer’s Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion SYNOPSIS #include <stdio.h> int printf(const char *format, ...); ... Proviamo a vedere cosa succede se invochiamo man 3 stdio Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 144.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Utilizzo del man Uno strumento molto utile `e il man. Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto manpages-dev lo si pu´o invocare cos´ı: bash:~$ man 3 printf PRINTF(3) Linux Programmer’s Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion SYNOPSIS #include <stdio.h> int printf(const char *format, ...); ... Proviamo a vedere cosa succede se invochiamo man 3 stdio Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 145.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Utilizzo del man Uno strumento molto utile `e il man. Specialmente le sezioni 2 e 3. Dopo aver installato il pacchetto manpages-dev lo si pu´o invocare cos´ı: bash:~$ man 3 printf PRINTF(3) Linux Programmer’s Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion SYNOPSIS #include <stdio.h> int printf(const char *format, ...); ... Proviamo a vedere cosa succede se invochiamo man 3 stdio Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 146.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Il K&R Un altro strumento di riferimento molto importante `e Il Linguaggio C di Kernighan e Ritchie. Manuale che dovrebbe essere sempre a portata di mano di ogni programmatore C. Contiene tutta la definizione del linguaggio e la descrizione di tutta la libreria standard C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 147.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Il K&R Un altro strumento di riferimento molto importante `e Il Linguaggio C di Kernighan e Ritchie. Manuale che dovrebbe essere sempre a portata di mano di ogni programmatore C. Contiene tutta la definizione del linguaggio e la descrizione di tutta la libreria standard C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 148.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger Il K&R Un altro strumento di riferimento molto importante `e Il Linguaggio C di Kernighan e Ritchie. Manuale che dovrebbe essere sempre a portata di mano di ogni programmatore C. Contiene tutta la definizione del linguaggio e la descrizione di tutta la libreria standard C. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 149.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger gdb e ddd gdb `e il debugger di C del progetto GNU. Ci permette di vedere i valori delle variabili a runtime. Va invocato su un file compilato con l’opzione -g. Va utilizzato da terminale. Altrimenti possiamo usare ddd come interfaccia grafica. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 150.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger gdb e ddd gdb `e il debugger di C del progetto GNU. Ci permette di vedere i valori delle variabili a runtime. Va invocato su un file compilato con l’opzione -g. Va utilizzato da terminale. Altrimenti possiamo usare ddd come interfaccia grafica. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 151.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Uso dei manuali Uso di un debugger gdb e ddd gdb `e il debugger di C del progetto GNU. Ci permette di vedere i valori delle variabili a runtime. Va invocato su un file compilato con l’opzione -g. Va utilizzato da terminale. Altrimenti possiamo usare ddd come interfaccia grafica. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 152.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Strutture e tipi complessi Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 153.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I vettori In C `e possibile definire delle variabili strutturate, un esempio semplice sono i Vettori I vettori rappresentano una lista di elementi di dimensione statica, ci´o vuol dire che una volta definiti non possono essere ridimensionati. La sintassi base per definire un vettore `e: <tipo> <nomevettore>[<dimensione>]; Possono essere utilizzati per memorizzare N elementi: Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 154.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I vettori In C `e possibile definire delle variabili strutturate, un esempio semplice sono i Vettori I vettori rappresentano una lista di elementi di dimensione statica, ci´o vuol dire che una volta definiti non possono essere ridimensionati. La sintassi base per definire un vettore `e: <tipo> <nomevettore>[<dimensione>]; Possono essere utilizzati per memorizzare N elementi: Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 155.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I vettori In C `e possibile definire delle variabili strutturate, un esempio semplice sono i Vettori I vettori rappresentano una lista di elementi di dimensione statica, ci´o vuol dire che una volta definiti non possono essere ridimensionati. La sintassi base per definire un vettore `e: <tipo> <nomevettore>[<dimensione>]; Possono essere utilizzati per memorizzare N elementi: Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 156.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I vettori In C `e possibile definire delle variabili strutturate, un esempio semplice sono i Vettori I vettori rappresentano una lista di elementi di dimensione statica, ci´o vuol dire che una volta definiti non possono essere ridimensionati. La sintassi base per definire un vettore `e: <tipo> <nomevettore>[<dimensione>]; Possono essere utilizzati per memorizzare N elementi: Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 157.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I vettori In C `e possibile definire delle variabili strutturate, un esempio semplice sono i Vettori I vettori rappresentano una lista di elementi di dimensione statica, ci´o vuol dire che una volta definiti non possono essere ridimensionati. La sintassi base per definire un vettore `e: <tipo> <nomevettore>[<dimensione>]; Possono essere utilizzati per memorizzare N elementi: Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 158.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio con un vettore 1 int vector [10]; 2 3 vector [0] = 123; 4 /* ... */ 5 vector [9] = 789; 6 7 for(i = 0; i < n; i++) 8 printf("%d", vector[i]); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 159.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio con un vettore 1 int vector [10]; 2 3 vector [0] = 123; 4 /* ... */ 5 vector [9] = 789; 6 7 for(i = 0; i < n; i++) 8 printf("%d", vector[i]); Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 160.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Gli indici di un vettore Un vettore di n elementi, ha gli indici che vanno da 0 a n-1 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 161.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Gli indici di un vettore Un vettore di n elementi, ha gli indici che vanno da 0 a n-1 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 162.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Vediamo qualche Esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 163.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le stringhe Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo Stringa. Il tipo stringa non `e per´o definito nativamente nel linguaggio C, dobbiamo utilizzare un vettore di caratteri. 1 char stringa [10]; 2 stringa = "hello"; 3 printf("%c",stringa [2]); Il terminatore Ogni stringa deve includere un carattere in pi´u che si chiama terminatore (e vale 0), altrimenti possiamo avere dei comportamenti inattesi (Buffer overrun) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 164.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le stringhe Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo Stringa. Il tipo stringa non `e per´o definito nativamente nel linguaggio C, dobbiamo utilizzare un vettore di caratteri. 1 char stringa [10]; 2 stringa = "hello"; 3 printf("%c",stringa [2]); Il terminatore Ogni stringa deve includere un carattere in pi´u che si chiama terminatore (e vale 0), altrimenti possiamo avere dei comportamenti inattesi (Buffer overrun) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 165.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le stringhe Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo Stringa. Il tipo stringa non `e per´o definito nativamente nel linguaggio C, dobbiamo utilizzare un vettore di caratteri. 1 char stringa [10]; 2 stringa = "hello"; 3 printf("%c",stringa [2]); Il terminatore Ogni stringa deve includere un carattere in pi´u che si chiama terminatore (e vale 0), altrimenti possiamo avere dei comportamenti inattesi (Buffer overrun) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 166.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le stringhe Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo Stringa. Il tipo stringa non `e per´o definito nativamente nel linguaggio C, dobbiamo utilizzare un vettore di caratteri. 1 char stringa [10]; 2 stringa = "hello"; 3 printf("%c",stringa [2]); Il terminatore Ogni stringa deve includere un carattere in pi´u che si chiama terminatore (e vale 0), altrimenti possiamo avere dei comportamenti inattesi (Buffer overrun) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 167.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le stringhe Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipo Stringa. Il tipo stringa non `e per´o definito nativamente nel linguaggio C, dobbiamo utilizzare un vettore di caratteri. 1 char stringa [10]; 2 stringa = "hello"; 3 printf("%c",stringa [2]); Il terminatore Ogni stringa deve includere un carattere in pi´u che si chiama terminatore (e vale 0), altrimenti possiamo avere dei comportamenti inattesi (Buffer overrun) Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 168.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 169.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 170.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 171.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 172.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 173.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 174.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste I puntatori In C possiamo avere accesso agli indirizzi di memoria dove sono memorizzate le variabili. Possiamo avere puntatori che puntano ad ogni tipo di variabile. Per definirli usiamo la sintassi: <tipo> * <nomepunt>; Per utilizzarli usiamo gli operatori & e *. La cosa `e pi´u semplice di quanto sembra... Facciamo qualche esempio... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 175.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio sui puntatori (1) 1 int * punt; 2 int a = 3; 3 4 punt = &a; 5 printf("%p valore %dn", punt , *punt); 6 7 // punt punta alla variabile a 8 // il valore di *punt e’ il valore di a Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 176.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio sui puntatori (1) 1 int * punt; 2 int a = 3; 3 4 punt = &a; 5 printf("%p valore %dn", punt , *punt); 6 7 // punt punta alla variabile a 8 // il valore di *punt e’ il valore di a Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 177.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio sui puntatori (2) Attenzione! Anche i vettori e le stringhe sono dei puntatori! 1 int p[10]; 2 3 int somma (int *a, int n){ 4 5 int sum = 0, i; 6 for(i = 0; i < n; i++) 7 sum += *(a + i); 8 9 return sum 10 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 178.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio sui puntatori (2) Attenzione! Anche i vettori e le stringhe sono dei puntatori! 1 int p[10]; 2 3 int somma (int *a, int n){ 4 5 int sum = 0, i; 6 for(i = 0; i < n; i++) 7 sum += *(a + i); 8 9 return sum 10 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 179.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio sui puntatori (2) Attenzione! Anche i vettori e le stringhe sono dei puntatori! 1 int p[10]; 2 3 int somma (int *a, int n){ 4 5 int sum = 0, i; 6 for(i = 0; i < n; i++) 7 sum += *(a + i); 8 9 return sum 10 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 180.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Passaggio dei parametri Possiamo utilizzare i puntatori anche per il passaggio dei parametri per simulare un passaggio per riferimento. In parole povere, possiamo utilizzare i puntatori per scrivere funzioni che modificano i loro parametri. 1 int a = 10; 2 void addhalf (int * number){ 3 *number = *number + (* number / 2); 4 } 5 addhalf (&a); 6 //La funzione void non ritorna niente Questo `e il motivo per cui nella scanf si usa &nomevar Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 181.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Passaggio dei parametri Possiamo utilizzare i puntatori anche per il passaggio dei parametri per simulare un passaggio per riferimento. In parole povere, possiamo utilizzare i puntatori per scrivere funzioni che modificano i loro parametri. 1 int a = 10; 2 void addhalf (int * number){ 3 *number = *number + (* number / 2); 4 } 5 addhalf (&a); 6 //La funzione void non ritorna niente Questo `e il motivo per cui nella scanf si usa &nomevar Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 182.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Passaggio dei parametri Possiamo utilizzare i puntatori anche per il passaggio dei parametri per simulare un passaggio per riferimento. In parole povere, possiamo utilizzare i puntatori per scrivere funzioni che modificano i loro parametri. 1 int a = 10; 2 void addhalf (int * number){ 3 *number = *number + (* number / 2); 4 } 5 addhalf (&a); 6 //La funzione void non ritorna niente Questo `e il motivo per cui nella scanf si usa &nomevar Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 183.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Passaggio dei parametri Possiamo utilizzare i puntatori anche per il passaggio dei parametri per simulare un passaggio per riferimento. In parole povere, possiamo utilizzare i puntatori per scrivere funzioni che modificano i loro parametri. 1 int a = 10; 2 void addhalf (int * number){ 3 *number = *number + (* number / 2); 4 } 5 addhalf (&a); 6 //La funzione void non ritorna niente Questo `e il motivo per cui nella scanf si usa &nomevar Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 184.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Passaggio dei parametri Possiamo utilizzare i puntatori anche per il passaggio dei parametri per simulare un passaggio per riferimento. In parole povere, possiamo utilizzare i puntatori per scrivere funzioni che modificano i loro parametri. 1 int a = 10; 2 void addhalf (int * number){ 3 *number = *number + (* number / 2); 4 } 5 addhalf (&a); 6 //La funzione void non ritorna niente Questo `e il motivo per cui nella scanf si usa &nomevar Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 185.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Cenno - Doppi puntatori In C possiamo anche definire dei puntatori di puntatori. Si usano solo in casi particolari, tipo per rappresentare le matrici di interi, i vettori di interi, oppure per usare funzioni che modificano i puntatori. 1 int a[10][10]; 2 3 // a e’ di tipo int** 4 5 *(*(a + 2) + 3) = 10; 6 7 // Equivale ad a[2][3] = 10 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 186.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Cenno - Doppi puntatori In C possiamo anche definire dei puntatori di puntatori. Si usano solo in casi particolari, tipo per rappresentare le matrici di interi, i vettori di interi, oppure per usare funzioni che modificano i puntatori. 1 int a[10][10]; 2 3 // a e’ di tipo int** 4 5 *(*(a + 2) + 3) = 10; 6 7 // Equivale ad a[2][3] = 10 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 187.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Cenno - Doppi puntatori In C possiamo anche definire dei puntatori di puntatori. Si usano solo in casi particolari, tipo per rappresentare le matrici di interi, i vettori di interi, oppure per usare funzioni che modificano i puntatori. 1 int a[10][10]; 2 3 // a e’ di tipo int** 4 5 *(*(a + 2) + 3) = 10; 6 7 // Equivale ad a[2][3] = 10 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 188.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Cenno - Doppi puntatori In C possiamo anche definire dei puntatori di puntatori. Si usano solo in casi particolari, tipo per rappresentare le matrici di interi, i vettori di interi, oppure per usare funzioni che modificano i puntatori. 1 int a[10][10]; 2 3 // a e’ di tipo int** 4 5 *(*(a + 2) + 3) = 10; 6 7 // Equivale ad a[2][3] = 10 Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 189.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Strutture e nuovi tipi Definiamo adesso dei nuovi tipi di dati, che ci aiutino a rappresentare meglio le informazioni che vogliamo elaborare. Possiamo utilizzare il costruttore struct per creare dei record di informazioni relative ad uno stesso elemento. Aggreghiamo insieme variabili di tipi differenti, ma logicamente correlate. La sintassi per definire una struttura `e struct <nome> { <tipovar> <nomecampo>; ... }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 190.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Strutture e nuovi tipi Definiamo adesso dei nuovi tipi di dati, che ci aiutino a rappresentare meglio le informazioni che vogliamo elaborare. Possiamo utilizzare il costruttore struct per creare dei record di informazioni relative ad uno stesso elemento. Aggreghiamo insieme variabili di tipi differenti, ma logicamente correlate. La sintassi per definire una struttura `e struct <nome> { <tipovar> <nomecampo>; ... }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 191.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Strutture e nuovi tipi Definiamo adesso dei nuovi tipi di dati, che ci aiutino a rappresentare meglio le informazioni che vogliamo elaborare. Possiamo utilizzare il costruttore struct per creare dei record di informazioni relative ad uno stesso elemento. Aggreghiamo insieme variabili di tipi differenti, ma logicamente correlate. La sintassi per definire una struttura `e struct <nome> { <tipovar> <nomecampo>; ... }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 192.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Strutture e nuovi tipi Definiamo adesso dei nuovi tipi di dati, che ci aiutino a rappresentare meglio le informazioni che vogliamo elaborare. Possiamo utilizzare il costruttore struct per creare dei record di informazioni relative ad uno stesso elemento. Aggreghiamo insieme variabili di tipi differenti, ma logicamente correlate. La sintassi per definire una struttura `e struct <nome> { <tipovar> <nomecampo>; ... }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 193.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Strutture e nuovi tipi Definiamo adesso dei nuovi tipi di dati, che ci aiutino a rappresentare meglio le informazioni che vogliamo elaborare. Possiamo utilizzare il costruttore struct per creare dei record di informazioni relative ad uno stesso elemento. Aggreghiamo insieme variabili di tipi differenti, ma logicamente correlate. La sintassi per definire una struttura `e struct <nome> { <tipovar> <nomecampo>; ... }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 194.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio di uso delle strutture 1 struct record { 2 int matricola; 3 char nome [30]; 4 char codfisc [17]; 5 }; 6 int main (){ 7 struct record mario; 8 mario.matricola = 123456; 9 mario.nome = "mario"; 10 mario.codfisc = " MRSRSS88A10G702A "; 11 } Accediamo ai campi della struttura con l’operatore “.” Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 195.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio di uso delle strutture 1 struct record { 2 int matricola; 3 char nome [30]; 4 char codfisc [17]; 5 }; 6 int main (){ 7 struct record mario; 8 mario.matricola = 123456; 9 mario.nome = "mario"; 10 mario.codfisc = " MRSRSS88A10G702A "; 11 } Accediamo ai campi della struttura con l’operatore “.” Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 196.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio di uso delle strutture 1 struct record { 2 int matricola; 3 char nome [30]; 4 char codfisc [17]; 5 }; 6 int main (){ 7 struct record mario; 8 mario.matricola = 123456; 9 mario.nome = "mario"; 10 mario.codfisc = " MRSRSS88A10G702A "; 11 } Accediamo ai campi della struttura con l’operatore “.” Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 197.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Problema... Fino ad ora, abbiamo definito gli array con una dimensione definita a priori... E se volessimo far decidere la dimensione all’utente...?!? Non possiamo fare int a[n] dopo aver letto n con una scanf... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 198.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Problema... Fino ad ora, abbiamo definito gli array con una dimensione definita a priori... E se volessimo far decidere la dimensione all’utente...?!? Non possiamo fare int a[n] dopo aver letto n con una scanf... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 199.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Problema... Fino ad ora, abbiamo definito gli array con una dimensione definita a priori... E se volessimo far decidere la dimensione all’utente...?!? Non possiamo fare int a[n] dopo aver letto n con una scanf... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 200.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Problema... Fino ad ora, abbiamo definito gli array con una dimensione definita a priori... E se volessimo far decidere la dimensione all’utente...?!? Non possiamo fare int a[n] dopo aver letto n con una scanf... Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 201.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 202.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 203.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 204.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 205.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 206.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 207.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Allocazione di memoria dinamica Dobbiamo utilizzare l’allocazione dinamica della memoria. Per farlo possiamo utilizzare le seguenti funzioni: malloc Restituisce il puntatore ad un’area di memoria della dimensione desiderata. calloc Restituisce il puntatore ad un’area di memoria e la inizializza a 0. realloc Permette di riallocare un’area di memoria che era gi´a stata allocata prima. In caso di fallimento ritornano il puntatore NULL. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 208.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Uso della malloc La malloc `e una funzione contenuta nell’header stdlib.h. Il suo prototipo `e: void * malloc(size_t size); La funzione restituisce un puntatore generico, e vuole un parametro size che rappresenta la dimensione. Possiamo usare sizeof per conoscere la dimensione dei vari tipi di dato. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 209.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Uso della malloc La malloc `e una funzione contenuta nell’header stdlib.h. Il suo prototipo `e: void * malloc(size_t size); La funzione restituisce un puntatore generico, e vuole un parametro size che rappresenta la dimensione. Possiamo usare sizeof per conoscere la dimensione dei vari tipi di dato. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 210.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Uso della malloc La malloc `e una funzione contenuta nell’header stdlib.h. Il suo prototipo `e: void * malloc(size_t size); La funzione restituisce un puntatore generico, e vuole un parametro size che rappresenta la dimensione. Possiamo usare sizeof per conoscere la dimensione dei vari tipi di dato. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 211.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Uso della malloc La malloc `e una funzione contenuta nell’header stdlib.h. Il suo prototipo `e: void * malloc(size_t size); La funzione restituisce un puntatore generico, e vuole un parametro size che rappresenta la dimensione. Possiamo usare sizeof per conoscere la dimensione dei vari tipi di dato. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 212.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Uso della malloc La malloc `e una funzione contenuta nell’header stdlib.h. Il suo prototipo `e: void * malloc(size_t size); La funzione restituisce un puntatore generico, e vuole un parametro size che rappresenta la dimensione. Possiamo usare sizeof per conoscere la dimensione dei vari tipi di dato. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 213.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio di uso della malloc 1 int * voti; 2 struct record * studenti; 3 // Dichiaro 2 array 4 5 scanf("%d", &n); 6 // Leggo in input il numero degli studenti 7 8 voti = malloc(n * sizeof(int)); 9 studenti = malloc(n * sizeof(struct sutdenti)); 10 // Alloco dinamicamente i 2 array 11 12 voti [0] = 25; 13 studenti [0]. nome = "Tizio"; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 214.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Definizione di nuovi tipi Possiamo usare typedef per rinominare i tipi di dato. Ci pu´o tornare molto utile con i puntatori: 1 typedef int * puntatore; 2 3 int * a; 4 puntatore b; 5 // Sono 2 variabili dello stesso tipo Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 215.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Definizione di nuovi tipi Possiamo usare typedef per rinominare i tipi di dato. Ci pu´o tornare molto utile con i puntatori: 1 typedef int * puntatore; 2 3 int * a; 4 puntatore b; 5 // Sono 2 variabili dello stesso tipo Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 216.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Definizione di nuovi tipi Possiamo usare typedef per rinominare i tipi di dato. Ci pu´o tornare molto utile con i puntatori: 1 typedef int * puntatore; 2 3 int * a; 4 puntatore b; 5 // Sono 2 variabili dello stesso tipo Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 217.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Definizione di nuovi tipi Possiamo usare typedef per rinominare i tipi di dato. Ci pu´o tornare molto utile con i puntatori: 1 typedef int * puntatore; 2 3 int * a; 4 puntatore b; 5 // Sono 2 variabili dello stesso tipo Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 218.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le liste Mediante le liste possiamo creare delle strutture che siano dinamiche; possiamo liberarci dal vincolo della dimensione imposto dagli array, e creare strutture che aumentano e diminuiscono a piacere. Basta aggiungere un puntatore ad una struttura dello stesso tipo, che punti al successivo: 1 struct nodo { 2 int valore; 3 struct nodo * next; 4 }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 219.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le liste Mediante le liste possiamo creare delle strutture che siano dinamiche; possiamo liberarci dal vincolo della dimensione imposto dagli array, e creare strutture che aumentano e diminuiscono a piacere. Basta aggiungere un puntatore ad una struttura dello stesso tipo, che punti al successivo: 1 struct nodo { 2 int valore; 3 struct nodo * next; 4 }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 220.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le liste Mediante le liste possiamo creare delle strutture che siano dinamiche; possiamo liberarci dal vincolo della dimensione imposto dagli array, e creare strutture che aumentano e diminuiscono a piacere. Basta aggiungere un puntatore ad una struttura dello stesso tipo, che punti al successivo: 1 struct nodo { 2 int valore; 3 struct nodo * next; 4 }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 221.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Le liste Mediante le liste possiamo creare delle strutture che siano dinamiche; possiamo liberarci dal vincolo della dimensione imposto dagli array, e creare strutture che aumentano e diminuiscono a piacere. Basta aggiungere un puntatore ad una struttura dello stesso tipo, che punti al successivo: 1 struct nodo { 2 int valore; 3 struct nodo * next; 4 }; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 222.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Rappresentazione grafica di una lista Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 223.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Esempio di uso delle liste 1 struct nodo { 2 int valore; 3 struct nodo * next; 4 }; 5 6 typedef struct nodo elemento; 7 typedef elemento * lista; 8 9 int main (){ 10 11 lista testa = NULL; 12 testa = malloc(sizeof(elemento)); 13 14 testa ->valore = 0; 15 testa ->next = NULL; 16 17 } Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 224.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Usiamo l’operatore “->” per accedere ai campi di una struttura di cui abbiamo il puntatore. Prima usavamo l’operatore “.” dato che potevamo operare direttamente sulla struttura. Le seguenti espressioni sono equivalenti: lista -> elem; (*lista).elem; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 225.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Usiamo l’operatore “->” per accedere ai campi di una struttura di cui abbiamo il puntatore. Prima usavamo l’operatore “.” dato che potevamo operare direttamente sulla struttura. Le seguenti espressioni sono equivalenti: lista -> elem; (*lista).elem; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 226.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Usiamo l’operatore “->” per accedere ai campi di una struttura di cui abbiamo il puntatore. Prima usavamo l’operatore “.” dato che potevamo operare direttamente sulla struttura. Le seguenti espressioni sono equivalenti: lista -> elem; (*lista).elem; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 227.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Usiamo l’operatore “->” per accedere ai campi di una struttura di cui abbiamo il puntatore. Prima usavamo l’operatore “.” dato che potevamo operare direttamente sulla struttura. Le seguenti espressioni sono equivalenti: lista -> elem; (*lista).elem; Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 228.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato per esempio per la fine della lista). Se vogliamo effettuare una scansione di una lista, utilizzeremo un puntatore di appoggio, e lo faremo avanzare elemento per elemento. Ci dobbiamo fermare appena il puntatore di appoggio diventa NULL. Attenzione! Accedere ai campi di una puntatore NULL, provoca un errore di Segmentation Fault Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 229.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato per esempio per la fine della lista). Se vogliamo effettuare una scansione di una lista, utilizzeremo un puntatore di appoggio, e lo faremo avanzare elemento per elemento. Ci dobbiamo fermare appena il puntatore di appoggio diventa NULL. Attenzione! Accedere ai campi di una puntatore NULL, provoca un errore di Segmentation Fault Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 230.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato per esempio per la fine della lista). Se vogliamo effettuare una scansione di una lista, utilizzeremo un puntatore di appoggio, e lo faremo avanzare elemento per elemento. Ci dobbiamo fermare appena il puntatore di appoggio diventa NULL. Attenzione! Accedere ai campi di una puntatore NULL, provoca un errore di Segmentation Fault Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 231.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato per esempio per la fine della lista). Se vogliamo effettuare una scansione di una lista, utilizzeremo un puntatore di appoggio, e lo faremo avanzare elemento per elemento. Ci dobbiamo fermare appena il puntatore di appoggio diventa NULL. Attenzione! Accedere ai campi di una puntatore NULL, provoca un errore di Segmentation Fault Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 232.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Note sulle liste Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usato per esempio per la fine della lista). Se vogliamo effettuare una scansione di una lista, utilizzeremo un puntatore di appoggio, e lo faremo avanzare elemento per elemento. Ci dobbiamo fermare appena il puntatore di appoggio diventa NULL. Attenzione! Accedere ai campi di una puntatore NULL, provoca un errore di Segmentation Fault Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 233.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Free Per liberare lo spazio allocato in precedenza con una malloc si usa la funzione free. void free(void *ptr); La free vuole in input il puntatore dell’area di memoria da liberare, e non restituisce niente. Il garbage `E sempre buona norma deallocare le strutture che non vengono pi´u usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come valgrind o mtrace che tengono traccia della memoria allocata per vedere cosa ci siamo dimenticati. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 234.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Free Per liberare lo spazio allocato in precedenza con una malloc si usa la funzione free. void free(void *ptr); La free vuole in input il puntatore dell’area di memoria da liberare, e non restituisce niente. Il garbage `E sempre buona norma deallocare le strutture che non vengono pi´u usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come valgrind o mtrace che tengono traccia della memoria allocata per vedere cosa ci siamo dimenticati. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 235.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Free Per liberare lo spazio allocato in precedenza con una malloc si usa la funzione free. void free(void *ptr); La free vuole in input il puntatore dell’area di memoria da liberare, e non restituisce niente. Il garbage `E sempre buona norma deallocare le strutture che non vengono pi´u usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come valgrind o mtrace che tengono traccia della memoria allocata per vedere cosa ci siamo dimenticati. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 236.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Free Per liberare lo spazio allocato in precedenza con una malloc si usa la funzione free. void free(void *ptr); La free vuole in input il puntatore dell’area di memoria da liberare, e non restituisce niente. Il garbage `E sempre buona norma deallocare le strutture che non vengono pi´u usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come valgrind o mtrace che tengono traccia della memoria allocata per vedere cosa ci siamo dimenticati. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 237.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Free Per liberare lo spazio allocato in precedenza con una malloc si usa la funzione free. void free(void *ptr); La free vuole in input il puntatore dell’area di memoria da liberare, e non restituisce niente. Il garbage `E sempre buona norma deallocare le strutture che non vengono pi´u usate, e ridurre cos´ı il garbage. Possiamo usare delle utility come valgrind o mtrace che tengono traccia della memoria allocata per vedere cosa ci siamo dimenticati. Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 238.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Domande...? Nicola Corti & Michael Sanelli Pillole di programmazione in C
  • 239.
    Cosa vuol direProgrammare? Strumenti per la Programmazione Costrutti di base Strumenti di supporto allo sviluppo Strutture e tipi complessi Vettori e stringhe I puntatori Le strutture Allocazione dinamica della memoria Le liste Slides realizzate da: Nicola Corti - corti.nico [at] gmail [dot] com Michael Sanelli - michael [at] sanelli [dot] org Slides realizzate con LATEX Beamer, ed utilizzando interamente software libero. La seguente presentazione `e rilasciata sotto licenza Creative Commons - Attributions, Non Commercial, Share-alike. Nicola Corti & Michael Sanelli Pillole di programmazione in C