INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di...

126
1 INTRODUZIONE ALLA PROGRAMMAZIONE Cosimo Laneve

Transcript of INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di...

Page 1: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

1

INTRODUZIONE ALLA PROGRAMMAZIONE

Cosimo Laneve

Page 2: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

2

argomenti (Capitolo 1 Savitch)

1. sistemi di calcolo

2. programmazione e problem solving

3. introduzione a C++

4. testing e debugging

Page 3: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

3

sistema di calcolo (computing system)

Page 4: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

3

sistema di calcolo (computing system)sistema di calcolo = software + hardware

Page 5: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

3

sistema di calcolo (computing system)sistema di calcolo = software + hardware

programmaè una sequenza di istruzioni che deve eseguire un calcolatore

Page 6: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

3

sistema di calcolo (computing system)sistema di calcolo = software + hardware

programmaè una sequenza di istruzioni che deve eseguire un calcolatore

software è la collezione di programmi che i calcolatori eseguonoesempi: editors, compilatori, browsers, sistemi operativi

Page 7: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

3

sistema di calcolo (computing system)sistema di calcolo = software + hardware

programmaè una sequenza di istruzioni che deve eseguire un calcolatore

software è la collezione di programmi che i calcolatori eseguonoesempi: editors, compilatori, browsers, sistemi operativi

hardware

Page 8: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

3

sistema di calcolo (computing system)sistema di calcolo = software + hardware

programmaè una sequenza di istruzioni che deve eseguire un calcolatore

software è la collezione di programmi che i calcolatori eseguonoesempi: editors, compilatori, browsers, sistemi operativi

hardware sono i calcolatori (pc, tablet, laptop, mainframe, etc.)

Page 9: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

4

organizzazione di un calcolatore5 componenti principali1. dispositivi di input (consentono la comunicazione al

computer : tastiera, cd, etc.)2. dispositivi di output (consentono la comunicazione

dal computer : video, stampante, etc.)3. processore o CPU (esegue le istruzioni)4. memoria principale o RAM (le locazioni di memoria

contengono i programmi in esecuzione)5. memoria secondaria (memorizza i dati in maniera

permanente, di solito su disco)

Page 10: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

5

organizzazione di un calcolatoreprocessore (CPU)

memoria ramdispositivo

di inputdispositivodi output

memoriasecondaria

Page 11: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

6

memoria principaleè una lunga sequenza di locazioni

ognuna contiene un byte = 8 bits, ogni bit è 0 oppure 1indirizzo: numero che identifica la locazione di memoria

dati grandi: alcuni dati sono troppo grandi per stare in un byte

molti interi e realigli indirizzi fanno riferimento al primo byte i byte seguenti servono a memorizzare la parte restante del dato

Page 12: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

7

memoria principale

locazione di 3 byte ad indirizzo 1

locazione di 2 byte ad indirizzo 4

locazione di 1 byte ad indirizzo 6

locazione di 3 byte ad indirizzo 7

byte 2

byte 1

byte 4byte 3

byte 7

byte 5

byte 10

byte 8byte 9

byte 6

Page 13: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?

Page 14: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?‘A’ può essere memorizzato come 01000001

Page 15: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?‘A’ può essere memorizzato come 0100000165 può essere memorizzato come 01000001

Page 16: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?‘A’ può essere memorizzato come 0100000165 può essere memorizzato come 01000001una istruzione può essere memorizzata come 01000001

Page 17: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?‘A’ può essere memorizzato come 0100000165 può essere memorizzato come 01000001una istruzione può essere memorizzata come 01000001

come fa il computer a sapere cosa significa 01000001?

Page 18: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?‘A’ può essere memorizzato come 0100000165 può essere memorizzato come 01000001una istruzione può essere memorizzata come 01000001

come fa il computer a sapere cosa significa 01000001?- l’interpretazione dipende dalla istruzione che si sta

eseguendo

Page 19: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

8

dato o codice?‘A’ può essere memorizzato come 0100000165 può essere memorizzato come 01000001una istruzione può essere memorizzata come 01000001

come fa il computer a sapere cosa significa 01000001?- l’interpretazione dipende dalla istruzione che si sta

eseguendo

