INTRODUZIONE ALLA PROGRAMMAZIONE. Cosimo Laneve

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INTRODUZIONE ALLA PROGRAMMAZIONE. Cosimo Laneve"

Transcript

1 INTRODUZIONE ALLA PROGRAMMAZIONE Cosimo Laneve 1

2 argomenti (Capitolo 1 Savitch) 1. sistemi di calcolo 2. programmazione e problem solving 3. introduzione a C++ 4. testing e debugging 2

3 sistema di calcolo (computing system) 3

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

5 sistema di calcolo (computing system) sistema di calcolo = software + hardware programma è una sequenza di istruzioni che deve eseguire un calcolatore 3

6 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 eseguono esempi: editors, compilatori, browsers, sistemi operativi 3

7 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 eseguono esempi: editors, compilatori, browsers, sistemi operativi hardware 3

8 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 eseguono esempi: editors, compilatori, browsers, sistemi operativi hardware sono i calcolatori (pc, tablet, laptop, mainframe, etc.) 3

9 organizzazione di un calcolatore 5 componenti principali 1. 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) 4

10 organizzazione di un calcolatore processore (CPU) dispositivo di input memoria ram dispositivo di output memoria secondaria 5

11 memoria principale è una lunga sequenza di locazioni ognuna contiene un byte = 8 bits, ogni bit è 0 oppure 1 indirizzo: numero che identifica la locazione di memoria dati grandi: alcuni dati sono troppo grandi per stare in un byte molti interi e reali gli indirizzi fanno riferimento al primo byte i byte seguenti servono a memorizzare la parte restante del dato 6

12 memoria principale byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10 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 7

13 dato o codice? 8

14 dato o codice? A può essere memorizzato come

15 dato o codice? A può essere memorizzato come può essere memorizzato come

16 dato o codice? A può essere memorizzato come può essere memorizzato come una istruzione può essere memorizzata come

17 dato o codice? A può essere memorizzato come può essere memorizzato come una istruzione può essere memorizzata come come fa il computer a sapere cosa significa ? 8

18 dato o codice? A può essere memorizzato come può essere memorizzato come una istruzione può essere memorizzata come come fa il computer a sapere cosa significa ? - l interpretazione dipende dalla istruzione che si sta eseguendo 8

19 dato o codice? A può essere memorizzato come può essere memorizzato come una istruzione può essere memorizzata come come fa il computer a sapere cosa significa ? - 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 8

20 memoria secondaria e memoria 9

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

22 memoria secondaria e memoria la memoria principale memorizza il programma in esecuzione e i relativi dati la memoria secondaria memorizza i programmi non in esecuzione, vecchi memorizza dati in maniera permanente (è necessaria una esplicita cancellazione per eliminarli) 9

23 il processore 10

24 il processore chiamato anche CPU Central Processing Unit 10

25 il processore chiamato anche CPU Central Processing Unit esegue le istruzioni del programma: tipiche istruzioni sono add 34 R3 sub 2 R1 mul R1 R2 R3 div 42 R0 R1 mov loc1 loc2 10

26 esecuzione di un programma (versione semplificata) 11

27 esecuzione di un programma (versione semplificata) programma dati 11

28 esecuzione di un programma (versione semplificata) programma dati computer 11

29 esecuzione di un programma (versione semplificata) programma dati computer output 11

30 linguaggi di programmazione di alto 12

31 linguaggi di programmazione di alto linguaggi ben noti sono C C++ Java Visual Basic PHP C# Python Objective C 12

32 linguaggi di programmazione di alto linguaggi ben noti sono C C++ Java Visual Basic PHP C# Python Objective C questi linguaggi 12

33 linguaggi di programmazione di alto linguaggi ben noti sono C C++ Java Visual Basic PHP C# Python Objective C questi linguaggi assomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibili 12

34 linguaggi di programmazione di alto linguaggi ben noti sono C C++ Java Visual Basic PHP C# Python Objective C questi linguaggi assomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibili consentono di programmare in maniera semplice 12

35 linguaggi di programmazione di alto linguaggi ben noti sono C C++ Java Visual Basic PHP C# Python Objective C questi linguaggi assomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibili consentono di programmare in maniera semplice usano istruzioni che sono troppo complicate per le CPU 12

