239
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

Pillole di programmazione in C

Embed Size (px)

Citation preview

Page 1: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Pillole di programmazione in CCome 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

Page 2: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 3: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 4: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 5: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 6: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 7: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 8: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 testacosa vogliamo fare, dobbiamo creare un Algoritmo.

Algoritmo

Un metodo per ottenere un certo risultato (risolvere un certo tipodi problema) attraverso un numero finito di passi.

Da Wikipedia, l’enciclopedia libera

Dobbiamo dunque capire quale sequenza di passi risolvere il nostroproblema.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 9: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 testacosa vogliamo fare, dobbiamo creare un Algoritmo.

Algoritmo

Un metodo per ottenere un certo risultato (risolvere un certo tipodi problema) attraverso un numero finito di passi.

Da Wikipedia, l’enciclopedia libera

Dobbiamo dunque capire quale sequenza di passi risolvere il nostroproblema.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 10: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 testacosa vogliamo fare, dobbiamo creare un Algoritmo.

Algoritmo

Un metodo per ottenere un certo risultato (risolvere un certo tipodi problema) attraverso un numero finito di passi.

Da Wikipedia, l’enciclopedia libera

Dobbiamo dunque capire quale sequenza di passi risolvere il nostroproblema.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 11: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 testacosa vogliamo fare, dobbiamo creare un Algoritmo.

Algoritmo

Un metodo per ottenere un certo risultato (risolvere un certo tipodi problema) attraverso un numero finito di passi.

Da Wikipedia, l’enciclopedia libera

Dobbiamo dunque capire quale sequenza di passi risolvere il nostroproblema.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 12: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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

Page 13: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 diProgrammazione

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

Page 14: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 diProgrammazione

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

Page 15: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 diProgrammazione

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

Page 16: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 diProgrammazione

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

Page 17: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 diProgrammazione

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

Page 18: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 puo essere inteso comeun insieme di “ordini” che vengono impartiti alla macchinavirtuale 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

Page 19: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 puo essere inteso comeun insieme di “ordini” che vengono impartiti alla macchinavirtuale 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

Page 20: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 puo essere inteso comeun insieme di “ordini” che vengono impartiti alla macchinavirtuale 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

Page 21: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 puo essere inteso comeun insieme di “ordini” che vengono impartiti alla macchinavirtuale 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

Page 22: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 puo essere inteso comeun insieme di “ordini” che vengono impartiti alla macchinavirtuale 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

Page 23: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 DennisRitchie come evoluzione del linguaggio B di Ken Thompson usatoper la scrittura dei primi sistemi operativi UNIX.

La definizione formale si ha nel 1978 a cura di B. W. Kernighan eD. M. Ritchie.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 24: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 DennisRitchie come evoluzione del linguaggio B di Ken Thompson usatoper la scrittura dei primi sistemi operativi UNIX.

La definizione formale si ha nel 1978 a cura di B. W. Kernighan eD. M. Ritchie.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 25: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti 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 DennisRitchie come evoluzione del linguaggio B di Ken Thompson usatoper la scrittura dei primi sistemi operativi UNIX.

La definizione formale si ha nel 1978 a cura di B. W. Kernighan eD. M. Ritchie.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 26: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 27: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 28: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 29: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 30: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 31: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 32: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Dall’algoritmo......al Programma!Il linguaggio C

Perche programmare in C?