i programmatori non debbono affrontare queste problematiche (sono troppo di “basso livello”)

- i programmatori ragionano come se le celle di memoria contenessero lettere o numeri, piuttosto che zeri e uni

Page 20: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

9

memoria secondaria e memoria

Page 21: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

9

memoria secondaria e memoria

la memoria principale memorizza il programma in esecuzione e i relativi dati

Page 22: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

9

memoria secondaria e memoria

la memoria principale memorizza il programma in esecuzione e i relativi dati

la memoria secondariamemorizza i programmi non in esecuzione, “vecchi”memorizza dati in maniera permanente (è necessaria una esplicita cancellazione per eliminarli)

Page 23: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

10

il processore

Page 24: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

10

il processorechiamato anche CPU — Central Processing Unit

Page 25: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

10

il processorechiamato anche CPU — Central Processing Unitesegue le istruzioni del programma: tipiche istruzioni sono

add 34 R3 sub 2 R1 mul R1 R2 R3 div 42 R0 R1 mov loc1 loc2

Page 26: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

11

esecuzione di un programma (versione semplificata)

Page 27: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

11

esecuzione di un programma (versione semplificata)

programma dati

Page 28: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

11

esecuzione di un programma (versione semplificata)

programma dati

computer

Page 29: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

11

esecuzione di un programma (versione semplificata)

programma dati

computer

output

Page 30: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto

Page 31: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto linguaggi ben noti sonoC C++ Java Visual Basic PHP C# Python Objective C

Page 32: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto linguaggi ben noti sonoC C++ Java Visual Basic PHP C# Python Objective C

questi linguaggi

Page 33: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto linguaggi ben noti sonoC C++ Java Visual Basic PHP C# Python Objective C

questi linguaggiassomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibili

Page 34: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto linguaggi ben noti sonoC C++ Java Visual Basic PHP C# Python Objective C

questi linguaggiassomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibiliconsentono di programmare in maniera semplice

Page 35: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto linguaggi ben noti sonoC C++ Java Visual Basic PHP C# Python Objective C

questi linguaggiassomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibiliconsentono di programmare in maniera sempliceusano istruzioni che sono troppo complicate per le CPU

Page 36: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

12

linguaggi di programmazione di alto linguaggi ben noti sonoC C++ Java Visual Basic PHP C# Python Objective C

questi linguaggiassomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibiliconsentono di programmare in maniera sempliceusano istruzioni che sono troppo complicate per le CPUi programmi devono essere tradotti in sequenze di 0 e di 1 che la CPU può eseguire

Page 37: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

13

linguaggi di programmazione di basso livello

Page 38: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

13

linguaggi di programmazione di basso livellosono linguaggi per programmare in maniera “facilmente comprensibile” al calcolatore (linguaggi assembler)

Page 39: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

13

linguaggi di programmazione di basso livellosono linguaggi per programmare in maniera “facilmente comprensibile” al calcolatore (linguaggi assembler)ADD X Y Z

significa: somma il valore nella locazione X al valore nella locazione Y e memorizza il risultato nella locazione Z

Page 40: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

13

linguaggi di programmazione di basso livellosono linguaggi per programmare in maniera “facilmente comprensibile” al calcolatore (linguaggi assembler)ADD X Y Z

significa: somma il valore nella locazione X al valore nella locazione Y e memorizza il risultato nella locazione Z• il codice dei linguaggi assembler deve essere tradotto in codice

macchina — sequenze di 0 e 1esempio: 0110 1001 1010 1011

Page 41: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

13

linguaggi di programmazione di basso livellosono linguaggi per programmare in maniera “facilmente comprensibile” al calcolatore (linguaggi assembler)ADD X Y Z

significa: somma il valore nella locazione X al valore nella locazione Y e memorizza il risultato nella locazione Z• il codice dei linguaggi assembler deve essere tradotto in codice

macchina — sequenze di 0 e 1esempio: 0110 1001 1010 1011

• le CPU eseguono SOLAMENTE codice macchina

Page 42: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

14

i compilatori e i linker

Page 43: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

14

i compilatori e i linkeri compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina

Page 44: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

14

i compilatori e i linkeri compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina

source code: è il codice del linguaggio ad alto livello