36 linguaggi di programmazione di alto linguaggi ben noti sono C C++ Java Visual Basic PHP C# Python Objective C questi linguaggi assomigliano ai linguaggi naturali (utilizzano costrutti facilmente comprensibili consentono di programmare in maniera semplice usano istruzioni che sono troppo complicate per le CPU i programmi devono essere tradotti in sequenze di 0 e di 1 che la CPU può eseguire 12

37 linguaggi di programmazione di basso livello 13

38 linguaggi di programmazione di basso livello sono linguaggi per programmare in maniera facilmente comprensibile al calcolatore (linguaggi assembler) 13

39 linguaggi di programmazione di basso livello sono 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 13

40 linguaggi di programmazione di basso livello sono 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 1 esempio:

41 linguaggi di programmazione di basso livello sono 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 1 esempio: le CPU eseguono SOLAMENTE codice macchina 13

42 i compilatori e i linker 14

43 i compilatori e i linker i compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina 14

44 i compilatori e i linker i compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina source code: è il codice del linguaggio ad alto livello 14

45 i compilatori e i linker i compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina source code: è il codice del linguaggio ad alto livello object code: è il codice in linguaggio macchina 14

46 i compilatori e i linker i compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina source code: è il codice del linguaggio ad alto livello object 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 14

47 i compilatori e i linker i compilatori traducono programmi in linguaggi ad alto livello in programmi in codice macchina source code: è il codice del linguaggio ad alto livello object 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 14

48 15 compilazione ed esecuzione di un programma C++

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

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

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

52 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer 15

53 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ 15

54 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ codice oggetto per funzioni di libreria 15

55 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ codice oggetto per funzioni di libreria linker 15

56 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ codice oggetto per funzioni di libreria linker computer 15

57 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ codice oggetto per funzioni di libreria linker computer codice macchina eseguibile (.exe) 15

58 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ codice oggetto per funzioni di libreria linker computer codice macchina eseguibile (.exe) 15 computer

59 compilazione ed esecuzione di un programma C++ programma C++ dati per programma C++ compilatore computer codice oggetto per programma C++ codice oggetto per funzioni di libreria linker computer 15 codice macchina eseguibile (.exe) computer OUTPUT

60 algoritmi e programmi

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

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

63 algoritmi e programmi un 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

64 algoritmi e programmi un 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

65 algoritmi e programmi un 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

66 algoritmi e programmi un 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

67 fase di problem solving 17

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

69 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? 17

70 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 17

71 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 17

72 fase di implementazione 18

73 fase di implementazione 1. tradurre un algoritmo in un linguaggio di programmazione diventa più semplice quando si diventa esperti del linguaggio 18

74 fase di implementazione 1. tradurre un algoritmo in un linguaggio di programmazione diventa più semplice quando si diventa esperti del linguaggio 2. compilare il codice sorgente controllare e rimuovere gli errori segnalati dal compilatore 18

75 fase di implementazione 1. tradurre un algoritmo in un linguaggio di programmazione diventa più semplice quando si diventa esperti del linguaggio 2. compilare il codice sorgente controllare e rimuovere gli errori segnalati dal compilatore 3. esegui il codice su alcuni casi di test verifica la correttezza dei risultati 18

76 fase di implementazione 1. tradurre un algoritmo in un linguaggio di programmazione diventa più semplice quando si diventa esperti del linguaggio 2. compilare il codice sorgente controllare 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 18

77 programmazione object-oriented 19

78 programmazione object-oriented abbreviata in OOP 19

79 programmazione object-oriented abbreviata in OOP è usata in molti linguaggi di programmazione moderni 19

80 programmazione object-oriented abbreviata in OOP è usata in molti linguaggi di programmazione moderni un programma è visto come un insieme di oggetti che contengono valori e le funzioni che possono modificare tali valori 19

81 programmazione object-oriented abbreviata in OOP è usata in molti linguaggi di programmazione moderni un programma è visto come un insieme di oggetti che contengono valori e le funzioni che possono modificare tali valori progettare un programma significa definire gli oggetti e gli algoritmi delle funzioni corrispondenti 19

82 caratteristiche di OOP 20

83 caratteristiche di OOP encapsulation ogni oggetto contiene i propri dati e le funzioni che possono accedere/modificare i dati nessun altra funzione può accedere (information hiding) 20

84 caratteristiche di OOP encapsulation ogni oggetto contiene i propri dati e le funzioni che possono accedere/modificare i dati nessun altra funzione può accedere (information hiding) inheritance (ereditarietà) il codice può essere riutilizzato un oggetto può essere definito utilizzando codice di altri oggetti (con modifiche/con aggiunte di nuove funzioni) 20

