Università di Roma “Tor Vergata”
L1 - 1
Fondamenti di Informatica 1
obiettivo:
introduzione a
dell’informatica
conoscenze
di
base
informatica come metodologia di risoluzione di
problemi con l’ausilio di una “macchina”
definire un metodo
istruire una
risolutivo
macchina
____________________________________
Docenti: Vincenzo Grassi
Antonino Sabetta
mio orario ricevimento: Martedì ore 15 - 16
Venerdì ore 15 - 16
stanza 3121
3° piano edificio Ingegneria dell’Informazione
(trasferimento in corso ....)
e-mail: [email protected]
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 2
• materiale didattico:
1) C. Horstmann: Fondamenti di C++ MacGraw-Hill
2) V. Grassi - Note per il corso di Fondamenti di
Informatica 1 (a.a. 2005/2006) - dispensa
disponibile sul sito del corso
• modalità d’esame (provvisorie, da precisare
in seguito):
una prova scritta di metà corso
una prova scritta finale
…
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 3
• supporti “on line”
1) sito del corso:
http://www.uniroma2.it/didattica/
(accedere alla pagina:
Fondamenti di Informatica 1 n.o. – V. Grassi)
oppure, direttamente:
http://www.uniroma2.it/didattica/foi1_no
per programma del corso, esercizi, materiale didattico
integrativo, comunicazioni, date e risultato esami, …
2) sito del libro (edizione italiana)
http://www.ateneonline.it/horstmann/
per supporti alla programmazione C++, risposte ad
esercizi del libro, ...
3) sito del libro (edizione inglese)
http://horstmann.com/ccc.html
utile in particolare il seguente “link” (istruzioni per
l’installazione di un ambiente C++):
http://horstmann.com/ccc/help/ccc3help.html
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 4
• ambiente “base” di programmazione:
a) sotto Microsoft Windows:
compilatore g++ in ambiente Cygwin
per installare Cygwyn seguire le istruzioni nel file:
http://horstmann.com/ccc/help/ccc3help.html
b) sotto Linux:
compilatore g++
• estensione grafica
per installarla, scaricare il file Codice.zip dal sito:
http://www.ateneonline.it/horstmann/ (“area studenti”)
e poi seguire le istruzioni riportate in:
http://horstmann.com/ccc/help/ccc3help.html
• CD contenente il materiale descritto sopra
(in distribuzione in aula)
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 5
applicazioni informatiche:
• animazione
• elaborazione di suoni
• reti di ipertesti (WWW)
• calcolo scientifico (sintesi molecolare,
fluidodinamica, …)
•…
cosa c’è dietro?
rappresentare informazione
capacità di
manipolare rappresentazioni
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 6
soluzione di un problema
=
RAPPRESENTAZIONE + ALGORITMO
?
rappresentazione(
) = [alt, largh, prof]
rappresentazione(
) = [p_alt, p_largh]
algoritmo:
(alt < p_alt) e (largh < p_largh)? si fi OK
no
fl
(alt < p_largh) e (largh < p_alt)? si fi OK
no
fl
…
(quanti tentativi ancora?)
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 7
rappresentazione: uso di strumenti formali
per rappresentare in modo simbolico
un “frammento” di realtà
algoritmo: sequenza finita di operazioni
elementari che manipolano simboli per
costruire una soluzione del problema
nota: finito può anche essere molto grande
fl
macchine per eseguire algoritmi
informatica = punto di confluenza di:
• metodi di soluzione (Euclide ~300 a.C., …,
al-Kuwarizmi ~1000 d.C., …Hilbert ~1800 d.C.,
Gödel, Turing, ~1900 d.C., …)
• macchine per manipolare simboli secondo
regole date (abaco ?a.C., …, macchina di
Babbage ~1800 d.C., … ENIAC ~1940 d.C., …)
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 8
le macchine sono “stupide”
fl
manipolazione “sintattica”, siamo noi a dare un
significato ai simboli
Esempio: determinare z = MCD(n,m) n,mŒN
def
D(n) = insieme dei divisori di n
D(n) = { k | n = k·q, kŒN+, qŒN }
N+=N - {0}
z = MCD(m,n) = max{D(m)«D(n)}
m,n
Fondamenti di Informatica 1
MCD
z
V. Grassi
Università di Roma “Tor Vergata”
L1 - 9
algoritmo:
1. prendi due numeri n e m
2. scrivi m in una casella di nome x
scrivi n in una casella di nome y
3. se x=0 oppure y=0
allora: termina rispondendo: « problema
banale o irrisolvibile »
altrimenti: calcola il resto r di x diviso y
se r=0
allora: termina rispondendo
« il risultato è il valore
scritto in y »
altrimenti: sovrascrivi in x il
valore scritto in y, sovrascrivi
in y il valore di r
4. ritorna ad eseguire 3
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 10
quali “abilità” (capacità di eseguire operazioni)
sono necessarie per eseguire l’algoritmo?
a) leggere e scrivere numeri
b) eseguire operazioni aritmetiche
c) seguire un flusso di operazioni
utilizzando tre regole base: i. sequenza
ii. scelta
iii. iterazione
“chiunque” sappia fare a , b e c può eseguire
l’algoritmo, anche se ignora cosa è MCD
(l’algoritmo dato è noto come algoritmo di
Euclide per il calcolo di MCD)
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 11
le macchine reali (calcolatori) sanno fare solo
operazioni di tipo a, b e c
come fanno macchine così “primitive” ad
eseguire applicazioni complesse?
tutto è rappresentabile tramite numeri
(“digitalizzazione”)
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 12
Esempio 1: elaborazione testi
testo
fl
sequenza di caratteri
fl
sequenza di numeri
si usa una tabella analoga a questa:
a´1
b´2
c´3
d´4
e´5
A ´ 27
B ´ 28
C ´ 29
D ´ 30
E ´ 31
•
•
•
•
•
•
z ´ 26
Z ´ 52
. ´ 53
: ´ 54
; ´ 55
, ´ 56
(spazio) ´ 57
•
•
•
…
Ada cade ¤ 27 4 1 57 3 1 4 5
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 13
Esempio 2: elaborazione suoni
onda sonora
fl
“discretizzazione”
fl
sequenza di numeri
1
2
3
4
5
• •
• • •
•
•
•
•
•
fl
4 5 4 4 4 2 2 5 3 4
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 14
Esempio 3: elaborazione immagini
immagine
fl
“discretizzazione”
fl
sequenza di triple di numeri
1
2
3
1
2
3
codifica: casella bianca Æ 0
casella non bianca Æ 1
decodifica:
Fondamenti di Informatica 1
0 Æ casella bianca
1 Æ casella grigia
V. Grassi
Università di Roma “Tor Vergata”
L1 - 15
1
2
3
1
2
3
codifica
(1,1,1)(1,2,0)(1,3,0)(2,1,1)(2,2,1)(2,2,0)(3,1,1)(3,2,1)(3,3,1)
decodifica
approssimazione della rappresentazione
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 16
come si comunica con una macchina che
rappresenta tutto tramite numeri?
si usa un linguaggio fatto di numeri !!!
• linguaggio macchina:
161 40000 45 100 127 11280
problemi: • difficile (per essere umani)
da scrivere, leggere, correggere
• legato ad una particolare macchina
Fondamenti di Informatica 1
V. Grassi
Università di Roma “Tor Vergata”
L1 - 17
• linguaggio “assembler” (linguaggio
macchina reso leggibile) :
mov 40000, %eax
sub 100, %eax
jg 11280
• più facile da leggere (per essere umani)
• deve essere tradotto in linguaggio macchina
per essere eseguito
• ancora legato ad una particolare macchina
• linguaggi di alto livello (C++, Pascal, Java..):
C++:
if (int_rate > 100)
message_box("Interest rate error");
Pascal:
if int_rate > 100
then message_box("Interest rate error");
• istruzioni “vicine” al linguaggio umano
• indipendenti da una particolare macchina
(fanno riferimento a una “macchina astratta”)
fl
necessità di tradurre nel linguaggio macchina
(compilatore)
Fondamenti di Informatica 1
V. Grassi