Page 45: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

14

i compilatori e i linkeri compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina

source code: è il codice del linguaggio ad alto livelloobject code: è il codice in linguaggio macchina

Page 46: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

14

i compilatori e i linkeri compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina

source code: è il codice del linguaggio ad alto livelloobject code: è il codice in linguaggio macchina

alcuni programmi che usiamo sono già tradotti in codice oggetto

• funzioni di libreria come le funzioni di input e output

Page 47: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

14

i compilatori e i linkeri compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina

source code: è il codice del linguaggio ad alto livelloobject code: è il codice in linguaggio macchina

alcuni programmi che usiamo sono già tradotti in codice oggetto

• funzioni di libreria come le funzioni di input e output

il linker combina ✓ il codice oggetto del programma che noi scriviamo✓ il codice oggetto pre-compilato delle funzioni di libreria

Page 48: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++

Page 49: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++

Page 50: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

Page 51: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

Page 52: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

Page 53: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

Page 54: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

codice oggetto per funzioni di libreria

Page 55: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

codice oggetto per funzioni di libreria

linker

Page 56: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

codice oggetto per funzioni di libreria

linker computer

Page 57: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

codice oggetto per funzioni di libreria

linker

codice macchinaeseguibile (.exe)

computer

Page 58: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

codice oggetto per funzioni di libreria

linker

computer

codice macchinaeseguibile (.exe)

computer

Page 59: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

15

compilazione ed esecuzione di un programma C++programma C++ dati per programma C++

computer

compilatore

codice oggetto per programma C++

codice oggetto per funzioni di libreria

linker

computerOUTPUT

codice macchinaeseguibile (.exe)

computer

Page 60: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmi

Page 61: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmiun algoritmo è una sequenza di istruzioni che risolve un dato problema

Page 62: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmiun algoritmo è una sequenza di istruzioni che risolve un dato problema un programma è un algoritmo espresso in un linguaggio di programmazione

Page 63: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmiun algoritmo è una sequenza di istruzioni che risolve un dato problema un programma è un algoritmo espresso in un linguaggio di programmazione

la programmazione è un processo creativo che consta di due fasi

Page 64: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmiun algoritmo è una sequenza di istruzioni che risolve un dato problema un programma è un algoritmo espresso in un linguaggio di programmazione

la programmazione è un processo creativo che consta di due fasi

• problem solving: si individua un algoritmo che risolve un dato problema

Page 65: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmiun algoritmo è una sequenza di istruzioni che risolve un dato problema un programma è un algoritmo espresso in un linguaggio di programmazione

la programmazione è un processo creativo che consta di due fasi

• problem solving: si individua un algoritmo che risolve un dato problema

• implementazione: si traduce l’algoritmo in un programma

Page 66: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

algoritmi e programmiun algoritmo è una sequenza di istruzioni che risolve un dato problema un programma è un algoritmo espresso in un linguaggio di programmazione

la programmazione è un processo creativo che consta di due fasi

• problem solving: si individua un algoritmo che risolve un dato problema

• implementazione: si traduce l’algoritmo in un programma

OSSERVAZIONE: non ci sono regole per “creare”, ma solo indicazioni Knuth: The art of computer programming

Page 67: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

17

fase di problem solving

Page 68: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

17

fase di problem solving occorre che il processo sottostante al problema sia completamente specificato

Page 69: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

17

fase di problem solving occorre che il processo sottostante al problema sia completamente specificato

quale è l’input?cosa contiene l’output?come sono organizzati l’input e l’output?

Page 70: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

17

fase di problem solving occorre che il processo sottostante al problema sia completamente specificato

quale è l’input?cosa contiene l’output?come sono organizzati l’input e l’output?

definire un algoritmo prima dell’ implementazione

Page 71: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

17

fase di problem solving occorre che il processo sottostante al problema sia completamente specificato

quale è l’input?cosa contiene l’output?come sono organizzati l’input e l’output?

definire un algoritmo prima dell’ implementazione

l’esperienza dice che ciò ci fa guadagnare tempoè più semplice da scrivereè più facile verificarne la correttezza

Page 72: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

18

fase di implementazione

Page 73: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

18

