Sei sulla pagina 1di 22

Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V.

Grassi
Ingegneria Informatica

Fondamenti di Informatica

Introduzione ai concetti fondamentali

Li conoscete ?

1
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

e questo?

xA = λx
A ∈ ℜn ×n , x ∈ ℜn , λ ∈ ℜ



5

+ xA = λx + …

=

6
vedi: M. Franceschet “PageRank: Standing on the Shoulders of Giants” Communications of the ACM, Vol. 54 No. 6, pages 92-101

2
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

un testimonial d'eccezione

3
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

10

4
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

11

Argomenti del corso


(indicativi)
n  Introduzione all’informatica
n  Introduzione alla programmazione
■  linguaggio Python
n  Elaborazione di immagini (e suoni)
+
n  Elaborazione di testi
■  iterazione
■  comandi condizionali
■  progettazione top-down
■  testing
n  Temi base dell’informatica
■  rappresentazione
■  ricorsione
■  complessità di algoritmi
n  Programmazione Object-oriented

12

5
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Elaborazione di immagini

n  Non vogliamo rimpiazzare PhotoShop, o Foto, o …

■  questi strumenti svolgono il loro lavoro in modo egregio e (più o meno)


facile da usare

13

Elaborazione di immagini

n  Non vogliamo rimpiazzare PhotoShop, o Foto, o …

■  questi strumenti svolgono il loro lavoro in modo egregio e (più o meno)


facile da usare

■  … ma se capiremo come lavorano, avremo conquistato la chiave per aprire


nuovi orizzonti

14

6
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Definizioni

n  Numerose definizioni

1.  nel mondo anglosassone “Computer science”


■  la “scienza dei computer”

”Computer science is no more about computers than


astronomy is about telescopes.”
E. Dijkstra (Dutch computer scientist (1930-2002). Turing Award in 1972.)

2.  la “scienza dell’informazione”


o anche
3.  la “scienza della rappresentazione ed elaborazione (automatica)
dell’informazione”
■  in breve: Informatica

15

Definizioni

n  la “scienza della rappresentazione ed elaborazione (automatica)


dell’informazione”

n  che cosa è informazione ?


■  perché siamo interessati alla sua rappresentazione ed elaborazione
(automatica) ?

n  in effetti, siamo interessati a “risolvere problemi”

■  più precisamente, a modi sistematici di risolvere problemi


■  L’ informatica si interessa di questo

16

7
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Un problema da risolvere

n  cosa ci serve per risolvere questo problema in modo “astratto” ?


■  una rappresentazione delle entità coinvolte
■  una procedura da seguire (basata sulla rappresentazione adottata)

n  rappresentazione
■  un modo per esprimere l’informazione rilevante per il problema considerato

n  procedura
■  un processo da seguire passo dopo passo per arrivare alla soluzione
■  nel linguaggio dell’informatica: algoritmo
18

Rappresentazione

n  rappresentazione della scatola


■  lato A: heigth(A), width(A)
■  p.es.: height(A) = 220 cm, width(A) = 70 cm
■  lato B: heigth(B), width(B) C
■  p.es.: height(B) = 220 cm, width(B) = 110 cm A B
■  lato C: heigth(C), width(C)
■  p.es.: height(C) = 70 cm, width(C) = 110 cm

n  rappresentazione della porta


■  heigth(door), width(door)
■  p.es.: height(door) = 210 cm, width(door) = 80 cm

19

8
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Processo di risoluzione

n  procedura (algoritmo)
■  verifica: height(A)<heigth(door) AND width(A)<width(door)
■  se vero, OK ; altrimenti, prova lato B
■  verifica: height(B)<heigth(door) AND width(B)<width(door)
■  se vero, OK ; altrimenti, prova lato C
■  verifica: height(C)<heigth(door) AND width(C)<width(door)
■  se vero, OK ; altrimenti, IMPOSSIBILE C
A B
n  OK ?
■  suggerimento: provate con i numeri della diapositiva precedente …

n  una nuova procedura (nuovo algoritmo)


■  verifica: height(A)<heigth(door) AND width(A)<width(door)
■  se vero, OK ; altrimenti, “ruota” lato A
■  verifica: width(A)<heigth(door) AND heigth(A)<width(door)
■  se vero, OK ; altrimenti, verifica lato B
■  … 20

