tecnologie dell'informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · alcune...
TRANSCRIPT
![Page 1: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/1.jpg)
Tecnologie dell'Informazione e della
comunicazioneIntroduzione al corso e
Linguaggi di programmazione ad alto livello
Prof. Mauro Gaspari: [email protected]
Tutor:Elisa Del Bianco: [email protected]
![Page 2: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/2.jpg)
Programma
● Linguaggi di programmazione
● Compilatori ed interpreti
● Scripting languages
● Basi di programmazione.
● Programmazione ad oggetti.
● I programmi per i Sistemi informativi
● I programmi per le reti
Modalità d'esame:progetto
![Page 3: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/3.jpg)
Materiale Didattico
●NOZIONI DI BASE: Un'introduzione all'informatica aldilà della patente Europea, Mauro GASPARI, Gianluigi ROVEDA 2006, Pitagora Eitrice.
●TESTI: How to Think Like a Computer Scientist: Learning with Python, by Allen Downey, Jeff Elkner and Chris Meyers. Gree Tea Press (disponibile in rete: http://thinkpython.com/).
●Materiale in rete:
Sito ufficiale di Python: http://www.python.org/
Sito italiano di Python: http://www.python.it/
![Page 4: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/4.jpg)
Linguaggi di Programmazione
Linguaggio di programmazione ad alto livello come Python, C, C++, Perl, Java, Lisp, Prolog.
Significa che esistono anche linguaggi a basso livello
linguaggio macchina assembler
![Page 5: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/5.jpg)
Alto livello e basso livello
Linguaggi ad alto livello
....print b*h/2....
Assembler
LOAD r1,bLOAD r2,hMUL r1,r2DIV r1,#2RET
Linguaggi a aasso livello
0001001001000101001001001110110010101101001..
Linguaggio macchina
![Page 6: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/6.jpg)
Programmi
I linguaggi di programmazione servono per scrivere programmi.
Il codice di un programma si dice anche codice sorgente (source code)
Un programma P scrittonel linguaggio L
L
P
Si tratta di codice sorgente di P e' scritto nel linguaggio L che in genere e' memorizzato su un file
....
......
....
.....
![Page 7: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/7.jpg)
Il linguaggio macchina
Solo il linguaggio macchina e' eseguibile direttamente da un computer
Ogni computer ha un suo linguaggio macchina
M
Un computer con linguaggio macchina M
![Page 8: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/8.jpg)
Esecuzione
Ogni computer e' in grado di eseguire programmi solo nel suo linguaggio macchina
M
P
M
![Page 9: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/9.jpg)
Problematiche
Difficile e dispendioso scrivere programmi in linguaggio macchina e in generale con i linguaggi a basso livello.
Accadeva una volta con i primi computer. Ora i linguaggi a basso livello si usano solo in poche
applicazioni molto specializzate.
![Page 10: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/10.jpg)
Vantaggi dei linguaggi ad alto livello
E' piu' semplice programmare con i linguaggi ad alto livello.
I programmi si scrivono piu' velocemente. I programmi scritti con linguaggi ad alto livello
sono portabili (eseguibili su computer diversi con poche o nessuna modifica).
Mentre un programma in linguaggio macchina gira solo sul un certo tipo di computer.
![Page 11: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/11.jpg)
Pero'
I programmi scritti nei linguaggi ad alto livello non si possono eseguire direttamente sui computer.
Un programma P scrittonel linguaggio ad alto livello Lnon può essere eseguito su uncomputer con linguaggio macchina M.
L
P
M
![Page 12: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/12.jpg)
Esecutori per linguaggi di programmazione
Sono necessari dei programmi di supporto per eseguire il linguaggi ad alto livello:
Interpreti. Compilatori.
![Page 13: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/13.jpg)
Interpreti
Un interprete per un linguaggio L permette di eseguire programmi scritti nel linguaggio L.
Un interprete per un linguaggio L e' un programma che prende come ingresso un programma sorgente scritto nel linguaggio L e lo esegue istruzioni dopo istruzione.
Un interprete può essere scritto in linguaggio macchina.
LM
Un interprete per il linguaggio L scritto in M.
![Page 14: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/14.jpg)
Esecuzione di programmi python
L'interprete python permette di eseguire un programma P scritto in python in una macchina M.
NB. Python e' un linguaggio interpretato, in altre parole un linguaggio eseguito con un interprete.
Python
P
M
PythonM
![Page 15: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/15.jpg)
I complilatori
L'alternativa all'interprete è tradurre i programmi sorgenti in linguaggio macchina.
Questo è il ruolo del compilatore.
Anche il compilatore è un programma che traduce codice sorgente di un linguaggio ad alto livello in un linguaggio a basso livello (in genere linguaggio macchina).
L -> M
M
Un compilatore che traduce codice sorgente scritto nel linguaggio L in codice oggetto del linguaggio macchina M.
![Page 16: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/16.jpg)
Un programma scritto in un linguaggio ad alto livello L
una volta tradotto da un compilatore diventa eseguibile.
L -> M
M
M
P
M
M
L
P
NB. anche il compilatoredeve essere eseguito (in questo caso) sulla macchina M per potereffettuare la traduzione.
Codice sorgenteCodice oggettoeseguibile
![Page 17: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/17.jpg)
Ma cosa è un programma?
Un programma è una sequenza di istruzioni che specifica come eseguire un certo calcolo detto anche computazione.
Una computazione può essere di tipo matematico ma puo' essere anche di tipo simbolico. Ad esempio cercare e rimpiazzare alcune frasi in un documento di testo.
![Page 18: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/18.jpg)
Alcune tipologie di istruzioni di base comuni a più linguaggi di
programmazione
Input
Output
Matematiche
Esecuzioni condizionali
Ripetizioni (cicli)
La programmazione si può vedere come un processo che scompone i problemi da risolvere in tanti sotto problemi fino a quando questi sono risolvibili con una di queste istruzioni di base.
![Page 19: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/19.jpg)
Bugs e Debugging!
Bug (o baco in italiano) Debugging (o debuggare! in italiano)
Si tratta di una capacita' necessaria per poter programmare.
NB. Non esistono mai programmi senza errori! Se un programma non funziona....si parte con il
debugging!
![Page 20: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/20.jpg)
Tipologie di bugs (errori)
Errori sintattici > “syntax error”il programma e' scritto male e non puo' essere eseguito. Se c'e' un errore sintattico l'interprete python termina immediatamente.
Errori a tempo di esecuzione (runtime) sono spesso chiamati eccezioni (exceptions). Rari nei programmi piccoli.
Errori semantici: il programma viene eseguito con successo e termina ma non fa' quello per cui era stato scritto. Questo vuol dire che il significato del programma, la semantica, e' sbagliato.
![Page 21: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/21.jpg)
Debugging
Task creativo come quello di un investigatore. Come mai un programma non funziona? In genere si procede per ipotesi e si prova... il
programma corretto. Se l'ipotesi era sbagliata bisogna cercarne un altra
fino ad escludere tutte le possibilita'.
![Page 22: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/22.jpg)
Linguaggi formali e naturali
Linguaggi naturali: sono le lingue normalmente parlate nelle varie nazioni.
Linguaggi formali: linguaggi progettati per applicazioni specifiche. Per esempio i linguaggi della matematica o della logica.
I linguaggi di programmazione sono linguaggi formali progettati per esprimere calcoli (computazioni)
![Page 23: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/23.jpg)
Linguaggi Formali: la sintassi
Regole strette rispetto alla sintassi.
Sintassi organizzata a due livelli:
token: singoli elementi che costituiscono un programma ad esempio: l'istruzione print, il numero 1, l'operatore +, l'operatore =, etc etc....
strutture di frase: regole grammaticali che dicono come comporre i token per realizzare un programma.
Il parsing e' quel processo che ci permette date le regole grammaticali di “comprendere” la struttura di una frase.
![Page 24: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/24.jpg)
Differenze tra linguaggi formali e naturali
Ambiguità: Il linguaggio naturale e' pieno di ambiguita', mentre i linguaggi formali sono stati progettati per essere quasi o completamente non ambigui.
Ridondanza: tipicamente i linguaggi naturali sono molto ridondanti, ci sono molti modi per dire le stesse cose. I linguaggi formali sono meno ridondanti e più concisi.
Nonletteralita': I linguaggi naturali hanno molti idiomi e metafore che non sono presenti nei linguaggi formali.
![Page 25: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/25.jpg)
Linguaggi formali semantica
Semantica: esprime il significato dei costrutti del linguaggio.
Puo' essere informale (ad esempio un manuale) o formale (espressa tramite formalismo matematico).
Diverse tipologie di semantica: Operazionale: descrive in modo preciso il funzionamento
dei costrutti del linguaggio. Dichiarativa: esprime il significato dei costrutti del
linguaggio dicendo cosa esprimono ma non come funzionano.
![Page 26: Tecnologie dell'Informazione e della comunicazionegaspari/www/teaching/ticn1.pdf · Alcune tipologie di istruzioni di base comuni a più linguaggi di programmazione Input Output Matematiche](https://reader031.vdocuments.mx/reader031/viewer/2022022800/5c6ac7d209d3f20c178d373b/html5/thumbnails/26.jpg)
Classificazione dei Linguaggi di
Programmazione
Linguaggi imperativi Sequenze di istruzioni: la computazione si ottiene
eseguendo le istruzioni una dopo l'altra (macchina di Von Neumann).
Linguaggi dichiarativi: Funzionali: la computazione e' espressa tramite il calcolo
di funzioni. Logici: la computazione e' espressa come inferenza
logica.