Anche se e un linguaggio ad Alto Livello, e molto pocoastratto (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 cio lo rende moltoportabile.

Ed e comunque un buon linguaggio con cui iniziare.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 33: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Strumenti per la Programmazione

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 34: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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, chiamasieditor 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, questistrumenti sono gia installati (es: gcc + gedit)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 35: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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, chiamasieditor 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, questistrumenti sono gia installati (es: gcc + gedit)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 36: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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, chiamasieditor 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, questistrumenti sono gia installati (es: gcc + gedit)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 37: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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, chiamasieditor 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, questistrumenti sono gia installati (es: gcc + gedit)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 38: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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, chiamasieditor 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, questistrumenti sono gia installati (es: gcc + gedit)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 39: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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, chiamasieditor 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, questistrumenti sono gia installati (es: gcc + gedit)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 40: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 41: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 42: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 43: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 44: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 45: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 46: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 47: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

L’editor di testi

Per iniziare, va bene un qualsiasi software che permetta di scriveree 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 dellasintassi, strumento molto utile per la leggibita del codice.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 48: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Il Compilatore

Utilizzeremo GCC (GNU Compiler Collection) il compilatore delprogetto GNU.

Invocazione

Puo essere invocato facilmente da unterminale:

bash:~$ gcc file.c

Se la compilazione e terminata correttamente, ci restituira un filea.out che possiamo eseguire

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 49: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Il Compilatore

Utilizzeremo GCC (GNU Compiler Collection) il compilatore delprogetto GNU.

Invocazione

Puo essere invocato facilmente da unterminale:

bash:~$ gcc file.c

Se la compilazione e terminata correttamente, ci restituira un filea.out che possiamo eseguire

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 50: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Il Compilatore

Utilizzeremo GCC (GNU Compiler Collection) il compilatore delprogetto GNU.

Invocazione

Puo essere invocato facilmente da unterminale:

bash:~$ gcc file.c

Se la compilazione e terminata correttamente, ci restituira un filea.out che possiamo eseguire

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 51: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Il Compilatore

Utilizzeremo GCC (GNU Compiler Collection) il compilatore delprogetto GNU.

Invocazione

Puo essere invocato facilmente da unterminale:

bash:~$ gcc file.c

Se la compilazione e terminata correttamente, ci restituira un filea.out che possiamo eseguire

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 52: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 53: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 54: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 55: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 56: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 57: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 58: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 59: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, 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 filecompilato

-Wall indica a gcc di stampare tutti gli Warning cheriscontra durante la compilazione

-pedantic indica a gcc di generare degli Warning se il codicesorgente non rispetta gli standard ISO C

-g permette di eseguire il codice compilato in undebugger (ne parleremo dopo...)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 60: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 61: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 62: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 63: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 64: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 65: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 66: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 67: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 68: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Cosa ci serve per iniziare?L’editor di testiIl compilatore - gccQualcosa di piu, un IDE

Utilizzare un IDE

Se abbiamo bisogno di qualcosa di piu soffisticato possiamoutilizzare un Ambiente di sviluppo (IDE), quali ad esempioEclipse, 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 evitaredi “perdersi” nell’infinita di opzioni...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 69: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutti di base

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 70: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 71: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 72: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 73: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 74: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 75: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 76: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 77: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 78: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 79: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 80: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 81: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le direttive al preprocessore

Le istruzioni che iniziano con # sono anche chiamate ledirettive 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 filesorgente...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 82: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le direttive al preprocessore

Le istruzioni che iniziano con # sono anche chiamate ledirettive 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 filesorgente...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 83: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le direttive al preprocessore

Le istruzioni che iniziano con # sono anche chiamate ledirettive 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 filesorgente...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 84: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le direttive al preprocessore

Le istruzioni che iniziano con # sono anche chiamate ledirettive 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 filesorgente...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 85: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le direttive al preprocessore

Le istruzioni che iniziano con # sono anche chiamate ledirettive 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 filesorgente...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 86: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le direttive al preprocessore

Le istruzioni che iniziano con # sono anche chiamate ledirettive 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 filesorgente...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 87: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le variabili

Variabile

Per variabile intendiamo una locazione di memoria che possiamoutilizzare per “salvare” un dato, in modo da poterlo riutilizzare infuturo (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

Page 88: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le variabili

Variabile

Per variabile intendiamo una locazione di memoria che possiamoutilizzare per “salvare” un dato, in modo da poterlo riutilizzare infuturo (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

Page 89: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le variabili

Variabile

Per variabile intendiamo una locazione di memoria che possiamoutilizzare per “salvare” un dato, in modo da poterlo riutilizzare infuturo (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

Page 90: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Le variabili

Variabile

Per variabile intendiamo una locazione di memoria che possiamoutilizzare per “salvare” un dato, in modo da poterlo riutilizzare infuturo (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

Page 91: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 92: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 93: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 94: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Assegnamenti ed espressioni

Assegnamenti ed espressioni sono i costrutti base per creare ilnostro programma.

La sintassi generale e:

<variabile> = <espressione>

L’espressione puo essere una normale espressione algebrica, oppurepuo 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

Page 95: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Assegnamenti ed espressioni

Assegnamenti ed espressioni sono i costrutti base per creare ilnostro programma.

La sintassi generale e:

<variabile> = <espressione>

L’espressione puo essere una normale espressione algebrica, oppurepuo 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

Page 96: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Assegnamenti ed espressioni

Assegnamenti ed espressioni sono i costrutti base per creare ilnostro programma.

La sintassi generale e:

<variabile> = <espressione>

L’espressione puo essere una normale espressione algebrica, oppurepuo 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

Page 97: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Assegnamenti ed espressioni

Assegnamenti ed espressioni sono i costrutti base per creare ilnostro programma.

La sintassi generale e:

<variabile> = <espressione>

L’espressione puo essere una normale espressione algebrica, oppurepuo 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

Page 98: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Assegnamenti ed espressioni

Assegnamenti ed espressioni sono i costrutti base per creare ilnostro programma.

La sintassi generale e:

<variabile> = <espressione>

L’espressione puo essere una normale espressione algebrica, oppurepuo 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

Page 99: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Espressioni - Forme compatte

Esistono delle forme compatte per le espressioni.Servono per rendere piu 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

Page 100: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Espressioni - Forme compatte

Esistono delle forme compatte per le espressioni.Servono per rendere piu 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

Page 101: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Espressioni - Forme compatte

Esistono delle forme compatte per le espressioni.Servono per rendere piu 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

Page 102: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Espressioni - Forme compatte

Esistono delle forme compatte per le espressioni.Servono per rendere piu 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

Page 103: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 104: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 105: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 106: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 107: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Operatori di confronto

All’interno di una condizione possiamo utilizzare i seguentioperatorio 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

Page 108: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Operatori di confronto

All’interno di una condizione possiamo utilizzare i seguentioperatorio 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

Page 109: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Operatori di confronto

All’interno di una condizione possiamo utilizzare i seguentioperatorio 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

Page 110: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Operatori di confronto

All’interno di una condizione possiamo utilizzare i seguentioperatorio 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

Page 111: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto while

Tramite il costrutto while possiamo definire dei cicli che iteranofino 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 programmarischia di andare in loop

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 112: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto while

Tramite il costrutto while possiamo definire dei cicli che iteranofino 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 programmarischia di andare in loop

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 113: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto while

Tramite il costrutto while possiamo definire dei cicli che iteranofino 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 programmarischia di andare in loop

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 114: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto while

Tramite il costrutto while possiamo definire dei cicli che iteranofino 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 programmarischia di andare in loop

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 115: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto while

Tramite il costrutto while possiamo definire dei cicli che iteranofino 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 programmarischia di andare in loop

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 116: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto for

Mediante il costrutto for possiamo scrivere dei cicli piu 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 diiterazioni e noto a priori, ed utilizzare il ciclo while negli altri casi.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 117: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto for

Mediante il costrutto for possiamo scrivere dei cicli piu 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 diiterazioni e noto a priori, ed utilizzare il ciclo while negli altri casi.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 118: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto for

Mediante il costrutto for possiamo scrivere dei cicli piu 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 diiterazioni e noto a priori, ed utilizzare il ciclo while negli altri casi.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 119: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto for

Mediante il costrutto for possiamo scrivere dei cicli piu 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 diiterazioni e noto a priori, ed utilizzare il ciclo while negli altri casi.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 120: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Costrutto for

Mediante il costrutto for possiamo scrivere dei cicli piu 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 diiterazioni e noto a priori, ed utilizzare il ciclo while negli altri casi.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 121: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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

Page 122: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Definizione di funzione

Per rendere piu 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

Page 123: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Definizione di funzione

Per rendere piu 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

Page 124: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Definizione di funzione

Per rendere piu 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

Page 125: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Definizione di funzione

Per rendere piu 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

Page 126: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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 numerivalgono 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

Page 127: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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 numerivalgono 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

Page 128: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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 numerivalgono 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

Page 129: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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 numerivalgono 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

Page 130: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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 numerivalgono 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

Page 131: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Funzioni di I/O

Per relazionarci con l’esterno avremo bisogno delle funzioni diinput/output.Possiamo utilizzare quelle gia 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 daleggere/stampare, una stringa di formato

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 132: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Funzioni di I/O

Per relazionarci con l’esterno avremo bisogno delle funzioni diinput/output.Possiamo utilizzare quelle gia 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 daleggere/stampare, una stringa di formato

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 133: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Funzioni di I/O

Per relazionarci con l’esterno avremo bisogno delle funzioni diinput/output.Possiamo utilizzare quelle gia 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 daleggere/stampare, una stringa di formato

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 134: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Funzioni di I/O

Per relazionarci con l’esterno avremo bisogno delle funzioni diinput/output.Possiamo utilizzare quelle gia 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 daleggere/stampare, una stringa di formato

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 135: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Funzioni di I/O

Per relazionarci con l’esterno avremo bisogno delle funzioni diinput/output.Possiamo utilizzare quelle gia 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 daleggere/stampare, una stringa di formato

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 136: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe 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’: %d\n", a);

9 printf("Il valore di %d modulo 2 e ’:\t %d\n", a, a%2);

10

11 if(pari(a))

12 {printf("Il numero e’ pari\n");}

13 else

14 {printf("Il numero e’ dispari\n");}

15

16 return 0;

17 }

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 137: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Segnaposti di printf/scanf

Nelle stringhe di formato possiamo utilizzare i seguentisegnaposto.

%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

Page 138: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Segnaposti di printf/scanf

Nelle stringhe di formato possiamo utilizzare i seguentisegnaposto.

%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

Page 139: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Primi passi con il CVariabili ed espressioniCostrutti if, while e forLe funzioni

Segnaposti di printf/scanf

Nelle stringhe di formato possiamo utilizzare i seguentisegnaposto.

%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

Page 140: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Strumenti di supporto allo sviluppo

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 141: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Utilizzo del man

Uno strumento molto utile e il man.Specialmente le sezioni 2 e 3. Dopo aver installato il pacchettomanpages-dev lo si puo 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

Page 142: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Utilizzo del man

Uno strumento molto utile e il man.Specialmente le sezioni 2 e 3. Dopo aver installato il pacchettomanpages-dev lo si puo 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

Page 143: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Utilizzo del man

Uno strumento molto utile e il man.Specialmente le sezioni 2 e 3. Dopo aver installato il pacchettomanpages-dev lo si puo 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

Page 144: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Utilizzo del man

Uno strumento molto utile e il man.Specialmente le sezioni 2 e 3. Dopo aver installato il pacchettomanpages-dev lo si puo 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

Page 145: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Utilizzo del man

Uno strumento molto utile e il man.Specialmente le sezioni 2 e 3. Dopo aver installato il pacchettomanpages-dev lo si puo 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

Page 146: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Il K&R

Un altro strumento di riferimento molto importante e IlLinguaggio C di Kernighan e Ritchie.

Manuale che dovrebbe essere sempre a portata di mano di ogniprogrammatore C.Contiene tutta la definizione del linguaggio e la descrizione di tuttala libreria standard C.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 147: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Il K&R

Un altro strumento di riferimento molto importante e IlLinguaggio C di Kernighan e Ritchie.

Manuale che dovrebbe essere sempre a portata di mano di ogniprogrammatore C.Contiene tutta la definizione del linguaggio e la descrizione di tuttala libreria standard C.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 148: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

Il K&R

Un altro strumento di riferimento molto importante e IlLinguaggio C di Kernighan e Ritchie.

Manuale che dovrebbe essere sempre a portata di mano di ogniprogrammatore C.Contiene tutta la definizione del linguaggio e la descrizione di tuttala libreria standard C.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 149: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

gdb e ddd

gdb e il debugger di C del progetto GNU. Ci permette di vedere ivalori delle variabili a runtime.

Va invocato su un file compilato con l’opzione -g.

Va utilizzato da terminale. Altrimenti possiamo usare ddd comeinterfaccia grafica.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 150: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

gdb e ddd

gdb e il debugger di C del progetto GNU. Ci permette di vedere ivalori delle variabili a runtime.

Va invocato su un file compilato con l’opzione -g.

Va utilizzato da terminale. Altrimenti possiamo usare ddd comeinterfaccia grafica.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 151: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Uso dei manualiUso di un debugger

gdb e ddd

gdb e il debugger di C del progetto GNU. Ci permette di vedere ivalori delle variabili a runtime.

Va invocato su un file compilato con l’opzione -g.

Va utilizzato da terminale. Altrimenti possiamo usare ddd comeinterfaccia grafica.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 152: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Strutture e tipi complessi

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 153: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I vettori

In C e possibile definire delle variabili strutturate, un esempiosemplice sono i Vettori

I vettori rappresentano una lista di elementi di dimensione statica,cio vuol dire che una volta definiti non possono essereridimensionati.

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

Page 154: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I vettori

In C e possibile definire delle variabili strutturate, un esempiosemplice sono i Vettori

I vettori rappresentano una lista di elementi di dimensione statica,cio vuol dire che una volta definiti non possono essereridimensionati.

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

Page 155: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I vettori

In C e possibile definire delle variabili strutturate, un esempiosemplice sono i Vettori

I vettori rappresentano una lista di elementi di dimensione statica,cio vuol dire che una volta definiti non possono essereridimensionati.

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

Page 156: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I vettori

In C e possibile definire delle variabili strutturate, un esempiosemplice sono i Vettori

I vettori rappresentano una lista di elementi di dimensione statica,cio vuol dire che una volta definiti non possono essereridimensionati.

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

Page 157: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I vettori

In C e possibile definire delle variabili strutturate, un esempiosemplice sono i Vettori

I vettori rappresentano una lista di elementi di dimensione statica,cio vuol dire che una volta definiti non possono essereridimensionati.

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

Page 158: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 159: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 160: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 161: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 162: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Vediamo qualche Esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 163: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le stringhe

Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipoStringa.Il tipo stringa non e pero 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 piu che si chiamaterminatore (e vale \0), altrimenti possiamo avere deicomportamenti inattesi (Buffer overrun)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 164: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le stringhe

Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipoStringa.Il tipo stringa non e pero 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 piu che si chiamaterminatore (e vale \0), altrimenti possiamo avere deicomportamenti inattesi (Buffer overrun)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 165: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le stringhe

Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipoStringa.Il tipo stringa non e pero 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 piu che si chiamaterminatore (e vale \0), altrimenti possiamo avere deicomportamenti inattesi (Buffer overrun)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 166: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le stringhe

Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipoStringa.Il tipo stringa non e pero 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 piu che si chiamaterminatore (e vale \0), altrimenti possiamo avere deicomportamenti inattesi (Buffer overrun)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 167: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le stringhe

Se vogliamo memorizzare parole o frasi, dobbiamo utilizzare il tipoStringa.Il tipo stringa non e pero 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 piu che si chiamaterminatore (e vale \0), altrimenti possiamo avere deicomportamenti inattesi (Buffer overrun)

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 168: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 169: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 170: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 171: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 172: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 173: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 174: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

I puntatori

In C possiamo avere accesso agli indirizzi di memoria dove sonomemorizzate 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 piu semplice di quanto sembra...

Facciamo qualche esempio...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 175: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Esempio sui puntatori (1)

1 int * punt;

2 int a = 3;

3

4 punt = &a;

5 printf("%p valore %d\n", 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

Page 176: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Esempio sui puntatori (1)

1 int * punt;

2 int a = 3;

3

4 punt = &a;

5 printf("%p valore %d\n", 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

Page 177: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 178: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 179: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 180: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Passaggio dei parametri

Possiamo utilizzare i puntatori anche per il passaggio dei parametriper simulare un passaggio per riferimento.In parole povere, possiamo utilizzare i puntatori per scriverefunzioni 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

Page 181: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Passaggio dei parametri

Possiamo utilizzare i puntatori anche per il passaggio dei parametriper simulare un passaggio per riferimento.In parole povere, possiamo utilizzare i puntatori per scriverefunzioni 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

Page 182: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Passaggio dei parametri

Possiamo utilizzare i puntatori anche per il passaggio dei parametriper simulare un passaggio per riferimento.In parole povere, possiamo utilizzare i puntatori per scriverefunzioni 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

Page 183: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Passaggio dei parametri

Possiamo utilizzare i puntatori anche per il passaggio dei parametriper simulare un passaggio per riferimento.In parole povere, possiamo utilizzare i puntatori per scriverefunzioni 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

Page 184: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Passaggio dei parametri

Possiamo utilizzare i puntatori anche per il passaggio dei parametriper simulare un passaggio per riferimento.In parole povere, possiamo utilizzare i puntatori per scriverefunzioni 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

Page 185: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Cenno - Doppi puntatori

In C possiamo anche definire dei puntatori di puntatori.Si usano solo in casi particolari, tipo per rappresentare le matrici diinteri, i vettori di interi, oppure per usare funzioni che modificano ipuntatori.

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

Page 186: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Cenno - Doppi puntatori

In C possiamo anche definire dei puntatori di puntatori.Si usano solo in casi particolari, tipo per rappresentare le matrici diinteri, i vettori di interi, oppure per usare funzioni che modificano ipuntatori.

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

Page 187: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Cenno - Doppi puntatori

In C possiamo anche definire dei puntatori di puntatori.Si usano solo in casi particolari, tipo per rappresentare le matrici diinteri, i vettori di interi, oppure per usare funzioni che modificano ipuntatori.

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

Page 188: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Cenno - Doppi puntatori

In C possiamo anche definire dei puntatori di puntatori.Si usano solo in casi particolari, tipo per rappresentare le matrici diinteri, i vettori di interi, oppure per usare funzioni che modificano ipuntatori.

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

Page 189: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Strutture e nuovi tipi

Definiamo adesso dei nuovi tipi di dati, che ci aiutino arappresentare meglio le informazioni che vogliamo elaborare.

Possiamo utilizzare il costruttore struct per creare dei record diinformazioni relative ad uno stesso elemento.

Aggreghiamo insieme variabili di tipi differenti, ma logicamentecorrelate.

La sintassi per definire una struttura e

struct <nome> {

<tipovar> <nomecampo>;

...

};

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 190: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Strutture e nuovi tipi

Definiamo adesso dei nuovi tipi di dati, che ci aiutino arappresentare meglio le informazioni che vogliamo elaborare.

Possiamo utilizzare il costruttore struct per creare dei record diinformazioni relative ad uno stesso elemento.

Aggreghiamo insieme variabili di tipi differenti, ma logicamentecorrelate.

La sintassi per definire una struttura e

struct <nome> {

<tipovar> <nomecampo>;

...

};

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 191: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Strutture e nuovi tipi

Definiamo adesso dei nuovi tipi di dati, che ci aiutino arappresentare meglio le informazioni che vogliamo elaborare.

Possiamo utilizzare il costruttore struct per creare dei record diinformazioni relative ad uno stesso elemento.

Aggreghiamo insieme variabili di tipi differenti, ma logicamentecorrelate.

La sintassi per definire una struttura e

struct <nome> {

<tipovar> <nomecampo>;

...

};

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 192: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Strutture e nuovi tipi

Definiamo adesso dei nuovi tipi di dati, che ci aiutino arappresentare meglio le informazioni che vogliamo elaborare.

Possiamo utilizzare il costruttore struct per creare dei record diinformazioni relative ad uno stesso elemento.

Aggreghiamo insieme variabili di tipi differenti, ma logicamentecorrelate.

La sintassi per definire una struttura e

struct <nome> {

<tipovar> <nomecampo>;

...

};

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 193: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Strutture e nuovi tipi

Definiamo adesso dei nuovi tipi di dati, che ci aiutino arappresentare meglio le informazioni che vogliamo elaborare.

Possiamo utilizzare il costruttore struct per creare dei record diinformazioni relative ad uno stesso elemento.

Aggreghiamo insieme variabili di tipi differenti, ma logicamentecorrelate.

La sintassi per definire una struttura e

struct <nome> {

<tipovar> <nomecampo>;

...

};

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 194: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 195: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 196: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 197: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Problema...

Fino ad ora, abbiamo definito gli array con una dimensione definitaa priori...

E se volessimo far decidere la dimensioneall’utente...?!?

Non possiamo fare int a[n] dopo aver letto n con una scanf...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 198: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Problema...

Fino ad ora, abbiamo definito gli array con una dimensione definitaa priori...

E se volessimo far decidere la dimensioneall’utente...?!?

Non possiamo fare int a[n] dopo aver letto n con una scanf...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 199: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Problema...

Fino ad ora, abbiamo definito gli array con una dimensione definitaa priori...

E se volessimo far decidere la dimensioneall’utente...?!?

Non possiamo fare int a[n] dopo aver letto n con una scanf...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 200: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Problema...

Fino ad ora, abbiamo definito gli array con una dimensione definitaa priori...

E se volessimo far decidere la dimensioneall’utente...?!?

Non possiamo fare int a[n] dopo aver letto n con una scanf...

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 201: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 202: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 203: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 204: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 205: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 206: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 207: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 delladimensione desiderata.

calloc Restituisce il puntatore ad un’area di memoria e lainizializza a 0.

realloc Permette di riallocare un’area di memoria che era giastata allocata prima.

In caso di fallimento ritornano il puntatore NULL.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 208: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 unparametro size che rappresenta la dimensione.

Possiamo usare sizeof per conoscere la dimensione dei vari tipi didato.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 209: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 unparametro size che rappresenta la dimensione.

Possiamo usare sizeof per conoscere la dimensione dei vari tipi didato.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 210: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 unparametro size che rappresenta la dimensione.

Possiamo usare sizeof per conoscere la dimensione dei vari tipi didato.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 211: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 unparametro size che rappresenta la dimensione.

Possiamo usare sizeof per conoscere la dimensione dei vari tipi didato.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 212: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 unparametro size che rappresenta la dimensione.

Possiamo usare sizeof per conoscere la dimensione dei vari tipi didato.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 213: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 214: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Definizione di nuovi tipi

Possiamo usare typedef per rinominare i tipi di dato.

Ci puo 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

Page 215: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Definizione di nuovi tipi

Possiamo usare typedef per rinominare i tipi di dato.

Ci puo 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

Page 216: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Definizione di nuovi tipi

Possiamo usare typedef per rinominare i tipi di dato.

Ci puo 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

Page 217: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Definizione di nuovi tipi

Possiamo usare typedef per rinominare i tipi di dato.

Ci puo 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

Page 218: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le liste

Mediante le liste possiamo creare delle strutture che sianodinamiche; possiamo liberarci dal vincolo della dimensione impostodagli array, e creare strutture che aumentano e diminuiscono apiacere.

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

Page 219: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le liste

Mediante le liste possiamo creare delle strutture che sianodinamiche; possiamo liberarci dal vincolo della dimensione impostodagli array, e creare strutture che aumentano e diminuiscono apiacere.

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

Page 220: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le liste

Mediante le liste possiamo creare delle strutture che sianodinamiche; possiamo liberarci dal vincolo della dimensione impostodagli array, e creare strutture che aumentano e diminuiscono apiacere.

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

Page 221: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Le liste

Mediante le liste possiamo creare delle strutture che sianodinamiche; possiamo liberarci dal vincolo della dimensione impostodagli array, e creare strutture che aumentano e diminuiscono apiacere.

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

Page 222: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Rappresentazione grafica di una lista

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 223: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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

Page 224: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Usiamo l’operatore “->” per accedere ai campi di una struttura dicui abbiamo il puntatore.

Prima usavamo l’operatore “.” dato che potevamo operaredirettamente sulla struttura.

Le seguenti espressioni sono equivalenti:

lista -> elem;

(*lista).elem;

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 225: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Usiamo l’operatore “->” per accedere ai campi di una struttura dicui abbiamo il puntatore.

Prima usavamo l’operatore “.” dato che potevamo operaredirettamente sulla struttura.

Le seguenti espressioni sono equivalenti:

lista -> elem;

(*lista).elem;

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 226: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Usiamo l’operatore “->” per accedere ai campi di una struttura dicui abbiamo il puntatore.

Prima usavamo l’operatore “.” dato che potevamo operaredirettamente sulla struttura.

Le seguenti espressioni sono equivalenti:

lista -> elem;

(*lista).elem;

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 227: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Usiamo l’operatore “->” per accedere ai campi di una struttura dicui abbiamo il puntatore.

Prima usavamo l’operatore “.” dato che potevamo operaredirettamente sulla struttura.

Le seguenti espressioni sono equivalenti:

lista -> elem;

(*lista).elem;

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 228: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usatoper esempio per la fine della lista).

Se vogliamo effettuare una scansione di una lista, utilizzeremo unpuntatore di appoggio, e lo faremo avanzare elemento perelemento.

Ci dobbiamo fermare appena il puntatore di appoggio diventaNULL.

Attenzione!

Accedere ai campi di una puntatore NULL, provoca un errore diSegmentation Fault

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 229: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usatoper esempio per la fine della lista).

Se vogliamo effettuare una scansione di una lista, utilizzeremo unpuntatore di appoggio, e lo faremo avanzare elemento perelemento.

Ci dobbiamo fermare appena il puntatore di appoggio diventaNULL.

Attenzione!

Accedere ai campi di una puntatore NULL, provoca un errore diSegmentation Fault

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 230: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usatoper esempio per la fine della lista).

Se vogliamo effettuare una scansione di una lista, utilizzeremo unpuntatore di appoggio, e lo faremo avanzare elemento perelemento.

Ci dobbiamo fermare appena il puntatore di appoggio diventaNULL.

Attenzione!

Accedere ai campi di una puntatore NULL, provoca un errore diSegmentation Fault

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 231: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usatoper esempio per la fine della lista).

Se vogliamo effettuare una scansione di una lista, utilizzeremo unpuntatore di appoggio, e lo faremo avanzare elemento perelemento.

Ci dobbiamo fermare appena il puntatore di appoggio diventaNULL.

Attenzione!

Accedere ai campi di una puntatore NULL, provoca un errore diSegmentation Fault

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 232: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Note sulle liste

Inoltre usiamo il valore NULL, per indicare l’elemento nullo (usatoper esempio per la fine della lista).

Se vogliamo effettuare una scansione di una lista, utilizzeremo unpuntatore di appoggio, e lo faremo avanzare elemento perelemento.

Ci dobbiamo fermare appena il puntatore di appoggio diventaNULL.

Attenzione!

Accedere ai campi di una puntatore NULL, provoca un errore diSegmentation Fault

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 233: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Free

Per liberare lo spazio allocato in precedenza con una malloc si usala 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 piuusate, e ridurre cosı il garbage. Possiamo usare delle utility comevalgrind o mtrace che tengono traccia della memoria allocata pervedere cosa ci siamo dimenticati.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 234: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Free

Per liberare lo spazio allocato in precedenza con una malloc si usala 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 piuusate, e ridurre cosı il garbage. Possiamo usare delle utility comevalgrind o mtrace che tengono traccia della memoria allocata pervedere cosa ci siamo dimenticati.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 235: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Free

Per liberare lo spazio allocato in precedenza con una malloc si usala 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 piuusate, e ridurre cosı il garbage. Possiamo usare delle utility comevalgrind o mtrace che tengono traccia della memoria allocata pervedere cosa ci siamo dimenticati.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 236: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Free

Per liberare lo spazio allocato in precedenza con una malloc si usala 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 piuusate, e ridurre cosı il garbage. Possiamo usare delle utility comevalgrind o mtrace che tengono traccia della memoria allocata pervedere cosa ci siamo dimenticati.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 237: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Free

Per liberare lo spazio allocato in precedenza con una malloc si usala 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 piuusate, e ridurre cosı il garbage. Possiamo usare delle utility comevalgrind o mtrace che tengono traccia della memoria allocata pervedere cosa ci siamo dimenticati.

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 238: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe liste

Domande...?

Nicola Corti & Michael Sanelli Pillole di programmazione in C

Page 239: Pillole di programmazione in C

Cosa vuol dire Programmare?Strumenti per la Programmazione

Costrutti di baseStrumenti di supporto allo sviluppo

Strutture e tipi complessi

Vettori e stringheI puntatoriLe struttureAllocazione dinamica della memoriaLe 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 interamentesoftware libero.

La seguente presentazione e rilasciata sotto licenzaCreative Commons - Attributions, Non Commercial,Share-alike.

Nicola Corti & Michael Sanelli Pillole di programmazione in C