una procedura “generale”

■  verifica: height(A)<heigth(door) AND width(A)<width(door)


■  se vero, OK ; altrimenti, “ruota” lato A
■  verifica: width(A)<heigth(door) AND heigth(A)<width(door)
■  se vero, OK ; altrimenti, prova lato B C
■  … B
A

n  questa procedura funziona solo per questa scatola e questa porta?

n  noi siamo interessati a procedure generali


■  procedure “parametriche”

21

9
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Rappresentazione + Processo

n  rappresentazione della scatola


■ verifica: height(A)<heigth(door) AND
■ lato A: heigth(A), width(A)
width(A)<width(door)
■ lato B: heigth(B), width(B)
+
■ se vero, OK ; altrimenti, “ruota” lato A
■ lato C: heigth(C), width(C)
■ verifica: width(A)<heigth(door) AND
n  rappresentazione della porta
heigth(A)<width(door)
■ heigth(door), width(door)
■ se vero, OK ; altrimenti, prova lato B
■ …
procedura (algoritmo)

n  la “scienza della rappresentazione ed elaborazione (automatica)


dell’informazione”
?
23

un linguaggio per scrivere “procedure”

X: X ← expr START
un “contenitore” inserisci un valore END
con un nome in un “contenitore”
inizio fine elaborazione
elaborazione

true false
condition

input / output selezione di percorsi


un passo alternativi
dell’elaborazione
25

10
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

un esempio di “procedura”
Start n  provate questa procedura con differenti
coppie di interi non negativi
■  siete in grado di arrivare alla risposta
readm and n
“finale”?
n  che cosa significa la risposta che
x ←m otteniamo ?
y←n ■  è necessario saperlo, per completare questa
procedura?
true false write: “trivial answer or
x ≠ 0 AND y ≠ 0
impossible to calculate”
r ← remainder
of x/y End

false true
r=0 write: “the answer is” y

x ←y
End
y← r
26

un problema matematico

def
n  D(i) = insieme dei divisori interi di i
n  € D(i) = { k | i = k·q, k ∈ N+, q ∈ N } N+= N - {0}

n  z = MCD(i, j) = max( D(i) ∩ D(j) ) MCD


i, j z

27

11
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

mettere insieme problemi e procedure

i, j MCD z

start

read m and n
x←m
y←n

true false
x≠0 AND y≠0
r←remainder
of x/y End
false true
r=0 write:“the answer is ” y
x←y
End
y←r

N:B: questa procedura per risolvere il problema MCD è


nota come “algoritmo di Euclide” (300 a.C.)
28

Argomenti del corso

(indicativi)
n  Introduzione all’informatica
n  Introduzione alla programmazione
■  linguaggio Python
n  Elaborazione di immagini e suoni
+
n  Elaborazione di testi
■  iterazione
■  comandi condizionali
■  progettazione top-down
■  testing
n  Temi base dell’informatica
■  rappresentazione
■  ricorsione
■  complessità di algoritmi
n  Programmazione Object-oriented
29

12
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

n  quale rappresentazione? quale procedura di soluzione? eseguita da


quale macchina?
30

L’ Informatica si interessa di …

n  “procedure” per risolvere problemi


■  l’aspetto metodologico
■  risoluzione di problemi e gestione dell’informazione

n  “macchine” per eseguire procedure


■  l’aspetto tecnologico
■  (attualmente) macchine e sistemi con tecnologia elettronica

n  entrambi hanno una lunga storia


■  metodologie (Euclide ~300 a.C., …, al-Kuwarizmi ~1000 d.C., …
Hilbert ~1800 d.C., Gödel, Turing, ~1900 d.C., …)
■  macchine (abaco ?a.C., …, Babbage engine ~1800 d.C.., …
ENIAC ~1940 d.C., …)

31

13
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

la vera “data di nascita” dell’informatica

n  quando gli avanzamenti tecnologici hanno reso realistica la


costruzione di macchine capaci di eseguire procedure milioni (e più
…) di volte più velocemente di esseri umani
■  intorno alla metà del secolo passato …

n  la MACCHINA (computer) esegue la procedura


