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