85 caratteristiche di OOP encapsulation ogni oggetto contiene i propri dati e le funzioni che possono accedere/modificare i dati nessun altra funzione può accedere (information hiding) inheritance (ereditarietà) il codice può essere riutilizzato un oggetto può essere definito utilizzando codice di altri oggetti (con modifiche/con aggiunte di nuove funzioni) polimorfismo un nome di funzione può avere diversi significati a seconda del contesto dove è definito 20

86 introduzione a C++ 21

87 introduzione a C++ da dove salta fuori C++? 21

88 introduzione a C++ da dove salta fuori C++? è una estensione di C con gli oggetti sviluppata da Bjarne Stroustrup ai Bell Labs nel

89 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 21

90 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) 21

91 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) 21

92 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 ++? 21

93 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++ 21

94 il primo programma: hello_world 22

95 il primo programma: hello_world int main(){ // main() è dove inizia un // programma C++ 22

96 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 22

97 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 22

98 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 22

99 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) ; osservazioni: // ritorna un valore che indica // successo 22

100 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 22

101 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 22

102 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 22

103 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) ; osservazioni: // ritorna un valore che indica // successo 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 main è una funzione che non prende argomenti ( ) e ritorna un intero (per denotare successo o fallimento) 22

104 il primo programma: hello_world completo 23

105 il primo programma: hello_world completo #include <iostream> // usa le librerie necessarie per input/output 23

106 il primo programma: hello_world completo #include <iostream> using namespace std; // usa le librerie necessarie per input/output // 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) 23

107 il primo programma: hello_world completo #include <iostream> using namespace std; // usa le librerie necessarie per input/output // 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) ; } 23

108 esecuzione di hello_world 24

109 esecuzione di hello_world tre passi: 24

110 esecuzione di hello_world tre passi: 1. il compilatore traduce le istruzioni eseguibili dal C++ al linguaggio macchina 24

111 esecuzione di hello_world tre passi: 1. il compilatore traduce le istruzioni eseguibili dal C++ al linguaggio macchina 2. il linker include la libreria iostream 24

112 esecuzione di hello_world tre passi: 1. il compilatore traduce le istruzioni eseguibili dal C++ al linguaggio macchina 2. il linker include la libreria iostream 3. il computer esegue la versione in linguaggio macchina delle istruzioni 24

113 esecuzione di hello_world tre passi: 1. il compilatore traduce le istruzioni eseguibili dal C++ al linguaggio macchina 2. il linker include la libreria iostream 3. il computer esegue la versione in linguaggio macchina delle istruzioni esempio di esecuzione codice oggetto del programma hello_world codice oggetto libreria iostream memoria prima dell esecuzione 24

114 esecuzione di hello_world tre passi: 1. il compilatore traduce le istruzioni eseguibili dal C++ al linguaggio macchina 2. il linker include la libreria iostream 3. il computer esegue la versione in linguaggio macchina delle istruzioni esempio di esecuzione codice oggetto del programma hello_world codice oggetto libreria iostream output > Hello, world! memoria prima dell esecuzione 24 memoria dopo dell esecuzione

115 importanza di hello_world 25

116 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 25

117 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. 25

118 testing e debugging 26

119 testing e debugging un bug è un errore nel programma 26

120 testing e debugging un bug è un errore nel programma - è un termine introdotto quando una falena causò un guasto in un relay del calcolatore Mark I1 (1947) 26

121 testing e debugging un 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 26

122 testing e debugging un 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 26

123 testing e debugging un 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 26

124 testing e debugging un 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) 26

125 testing e debugging un 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 26

126 esercizi 1. scaricare i lucidi e studiarli 2. studiare il capitolo 1 del Savitch e fare gli esercizi alla fine del capitolo 3. provare a installare Eclipse 27

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O Il linguaggio C C O P Y R I G H T ( C ) 2 0 0 8 W W W. F O N D A M E N T I. I N F O P E R M I S S I O N I S G R A N T E D T O C O P Y, D I S T R I B U T E A N D / O R M O D I F Y T H I S D O C U M E N

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia Informatica Dipartimento di Economia Ing. Cristiano Gregnanin Corso di laurea in Economia 20 ottobre 2016 1 / 19 Linguaggi 2 / 19 Linguaggi 3 / 19 Linguaggi di alto livello Si basano su una macchina virtuale