■  comunque difficile, noiosa e complessa essa possa essere
■  Navigare attraverso milioni di genomi ?
■  Trovare una persona tra 30.000 in un archivio ?
■  Elaborare un milione di punti su uno schermo o miliardi di “sound samples”?
■  Nessun problema per una macchina !

Nota: stiamo per occuparci di questo


n  avvertenza : non disponiamo (ancora?) di procedure e macchine
per risolvere qualunque problema
■  problemi intrattabili
■  problemi non computabili
32

L’informatica si interessa dello studio di


procedure di soluzione

n  Un (ingegnere) informatico si occupa di …


■  Come queste procedure sono scritte
■  algoritmi, ingegneria del software

■  Le “unità” usate nelle procedure


■  strutture dati, basi di dati

■  Ciò a cui le procedure si applicano


■  sistemi produttivi, sistemi intelligenti, teoria, …

■  Quanto bene operano le procedure (interfacce uomo-macchina)

■  …

33

14
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

concetto fondamentale

rappresentazione di informazione

n  le “procedure” operano su astrazioni (rappresentazioni)


■  … e noi sappiamo quale è il loro significato

n  le “macchine” eseguono procedure per manipolare


rappresentazioni
■  senza sapere che cosa “significano”

35

Che cosa i computer comprendono

n  citazione dalla diapositiva precedente:


■  le “macchine” eseguono procedure per manipolare rappresentazioni
■  senza sapere che cosa “significano”

n  Non c’è niente di multimedia in questo.


■  Piuttosto, unimedia
■  (citazione da: Nicholas Negroponte, fondatore di MIT Media Lab)
■  Qualunque cosa è, alla fine, tanti 0 e tanti 1

n  I computer sono fondamentalmente “stupidi”


■  I soli dati che comprendono sono 0 e 1
■  Possono fare solo cose molto elementari con questi 0 e 1
■  Sposta questo valore da qui a lì
■  Somma, sottrai, moltiplica, dividi questi valori
■  Confronta questi due valori, e se uno è minore dell’altro, esegui questo passo
invece di quest’altro.
■  Ma fatte velocemente, queste semplici cose generano risultati sorprendenti.
36

15
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Come lavora un computer

n  giusto un accenno…

n  Central Processing Unit (CPU):


operazioni elementari (somme,
confronti, …)
n  CPU comunica con: Memory
■  sequenza di (milioni di)
“caselle”, ognuna delle
dimensioni di un byte, ognuna
identificata da un indirizzo
numerico
n  Hard disk : più capiente di Memory,
ma (molto) più lento
n  Display, Keyboard, …

37

Central Processing Unit (CPU)

n  Esegue le operazioni di una procedura


■  la procedura è immagazzinata in Memory

n  Ciclo di esecuzione
1.  Preleva una operazione (istruzione) da Memory
1.  ogni operazione è codificata in accordo a “regole” predefinite
2.  Decodifica l’operazione
3.  Esegui l’operazione

n  Ogni CPU è caratterizzata dai suoi propri codici per le operazioni


(linguaggio macchina) :
0100 0000 0000 1000
0100 0000 0000 1001
0000 0000 0000 1000
...

38

16
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Memoria

n  Memory: memoria centrale


■  immagazzina dati e operazioni dei programmi in esecuzione
■  …formato binario
■  volatile
■  “random access” (RAM)
■  tempo di accesso costante
■  SRAM, DRAM, etc.
■  veloce (~10-100 nsec), costosa
■  capacità “limitata” (fino a pochi Gigabyte)
■  struttura gerarchica
■  cache di 1°, 2° livello, …

n  Hard disk ( o SSD, …): memoria secondaria


■  non volatile
■  grande capacità (numerose centinaia di Gigabyte)
■  lenta (rispetto a RAM), economica 39

Memoria centrale

n  Insieme di celle (“locazioni”), ognuna costituita da


un numero fisso di elementi binari
byte M-1
■  ogni elemento binario può memorizzare
byte M-2
(rappresentare) solo due valori: 0 oppure 1
■  binary digit -> bit
■  tipicamente: una cella = 1 byte (8 bit)
Memory
n  Ogni cella è associata a un indirizzo nell’intervallo
0,1, …, M-1
■  M: dimensione della memoria
■  memoria principale : “vettore” di byte byte 1
byte 0
n  CPU esegue operazioni di read/write specificando
l’indirizzo della cella
8 bit
■  read: prelevare il contenuto di una cella di memoria
■  write: modificare il contenuto di una cella di memoria
■  indirizzo di m bit è spazio di indirizzamento 2m
■  non necessariamente: M = 2m 40

