Lezione 1 – A.A. 2016/2017 Prof. Giovanni Acampora Informatica Informatica - A.A. 2016-2017 Lezione 1 – A.A. 2016/2017 Prof. Giovanni Acampora
Introduzione al corso Informazioni generali e di supporto agli studenti Obiettivi del corso Definizioni generali Algoritmo Macchina di Turing Modello di Von Neumann Informatica - A.A. 2016-2017
Informazioni generali Studio Prof. Giovanni Acampora: 2G16 Telefono: 081676150 eMail: giovanni.acampora@fisica.unina.it Ricevimento: Lunedì dalle 16 alle 18 Informatica - A.A. 2016-2017
Testi consigliati G.M. Schneider, J.L. Gersting, “Informatica”, Apogeo P. Tosoratti, “Introduzione all’Informatica”, Casa Editrice Ambrosiana Al Kelley, Ira Pohl, “C: Didattica e Programmazione,” Addison-wesley L.M. Barone, E. Marinari, G. Organtini, F. Ricci-Tersenghi, “Programmazione Scientifica,” Pearson Education Informatica - A.A. 2016-2017
Modalità di esame Prova Pratica: Prova Orale Durata 3 ore Sviluppo di un algoritmo e implementazione in Linguaggio C/C++ Prova Orale Informatica - A.A. 2016-2017
Premessa Il corso non presuppone conoscenze informatiche Corso di Informatica per futuri fisici Introduzione all’Informatica Concetti generali Architetture per il calcolo automatico Programmazione in linguaggio C/C++ Metodologie di Calcolo Numerico: ricerca di algoritmi per la risoluzione di problemi quali l’approssimazione di funzioni e l’integrazione di equazioni differenziali ordinarie o alle derivate parziali. Indispensabile seguire le lezioni pratiche in laboratorio. Informatica - A.A. 2016-2017
Informatica per i fisici… Analisi dei dati Simulazione di apparati e sistemi fisici complessi Controllo di apparecchiature di laboratorio Calcoli matematici complessi, sia numerici che simbolici Calcolo parallelo In tutti i settori della fisica teorica e sperimentale: subnucleare, nucleare, della materia, astrofisica, geofisica, biomedica, elettronica… Informatica - A.A. 2016-2017
Informatica per i fisici… Informatica - A.A. 2016-2017
Informatica per i fisici… Informatica - A.A. 2016-2017
Obiettivi del corso Essere a conoscenza degli aspetti fondamentali dell’Informatica e della struttura dei calcolatori Essere in grado di utilizzare un calcolatore in ambiente Unix/Linux Essere in grado di progettare un algoritmo per risolvere un semplice problema e di implementarlo in un programma in linguaggio C/C++ Informatica - A.A. 2016-2017
Cos’è l’Informatica? Falso ! Falso ! Falso ! L’Informatica è la scienza dei calcolatori L’Informatica è la scienza della programmazione L’Informatica è la scienza di Internet Falso ! Falso ! Informatica - A.A. 2016-2017
Cos’è l’Informatica L’informatica è la scienza della rappresentazione e della elaborazione dell’informazione In particolare, l’informatica si occupa dello studio e della realizzazione di algoritmi: delle loro proprietà formali e matematiche delle loro analisi qualitativa delle loro implementazione delle loro applicazioni Informatica - A.A. 2016-2017
Definizione di algoritmo Un insieme ordinato e finito di passi computazionali non ambigui che, applicati ad un insieme di condizioni iniziali, produce un risultato e termina in una quantità di tempo finita. Informatica - A.A. 2016-2017
Esempio di algoritmo La somma dei primi 100 numeri interi: Poni somma = 0 Poni indice = 1 Finché indice è minore di 100 ripeti i passi 4. e 5. Aggiungi indice a somma Incrementa indice di 1 Stampa somma Fermati Informatica - A.A. 2016-2017
Viviamo usando algoritmi Ricette di cucina Sequenza di operazioni per registrare un film Sequenza di operazioni per montare un mobile IKEA Sequenza di operazioni per moltiplicare due numeri … Informatica - A.A. 2016-2017
Proprietà formali e matematiche degli algoritmi La prima proprietà è ovviamente la correttezza Ma ha una fondamentale importanza anche l’efficienza, che si misura rispetto alla risorsa spazio e rispetto alla risorsa tempo Informatica - A.A. 2016-2017
Progettare un algoritmo La ricerca del giusto algoritmo per la soluzione di un dato problema è la parte più creativa del lavoro di un informatico. Ogni algoritmo può essere scomposto in tre tipi fondamentali di operazioni: Operazioni sequenziali Operazioni condizionali Operazioni iterative Informatica - A.A. 2016-2017
Cos’è un programma? Un programma è la codifica di un algoritmo in un linguaggio comprensibile all’esecutore L’algoritmo è una rappresentazione astratta della soluzione di un problema, il programma è l’espressione concreta dell’ algoritmo Informatica - A.A. 2016-2017
Pseudocodice Lo pseucodice consente la rappresentazione di un algoritmo in linguaggio intermedio, non comprensibile dall’esecutore, ma più formale del linguaggio naturale Gli esempi di algoritmo finora presentati sono basati sulla rappresentazione in pseudocodice Notate che: tutte le linee contengono un verbo specifico (azione) i passi sono numerati in modo tale che per ogni riga viene eseguita una sola azione se la linea richiede due passi viene suddivisa in linee successive identate Informatica - A.A. 2016-2017
Esempio Poni y = 0. Leggi x. Poni I = 0. Poni y = y + x. Scrivi y. Start Leggi x y y + x I I + 1 End Poni y = 0. Leggi x. Poni I = 0. Poni y = y + x. Scrivi y. Poni I = I + 1. Se I < 10 vai al passo 4. Altrimenti prosegui Fine Informatica - A.A. 2016-2017
Automatizzare l’esecuzione di un algoritmo L’obiettivo è la costruzione di uno o piu’ mezzi di calcolo in grado di eseguire “operazioni primitive e non ambigue” (ovvero, non scomponibili e effettivamente calcolabili) . Un mezzo di calcolo che esegue operazioni primitive permette di automatizzare una soluzione di un problema espressa da un algoritmo. La soluzione di un problema espressa da un algoritmo costituito da sequenze di operazioni primitive puo’ essere automatizzata Programma: la realizzazione di uno o piu’ algoritmi mediante sequenze di operazioni primitive comprensibili all’esecutore Informatica - A.A. 2016-2017
Macchina di Turing Una macchina di Turing è una macchina ideale che manipola i dati contenuti su un nastro di lunghezza potenzialmente infinita, secondo un insieme prefissato di regole ben definite. È un modello teorico di fondamentale importanza in quanto permette di compiere tutte le elaborazioni che oggi si eseguono con le tecnologie più avanzate e gli odierni computer. Tesi di Church-Turing Se un problema può essere ridotto in una serie finita di passi elementari, allora esisterà una macchina di Turing in grado di risolverlo. Informatica - A.A. 2016-2017
Macchina di Turing Informatica - A.A. 2016-2017
Strumenti di calcolo Pre-Turing I primi mezzi automatici di calcolo compaiono nel XVII secolo ad opera di Pascal e Leibniz. Funzionano sulla base di ruote dentate. La Pascalina La macchina di Leibniz Informatica - A.A. 2016-2017
Strumenti di Calcolo Pre-Turing Il primo programma Ma la prima macchina a disporre di un vero programma è il telaio di Jacquard costruito nel 1804 : il disegno della trama viene inserito tramite schede perforate e realizzato automaticamente dalla macchina. Museo della Seta, S.Leucio (CE) Informatica - A.A. 2016-2017
Strumenti di Calcolo Pre-Turing Il primo calcolatore Il primo progetto di un calcolatore vero e proprio, capace di eseguire programmi, si deve a Charles Babbage (1830) L’Analytic Engine sfruttava le schede perforate di Jacquard, e una sofisticatissima tecnica meccanica già utilizzata nella precedente Difference Engine. Informatica - A.A. 2016-2017
Strumenti di Calcolo Il Calcolatore Elettronico Motivati principalmente da esigenze belliche i primi grandi calcolatori elettronici a valvole furono realizzati dalle maggiori potenze in conflitto nel corso degli anni 40. ENIAC: 18000 valvole 30 m lunghezza 30 tonnellate Informatica - A.A. 2016-2017
Strumenti di Calcolo Il Calcolatore Elettronico Il principale problema dei calcolatori fino agli anni ’40 era la fondamentale differenza fra il modo in cui venivano memorizzati i dati e quello in cui venivano realizzati i programmi, che non erano memorizzati, ma realizzati esternamente usando connessioni, fili etc. Fu il genio di Von Neumann che permise di progettare e realizzare, nel 1950, l’EDVAC, il primo calcolatore a programma memorizzato. L’EDVAC pesava 8 ton e aveva una memoria di 1024 parole… ma non era nella sostanza diverso dal computer usato per scrivere questa presentazione… Von Neumann realizzò una un modello implementativo del modello teorico di Turing Informatica - A.A. 2016-2017
Strumenti di Calcolo Il modello di Von Neumann Lo schema della macchina di Von Neumann, modello sul quale si basano praticamente tutti i moderni computer è basato su quattro elementi fondamentali: La memoria Processore L’unità aritmetico logica (ALU) L’unità di controllo Le unità di Ingresso/Uscita (I/O) Informatica - A.A. 2016-2017
Strumenti di Calcolo Il modello di Von Neumann – La Memoria Informatica - A.A. 2016-2017
Strumenti di Calcolo Il modello di Von Neumann – Unità di I/O Dispositivi di interfaccia utente: tastiera, monitor, mouse… Dispositivi di comunicazione: porte e dispositivi ad esse connessi (stampanti, modem…) Dispositivi di memoria di massa: Hard disk, Floppy disk, CDROM, DVD Informatica - A.A. 2016-2017
Strumenti di Calcolo Il modello di Von Neumann – ALU Il cuore calcolante del computer: effettua un insieme finito e predeterminato di operazioni matematiche e logiche. Gli operandi vengono letti da registri in ingresso, e il risultato dell’operazione è scritto su un registro in uscita. Il registro di stato (SR) riporta il segno del risultato e la presenza di riporto o di una condizione di errore. Informatica - A.A. 2016-2017
Strumenti di Calcolo Il modello di Von Neumann – Control Unit Struttura di una istruzione in linguaggio macchina: Codice operativo – Indirizzo 1 – Indirizzo 2 Esempio: ADD X,Y (Y=X+Y) Ciclo di esecuzione di un programma: Instruction fetch Decodifica Esegui Informatica - A.A. 2016-2017
Strumenti di Calcolo Il modello di Von Neumann – Control Unit Informatica - A.A. 2016-2017
Riassumendo La struttura di Von Neumann permette di calcolare una sequenza di istruzioni opportunamente codificate e memorizzate e di controllare il flusso dell’esecuzione. La gestione dell’I/O è delegata a opportuni controllori per ottimizzare le prestazioni. La condizione chiave per la realizzazione del calcolatore è disporre di un sistema efficiente e affidabile di codifica dell’informazione, ovvero dei dati e delle istruzioni che devono essere via via eseguite. Informatica - A.A. 2016-2017