Dettagli

Calcolo numerico e programmazione Programmazione

Calcolo numerico e programmazione Programmazione Calcolo numerico e programmazione Programmazione Tullio Facchinetti 11 maggio 2012 14:05 http://robot.unipv.it/toolleeo La programmazione la programmazione è l insieme delle

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1

Dettagli

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese 03-10-2003 Il linguaggio C Linguaggio general-purpose Il linguaggio C Creato nel 1972 nei Bell Labs da Dennis Ritchie su PDP11 Usato per il Sistema Operativo Unix da Ken Thompson Negli anni 80 nasce ANSI

Dettagli

INFORMATICA. L informatica comprende:

INFORMATICA. L informatica comprende: Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione

Dettagli

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java Programmi Un programma è un insieme di istruzioni che il computer deve seguire Usiamo programmi in continuazione

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 28 Linguaggi 2 / 28 Linguaggi 3 / 28 Linguaggi di alto livello Si basano su una macchina

Dettagli

ciclo di vita della soluzione (informatica) di un problema

ciclo di vita della soluzione (informatica) di un problema Università di Roma Tor Vergata L2-1 ciclo di vita della soluzione (informatica) di un problema errori run-time errori sintattici codice editor codice C++ compilatore esegui eseguibile OK risultati scorretti

Dettagli

Fondamenti di Informatica. Ingegneria elettronica

Fondamenti di Informatica. Ingegneria elettronica Fondamenti di Informatica Ingegneria elettronica Prima esercitazione Cecilia Catalano Sistema Operativo Il S.O. è costituito da un insieme di programmi che permettono di utilizzare e gestire tutte le risorse

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada

Dettagli

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Cosa è un programma. Informatica di Base -- R.Gaeta 18 Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer

Dettagli

Introduzione alla programmazione. Walter Didimo

Introduzione alla programmazione. Walter Didimo Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Informatica Linguaggi di Programmazione Anno Accademico 2011/2012 Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente

Dettagli

Introduzione al C. InformaticaB. Daniele Loiacono

Introduzione al C. InformaticaB. Daniele Loiacono Introduzione al C InformaticaB Facciamo un passo indietro Compilare o Interpretare? q Come rendo comprensibili al calcolatore i programmi scritti in un linguaggio di programmazione (ad es. C, C++, Java)?

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da

Dettagli

I Fondamenti del Linguaggio

I Fondamenti del Linguaggio Linguaggio C I Fondamenti del Linguaggio Linguaggio di Programmazione Linguaggio formale per la descrizione di programmi per calcolatori Sintassi vicina al linguaggio umano Se non ci fossero, bisognerebbe

Dettagli

Introduzione alla programmazione. Alice Pavarani

Introduzione alla programmazione. Alice Pavarani Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.d: Linguaggi Procedurali

Algoritmi, Strutture Dati e Programmi. UD 2.d: Linguaggi Procedurali Algoritmi, Strutture Dati e Programmi : Linguaggi Procedurali Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno LINGUAGGI PROCEDURALI Curtin, cap. 12.3 1 Linguaggi di Programmazione

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Lezione 1 e 2 Fabio Scotti Laboratorio di programmazione per la sicurezza 1 Lezione 1 e 2 Fabio Scotti Laboratorio di programmazione per la sicurezza Introduzione al linguaggio C e significato della compilazione

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Linguaggi di Programmazione Sintassi

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di

Dettagli

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Dettagli

Programmazione C Massimo Callisto De Donato

Programmazione C Massimo Callisto De Donato Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

C: primi elementi. Lezione 4

C: primi elementi. Lezione 4 C: primi elementi Lezione 4 Evoluzione del BCPL (1967) e B (1970), entrambi typeless Sviluppato da Dennis Ritchie nel 1972 ed implementato per il PDP-11 Usato per lo sviluppo del sistema operativo UNIX

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4

Dettagli

Introduzione C++ Compilatori Librerie Usare oggetti

Introduzione C++ Compilatori Librerie Usare oggetti Introduzione C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché

Dettagli

Introduzione C++ Compilatori Librerie Usare oggetti. Introduzione a C, C++ e Java

Introduzione C++ Compilatori Librerie Usare oggetti. Introduzione a C, C++ e Java Introduzione C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17 Introduzione al C Informatica Generale - Introduzione al C Versione 1.0, aa 2005-2006 p.1/17 Linguaggi di programmazione Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili,

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Burocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio

Burocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio Burocrazia: Università degli Studi di Ferrara Laurea triennale in Matematica Corso di Programmazione Primi passi con il linguaggio C Filippo Mantovani 1 Ottobre 009 Per ora nessun cambio di orario e/o

Dettagli

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento

Dettagli

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1 ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica Appunti dal laboratorio 1 Sistema Operativo Windows Vista, Windows 7, Mac OS X, Linux, Debian, Red Hat, etc etc Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma Lezione2i Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma Informatica e tecnologia informatica Il termine

Dettagli

Corso di Architettura (Prof. Scarano) 10/05/2002

Corso di Architettura (Prof. Scarano) 10/05/2002 Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Programmazione per BioInformatica Introduzione. Docente. Programma del corso. Nicola Drago

Programmazione per BioInformatica Introduzione. Docente. Programma del corso. Nicola Drago Programmazione per BioInformatica Introduzione Nicola Drago nicoladrago@univrit Dipartimento di Informatica Università di Verona Docente Nicola Drago Dip Di Informatica e-mail: nicoladrago@univrit Programma

Dettagli

1 PANORAMICA SUL LINGUAGGIO C

1 PANORAMICA SUL LINGUAGGIO C 1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato

Dettagli

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori Programma del corso o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori o Elementi di Programmazione Algoritmi e programmi o Algoritmo

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java Introduzione C++ Compilatori Librerie Usare oggetti 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

I Linguaggi di Programmazione

I Linguaggi di Programmazione I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Fondamenti di Informatica T. Il Software

Fondamenti di Informatica T. Il Software Il Software TECNOLOGIA DIGITALE CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale. Dati ed operazioni vengono codificati a partire da due valori distinti di grandezze

Dettagli

Tecnologie dell'informazione e della comunicazione

Tecnologie dell'informazione e della comunicazione Tecnologie dell'informazione e della comunicazione Introduzione al corso e Linguaggi di programmazione ad alto livello Prof. Mauro Gaspari: gaspari@cs.unibo.it Tutor: Elisa Del Bianco: elisadelbianco@gmail.com

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni

Dettagli

ASTRAZIONE ASTRAZIONE

ASTRAZIONE ASTRAZIONE ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione al Linguaggio C ed all IDE DEV-C++ Microsoft Windows e Dev-C++ Introduzione al Linguaggio C ed all IDE DEV-C++ Le Esercitazioni in Laboratorio Laboratorio M1 + MLAB1/2: Edificio Via Valotti, primo piano e piano interrato Orario: Mercoledì

Dettagli

Linguaggio di Riferimento: C

Linguaggio di Riferimento: C Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall

Dettagli

Laboratorio di linguaggi

Laboratorio di linguaggi lezioni: lunedi 9-11, aula A al corso Laboratorio di linguaggi laboratorio in tre turni: martedi 11-13 () giovedi 9-11 () venerdi 11-13 (Andrea Grosso) laboratorio: iscriversi all esame Corso A LABORATORIO

Dettagli

Informatica Problema Algoritmo Programma

Informatica Problema Algoritmo Programma Informatica Problema Algoritmo Programma 2^ PARTE I linguaggi di programmazione I linguaggi di programmazione si possono suddividere fondamentalmente in tre categorie: 1. Linguaggio Macchina 2. Linguaggio

Dettagli

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione al Linguaggio C ed all IDE DEV-C++ Microsoft Windows e Dev-C++ Introduzione al Linguaggio C ed all IDE DEV-C++ 1 Le Esercitazioni in Laboratorio! MTA + MLAB1/2: Edificio Via Valotti, primo piano e piano interrato! Orario: Giovedì 14:30-17:30!

Dettagli

STORIA E CARATTERISTICHE

STORIA E CARATTERISTICHE IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Parte 2 Linguaggi di programmazione Livello di Astrazione per la Codifica di un Algoritmo Si può risolvere un problema senza prima fissare un insieme di azioni, di mosse elementari possibili per l elaboratore?

Dettagli

Introduzione alla programmazione A. Ferrari

Introduzione alla programmazione A. Ferrari Introduzione alla programmazione A. Ferrari Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi ad

Dettagli

Sommario FONDAMENTI DI INFORMATICA. Definizione formale di algoritmo. Informatica e algoritmi. ALGORITMI E LINGUAGGIO PYTHON Introduzione