17
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Stratificazione di astrazioni

n  in pratica, non abbiamo questa visione “grezza” di un computer

n  operazioni di alto livello


■  funzioni matematiche (log, coseno, …)
■  elaborazione testi
■  ...
n  memoria di alto livello
■  insieme di valori, ogni valore identificato da un nome
■  definito dall’utente
■  valori di "alto livello"
■  testo, immagine, insieme di …, …
■  memoria secondaria organizzata come un insieme di file con nome
Hardware
System Software

Application Software

n  ottenuto mediante stratificazione di livelli software 41

Concetto chiave: codifica

n  Possiamo interpretare gli 0 e 1 nella


memoria del computer in qualunque
modo vogliamo.
■  Possiamo trattarli come numeri.
■  Possiamo codificare informazione
in quei numeri

n  Anche la stessa idea che il computer


“comprende” i numeri è una Nota: perché interpretiamo questa
interpretazione sequenza di 0 e 1 come 74 ?
■  Noi codifichiamo il voltaggio su dei
“fili” come 0 e 1, ne riparleremo più avanti …
otto di questi “fili” definiscono un
byte
■  che, a sua volta, possiamo
interpretare come un numero
42
decimale

18
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Le codifiche si possono stratificare quanto vogliamo

n  è : interpretato come

■  00111100 è 60 (numero intero in base 10)


■  01100001 è 97 (numero intero in base 10)
■  ...

n  e poi
■  60 è < (carattere, codifica ASCII)
■  97 è a (carattere, codifica ASCII)

n  e poi
■  <a ... è hyperlink HTML

n  ...

45

“parlare” con i computer

n  Abbiamo bisogno di un linguaggio per scambiare


informazioni con i computer
■  dati, algoritmi, …

n  Linguaggi di programmazione differenti è modi diversi


(codifiche) di dire ai computer le stesse cose

50

19
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Linguaggi di programmazione e strati di astrazione

Sequenza di istruzioni binarie,


direttamente eseguibile dalla CPU

Istruzioni in corrispondenza 1-a-1 con


istruzioni binarie, ma espresse con
nomi simbolici (comprensibili da esseri
umani)

Indipendente dalla macchina.


Astrazione sui dati

51

traduzione da livello a livello

def swap(v, k) : swap:


temp = v[k] muli $2, $5, 4
v[k] = v[k+1] add $2, $4, $2
v[k+1] = temp compiler lw $15, 0($2)
lw $16, 4($2)
Programma in un sw $16, 0($2)
linguaggio di alto livello
Programma in sw $15, 4($2)
linguaggio assembler jr $31
(MIPS)

assembler

00000000101000010000000000011000
00000000100011100001100000100001

Programma in linguaggio 10001100011000100000000000000000


macchina binario (MIPS) 10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
52
00000011111000000000000000001000

20
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

Linguaggio di programmazione

n  Ogni linguaggio di programmazione è caratterizzato da:


1.  sintassi
2.  semantica

n  Una frase in linguaggio naturale può essere sintatticamente corretta,


ma non avere nessun senso!
■  la ragazza legge un libro
■  l’erba legge una casa

n  Lo stesso vale per i linguaggi di programmazione.

53

Python / Jython

n  Linguaggio di programmazione che useremo: Python


■  http://www.python.org
■  Usato da compagnie quali Google, Industrial Light & Magic, Pixar, Nextel, e
altre

n  tipicamente implementato in C
■  noi useremo una versione implementata in Java: Jython
■  http://www.jython.org

55

21
Dipartimento di Ingegneria Civile e Fondamenti di Informatica – prof. V. Grassi
Ingegneria Informatica

“intelligenza” delle macchine

n  essere capaci di rappresentare, manipolare e trasferire


informazione non implica necessariamente la presenza
di un qualche tipo di intelligenza
■  lasciamo questa questione ai filosofi …

n  pensate al trasferimento di informazione


genetica
■  codifica di DNA e RNA
■  una cellula è intelligente ?
■  per esempio, un’ameba …

56

22