fase di implementazione1. tradurre un algoritmo in un linguaggio di

programmazionediventa più semplice quando si diventa esperti del linguaggio

Page 74: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

18

fase di implementazione1. tradurre un algoritmo in un linguaggio di

programmazionediventa più semplice quando si diventa esperti del linguaggio

2. compilare il codice sorgentecontrollare e rimuovere gli errori segnalati dal compilatore

Page 75: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

18

fase di implementazione1. tradurre un algoritmo in un linguaggio di

programmazionediventa più semplice quando si diventa esperti del linguaggio

2. compilare il codice sorgentecontrollare e rimuovere gli errori segnalati dal compilatore

3. esegui il codice su alcuni casi di test verifica la correttezza dei risultati

Page 76: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

18

fase di implementazione1. tradurre un algoritmo in un linguaggio di

programmazionediventa più semplice quando si diventa esperti del linguaggio

2. compilare il codice sorgentecontrollare e rimuovere gli errori segnalati dal compilatore

3. esegui il codice su alcuni casi di test verifica la correttezza dei risultati

4. i risultati possono rivelare errori nell’algoritmo o nel programma (bugs) e quindi causare modifiche

Page 77: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

19

programmazione object-oriented

Page 78: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

19

programmazione object-oriented

abbreviata in OOP

Page 79: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

19

programmazione object-oriented

abbreviata in OOP

è usata in molti linguaggi di programmazione moderni

Page 80: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

19

programmazione object-oriented

abbreviata in OOP

è usata in molti linguaggi di programmazione moderniun programma è visto come un insieme di oggetti che contengono valori e le funzioni che possono modificare tali valori

Page 81: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

19

programmazione object-oriented

abbreviata in OOP

è usata in molti linguaggi di programmazione moderniun programma è visto come un insieme di oggetti che contengono valori e le funzioni che possono modificare tali valori

progettare un programma significadefinire gli oggetti e gli algoritmi delle funzioni corrispondenti

Page 82: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

20

caratteristiche di OOP

Page 83: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

20

caratteristiche di OOPencapsulation

ogni oggetto contiene i propri dati e le funzioni che possono accedere/modificare i datinessun’altra funzione può accedere (information hiding)

Page 84: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

20

caratteristiche di OOPencapsulation

ogni oggetto contiene i propri dati e le funzioni che possono accedere/modificare i datinessun’altra funzione può accedere (information hiding)

inheritance (ereditarietà)il codice può essere riutilizzatoun oggetto può essere definito utilizzando codice di altri oggetti (con modifiche/con aggiunte di nuove funzioni)

Page 85: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

20

caratteristiche di OOPencapsulation

ogni oggetto contiene i propri dati e le funzioni che possono accedere/modificare i datinessun’altra funzione può accedere (information hiding)

inheritance (ereditarietà)il codice può essere riutilizzatoun oggetto può essere definito utilizzando codice di altri oggetti (con modifiche/con aggiunte di nuove funzioni)

polimorfismoun nome di funzione può avere diversi significati a seconda del contesto dove è definito

Page 86: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++

Page 88: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++da dove salta fuori C++ ?• è una estensione di C con gli oggetti sviluppata da Bjarne

Stroustrup ai Bell Labs nel 1983

Page 89: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++da dove salta fuori C++ ?• è una estensione di C con gli oggetti sviluppata da Bjarne

Stroustrup ai Bell Labs nel 1983• C, definito da Dennis Ritchie ai Bell Labs nel 1972, è (stato)

usato per manutenere sistemi UNIX e per scrivere molte applicazioni commerciali

Page 90: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++da dove salta fuori C++ ?• è una estensione di C con gli oggetti sviluppata da Bjarne

Stroustrup ai Bell Labs nel 1983• C, definito da Dennis Ritchie ai Bell Labs nel 1972, è (stato)

usato per manutenere sistemi UNIX e per scrivere molte applicazioni commerciali

• C deriva dal linguaggio B (Ken Thompson, Bell Labs,1969)

Page 91: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++da dove salta fuori C++ ?• è una estensione di C con gli oggetti sviluppata da Bjarne

Stroustrup ai Bell Labs nel 1983• C, definito da Dennis Ritchie ai Bell Labs nel 1972, è (stato)

