Upload
nguyennguyet
View
214
Download
0
Embed Size (px)
Citation preview
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.1
INTRODUZIONE AL SOFTWARE
L’informatica è la scienza che tratta della elaborazione delle informazioni.
Elaborare informazioni rientra nell’ambito delle attività quotidiane dell’individuo e delle forme associative.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.2
IMMAGINE realizzata da Alessandro MARABITTI = mappa concettuale
010010110000111100001000000001110
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.3
Vediamo alcuni esempi:Vediamo alcuni esempi:
consultare una agenda telefonica;
seminare un campo di grano;
calcolare la probabilità di fare 6 al superenalotto.
ricerca del valore più grande all’interno di un insieme di valori;
raggiungere una data località servendosi di mezzi pubblici;
ordinamento di una sequenza di interi;
operazioni chirurgiche.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.4
L’elaborazione delle informazioni non riguarda soltanto ed esclusivamente l’ambito numerico o scientifico ma, al contrario, coinvolge tutte le attività umane.
In realtà ogni informazione, di qualsiasi natura essa sia, è codificata attraverso una tecnica matematica, nota come aritmetica binaria.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.5
Oggi è più che mai evidente che l’informatica risulta
essere uno strumento, un mezzo essenziale per la
comunicazione tra individui e per l’accesso alla
conoscenza nelle sue più svariate forme:
testuali, artistiche,
numeriche, filmiche,
sonore, scientifiche, etc..
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.6
Elaborare informazioni significa ricercare soluzioni a determinati problemi.
Infatti, ognuno degli esempi sopra citati riguarda la ricerca di soluzioni ad un problema.
E’ bene introdurre una classificazione dei problemi, anche al fine di chiarire che
non tutti i problemi ammettono soluzioni o le ammettono in modo univoco.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.7
Problemi che ammettono sempre una sola soluzione
ad esempio dati due numeri interi dire se sono uguali e, in caso contrario, dire quale è il maggiore.
Una classificazione semplificata di problemi relativamente alle soluzioni che possono ammettere è la seguente:
E’ chiaro che in base al principio del terzo escluso, noto come tertium non datur, della logica matematica classica, due numeri interi o sono uguali oppure uno è maggiore dell’altro, per cui esiste sempre una e soltanto una soluzione a questo problema.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.8
Problemi che ammettono in generale più soluzioni
ad esempio cercare il numero telefonico di Mario Rossi.
Negli elenchi telefonici di grandi città infatti sono presenti numerosissimi Mario Rossi, ed in molti casi neppure l’esatta conoscenza dell’indirizzo riesce a dirimere la questione di quale Mario Rossi sia effettivamente quello che stiamo cercando noi: perciò siamo di fronte ad un problema che presenta, nella generalità dei casi, molte soluzioni.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.9
Problemi di cui non si sa se esistono soluzioni
Le congetture matematiche, cioè affermazioni di evidente realtà ma senza alcuna dimostrazione rigorosa e formale, costituiscono istanze di questa classe di problemi.
Ad esempio la congettura di Goldbach asserisce che ogni numero intero pari è somma di due numeri primi. Ed infatti qualunque numero pari ci venga in mente è effettivamente somma di due numeri primi: 6= 1 + 5;
22 = 3 + 19; e così via.
Però, di questo fatto, a prima vista semplice e (forse) intuitivo, non vi è nessuna dimostrazione matematica, al punto che su di esso sono anche sorte leggende ed ispirazioni per romanzi di successo.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.10
Dato un problema, l’obiettivo consiste nel determinare tutte le possibili soluzioni ad esso.
Ciò significa che occorre determinare un metodo di soluzione ed applicarlo ai dati del problema.
Ora, consideriamo un tipico e molto quotidiano problema: quello di eseguire una ricetta culinaria.
Prendiamo in considerazione la ricetta dello sciroppo d’amarena secondo l’Artusi:
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.11
Siroppo di AmarenaPrendete ciliege marasche vere, le quali, benché mature, devono essere molto agre. Levatene i gambi e disfatele come l'uva quando si pigia per fare il vino; poi mettete da parte una manciata di noccioli per l'uso che vi dirò in appresso e riponete le ciliege con un bel pezzo di cannella intera in luogo fresco, entro a un vaso di terra per aspettarne la fermentazione, la quale deve durare almeno quarantott'ore; ma dal momento che le ciliege hanno cominciato ad alzare, affondatele e mescolatele di quando in quando ……
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.12
Questo specifico metodo, come quasi tutti i metodi appartenenti alla categoria ‘ricette culinarie’, soffre però di alcune rilevanti caratteristiche negative sotto il punto di vista dell’informatica.
Infatti, già dalla prima frase:
Prendete ciliege marasche vere, le quali, benché mature, devono essere molto agre,
si entra in uno scenario in cui l’interpretazione, l’esperienza personale e la fantasia giocano un ruolo essenziale, senza le quali non si può dare corso all’opera.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.13
Infatti, cosa vuol dire:
marasche vere?
Chè forse ce ne sono di false, costruite artificialmente?
Ed ancora, quand’è che esse sono, allo stesso tempo,
benché mature… molto agre?
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.14
La ricetta consiste di ‘istruzioni’
e la sua esecuzione richiede la capacità di
‘interpretare’ quelle istruzioni.
Così, dopo avere preso quel particolare tipo di ciliegie, l’Artusi raccomanda:
disfatele come l'uva quando si pigia per fare il vino,
istruzione che risulterà senz’altro ben precisa soltanto per poche persone.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.15
Non da ultimo, qualunque cuoco vorrà conoscere quanto tempo richiede l’esecuzione della ricetta.
L’Artusi dice:
…e riponete le ciliege con un bel pezzo di cannella intera in luogo fresco, entro a un vaso di terra per aspettarne la fermentazione, la quale deve durare almeno quarantott'ore.
E quanto bisogna aspettare perché inizi la fermentazione?
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.16
Si consideri invece il seguente altro problema, anch’esso di attualità:
calcolare la media dei voti ottenuti in Informatica dagli studenti iscritti a Scienze della Comunicazione nello scorso anno accademico.
Se gli studenti che hanno superato l’esame sono n,
basterà addizionare tutti i voti riportati da ciascuno studente e poi dividere la somma ottenuta per n,
eventualmente arrotondando all’intero più prossimo.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.17
Cosa distingue i due problemi, sotto il profilo del metodo adottato per la loro soluzione? Mentre il problema della ricetta culinaria descritta dall’Artusi viene risolto mediante un metodo espresso in modo ambiguo e non sempre chiaramente eseguibile, tanto da lasciare abbondante spazio all’inventiva ed alla libera iniziativa. Si pensi ad esempio al famoso q.b. ampiamente utilizzato nella descrizione di ricette.
Al contrario il metodo adottato per calcolare la media dei voti è estremamente chiaro, non ambiguo, sicuramente eseguibile e certamente conduce a soluzione in un tempo finito.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.18
In informatica, i metodi che godono delle caratteristiche di:
non ambiguità, cioè ogni istruzione è univocamente interpretabile;
eseguibilità, cioè ogni istruzione è sicuramente eseguibile;
terminazione, cioè il metodo perviene al risultato dopo un tempo finito;
sono chiamati
algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.19
Un problema può essere considerato come una
funzione. Questa funzione è una relazione che lega dati in ingresso e dati in uscita.
I dati in ingresso (input) di un problema descrivono le informazioni rilevanti legate al problema stesso,
mentre i dati in uscita (output) descrivono una soluzione del problema.
Per esempio, la ricerca del valore più grande all’interno di un insieme di valori prevede come dati in ingresso i valori all’interno dei quali cercare il massimo, mentre prevede come dato in uscita il valore massimo.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.20
Considerando il problema della ricerca del tragitto più veloce per spostarsi in aereo da una città all’altra, i dati in ingresso sono costituiti dalla descrizione di tutte le connessioni aeree più l’indicazione della città di partenza e della città di arrivo.
I dati in uscita, invece, descrivono il tragitto più veloce dalla città di partenza alla città di arrivo.
Nella teoria della calcolabilità si parte dall’osservazione che un algoritmo indica una sequenza di operazioni che devono essere eseguite in modo automatico da un esecutore. Esempio fatto in aula per la ricerca del massimo tra tre numeri interi dati.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.21
È quindi necessario precisare nel dettaglio, usando un approccio matematico, le caratteristiche che un esecutore deve avere.
A tal fine sono stati definiti diversi tipi di esecutori astratti (definiti sulla carta e non costruiti nella realtà anche se approssimabili con elaboratori reali) che hanno caratteristiche differenti; fra questi i più conosciuti sono gli:
•Automi a Stati Finiti e le
•Macchine di Turing.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.22
Un algoritmo è una sequenza di operazioni che può essere eseguita in modo automatico. In pratica i metodi che possono essere programmati ed eseguiti da un calcolatore sono solo quelli appartenenti alla classe degli algoritmi.
Il metodo consistente nella ricetta culinaria dell’Artusi non è un algoritmo, in quanto non gode delle suddette proprietà di non ambiguità, eseguibilità e terminazione.
Esso, perciò, non può essere programmato ed eseguito da un calcolatore a meno di rendere non ambigue le frasi del tipo “ciliege marasche vere” ed interpretare in modo chiaramente eseguibile le istruzioni del tipo “disfatele come l'uva…etc”.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.23
Quindi, un algoritmo è una procedura che risolve un dato problema in termini di: azioni (nell’esempio sono 6)
ordine di esecuzione delle azioni
Esempio: algoritmo “al mattino”.
1) Alzarsi dal letto (1°)
2) Togliersi il pigiama (2°)
3) Farsi la doccia (3°)
4) Vestirsi (4°)
5) Fare colazione (5°)
6) Dirigersi al lavoro (6°)
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.24
L’algoritmo modificato in cui si scambia l’ordine
delle azioni 3 e 4 produce risultati non desiderati
(quali ?)
L’ordine di esecuzione di un algoritmo si chiama
Controllo dell’algoritmo.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.25
Il problema del calcolo della media è, senza alcuna
necessità di adottare varie interpretazioni,
sicuramente un algoritmo, e quindi può essere
programmato ed eseguito da un calcolatore.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.26
Vediamo come la soluzione di questo problema può
essere decomposta in operazioni elementari in modo
da poter essere trovata da un calcolatore attraverso un
algoritmo.
L’ algoritmo deve poter essere tradotto in una
successione di istruzioni di un linguaggio di
programmazione. Ritorneremo su questo esempio
quando parleremo dei linguaggi.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.27
Caso in cui il numero degli studenti è fissato.
Supponiamo che gli studenti siano 100. Il calcolo
della media può essere effettuato eseguendo la
successione delle seguenti operazioni, in cui
TOTALE e CONTATORE sono i nomi di due
variabili conservate ciascuna in una zona di
memoria del calcolatore.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.28
Inizializzare TOTALE a 0 Istr. 1
ALGORITMO PER IL CALCOLO DELLA MEDIAogni
riga
è
una
Istruzione
Inizializzare CONTATORE a 1 Istr. 2
Finchè CONTATORE resta minore o uguale a 100 Istr. 3
prendere dall’input il prossimo voto Istr. 4
aggiungere il voto a TOTALE Istr. 5
aggiungere 1 a CONTATORE Istr. 6
Impostare il valore della media a TOTALE diviso 100 Istr. 7
Visualizzare la media. Istr. 8
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.29
Un algoritmo può essere rappresentato graficamente con un diagramma di flusso costituito da simboli:
Se un diagramma di flusso deve rappresentare un algoritmo completo, all’inizio viene posto un simbolo ovale con la parola “inizio” (in inglese begin).
rettangoli, ovali, cerchietti, Rombi Linee di flussoI simboli sono connessi tra loro tramite linee, dette linee di flusso, orientate con frecce che indicano l’ordine con cui vengono eseguite le azioni.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.30
Se invece il diagramma rappresenta solo una parte dell’algoritmo, all’inizio e alla fine si pongono dei cerchietti detti “simboli di connessione”.
I rombi vengono detti “simboli decisionali” e vengono posti nei punti dove la linea di esecuzione delle azioni può prendere diverse direzioni a seconda del verificarsi di alcune condizioni.
Analogamente all’uscita si pone un ovale con la parola “fine” (end).Il rettangolo, detto anche simbolo di azione, indica qualsiasi tipo di operazione.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.31
Inizio
TOTALE = 0
CONTATORE = 1
CONTATORE <= 100 ?
prendere dall'input ilprossimo voto
aggiungere il voto a TOTALE
aggiungere 1 a CONTATORE
VisualizzaMedia
Media =TOTALE / 100
Fine
vero
falso
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.32
Caso in cui il numero degli studenti non è fissatoInizializzare TOTALE a 0Inizializzare CONTATORE a 0Effettuare l’input del primo voto (può essere il valore sentinella)Finchè l’utente non ha ancora digitato il valore sentinella aggiungere il voto a TOTALE aggiungere 1 a CONTATORE prendere dall’input il prossimo voto (può essere il valore sentinella)Se CONTATORE non è uguale a 0 Impostare il valore della media a TOTALE diviso CONTATOREVisualizzare la mediaAltrimenti
visualizzare “non è stato digitato alcun voto”
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.33
Il valore sentinella è un valore con cui chi immette i voti segnala al calcolatore che è finita la lista dei voti. Questo valore deve essere scelto diverso dai possibili valori dei voti, ad esempio negativo (-1).
Anche su questo ritorneremo quando parleremo dei linguaggi di programmazione e tradurremo questa successione di istruzioni in un programma scritto in uno specifico linguaggio.
Algoritmi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.34
ALGORITMIESERCIZI IN AULA: La successione di Fibonacci è definita nel seguente modo: i primi due termini della successione sono 1, 1, il termine successivo è dato dalla somma dei due termini precedenti. Rappresentare con un diagramma di flusso l'ennesimo termine della successione.
Rappresentare con un diagramma di flusso un algoritmo per calcolare la somma dei primi n numeri dispari.
Trovare un algoritmo e disegnare il diagramma di flusso per calcolare il prodotto tra due numeri interi positivi usando l'operazione di somma.
Trovare un algoritmo per calcolare il quoziente e il resto della divisione tra due numeri interi positivi e rappresentarlo con un diagramma di flusso.
Trovare un algoritmo per determinare il massimo tra tre numeri e rappresentarlo con un diagramma di flusso.
STUDIO e ESERCIZI A CASA: Libro di testo “Introduzione all'Informatica” da pag. 319 a pag. 324
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.35
Per fissare le idee, gli elementi che entrano in gioco nel trattamento delle informazioni sono:
i problemi;
le informazioni: sono informazioni quelle che vengono date in ingresso al problema e sono parimenti informazioni quelle che si vogliono ottenere in uscita;
un metodo di soluzione;
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.36
un esecutore: si parla di un esecutore, non necessariamente di un calcolatore; infatti, l’elaborazione delle informazioni può essere effettuata anche da umani; il calcolatore è soltanto un esecutore più efficiente, preciso, veloce, economico;
le interfacce verso l’esterno: sono le modalità e gli strumenti attraverso i quali un esecutore riceve/fornisce le informazioni.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.37
esecutore
problemi
metodo
interfacce
informazioni
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.38
PROBLEMIPROBLEMI
RISOLUBILI NON RISOLUBILI
TRATTABILINON
TRATTABILI
NON ESISTE NON SI SA SE ESISTE
LA SOLUZIONE
E’INDECIDIBILE
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.39
COMPLESSITÀ DEGLI ALGORITMI E DEI PROGRAMMI
È la misura dell’efficienza di un algoritmo o di un programma che lo implementa.
Può essere riferita:
Al tempo di esecuzione di un programma. Questa misura, che indichiamo con T(n) è pressoché equivalente al numero di istruzioni che devono essere eseguite. Infatti ha poca importanza che una moltiplicazione sia, supponiamo, dieci volte più lenta di un’addizione, dato che entrambe le operazioni richiedono tempi costanti, seppur diversi. Infatti non è tanto la differenza di costo della singola operazione a far aumentare il tempo, ma il numero di volte che le operazioni sono eseguite. Nel seguito riferiremo la complessità al tempo di esecuzione del programma.
Alla memoria richiesta per eseguire il programma
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.40
Per esprimere la complessità dei programmi è necessario fare riferimento alla DIMENSIONE DEL PROBLEMA.
Essa può intuitivamente essere considerata come il numero di valori da elaborare cioè la dimensione dei dati in ingresso (input). Ad esempio, ordinare un insieme di 1.000 valori richiede senz’altro meno tempo che ordinare un insieme di 1.000.000 di valori.
Pertanto, la dimensione del problema è nel primo caso 1.000 e nel secondo caso 1.000.000.
In generale, la dimensione del problema è indicata dalla lettera n.
COMPLESSITÀ DEGLI ALGORITMI
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.41
La complessità si esprime attraverso una funzione matematica e può essere dei seguenti tipi:
Costante: quando il tempo di esecuzione del programma è indipendente dalla dimensione del problema.
Ad esempio, il tempo richiesto (come numero di operazioni) per calcolare le radici di una equazione algebrica di secondo grado è sempre lo stesso, e non dipende dalla dimensione dei coefficienti dell’equazione. ax2+bx+c=0
COMPLESSITÀ DEGLI ALGORITMI
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.42
Complessità di un Algoritmo
y=t
x è Dimensione del problema
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.43
Logaritmica: quando il tempo di esecuzione è proporzionale al logaritmo della dimensione del problema.
Ad esempio, il problema di cercare il nome di una persona in un elenco ordinato alfabeticamente, ha complessità O(log n), dove n è il numero di elementi presenti nell’elenco e O è il simbolo per esprimere la complessità nel senso che T(n) è stimabile, a meno di una costante, con il logaritmo di n.Così, se l’elenco avesse 8 nomi, la ricerca richiederebbe al massimo l’esecuzione di Cx3 istruzioni, dove C è una costante (log 8=3 se il logaritmo è in base 2 ma un’altra base (ad esempio 10) non farebbe altro che cambiare la costante C), mentre se ne avesse 1024 allora richiederebbe al massimo l’esecuzione di Cx10 istruzioni (log 1024=10 in base 2). Ricordiamo che il logaritmo di un numero è l'esponente a cui bisogna elevare la base per ottenere il numero.
COMPLESSITÀ DEGLI ALGORITMI
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.44
Complessità di un Algoritmo
Il numero delle operazioni da eseguire cresce come una costante per il Logaritmo di n.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.45
Lineare: quando il tempo di esecuzione è proporzionale alla dimensione del problema. Cioè a un incremento di n corrisponde un ugual incremento della funzione T(n), a meno di costanti.
Ad esempio, la fusione di due insiemi ordinati di n elementi ciascuno in un unico insieme ordinato di 2n elementi, richiede l’esecuzione di 2n istruzioni.
Così, se ciascun insieme di partenza ha 16 elementi, devono essere eseguite 32 istruzioni.
COMPLESSITÀ DEGLI ALGORITMI
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.46
Complessità di un Algoritmo
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.47
Polinomiale: quando il numero di istruzioni da eseguire è espresso da un polinomio di grado k. In questo caso si dice che la complessità è polinomiale di ordine k.
C’è la possibilità che per un algoritmo non basti un tempo Lineare, per esempio un algoritmo potrebbe richiedere un tempoche cresce come n alla terza cioè n per n per n. Una funzione T(n) è detta polinomiale se cresce come n alla k per un k costante.Perciò si parla di complessità
COMPLESSITÀ DEGLI ALGORITMI
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.48
Complessità di un Algoritmo
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.49
Ad esempio, il problema del commesso viaggiatore:
Supponiamo di avere una rete autostradale che collega n città ed i cui tronchi hanno lunghezze diverse. Determinare un circuito che tocchi tutte le città una sola volta percorrendo il minimo percorso.
Esponenziale: quando il numero di istruzioni da eseguire è esprimibile da una funzione esponenziale della dimensione del problema. E vi sono complessità ancora maggiori che, come la complessità esponenziale, si dicono superpolinomiali.
COMPLESSITÀ DEGLI ALGORITMICi sono poi dei casi in cui T(n) cresce più rapidamente di un polinomio: ad esempio come exp(cn), una funzioneEsponenziale di n. In questo caso si parla di complessità
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.50
Complessità di un Algoritmo
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.51
Complessità di un Algoritmo
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.52
PROBLEMI TRATTABILI E PROBLEMI INTRATTABILI
Tra tutti i problemi che ammettono soluzioni, si distingue tra quelli TRATTABILI e quelli NON TRATTABILI.
Problemi trattabili: hanno una complessità al massimo polinomiale di ordine inferiore alla decina.
Problemi intrattabili: hanno una complessità esponenziale o comunque superpolinomiale o anche polinomiale di ordine superiore alla decina.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.53
2x108 secoli6.5 anni0.059sO(3n)
35.7 anni17.9 m0.001sO(2n)
5.2 m24.3s0.1sO(n5)
0.125s0.027s0.0001sO(n3)
0.00005s0.00003s0.00001sO(n)
0.0000054s0.000005s0.000003sO(log n)
n=50n=30n=10
Tempo di esecuzione di una istruzione: 1 µs (1 micro secondo = 0.000001 s)
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.54
I problemi che hanno complessità esponenziale sono detti intrattabili perché anche in presenza di un calcolatore potentissimo, richiedono comunque tempi inammissibili per la loro soluzione.
Ad esempio, nella tabella precedente il problema
che ha complessità O(3n) richiederebbe, per n=50:
200.000 secoli utilizzando un calcolatore che esegua una istruzione in 1 ns (nanosecondo=1miliardesimo di secondo)
200 secoli utilizzando un calcolatore che esegua una istruzione in 1 ps (picosecondo= 1 millesimo di nanosecondo)
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.55
CalcolabilitàGli algoritmi descrivono procedimenti che un calcolatore elettronico deve eseguire per risolvere un particolare problema.
E' naturale chiedersi se tutti i problemi possano essere risolti tramite l'uso del calcolatore, in altri termini, se tutti i problemi possano essere risolti dagli algoritmi.
Per esempio possiamo essere interessati a usare un calcolatore per trovare il tragitto aereo più veloce per muoverci da una città a un'altra passando, eventualmente per alcune città intermedie.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.56
CalcolabilitàGli algoritmi descrivono procedimenti che un calcolatore elettronico deve eseguire per risolvere un particolare problema.
E' naturale chiedersi se tutti i problemi possano essere risolti tramite l'uso del calcolatore, in altri termini, se tutti i problemi possano essere risolti dagli algoritmi.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.57
Un altro tipo di problema potrebbe essere verificare, dato un algoritmo e una particolare istanza di dati in ingresso, quale sia l'ordine di grandezza del tempo necessario per restituire un risultato. Per rispondere in modo esauriente a questo tipo di quesiti è necessario definire in modo chiaro che cosa intendiamo per problema e che cosa intendiamo per algoritmo.
Calcolabilità
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.59
Esiste una particolare branca
dell'informatica, chiamata teoria della
calcolabilità, che si propone di studiare in
modo matematico problemi del tipo cui
abbiamo accennato.
Nel seguito descriveremo che cos'è un
problema e che cos'è un algoritmo.
Calcolabilità
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.60
ESECUTORI: MACCHINA di TURING
Nel paragrafo precedente abbiamo introdotto il problema di definire un esecutore automatico che abbia una memoria in cui leggere e scrivere simboli durante la computazione.
Definiremo ora più precisamente le macchine di Turing (MdT), un tipo di esecutore automatico equipaggiato con memoria.
La memoria di una MdT è un nastro di lunghezza illimitata sul quale possono essere collocati dei simboli. I simboli sul nastro sono posti in sequenza, uno dopo l'altro.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.61
Alan Mathison Turing fu un matematico e logico matematico britannico (1912 -1954). Pioniere della scienza dell'informazione e dell'intelligenza artificiale, ha legato il suo nome, in particolare, alla macchina di Turing, con cui l'autore risolveva il problema della decidibiltà lanciato nel 1900 da Hilbert. La questione posta da Hilbert era se esistesse sempre un metodo meccanico attraverso cui, dato un qualsiasi enunciato matematico, si possa stabilire se esso sia vero o falso.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.62
Un tale algoritmo sarebbe stato in grado di risolvere tutti i problemi matematici.
La soluzione proposta da Turing consiste nell'utilizzo di un modello matematico capace di simulare il processo di calcolo umano, scomponendolo nei suoi passi più elementari.
La macchina è formata da una testina di lettura e scrittura con cui è in grado di leggere e scrivere su un nastro potenzialmente infinito partizionato in caselle. Ad ogni istante di tempo t1, la macchina si trova in uno stato interno s1 ben determinato, risultato dell'elaborazione compiuta sui dati letti.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.63
DefinizioneUna macchina di Turing (o più brevemente MdT) è una macchina ideale che manipola i dati contenuti su un nastro di lunghezza infinita, secondo un insieme prefissato di regole ben definite. In altre parole, è un modello astratto che definisce una macchina in grado di eseguire algoritmi e dotata di un nastro infinito su cui può leggere e/o scrivere simboli.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.64
Essa ha la particolarità di essere retta da regole di natura
molto semplice e si dimostra che è in grado di
eseguire tutte le elaborazioni effettuabili dagli altri
modelli di calcolo noti all'uomo.
Di conseguenza si è consolidata la convinzione che per
ogni problema calcolabile esista una MdT in grado di
risolverlo: questa è la cosiddetta congettura di Turing, la
quale postula in sostanza che per ogni funzione calcolabile
esista una macchina di Turing equivalente.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.65
La macchina di Turing è composta dai seguenti elementi:
1. Nastro: non si pone un limite superiore alla capacità di memoria. Questa, in una MdT, è rappresentata da un nastro monodimensionale infinito, costituito da una sequenza lineare di caselle quadrate o celle, che viene considerata infinita in entrambe le direzioni.
Ogni casella sul nastro o è vuota, o contiene un singolo segno. Così benché il nastro venga considerato infinitamente lungo, su di esso deve essere presente un numero finito di segni reali.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.66
MACCHINA di TURING : Nastro + Testina
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.67
ESECUTORI: MACCHINA di TURING
2 Testina: non si pone un limite alla durata dei processi di calcolo e si assume anche che una tale macchina funzioni sempre perfettamente.
I processi di calcolo eseguibili da una MdT sono estremamente elementari: dotata di una testina di lettura/scrittura che può osservare solo una casella per volta, essa può stampare un simbolo da un alfabeto finito sulla casella osservata o spostare la testina di lettura di una casella, a sinistra, o, a destra della casella osservata.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.68
MACCHINA di TURING : Nastro + Testina
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.69
ESECUTORI: MACCHINA di TURING
1 Alfabeto: i simboli che una MdT può utilizzare sono in numero finito, l’insieme di questi simboli è l’alfabeto di una MdT.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.70
ESECUTORI: MACCHINA di TURING
4 Stato interno: un altro importante elemento delle MdT è lo stato interno che è la configurazione memorizzata dalla macchina in base agli ingressi (input) presentatesi in istanti precedenti (cioè in base a ciò che ha potuto leggere sul nastro).
Gli stati interni devono essere in un numero finito.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.71
MACCHINA di TURING: Gif animata di RosarioVanTulpe
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.72
MACCHINA di TURING: Gif animata di RosarioVanTulpe
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.73
ESECUTORI: MACCHINA di TURING
Configurazione: definiamo configurazione di una MdT in una data fase di calcolo la coppia ordinata costituita dallo stato interno che essa presenta in quel momento e dal simbolo osservato dalla testina.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.74
L'importanza della MdT deriva dal fatto che permette di compiere tutte le elaborazioni effettuate mediante le macchine apparse nella storia dell'umanità e perfino le dimostrazioni matematiche che l'umanità ha raccolto nel corso della sua storia, diciamo a partire da Euclide.
Infatti, tutte le macchine che si conoscono possono essere ricondotte al modello estremamente semplice a macchine di Turing. Ad esempio, anche i più complessi computer odierni possono essere ricondotti a questo modello.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.75
Innanzitutto, si individuano macchine relativamente semplici che effettuino le operazioni aritmetiche di base;
Quindi, si individuano versioni della MdT più ricche di risorse, che consentano di descrivere più agevolmente operazioni via via più complesse, ma tutte riconducibili a numeri naturali;
Proseguendo in questa direzione, si introducono MdT dotate di memorie complesse, come sequenze di nastri e memorie bidimensionali e tridimensionali.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.76
ESECUTORI: MACCHINA di TURING
A questo punto si deve anche aggiungere che della MdT risulta opportuno anche considerare macchine formali che sono in grado di portare avanti contemporaneamente diverse elaborazioni, in numero illimitato.
Esse possono considerarsi idealizzazioni di sistemi di computer che operano in parallelo.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.77
ESECUTORI: MACCHINA di TURING
Con questo ragionamento si ottengono macchine formali che, in linea di principio, si possono ricondurre alla MdT introdotta inizialmente, ma che possono essere programmate molto più agevolmente, e soprattutto che possono essere realizzate con le tecnologie disponibili oggi.
Dimostrare che una di queste macchine può risolvere un certo problema vuol dire dimostrare che anche la MdT può risolverlo. La conclusione è che tutte le computazioni effettuabili dalle macchine a noi note sono effettuabili anche dalla MdT.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.78
ESECUTORI: MACCHINA di TURING
Una macchina che permetta di risolvere tutti i problemi risolvibili anche dalla MdT si dice "Turing-Equivalente".
La conclusione è che tutte le computazioni effettuabili dalla MdT sono effettuabili anche da tutte le macchine di cui si è in grado di dimostrare l'equivalenza con la MdT.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.79
Anche se la lunghezza del nastro è illimitata, il numero di simboli importanti in ogni istante della computazione risulta essere finito.
Questo deriva dal fatto che i dati in ingresso devono essere in quantità finita, in quanto un algoritmo non ha la possibilità di effettuare delle elaborazioni su una quantità infinita in ingresso.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.80
ESECUTORI: MACCHINA di TURINGTutte queste considerazioni rendono ragionevole sostenere la congettura di Turing.
Esse riguardano la calcolabilità degli algoritmi, e non la loro trattabilità: macchine equivalenti sono realizzate in modo diverso, e quindi possono eseguire la stessa computazione con un diverso numero di passi o dispendio di risorse.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.81
Ad esempio, un calcolo che un odierno computer esegue in pochi secondi richiederebbe un numero enorme di passi se eseguito su un meccanismo dotato di dispositivi operativi estremamente semplici come quelli della MdT.
In sintesi, macchine diverse possono risolvere gli stessi problemi con programmi che hanno una diversa complessità computazionale.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.82
Come per gli Automi a Stati Finiti o, il lambda
calcolo o λ-calcolo, una MdT ha associati un
numero finito di stati: in base allo stato e al
simbolo che si trova sotto la testina in un certo
istante del calcolo, la MdT decide se e con quale
simbolo sostituire il simbolo letto, in quale
direzione muovere la testina (a destra oppure a
sinistra) e in quale nuovo stato passare.
ESECUTORI: MACCHINA di TURING
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.83
Linguaggi di programmazione
I linguaggi di programmazione sono alla base dell’Informatica, perché consentono di generare il software,
sia quello di base (Sistemi Operativi), sia quello applicativo utilizzato nei vari aspetti dell’elaborazione di dati,
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.84
come ad esempio: operazioni eseguite da un programma, sequenze di passi eseguiti da una macchina per l’automazione di processi produttivi, controlli e protocolli di telecomunicazione, le interfacce utente, raccolta di dati da Internet, ecc.
Linguaggi di programmazione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.85
I linguaggi di programmazione occupano una posizione intermedia tra il linguaggio naturale (tipicamente inglese), comprensibile dalle persone, e quello binario (composto da sequenze delle sole cifre 0 e 1), comprensibili solo dal computer, l'unico linguaggio che pilota direttamente le unità fisiche dell'elaboratore (memoria centrale e cpu).
Linguaggi di programmazione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.86
Qualsiasi linguaggio di programmazione , si compone di parole e di regole;
• le prime generate da un dato alfabeto o simboli secondo un metodo prefissato,
• le seconde costituiscono la portante grammaticale e sintattica del linguaggio che consente di aggregare le parole per formare frasi di senso compiuto, cioè frasi ammissibili in quel particolare linguaggio.
Linguaggi di programmazione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.87
Grammatiche di ChomskyOgni linguaggio di programmazione è costituito da
• un suo proprio alfabeto,
• da una propria grammatica,
• da una propria sintassi e
• da una propria semantica.
La sintassi riguarda l’insieme di regole che devono essere rispettate per scrivere programmi corretti.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.88
La costruzione delle stringhe di caratteri avviene secondo una metodologia che, in informatica è nota con il nome “Grammatiche formali”.
Una grammatica formale (come introdotta da Chomsky) è un sistema che comprende:
• variabili terminali,
• variabili,
• un insieme di regole di produzione e
• un insieme di assiomi.
Grammatiche di Chomsky
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.89
La grammatica permette di operare su stringhe di simboli attraverso le regole di produzione che fanno passare da una stringa ad un’altra a partire dagli assiomi.
Il linguaggio generato dalla grammatica è l’insieme di stringhe composte solo da variabili terminali che si possono ottenere a partire dagli assiomi operando con le regole di produzione.
Grammatiche di Chomsky
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.91
• Queste due modalità devono essere paragonate in termini di interattività, velocità di attivazione (quella iniziale) e velocità di esecuzione.
• INTERATTIVITA’• VELOCITA’ DI ATTIVAZIONE• VELOCITA’ DI ESECUZIONE• INTERPRETE (traduce ed esegue frase per frase)• COMPILATORE (traduce tutto il discorso)
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.92
Il BASIC nasce come interprete. Nelle sue evoluzioni conserva la struttura di interprete, ma allo stesso tempo offre oggi anche la modalità compilatore (MS-QUICKBASIC).
Alla categoria degli interpreti appartengono i servizi di sistema capaci di interpretare a run-time i cosiddetti script (macro istruzioni capaci di indirizzare il funzionamento di parti di software, ad esempio i Java-script).
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.93
Il PASCAL e il FORTRAN sono invece compilatori. La funzione “DEBUG” permette di interagire per cercare gli errori
sparsi (trasforma il programma in una sorta d’interprete durante l’esecuzione).
Si può compilare un programma scritto in PASCAL o FORTRAN appendendolo al DEBUG. Quando si trova l’errore però si deve tornare nel programma sorgente, correggere e poi ricompilare. Con questo tipo di funzione DEBUG attivato si perde in velocità di esecuzione.
Le funzioni DEBUG sono poco intuitive in quanto sono incapsulate dentro il programma eseguibile.
Esistono vari tipi di linguaggi: - Assemblatori [ASSEMBLER]- Procedurali- Non procedurali
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.94
1) I linguaggi Assemblatori sono capaci di rappresentare degli “mnemonici”, a cui poi si può associare una parola, che verrà tradotta in linguaggio macchina. Sono dei traduttori “uno a uno” del linguaggio macchina. Sono dei linguaggi che vengono adattati ai computer a seconda della loro architettura.
Gran parte del Sistema Operativo è scritto in ASSSEMBLER.
2) Esistono diversi linguaggi procedurali, o "imperativi", che sono linguaggi attraverso i quali si devono specificare esattamente la sequenza di azioni da eseguire per svolgere una determinata azione. Questi sono i più usati ancora oggi, quali:
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.95
Linguaggi e modalità di esecuzione- BASIC => Beginner's All-purpose Symbolic Instruction Code, esiste laversione QUICK che è più veloce e più avanzata; nella versione Visual-
Basic è in grado di manipolare oggetti.
- FORTRAN => FORmulas TRANslator, versioni (II), V e VI, ANSIXX (con XX si indica l’anno di rilascio). Questo tipo di linguaggio è particolarmente adatto per tradurre le formule matematiche;
- ALGOL => ALGOrithmic Language, è un linguaggio ormai poco usato. Questo tipo di linguaggio è noto per descrivere con la massima facilità gli algoritmi (ALGORITMO: descrizione procedurale che permette di arrivare alla soluzione del problema);
- PASCAL => è una forma avanzata dell’ALGOL, adatto per la programmazione strutturata.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.96
- C/C++ => è un linguaggio formale che assomiglia molto al PASCAL, ma che anche permette
un controllo della macchina come se fosse in parte un assembler. E’ meno leggibile del
PASCAL. Gli oggetti sono dei moduli software che permettono un più rapido e sicuro
sviluppo (scrittura) di programmi riutilizzando dei “pezzi”, dei moduli, già scritti e provati
diffusamente. Tali moduli vengono visti ed utilizzati come “scatole chiuse” delle quali è
fornita la descrizione in termini di proprietà (informazioni di configurazione incapsulate
dentro l’oggetto, accessibili solo tramite operazione controllate dall’oggetto stesso) e metodi
(azione che l’oggetto può svolgere se sollecitato dal programma o in risposta ad eventi
predefiniti). considerato un linguaggio da professionisti; la versione C++(o Visual-C)
è in grado di manipolare oggetti;
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.97
- Java => è un linguaggio proposto dalla Sun-Microsystems negli ultimi anni per applicazioni di rete; sintatticamente è simile al C++ (con alcune restrizioni); la forza del linguaggio è quella di non compilare il risultato in linguaggio macchina, ma piuttosto in un byte-code intermedio, che è in grado di essere eseguito in varie macchine e sistemi operativi, permettendo la scrittura di applicazioni platform independent e intrinsecamente virus free, a patto che su ogni piattaforma esista la macchina virtuale (un interprete del byte code) Java e che questa si comporti nello stesso modo su ogni altra piattaforma. Il byte code è anche libero da virus (virus free) per definizione, dato che non è eseguibile, ma deve essere interpretato dalla macchina
virtuale, che non accetta operazioni di sistema illegali.
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.98
- Perl un linguaggio “vecchio” di soli pochi anni, nato nel 1987 con l’obiettivo di essere facile ed aperto, distribuito gratuitamente in forma di software aperto, particolarmente adatto a integrare applicazioni Internet e altri linguaggi.
- COBOL=> Common Business Oriented Language, questo linguaggio è stato concepito per descrivere le risoluzioni di problemi di ordinamento e è un linguaggio più gestionale che scientifico; si utilizza ancora per la manutenzione dei sistemi legacyi42.
3) I linguaggi non procedurali, o "non imperativi", permettono l'esecuzione di azioni specificando il risultato da ottenere piuttosto che i passi mediante i quali ottenerlo. Si utilizzano specialmente nel campo dell’Intelligenza Artificiale (AI) e dei Sistemi Esperti (ES), come pure nel campo dei DATA BASE.
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.99
- LISP=> LISt Processor, primo linguaggio "non imperativo", in grado di trattare liste di qualsiasi natura, numeri compresi.
Un programma lisp è un insieme di funzioni matematiche composte fra loro in modo che ciascuna di esse ricavi i propri dati da quella precedente.
Il LISP possiede una sintassi semplice e uniforme che lo rende ideale per manipolare informazioni e confrontare problemi.
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.100
- PROLOG=> PROgramming in LOGic, "Programmare in logica" vuole dire non specificare le operazioni da eseguire per risolvere i problemi proposti, in quanto le procedure risolutive vengono svolte automaticamente dal computer.
I programmi adottano una tecnica di ricerca inversa (backtracking): il PROLOG cerca la soluzione in base a una serie di regole concatenate, ponendosi di volta involta un nuovo obiettivo da raggiungere
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.101
Si definiscono legacy quei sistemi software, sviluppati e messi a punto nel corso di decenni (come le applicazioni bancarie, di sicurezza militare, etc.), che hanno raggiunto un elevato grado di affidabilità e per i quali è troppo “rischioso” (magari sbaglierebbero i conti in qualche caso particolare con enormi danni economici) un rifacimento con tecniche e linguaggi moderni.
Linguaggi e modalità di esecuzione
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.102
- HTML=> Hyper Text Mark-up45 Language, definito attraverso il Metalinguaggio SGML (Standard General Mark-up Language), usato per la definizione di ipertesti che sfruttano le risorse di rete (internet).
- XHTML=> eXtensible (eXtensive) HTML, è un’estensione dell’HTML definita attraverso il metalinguaggio XML (extensible Mark-up Language, sottoinsieme del SGML), con la quale si struttura il documento per una sua più agevole esplorazione.
- VRML=> Virtual Reality Modeling Language, permette la creazione diipertesti (pagine web) tridimensionali.- J-script=> Java script, per l’esecuzione di applet (oggetti programma) Java
all’interno di un browser, in modo da animare la pagina web, assumendone un controllo profondo con l’HTML.
- ActiveX=> Alternativa Microsft alla tecnologia Java e Java script (di Sun- Microsystems).
- PHP Hypertext PreProcessor, è un linguaggi di script, operante dal lato server (in modo da non rivelare il codice ai client). Offre agli sviluppatori di applicazioni web un insieme completo di strumenti per costruire siti dinamici.
- XML (extensible Mark-up Language) linguaggio semantico per il WEB.
Linguaggi di MARCATURA
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.103
LA RICORSIONE
In informatica viene detto algoritmo ricorsivo un algoritmo espresso in termini di se stesso,
ovvero in cui l'esecuzione dell'algoritmo su un insieme di dati comporta la semplificazione o suddivisione dell'insieme di dati e l'applicazione dello stesso algoritmo agli insiemi di dati semplificati.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.104
LA RICORSIONETale tecnica risulta particolarmente utile per eseguire
dei compiti ripetitivi su di un set di variabili in input.
L'algoritmo richiama se stesso generando una sequenza di chiamate
che ha termine al verificarsi di una condizione particolare che viene
chiamata condizione di terminazione, che in genere
si ha con particolari valori di input.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.105
LA RICORSIONETale tecnica risulta particolarmente utile per eseguire
dei compiti ripetitivi su di un set di variabili in input.
L'algoritmo richiama se stesso generando una sequenza di chiamate
che ha termine al verificarsi di una condizione particolare che viene
chiamata condizione di terminazione, che in genere
si ha con particolari valori di input.
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.106
Quando l'algoritmo viene eseguito la prima volta, il valore di n viene confrontato con 0 e con 1, nel caso in cui il valore sia diverso, la procedura viene chiamata ricorsivamente su valori più piccoli sino a quando n non risulta uguale ad 1, nel qual caso il risultato è noto e può essere restituito dalla funzione attuale a quella che l'aveva in precedenza chiamata.
I risultati restituiti da ognuna delle procedure ricorsive vengono di volta in volta moltiplicati. Il penultimo valore restituito sarà proprio uguale ad (n-1)!, quest'ultimo verrà moltiplicato per n e l'algoritmo potrà restituire il risultato cercato.
LA RICORSIONE
Possibile classificazione dei linguaggi di programmazioneSe è vero che tutti i linguaggi di programmazione sono costituiti da un lessico, una sintassi ed una semantica, è altrettanto vero che questi tre elementi non sono sufficienti a caratterizzarli, in quanto gli aspetti più significativi dei linguaggi di programmazione risiedono essenzialmente nel modello di calcolo a cui si ispiranoed al livello di qualità dei programmi che riescono a supportare.
Linguaggi
A.ScaringellaA.A. 14-15
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.107
La tradizionale classificazione di linguaggi di programmazione è la seguente:
• linguaggi imperativi,
• linguaggi funzionali,
• linguaggi dichiarativi.
Linguaggi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.108
Esistono infatti linguaggi imperativi orientati agli oggetti, linguaggi funzionali orientati agli oggetti e linguaggi logico/dichiarativi orientati agli oggetti.
Per questi motivi, nel seguito si illustreranno le caratteristiche fondamentali dei linguaggi di programmazione prendendo a riferimento l’orientamento agli oggetti e facendo riferimento, quando ne sarà necessario, al linguaggio Java.
Il paradigma object_oriented programming è basato su due concetti fondamentali: i tipi astratti di dato ed i meccanismi di ereditarietà.
Linguaggi
A.ScaringellaA.A. 14-15
INFORMATICA E TECNOLOGIE DELLA INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE DIGITALECOMUNICAZIONE DIGITALE
pag.109