Nota: Queste slide sono frutto del lavoro di diverse persone. In particolare Luca Anselma e Roberto Esposito. Università degli Studi di Torino Corsi di Laurea in Farmacia e CTF Corso di Informatica a.a. 2014/2015 Docente: Ferruccio Damiani Presentazione del docente • Ferruccio Damiani • Professore Associato di Informatica (INF/01) presso il Dipartimento di Informatica • E-mail: [email protected] • Url: http://www.di.unito.it/~damiani/ • Ricevimento: – il mercoledì pomeriggio alle 15 in Aula D (al termine della lezione) – al Dip. di Informatica in via Pessinetto 12, I piano (davanti Osp. Amedeo di Savoia, autobus: 3, 9, 59), prendere un appuntamento via mail o via telefono. • Telefono ufficio: 011 6706719 Pagina web del corso http://www.di.unito.it/~damiani/DIDATTICA/IDB/teaching/teaching-1415.html Variazioni e avvisi comunicati sulle bacheche, sulla piattaforma di e-learning e sulla pagina web del corso Piattaforma di E-Learning URL: http://elearning.moodle2.unito.it/dstf/course/ CDLM FARMACIA (oppure CDLM CHIMICA E TECNOLOGIA FARMACEUTICHE) I anno Informatica • • • • • • Forum di discussione tra studenti Forum di discussione con il docente Sondaggi Materiale didattico Test di autovalutazione altro… Obiettivi del corso • Introdurre all’Informatica • Fornire strumenti – metodologici e – pratici per l’utilizzo del computer • Non è un corso ECDL (patente europea del computer) Perché l’enfasi sulla teoria? • Per non essere legati indissolubilmente a un tipo di computer (es. PC con Windows) • Per non essere legati a un tipo di programma (es. versione 2000 di Microsoft Word) • Se non si conoscono gli strumenti tecnologici, non se ne possono sfruttare le potenzialità • Il computer è versatile: non si possono prevedere gli usi futuri • Anche se voi non vi interesserete al(la teoria del)l’informatica, la teoria dell’informatica si interessera’ a voi. Si veda, ad esempio, il libro: Giorgio Ausiello, Rossella Petreschi. L'INFORMATICA INVISIBILE. COME GLI ALGORITMI REGOLANO LA NOSTRA VITA... E TUTTO IL RESTO. Parte teorica (1) • Introduzione (F+CTF) – breve storia delle macchine di calcolo – le applicazioni dell’informatica • Rappresentazione delle informazioni (F+CTF) – numeri, testo, immagini, suoni • Architettura dell’elaboratore (F) – – – – la CPU la memoria le unità periferiche la memoria secondaria Parte teorica (2) • Il software (F) – – – – – – caratteristiche programmi applicativi il sistema operativo (software di base) programmi di videoscrittura fogli elettronici basi di dati Parte teorica (3) • Comunicazione tra elaboratori (F+CTF) – le reti di calcolatori – il World Wide Web Nota: I contenuti del corso possono subire lievi modifiche. Controllare la pagina web. Laboratorio Informatico Il laboratorio di informatica è attualmente chiuso. Nel caso abbiate dubbi non esitate a contattare il docente via e-mail o a venire a ricevimento. Esame 1. Prova scritta su tutto il programma (foglio per correzione ottica) • È possibile sostenere al più due prove per sessione; • valida per la sessione corrente; • necessaria l’iscrizione. 2. Prova orale/pratica in laboratorio (un esercizio di utilizzo dei fogli di calcolo) • ammissione subordinata al superamento prova scritta Esame Se siete in possesso della patente europea del computer (ECDL FULL) non è necessario che sosteniate la prova pratica. Iscrivetevi all’esame sostenete la prova di teoria e (nel caso l’abbiate superata) presentatevi alla prova pratica muniti del certificato ECDL. Il superamento dell’esame sarà registrato immediatamente. Esame È un’esame facile? Alcune statistiche: •numero studenti: 1700 – 291(~17.1%) non hanno passato l’esame: • • • • 32(~1.9%) hanno provato teoria e pratica 93(~5.5%) non hanno provato ne’ teoria ne’ pratica 162 (~9.5%) hanno provato solo la teoria 4 (<1%) hanno provato solo la pratica (vecchie modalità) – 1409 (~82.9%) hanno superato l’esame • 212 (~12.4%) ECDL • 84 (~5%) hanno superato direttamente la pratica • 1115 (~65.6%) hanno superato l’esame completo Esame È un’esame facile? Prova di teoria Numero tentativi Percentuale 7 0.2% 6 0.2% 5 0.5% 4 1.4% 3 4.3% 2 16.5% 1 76.9% Esame È un’esame facile? Prova pratica Numero tentativi Percentuale 4 < 0.1% 3 0.3% 2 10.6% 1 88.9% Testo consigliato L. Console, M. Ribaudo, U.Avalle, F. Carmagnola, F. Cena, Introduzione all'informatica, UTET Libreria (quarta edizione) Altro materiale didattico • Slide mostrate a lezione • Esercizi simili a quelli richiesti per il superamento della prova pratica appariranno sulla pagina web del corso Fanno parte integrante del materiale d’esame ATTENZIONE! Queste slide sono solo una traccia delle lezioni Sono utili per fissare le idee e integrare i testi, ma sono incomplete e NON sostituiscono né il materiale consigliato, né le lezioni! “Sì, ma perché proprio a noi?” Perché un dottore in Farmacia o in Chimica e Tecnologia Farmaceutiche dovrebbe interessarsi di informatica? • Il computer è uno strumento di lavoro quotidiano per chi lavora (non solo in farmacia o in laboratorio). • Perché è fondamentale come supporto alla ricerca (come strumento per la modellazione delle molecole; per l’analisi statistica; per le ricerche bibliografiche; per la scrittura di testi). • Perché è utile indipendentemente dal tipo di studi che fate (per redigere la tesi di laurea, per reperire informazioni su internet, per comunicare con collaboratori ed amici, etc.). Frequently Asked Questions • “E’ necessario frequentare? Il programma è diverso?” Frequenza vivamente consigliata Stesso programma per frequentanti e non • “Posso fare una domanda sugli argomenti della lezione?” Sì! Strumenti Informatici Istituzionali L’università di Torino ha investito molto nella informatizzazione dei servizi. Dalla home-page dell’università, seguendo il link ‘Studente’, avrete una panoramica dei servizi offerti. Importante: la mail istituzionale è lo strumento principale di contatto con l’università. È vostro dovere consultarla regolarmente (tramite essa verrete informati di eventuali cambi d’orario, dell’avvenuta iscrizione ad un esame, ecc.). Se avete bisogno di contattare un docente dovete farlo utilizzando la mail istituzionale. In caso contrario non è assicurato che la mail venga ricevuta (ad es. potrebbe essere intercettata dai filtri anti-spam). Di cosa parliamo quando parliamo di Informatica • Informatica in inglese: – Information and Communication Technology: Informatica come tecnologia risvolti fisico-matematici e ingegneristici del calcolo automatico; teorie e tecniche di comunicazione – Computer Science: Informatica come scienza basata su modellizzazione, formalizzazione e verifica sperimentale (teoria degli automi, logica formale, teorie del linguaggio) “Computer Science is no more about computers than astronomy is about telescopes.” (E. Dijkstra) Breve Storia del calcolo automatico Il calcolo automatico Effettuare calcoli a mente o a “mano” è un’attività “costosa” (in termini di tempo e fatica) e incline all’errore. Per secoli l’uomo ha cercato di porre rimedio a questo fatto “automatizzando” il processo di calcolo. L’abaco È la prima “macchina” di calcolo nota. I primi abaci risalgono al V millennio a.C. L’abaco L’abaco aiuta l’utente principalmente come strumento per tenere traccia di quanto già fatto. La logica e la correttezza dell’operazione dipendono interamente dall’utente La Pascalina Bisogna aspettare fino al XVII secolo d.C. per avere la prima vera innovazione rispetto all’abaco. La Pascalina La pascalina é il primo grande passo avanti: la logica dell’operazione é controllata dalla macchina. Problema La pascalina permetteva di effettuare “solo” addizioni e sottrazioni. Moltiplicazioni, divisioni potevano essere effettuate mediante ripetizioni di addizioni e sottrazioni, ma era di nuovo l’utente a dovere controllare il processo. Alcune osservazioni • • • • • Considerate la tabellina della somma. E’ facile rendersi conto che e’ possibile insegnare ad una persona che non conosce i numeri arabi (ad esempio un bambino di 10 anni che non e’ mai andato a scuola e non conosce la scrittura e il concetto di numero) a fare l’operazione di somma usando la tabellina, anche se lui non conosce il significato dei simboli. Questa persona (e)seguirebbe il procedimento in modo automatico, come gli ingranaggi della Pascalina. Provate a fare la divisione 45732186543217698432547 : 3 usando il procedimento che avete imparato alle scuole elementari. Quanti secondi ci avete messo? Avete capito il significato del procedimento che avete adoperato (perche’ facendo in quel modo si calcola veramente la divisione)? Pensate ora di dover fare la divisione di cui sopra procedendo per sottrazioni successive. Quanto tempo ci mettereste, supponendo di lavorarci per 8 ore al giorno? Il poter usare la Pascalina per fare le sottrazioni sarebbe di aiuto? Considerate la funzione 2n. Supponete mettere sulla prima casella di una scacchiera un chicco di riso, 2 sulla seconda casella, poi, 4, poi 8, e cosi’ via fino a mettere 263 chicchi sull’ultima casella. In tutto avremmo 264-1 chicchi di riso. Se ogni chicco averse la forma di un cubo il cui spigolo e’ lungo 1mm, quale sarebbe la misura (in Km) dello spigolo che dovrebbe avere un recipiente di forma cubica per poter contenere tutti questi chicchi? Un problema che, dato un input di dimensone n, richieda di effetture un numero di operazioni che cresce come bn, con b > 1, si dice intrattabile (dal punto di vista Facoltà di Farmacia - Corso di computazionale). 30 Informatica Come aggiungere nuove operazioni? Si può pensare di affrontare il problema modificando la macchina in modo da introdurre la divisione e la moltiplicazione. Nuovi problemi: radice quadrata? logaritmo? Quante sono le funzioni definibili? In effetti non si sta risolvendo il problema, lo si “rimanda” Come aggiungere nuove operazioni? Il problema vero è che la logica che governa le operazioni è “cablata” nella macchina calcolatrice. La soluzione è di trattare tale logica come parte dell’input della macchina. Logica delle operazioni come parte dell’input? • Il prodotto, la divisione, …, possono venire “descritti” tramite operazioni piu’ semplici • Individuiamo un insieme “base” di operazioni e combiniamole per rappresentare quelle piu’ complesse • L’ordine delle operazioni base e i loro argomenti possono essere specificati usando solo numeri • Siamo quindi in grado di descrivere la logica di operazioni complesse usando il linguaggio (i numeri) usato per l’input delle macchine di calcolo Facoltà di Farmacia - Corso di Informatica 33 La “Macchina Analitica” Introdotta da Charles Babbage intorno al 1840, è il primo esempio di macchina di calcolo “programmabile” La logica dell’operazione è “confusa” con i dati Da Babbage ai giorni nostri Le idee di Babbage erano troppo avanzate per la sua epoca storica. Da un lato la tecnologia non era ancora sviluppata a sufficienza da supportare le sue idee (la macchina analitica era progettata per funzionare a vapore!), dall’altro non era ancora sentita così forte l’esigenza del calcolo automatico. Per questi motivi le sue idee non ebbero il successo che meritavano e furono dimenticate per quasi un secolo. Da Babbage ai giorni nostri Le idee di Babbage vennero “riscoperte” nella prima metà del ‘900 da Alan Turing e da John von Neumann. Alan Turing Uno dei padri dell’informatica. Moltissime sue idee/congetture sono attuali oggigiorno. Introduce il concetto di macchina universale (i computer moderni sono “implementazioni di questo concetto”) La macchina di Turing È un modello astratto di calcolatore. Turing la descrive e la usa al fine di analizzare l’insieme delle funzioni che possono essere calcolate in modo automatico. Nasce uno dei pilastri dell’informatica teorica: la teoria della calcolabilità. È universale perché può calcolare tutte le funzioni “calcolabili”. Alla base del suo funzionamento c’è la stessa idea che c’è alla base della macchina analitica. La macchina di Turing Perché si parla di funzioni “calcolabili”? Si può dimostrare che non tutte le funzioni definibili in matematica sono calcolabili mediante una macchina di Turing. Non è un problema specifico della macchina di Turing: esistono problemi che “semplicemente” non possono essere risolti in modo automatico (es. Halting problem). John Von Neumann Crea il modello di calcolatore a cui si ispirano i calcolatori moderni. Un po’ di storia (tecnologica)… • 1600: macchine calcolatrici a ingranaggi (Pascal, Leibniz) • 1800: macchine con schede perforate e primi programmi (Babbage, Lovelace (figlia di Byron)) • 1920: erano chiamati computer “impiegati” (spesso donne) che eseguivano calcoli numerici • 1940: macchine a relay meccanici – Bell Laboratories – Mark I presso Harvard University e IBM • 1950: macchine di von Neumann – Schede perforate, nastri magnetici – Transistor, circuiti stampati • 1980: microcomputer – Home computer, personal computer Un po’ di storia (scientifica)… • 300 a.C.: algoritmo di Euclide per MCD • 800: appare il libro "Calcoli con i numerali indiani" • 1800: Boole metodi puramente simbolici per modellare il ragionamento • 1930: Church, Turing – modello formale astratto di computer – computer come macchina universale: “We are trying to build a machine to do all kinds of different things simply by programming rather than by the addition of extra apparatus” (Turing) – esistono problemi che un computer non può risolvere • 1940: Shannon teoria dell’informazione • 1950/60: Dijkstra, Kruskal, Hoare, ecc. algoritmi fondamentali, linguaggi di programmazione, teoria dei linguaggi formali, ecc. • 1970: Codd, Rivest et al., McCarthy et al., Cook et al. database relazionali, crittografia a chiave pubblica, intelligenza artificiale, complessità computazionale • Ma è un corso difficile ? • Sono argomenti difficili ? • È difficile il linguaggio usato a lezione ? • Sembra che il docente parli arabo ? Facoltà di Farmacia - Corso di Informatica 44 الخوارزمي الخوارزمي I M Z R AV Kh L A Bisogna imparare “l’alfabeto” del corso … ASD-13-14 - Lez.0 47 In caratteri arabi: الخوارزمي I M ZRAVK LA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 48 الخوارزمي I M ZRAVK LA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 49 الخوارزمي I M ZRAVhKLA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 50 الخوارزمي I M ZRAVhKLA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 51 الخوارزمي I M ZRAVhKLA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 52 الخوارزمي I M ZRAVhKLA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 53 الخوارزمي I M ZRAVhKLA La scrittura araba è alfabetica, da destra a sinistra; molti suoni vocalici non si scrivono. ASD-13-14 - Lez.0 54 الخوارزمي I M ZRAVhKLA ASD-13-14 - Lez.0 55 الخوارزمي I M ZRAVhKLA Inseriamo i suoni vocalici non denotati da lettere: AL KhoVARiZMI ASD-13-14 - Lez.0 56 Trasformazioni (fonte: Wikipedia). al-Khorezmi latino: Algoritmi scambiato per il plurale di una parola inesistente Algoritmus o Algorismus Algoritmo ASD-13-14 - Lez.0 57 Algoritmi e ... logaritmi – la parola algoritmo deriva dal nome del matematico uzbeko-persiano al-Khwarismi ( الخوارزميvissuto intorno all'anno 800), il cui libro "Calcoli con i numerali indiani" descriveva gli algoritmi di calcolo per le operazioni aritmetiche con il sistema di numerazione indiano, cioè quelli che ancora oggi studiamo nella scuola elementare; – è un anagramma di logaritmo, parola che ha la stessa etimologia; come vedremo, la funzione logaritmo ha un ruolo abbastanza importante ASD-13-14 - Lez.0 58 nell’analisi degli algoritmi ! Un francobollo sovietico dell'Uzbekistan fonte wikipedia Mukhammed al'-Khorezmi ASD-13-14 - Lez.0 59 Temi dell’Informatica • • • • • • • • • • • • • • • • Calcolabilità Complessità Teoria dei linguaggi formali Algoritmi e strutture dati Linguaggi di programmazione Compilatori e interpreti Architettura dei calcolatori Sistemi operativi Ingegneria del software Reti di calcolatori Interazione uomo-macchina Sicurezza Intelligenza artificiale Basi di dati Metodi formali … Temi dell’Informatica Ciascuno di questi temi è un “edificio” più o meno complesso; ad es. Intelligenza artificiale: • Risoluzione dei problemi – … • Rappresentazione della conoscenza – … • Meccanismi di ragionamento – … • Apprendimento automatico – … • Pianificazione, scheduling, diagnosi, configurazione, soddisfacimento di vincoli,… – … Terminologia • Algoritmo (aritmetica elementare formulata dal matematico arabo medioevale al-Khuwarizmi) – insieme delle operazioni necessarie a risolvere un problema (es. ricetta, istruzioni di montaggio LEGO®) – n.b.: piu’ algoritmi possono risolvere lo stesso problema • Programma – implementazione di un algoritmo in un linguaggio formale – n.b.: piu’ programmi possono implementare lo stesso algoritmo Terminologia • Software – insieme dei programmi che fanno funzionare l’hardware • Due categorie principali di software – sistemi operativi: permettono all’elaboratore di svolgere le proprie funzioni (software di base) – programmi applicativi: svolgono i compiti più vari, in funzione delle esigenze dell’utenza Il teorema della fermata, ovvero: quello che i computer non possono fare • Un programma si puo’ rappresentare come una sequenza di caratteri (file di testo) • Supponete che esista un programma Halt(P,I) che prese due sequenze di caratteri P e I tali che: – P rappresenta un programma che riceve in input una sequenza di caratteri – I e’ una sequenza di caratteri restituisca true se P(I) si ferma, e restituisca false altrimenti. • Allora, potremmo scrivere il programma BastianContrario(Q) che, data una sequenza di caratteri Q che rappresenta un un programma che riceve in input una sequenza di caratteri, si comporti in questo modo: restituisce true se Q(Q) non si ferma, e non si ferma altrimenti. • Come dovrebbe comportarsi BastianContrario(BastianContrario) ? Quali conseguenze possiamo trarre da questo ragionamento? Il ragionamento e’ analogo a quello usato nell’ Antinomia di Russel (http://it.wikipedia.org/wiki/Paradosso_di_Russell ). Facoltà di Farmacia - Corso di Informatica 64