Sommario FONDAMENTI DI INFORMATICA. Definizione formale di algoritmo. Informatica e algoritmi. ALGORITMI E LINGUAGGIO PYTHON Introduzione Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica e Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://www.diee.unica.it/~marcialis/fi A.A. 2017/2018 Sommario Algoritmi, linguaggi

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Limiti del linguaggio assembler Esempio: gestione

Dettagli

Programmazione. Fondamenti di Informatica

Programmazione. Fondamenti di Informatica Programmazione Fondamenti di Informatica Linguaggio macchina 11111010 11111100 01101110 10000110 00010001 01101110 11001001 11111100 10101011 11010101 00100101 11110001 11000011 11100011 10100001 10000010

Dettagli

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina

Dettagli

Introduzione ai linguaggi di programmazione

Introduzione ai linguaggi di programmazione Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Introduzione ai linguaggi di programmazione Giorgio

Dettagli

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave) ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II) 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 La inserita nella architettura dell elaboratore Informatica Facoltà di Medicina Veterinaria a.a.

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore CPU CPU e programmazione (Parte 1) La CPU (Central Processing Unit) e` in grado di eseguire dei programmi, cioe` sequenze di istruzioni elementari ( istruzioni macchina ) Idea fondamentale dell'architettura

Dettagli

Il Software programmabili programma algoritmo

Il Software programmabili programma algoritmo Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia

Dettagli

Lezione 1. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

Lezione 1. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata. Lezione 1 Sistemi operativi 4 marzo 2014 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 14 1.1 Di cosa parliamo in questa lezione? È una introduzione generale ai sistemi

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

Dettagli

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Fondamenti di Programmazione -Presentazione del Corso-

Fondamenti di Programmazione -Presentazione del Corso- Fondamenti di Programmazione -Presentazione del Corso- CdL Ingegneria Informatica e dell'informazione Sara Brunetti sara.brunetti@unisi.it 0577 234850 1168 Ufficio 236 Fondamenti di Programmazione Orario

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio accattatis@ing.uniroma2.it Esercizio (1) Dati due vettori V1 e V2 scrivere un algoritmo che permetta

Dettagli

Introduzione al funzionamento di un calcolatore elettronico

Introduzione al funzionamento di un calcolatore elettronico 1 / 21 Introduzione al funzionamento di un calcolatore elettronico Natascia Piroso 23 settembre 2009 2 / 21 Sommario Che cos è un calcolatore? 1 Che cos è un calcolatore? Definizioni preliminari Il calcolatore

Dettagli

Introduzione a Java A. FERRARI

Introduzione a Java A. FERRARI Introduzione a Java A. FERRARI La nascita di Java 1991 - James Gosling lavora al Green Project (SUN) per studiare la convergenza tra dispositivi di elettronica di consumo e computer 1992 il Green Project

Dettagli

La programmazione in linguaggio C

La programmazione in linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

PROBLEMI E ALGORITMI

PROBLEMI E ALGORITMI Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

Lezione 2. Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma

Lezione 2. Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma Lezione 2 Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma Programmazione I Paolo Valente - 2010/2011 Storia essenziale del C Definito

Dettagli

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2009-10 Dai flow-chart ai linguaggi... Abbiamo imparato ad usare uno strumento formale i flowchart per

Dettagli

Macchine Astratte. Luca Abeni. February 22, 2017

Macchine Astratte. Luca Abeni. February 22, 2017 Macchine Astratte February 22, 2017 Architettura dei Calcolatori - 1 Un computer è composto almeno da: Un processore (CPU) Esegue le istruzioni macchina Per fare questo, può muovere dati da/verso la memoria

Dettagli

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2) Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,

Dettagli

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore Architettura di un calcolatore Processore: CPU Componente elettronico costituito da minuscole componenti di silicio, chiamate CHIP. Esegue le istruzioni implementate nel SW, tramite una serie di operazioni

Dettagli

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI Fortran Cobol

Dettagli

Concetto di stream. c i a o \0. c i a o \0. c i a o \0

Concetto di stream. c i a o \0. c i a o \0. c i a o \0 Concetto di stream Uno stream è un flusso di byte che permette al programma di comunicare con l esterno (es. con periferiche di input/output) c i a o \0 c i a o \0 c i a o \0 Stream di uscita standard

Dettagli