def (ACM) L informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione. dati DIFFUSIONE APPLICAZIONI INFORMATICHE - in quasi tutte le attività occorre gestire qualche genere di informazione - l elaborazione dell informazione avviene in maniera sistematica e rigorosa, e pertanto può essere automatizzata - l informazione viene codificata in numeri 12/12/2003 25
Un sistema è una unità formata da un insieme di elementi tra loro interagenti che, al verificarsi di un dato evento (input) proveniente dall ambiente esterno, produce una risposta (output) definita. Tale risposta dipende anche dallo stato in cui si trova il sistema in quell istante, infatti il sistema è dotato di memoria e la sua storia è conservata nel suo stato. 12/12/2003 26
La rappresentazione di un sistema o di un processo avviene tramite l elaborazione di un modello: schema teorico elaborato in molte discipline per rappresentare gli elementi fondamentali di fenomeni o enti. Esempio di modelli: -modelli simbolici o matematici: danno una rappresentazione astratta della realtà cui si riferiscono, mediante un insieme di equazioni e/o disequazioni che legano le grandezze coinvolte - modelli analogici: danno una rappresentazione fedele della realtà, tipici sono i modelli in scala ridotta, che riproducono qualitativamente un sistema pur riducendone proporzionalmente 12/12/2003 27
Un automa è un sistema dinamico, invariante, discreto nell avanzamento e nelle interazioni. -dinamico: -invariante: evolve nel tempo passando da uno stato all altro in funzione dei segnali d ingresso e dello stato precedente; a parità di condizioni iniziali il comportamento del sistema è sempre lo stesso; - discreto: le variabili d ingresso, di stato, d uscita, possono assumere solo valori discreti. In termini formali si definisce automa a stati finiti un sistema A = {I, U, S, f, g }, dove I = {i 1, i 2, i n } insieme finito dei possibili ingressi U = {u 1, u 2,, u m } insieme finito delle possibili uscite S = {s 1, s 2,, s h } insieme finito degli stati f = I S U funzione delle uscite, che collega l uscita al valore attuale dell ingresso e dello stato, u t =f (s t, i t ) g = I S S funzione di transizione degli stati interni successivi, che collega lo stato nell istante successivo al valore attuale dell ingresso e dello stato, s t+1 =g(s t, i t ) 12/12/2003 28
Le funzioni f (delle uscite) e g (di transizione allo stato successivo) possono essere rappresentate mediante: 1. Tabelle di transizione, tabelle a doppia entrata in cui il numero delle righe è pari al numero degli stati e quello delle colonne è pari al numero degli ingressi. 2. Grafi di transizione, costituiti da cerchi (nodi) in numero pari agli stati, da ciascuno dei quali partono tanti archi quanti sono gli ingressi. Se le uscite sono riportate sugli archi sotto gli ingressi si dice automa di Mealy, se le uscite sono riportate all interno dei nodi sotto lo stato si dice automa di Moore. 12/12/2003 29
Esempio: ascensore Un ascensore di un palazzo a due piani accetta la richiesta del piano di destinazione (terra, 1, 2) e restituisce lo spostamento desiderato (su, giù, fermo). Si tratta di un automa in cui: S={Pt, 1P, 2P}, Pt= p. terra, 1P= p. primo, 2P= p. secondo; I={T, 1, 2} possibilità offerte dalla pulsantiera; U={Su, Giù, Fermo} spostamenti dell ascensore. Tabella di transizione relativa all automa dell esempio: 12/12/2003 30
Grafo di Moore relativo all ascensore 12/12/2003 31
Macchina astratta di Turing testina cella nastro a k x i a r L X P Memoria interna x j P t 12/12/2003 32
La macchina di Turing è costituita da un nastro illimitato, suddiviso in celle; In ciascuna cella può essere memorizzato uno dei simboli di un alfabeto esterno finito {a 0,a 1,a 2, a 3, a 4,..., a N } che comprende un particolare simbolo a 0, da considerarsi come carattere bianco. Una testina può leggere il contenuto di una cella alla volta; La testina può anche scrivere nella cella corrente uno dei simboli dell alfabeto, sostituendolo ad ogni eventuale simbolo preesistente; Un meccanismo di posizionamento permette alla testina di spostarsi: (D) alla destra di quella attuale, (S) alla sinistra di quella attuale, (F) Rimanere ferma su quella attuale. 12/12/2003 33
La macchina può trovarsi in uno degli stati appartenenti ad un insieme finito {x 1,x 2, x 3, x 4,..., x m } La memoria interna è costituita da due elementi (X) e (P): (X) memorizza lo stato in cui la macchina viene a trovarsi, (P) memorizza la posizione della testina, e riconosce i simboli D, S, F, x 1, x 2, x 3, x 4,..., x m La memoria esterna è costituita dal nastro e il contenuto varia continuamente. 12/12/2003 34
Unità logica (L) a due ingressi: 1. Il simbolo a k letto sulla cella in osservazione; 2. Lo stato x i prelevato dalla memoria (X); e tre uscite 1. Il simbolo a r da scrivere sulla cella in osservazione; 2. Lo stato x j al quale portare la macchina; 3. Il posizionamento p t {D, S, F} della testina 12/12/2003 35
Per il funzionamento della macchina occorre conoscere per una coppia (il simbolo a k letto; lo stato x i della macchina) la tripla (il simbolo da scrivere a r ; Il posizionamento p t ;lo stato x j ) In sostanza le informazioni ( p t ; x j ) forniscono le informazioni necessarie ad individuare cosa deve fare la macchina nel passo successivo, cioe l istruzione da eseguire. 12/12/2003 36
La successione delle istruzioni, cioe il programma, puo essere rappresentata mediante una matrice di transizione costituita da tante righe quanti sono i simboli dell alfabeto e da tante colonne quanti sono gli stati. a 0 a 1 x 1 x 2 x i x m Alla coppia ( a k ; x i ) a k a r p t x j vengono assegnati: il carattere da scrivere, il posizionamento successivo della testina, lo stato successivo della macchina) a N 12/12/2003 37
Assegnata una qualsiasi coppia di valori di verità, calcolare la funzione logica e AND. Alfabeto esterno: Stati: B carattere bianco, per indicare una cella vuota; 0 carattere con cui viene indicato lo stato logico falso; 1 carattere con cui viene indicato lo stato logico vero; * carattere per individuare la cella in cui andrà memorizzato il risultato. x 0 stato iniziale. La testina è posizionata alla sinistra delle tre celle consecutive contenenti i dati. x A è uno stato in cui l ultimo carattere letto e 0 x B è uno stato in cui l ultimo carattere letto e 1 x C è uno stato in cui siano stati lette le coppie (0,0) o (0,1) o (1,0); x D è uno stato in cui sia stata letta la coppia di caratteri (1,1); 12/12/2003 38 A stato di arresto dell elaborazione.
ALGORITMO Se lo stato è x 0 e viene letto il carattere B allora lascia nella cella il carattere B, resta nello stato x 0, spostati di una cella a destra: istruzione (x 0,B, B,x 0,D) (1) Se viene letto il carattere 0 allora lascia nella cella il carattere 0, passa allo stato x A, spostati di una cella a destra: istruzione (x 0,0, 0,x A,D) (2) Se viene letto il carattere 1 allora lascia nella cella il carattere 1, passa allo stato x B, spostati di una cella a destra: istruzione (x 0,1, 1,x B,D) (3) Se i dati del prolema portano all esecuzione della (2), avremo che qualunque sia il carattere successivo letto, il sistema dovra passare allo stato x c : istruzione (x A,0, 0,x C,D) (4) istruzione (x A,1, 1,x C,D) (5) (6) Istruzione (x B,0, 0,x C,D) (7) Istruzione (x B,1, 1,x D,D) 12/12/2003 39 (8) Istruzione (x C,*, 0,A,D) (9) Istruzione (x D,*, 1,A,D)
Se i dati del problema conducono all esecuzione della (3), si dovra eseguire una delle due istruzioni: istruzione (x B,0, 0,x C,D) (6) istruzione (x B,1, 1,x D,D) (7) A questo punto la testina incontrera il carattere * che andra sostituito con il carattere 0 se il sistema si trova nello stato x C o con il carattere 1 se il sistema si trova nello stato x C : istruzione (x C,*, 0,A,D) (8) istruzione (x D,*, 1,A,D) (9) Un ultima istruzione e necessaria per fermare l elaborazione. istruzione (A,B, B,A,F) (10) 12/12/2003 40
Matrice di transizione: x 0 x A x B x C x D A B B x 0 D B A F 0 0 x A D 0 x C D 0 x C D 1 1 x B D 1 x C D 1 x D D * 0 A D 1 A D 0/0/D x A 0/0/D 1/1/D x C */0/D B/B/F x 0 0/0/D A 1/1/D x B 1/1/D x D */1/D 12/12/2003 41
Informatica? 1996 ACM dieci aree disciplinari dell informatica: 1. Algoritmi e strutture dati 6. Grafica computerizzata 2. Architettura dei calcolatori 7. Interazione uomo-calcolatore 3. Intelligenza artificiale e 8. Sistemi operativi e reti robotica 9. Linguaggi di programmazione 4. Scienze computazionali 10. Ingegneria del software 5. Basi di dati e sistemi per il ritrovamento dell informazione 12/12/2003 42
ARCHITETTURA DI Von NEUMANN Bus di sistema CPU Memoria I/O I/O I/O esecutore di algoritmi contenitore di informazioni 12/12/2003 43
CPU Memoria principale Unità di controllo Unità aritmeticologica Registri generali R0 R1 Contatore di programma Registro di stato Rn 12/12/2003 44
0 Memoria centrale indirizzo byte 7 6 5 4 3 2 1 0 n-1 1 bit di informazione: 0 1 parole di 1, 2, 4 e 8 byte 12/12/2003 45
Problema Un problema consta dei seguenti elementi: situazione che pone delle domande cui si devono dare risposte. Risolvere il problema vuol dire uscire da tale situazione I dati, ossia ciò che è noto, che indichiamo col termine input. I risultati, ossia ciò che si deve determinare, che indichiamo col termine output. Le condizioni, che sono in generale le limitazioni cui devono soggiacere i risultati. 12/12/2003 46
analisi di un problema interpretare il problema definendo gli obiettivi; individuare i dati del problema, costruire un modello (rappresentazione della realtà privata degli aspetti superflui), individuare le risorse dell esecutore; descrivere il procedimento risolutivo individuando le operazioni da compiere sui dati iniziali per ottenere i risultati finali; eseguire nell ordine le operazioni descritte nel processo risolutivo; verificare se i risultati ottenuti rispondono alle finalità del problema. 12/12/2003 47
a Methodology for Algorihmic Problem Solving (MAPS) Passo 1. Analizzare il problema e sviluppare le specifiche Passo 2. Progettare una soluzione - decomposizione (progettazione top-down) - astrazioni Passo 3. codifica e documentazione Passo 4. testing (in parallelo a passo 3) Passo 5. validazione 12/12/2003 48
Analisi di un problema 12/12/2003 49
problema analisi soluzione informale formalizzazione algoritmo programmazione programma (alto livello) esecutore del linguaggio alto livello traduzione soluzione esecutore del linguaggio macchina esecuzione (HW) programma (linguaggio macchina) 12/12/2003 50
L analisi di un problema, ossia la definizione dell obiettivo da raggiungere, può essere realizzata attraverso processi di affinamento successivo. Si tratta di scomporre un problema complesso in sottoproblemi più semplici, utilizzando la tecnica del topdown: - il problema viene esaminato nelle direttrici generali; - scomposto in sottoproblemi; - di ciascun sottoproblema si determinano le operazioni specifiche; - esso viene scomposto in ulteriori sotto-sottoproblemi, fino a giungere alle operazioni elementari. Tecnica del top-down 12/12/2003 51
Un algoritmo deve avere cinque caratteristiche: Effettivita : deve essere basato su regole effettive cioe certamente eseguibili in un tempo finito. Finitezza: Definitezza: Ingresso: Uscita: deve essere realizzato in un numero finito di passi; ad ogni passo e definita senza ambiguita la successiva regola da applicare; opera a partire da dati in ingresso; produce dati in uscita. 12/12/2003 52
Programmare una semplice macchina ATM Passo 1. Analizzare il problema e sviluppare le specifiche Input: password, tipo transazione, importo della transazione... Output: messaggi di errore, saldo, contante. Specifiche di input: password N, tipo={prelievo, deposito} importo R Specifiche di output: ((password<=0 OR password>=100000) AND codice errato ) OR (0<password< 100000 AND tipo=deposito AND z R) OR 12/12/2003 53
Passo 2. Progettare una soluzione algoritmo pseudocodice 1. Richiedere all utente la pw 2. Se la pw non è valida formulare un messaggio di errore e saltare al passo 6 3. Richiedere gli input 3.1 Richiedere all utente il tipo di transazione e l importo 3.2 Richiedere alla banca il saldo 4. Se tipo=deposito aggiungere l importo al saldo 5. Se tipo=prelievo controllare saldo 5.1 Se importo>saldo formulare un messaggio di errore e saltare al passo 6 5.2 Se importo<=saldo sottrarre importo a saldo 6. Dare il messaggio di errore o il contante e fornire il saldo 7. Chiedere all utente se desidera altra transazione (se SI ripetere da 3 a 6, se NO termina) 12/12/2003 54
Richiedere pw diagramma di flusso È corretta? si Dire tipo opz e importo no deposito deposito o prelievo? prelievo Aggiungere importo a saldo no importo < saldo? si Sottrarre importo da saldo Dare la risposta o messaggio di errore 12/12/2003 55
diagramma gerarchico Simulare una macchina ATM Richiedere gli input Elaborare tutti i calcoli Dare tutti gli output Diagramma gerarchico di primo livello di una macchina ATM 12/12/2003 56
Richiedere gli input Richiedere la pw Richiedere tipo trans. Richiedere importo Diagramma gerarchico di secondo livello per gli input di una macchina ATM 12/12/2003 57
Teorema fondamentale della programmazione strutturata di Jacopini - Böhm ogni algoritmo può essere codificato attenendosi esclusivamente a tre strutture fondamentali: Sequenza Iterazione scelta 12/12/2003 58
Istruzione 1 Istruzione 2 Sequenza Istruzione 3 Vero condizione Falso Selezione Diagrammi di Nassi-Shneiderman (1973) (per la programmazione strutturata) While condizione Ripetizione Istruzione 12/12/2003 59