usato per manutenere sistemi UNIX e per scrivere molte applicazioni commerciali

• C deriva dal linguaggio B (Ken Thompson, Bell Labs,1969)• B deriva dal linguaggio BCPL (Basic Combined Programming

Language, Martin Richards dell'Università di Cambridge, 1966)

Page 92: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++da dove salta fuori C++ ?• è una estensione di C con gli oggetti sviluppata da Bjarne

Stroustrup ai Bell Labs nel 1983• C, definito da Dennis Ritchie ai Bell Labs nel 1972, è (stato)

usato per manutenere sistemi UNIX e per scrivere molte applicazioni commerciali

• C deriva dal linguaggio B (Ken Thompson, Bell Labs,1969)• B deriva dal linguaggio BCPL (Basic Combined Programming

Language, Martin Richards dell'Università di Cambridge, 1966)

perchè il “++” ?

Page 93: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

21

introduzione a C++da dove salta fuori C++ ?• è una estensione di C con gli oggetti sviluppata da Bjarne

Stroustrup ai Bell Labs nel 1983• C, definito da Dennis Ritchie ai Bell Labs nel 1972, è (stato)

usato per manutenere sistemi UNIX e per scrivere molte applicazioni commerciali

• C deriva dal linguaggio B (Ken Thompson, Bell Labs,1969)• B deriva dal linguaggio BCPL (Basic Combined Programming

Language, Martin Richards dell'Università di Cambridge, 1966)

perchè il “++” ?• è una abbreviazione molto utilizzata in C++

Page 94: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world

Page 95: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

Page 96: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

Page 97: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

Page 98: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

}

Page 99: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

}

osservazioni:

Page 100: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

}

osservazioni: i doppi apici delimitano una stringa \n è la notazione per il “vai a capo”

Page 101: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

}

osservazioni: i doppi apici delimitano una stringa \n è la notazione per il “vai a capo”notare i “;” che sono usati per terminare i comandi

Page 102: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

}

osservazioni: i doppi apici delimitano una stringa \n è la notazione per il “vai a capo”notare i “;” che sono usati per terminare i comandi le parentesi graffe servono per raggruppare comandi in blocchi

Page 103: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

22

il primo programma: hello_world int main(){ // main() è dove inizia un

// programma C++

cout << "Hello, world!\n"; // see_out: stampa sul video i 13 // caratteri Hello, world!// seguiti da un “vai a capo”

return(0) ; // ritorna un valore che indica// successo

}

osservazioni: i doppi apici delimitano una stringa \n è la notazione per il “vai a capo”notare i “;” che sono usati per terminare i comandi le parentesi graffe servono per raggruppare comandi in blocchimain è una funzione che non prende argomenti “( )” e ritorna un intero (per denotare successo o fallimento)

Page 104: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

23

il primo programma: hello_world completo

Page 105: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

23

il primo programma: hello_world completo

#include <iostream> // usa le librerie necessarie per input/output

Page 106: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

23

il primo programma: hello_world completo

#include <iostream> // usa le librerie necessarie per input/output

using namespace std; // nell’ultima versione dello standard C++, // i nomi (come cin e cout) sono // partizionati in namespaces. Questa // direttiva using dice che i nomi che usa // il programma sono definiti nel namespace // std (in questo caso l’iostream definisce // il significato di cout e cin in std)

Page 107: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

23

il primo programma: hello_world completo

#include <iostream> // usa le librerie necessarie per input/output

using namespace std; // nell’ultima versione dello standard C++, // i nomi (come cin e cout) sono // partizionati in namespaces. Questa // direttiva using dice che i nomi che usa // il programma sono definiti nel namespace // std (in questo caso l’iostream definisce // il significato di cout e cin in std)

int main(){ cout << "Hello, world!\n” ;return(0) ;

}

Page 108: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

Page 109: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

tre passi:

Page 110: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

tre passi:1. il compilatore traduce le istruzioni eseguibili dal C++ al

linguaggio macchina

Page 111: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

tre passi:1. il compilatore traduce le istruzioni eseguibili dal C++ al

linguaggio macchina2. il linker include la libreria iostream

Page 112: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

tre passi:1. il compilatore traduce le istruzioni eseguibili dal C++ al

linguaggio macchina2. il linker include la libreria iostream3. il computer esegue la versione in linguaggio macchina delle

istruzioni

Page 113: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

tre passi:1. il compilatore traduce le istruzioni eseguibili dal C++ al

linguaggio macchina2. il linker include la libreria iostream3. il computer esegue la versione in linguaggio macchina delle

istruzioniesempio di esecuzione

codice oggetto del programma hello_world

memoria prima dell’esecuzione

codice oggetto libreria iostream

Page 114: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

24

esecuzione di hello_world

tre passi:1. il compilatore traduce le istruzioni eseguibili dal C++ al

linguaggio macchina2. il linker include la libreria iostream3. il computer esegue la versione in linguaggio macchina delle

istruzioniesempio di esecuzione

codice oggetto del programma hello_world

memoria prima dell’esecuzione

codice oggetto libreria iostream

memoria dopo dell’esecuzione

> Hello, world!

output

Page 115: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

25

importanza di hello_world

Page 116: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

25

importanza di hello_world

hello_world è un programma molto importante:il suo obiettivo è di aiutare a familiarizzare con i tool– compilatore– ambiente di sviluppo (Eclipse)– ambiente di esecuzione

Page 117: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

25

importanza di hello_world

hello_world è un programma molto importante:il suo obiettivo è di aiutare a familiarizzare con i tool– compilatore– ambiente di sviluppo (Eclipse)– ambiente di esecuzione

(quando installerete Eclipse) scrivete il programma accuratamente– dopo aver visto cosa accade, provate a fare qualche errore e controllate le

risposte di Eclipse, ad esempio

• dimenticate il main()

• dimenticate di terminare la stringa Hello, world! con i doppi apici

• scrivete in maniera errata return

• dimenticate una parentesi graffa

• dimenticate un “;”, etc.

Page 118: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debugging

Page 119: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma

Page 120: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma- è un termine introdotto quando una falena causò un guasto in un relay del

calcolatore Mark I1 (1947)

Page 121: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma- è un termine introdotto quando una falena causò un guasto in un relay del

calcolatore Mark I1 (1947)- debugging è l’attività di eliminazione degli errori

Page 122: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma- è un termine introdotto quando una falena causò un guasto in un relay del

calcolatore Mark I1 (1947)- debugging è l’attività di eliminazione degli errori

tipi di errori

Page 123: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma- è un termine introdotto quando una falena causò un guasto in un relay del

calcolatore Mark I1 (1947)- debugging è l’attività di eliminazione degli errori

tipi di errori• errori di sintassi

- violazione delle regole grammaticali del linguaggio- sono scoperti dal compilatore, la cui messaggistica è spesso

imprecisa

Page 124: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma- è un termine introdotto quando una falena causò un guasto in un relay del

calcolatore Mark I1 (1947)- debugging è l’attività di eliminazione degli errori

tipi di errori• errori di sintassi

- violazione delle regole grammaticali del linguaggio- sono scoperti dal compilatore, la cui messaggistica è spesso

imprecisa• errori a run-time: si verificano durante l’esecuzione (out-of-memory)

Page 125: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

26

testing e debuggingun bug è un errore nel programma- è un termine introdotto quando una falena causò un guasto in un relay del

calcolatore Mark I1 (1947)- debugging è l’attività di eliminazione degli errori

tipi di errori• errori di sintassi

- violazione delle regole grammaticali del linguaggio- sono scoperti dal compilatore, la cui messaggistica è spesso

imprecisa• errori a run-time: si verificano durante l’esecuzione (out-of-memory)• errori logici (sono i più difficili da scoprire)

- errori nell’algoritmo - il computer non è in grado di fornire alcun aiuto

Page 126: INTRODUZIONE ALLA PROGRAMMAZIONE - cs.unibo.itlaneve/html/lez0bis-INTRO.pdf · linguaggi di programmazione di alto linguaggi ben noti sono CC++ Java Visual Basic PHP C# Python Objective

27

esercizi1. scaricare i lucidi e studiarli2. studiare il capitolo 1 del Savitch e fare gli esercizi

alla fine del capitolo3. provare a installare Eclipse